double default_val,
double step_increment,
double page_increment,
- const char *widget_name,
- bool with_numeric_display,
- int subw,
- int subh)
+ const char *widget_name,
+ bool with_numeric_display,
+ int subw,
+ int subh)
: _controllable (c)
, value (0)
, default_value (default_val)
}
bool
-MotionFeedback::pixwin_button_press_event (GdkEventButton *ev)
-{
+MotionFeedback::pixwin_button_press_event (GdkEventButton *ev)
+{
if (binding_proxy.button_press_handler (ev)) {
return true;
}
}
bool
-MotionFeedback::pixwin_button_release_event (GdkEventButton *ev)
-{
+MotionFeedback::pixwin_button_release_event (GdkEventButton *ev)
+{
if (!_controllable) {
return false;
}
break;
}
- return VBox::on_button_release_event (ev);
+ return VBox::on_button_release_event (ev);
}
bool
-MotionFeedback::pixwin_motion_notify_event (GdkEventMotion *ev)
-{
+MotionFeedback::pixwin_motion_notify_event (GdkEventMotion *ev)
+{
if (!_controllable) {
return false;
}
gfloat y_delta;
if (!pixwin.has_grab()) {
- return VBox::on_motion_notify_event (ev);
+ return VBox::on_motion_notify_event (ev);
}
multiplier = ((ev->state & Keyboard::TertiaryModifier) ? 100 : 1) *
y_delta = grabbed_y - ev->y_root;
grabbed_y = ev->y_root;
-
+
x_delta = ev->x_root - grabbed_x;
-
+
if (y_delta == 0) return TRUE;
-
+
y_delta *= 1 + (x_delta/100);
y_delta *= multiplier;
y_delta /= 10;
-
+
_controllable->set_value (adjust ((grab_is_fine ? step_inc : page_inc) * y_delta));
-
+
} else if (ev->state & Gdk::BUTTON2_MASK) {
/* rotary control */
double x = ev->x - subwidth/2;
double y = - ev->y + subwidth/2;
double angle = std::atan2 (y, x) / M_PI;
-
+
if (angle < -0.5) {
angle += 2.0;
}
-
+
angle = -(2.0/3.0) * (angle - 1.25);
angle *= multiplier;
}
bool
-MotionFeedback::pixwin_enter_notify_event (GdkEventCrossing*)
+MotionFeedback::pixwin_enter_notify_event (GdkEventCrossing*)
{
pixwin.grab_focus();
return false;
}
bool
-MotionFeedback::pixwin_leave_notify_event (GdkEventCrossing*)
+MotionFeedback::pixwin_leave_notify_event (GdkEventCrossing*)
{
pixwin.unset_flags (HAS_FOCUS);
return false;
}
bool
-MotionFeedback::pixwin_key_press_event (GdkEventKey *ev)
+MotionFeedback::pixwin_key_press_event (GdkEventKey *ev)
{
if (!_controllable) {
return false;
double multiplier;
multiplier = ((ev->state & Keyboard::TertiaryModifier) ? 100.0 : 1.0) *
- ((ev->state & Keyboard::SecondaryModifier) ? 10.0 : 1.0) *
+ ((ev->state & Keyboard::SecondaryModifier) ? 10.0 : 1.0) *
((ev->state & Keyboard::PrimaryModifier) ? 2.0 : 1.0);
switch (ev->keyval) {
phase = std::min (phase, (int32_t) 63);
GtkWidget* widget = GTK_WIDGET(pixwin.gobj());
- gdk_draw_pixbuf (GDK_DRAWABLE(window), widget->style->fg_gc[0],
- pixbuf->gobj(),
- phase * subwidth, type * subheight,
+ gdk_draw_pixbuf (GDK_DRAWABLE(window), widget->style->fg_gc[0],
+ pixbuf->gobj(),
+ phase * subwidth, type * subheight,
/* center image in allocated area */
- (get_width() - subwidth)/2,
+ (get_width() - subwidth)/2,
0,
subwidth, subheight, GDK_RGB_DITHER_NORMAL, 0, 0);
}
boost::shared_ptr<PBD::Controllable>
-MotionFeedback::controllable () const
+MotionFeedback::controllable () const
{
return _controllable;
}
-
+
void
MotionFeedback::default_printer (char buf[32], const boost::shared_ptr<PBD::Controllable>& c, void *)
{
g_free (path);
return pixbuf;
-}
+}
void
MotionFeedback::core_draw (cairo_t* cr, int phase, double size, double progress_width, double xorigin, double yorigin,
double progress_radius_outer;
g_return_if_fail (cr != NULL);
-
+
progress_radius = 40.0;
progress_radius_inner = progress_radius - (progress_width / 2.0);
progress_radius_outer = progress_radius + (progress_width / 2.0);