tweak to plugin parameter sliders in mixer strips
authorBen Loftis <ben@glw.com>
Mon, 10 Dec 2012 20:08:36 +0000 (20:08 +0000)
committerBen Loftis <ben@glw.com>
Mon, 10 Dec 2012 20:08:36 +0000 (20:08 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@13631 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/automation_time_axis.cc
gtk2_ardour/processor_box.cc
libs/gtkmm2ext/gtkmm2ext/pixfader.h
libs/gtkmm2ext/pixfader.cc

index 262f495f845f38312f67dd233fc46eddd5ec64dd..498832da0233cb900ca64cbbc88590666577dfc1 100644 (file)
@@ -153,16 +153,9 @@ AutomationTimeAxisView::AutomationTimeAxisView (
                set_height (preset_height (HeightNormal));
        }
 
-       /* rearrange the name display */
-
-       controls_table.remove (name_hbox);
-       controls_table.attach (name_hbox, 1, 6, 0, 1,  Gtk::FILL|Gtk::EXPAND,  Gtk::FILL|Gtk::EXPAND, 3, 0);
-
-       /* we never show these for automation tracks, so make
-          life easier and remove them.
-       */
-
-       hide_name_entry();
+       /* for automation tracks, the label does not swap with an entry box. remove all that stuff */
+       if ( name_label.get_parent() )
+               name_hbox.remove(name_label);
 
        name_label.set_text (_name);
        name_label.set_alignment (Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER);
@@ -178,12 +171,13 @@ AutomationTimeAxisView::AutomationTimeAxisView (
 
        /* add the buttons */
        controls_table.attach (hide_button, 0, 1, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
-       controls_table.attach (auto_button, 6, 8, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
+       controls_table.attach (name_label, 0, 6, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
+       controls_table.attach (auto_button, 6, 8, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
 
        if (_controller) {
                _controller.get()->set_size_request(-1, 24);
                /* add bar controller */
-               controls_table.attach (*_controller.get(), 0, 8, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
+               controls_table.attach (*_controller.get(), 1, 8, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
                /* note that this handler connects *before* the default handler */
                _controller->event_widget().signal_scroll_event().connect (mem_fun (*this, &AutomationTimeAxisView::controls_ebox_scroll), false);
        }
@@ -427,21 +421,15 @@ AutomationTimeAxisView::set_height (uint32_t h)
                first_call_to_set_height = false;
 
                if (h >= preset_height (HeightNormal)) {
-                       hide_name_entry ();
-                       show_name_label ();
-                       name_hbox.show_all ();
-
+                       name_label.show();
                        auto_button.show();
                        hide_button.show_all();
 
                } else if (h >= preset_height (HeightSmall)) {
                        controls_table.hide_all ();
                        hide_name_entry ();
-                       show_name_label ();
-                       name_hbox.show_all ();
-
+                       name_label.hide();
                        auto_button.hide();
-                       hide_button.hide();
                }
        }
 
index 70e479363e4d99c0901171c8e00b02766bd6c842..3a7f00066889fda51165d0f5352cb28a68b54413 100644 (file)
@@ -432,9 +432,13 @@ ProcessorEntry::Control::Control (Glib::RefPtr<Gdk::Pixbuf> s, Glib::RefPtr<Gdk:
 
        } else {
                
-               box.pack_start (_label);
-               _label.show ();
-               _label.set_text (_name);
+               _slider.set_name ("PluginSlider");
+               _slider.set_size_request (-1, 20);
+               _slider.set_text (_name);
+
+//             box.pack_start (_label);
+//             _label.show ();
+//             _label.set_text (_name);
                box.pack_start (_slider);
                _slider.show ();
 
index 068d740272b9542eaa45b5994447f68c38ae66b0..8ef740b8e7675f6d3c1013277545f8c2b0c84811 100644 (file)
@@ -40,7 +40,17 @@ class PixFader : public Gtk::DrawingArea
 
        void set_default_value (float);
 
+       void set_text (const std::string&);
+
   protected:
+       Glib::RefPtr<Pango::Layout> _layout;
+       std::string                 _text;
+       int   _text_width;
+       int   _text_height;
+       double text_r;
+       double text_g;
+       double text_b;
+
        Gtk::Adjustment& adjustment;
 
        void on_size_request (GtkRequisition*);
index 11420159c44de8b5569cf8121f6e984a936fb553..931c5ebe45470909ddaa1eabab67ad48f3867e7c 100644 (file)
@@ -143,7 +143,17 @@ PixFader::create_patterns ()
                cairo_pattern_add_color_stop_rgba (shine_pattern, 0.5, 1,1,1,0.0);
                cairo_pattern_add_color_stop_rgba (shine_pattern, 1, 1,1,1,0.0);
        }
-       
+
+       if ( !_text.empty()) {
+               _layout->get_pixel_size (_text_width, _text_height);
+       } else {
+               _text_width = 0;
+               _text_height = 0;
+       }
+       c = get_style()->get_text (get_state());
+       text_r = c.get_red_p ();
+       text_g = c.get_green_p ();
+       text_b = c.get_blue_p ();
 }
 
 bool
@@ -196,22 +206,34 @@ PixFader::on_expose_event (GdkEventExpose* ev)
 //             cairo_fill (cr);
        }
        
-       /* always draw the unity-position line */
-
-       if (_orien == VERT) {
-                context->set_line_width (1); 
-                context->set_source_rgb (0.0, 1.0, 0.0);
-                context->move_to (1, unity_loc);
-                context->line_to (girth, unity_loc);
-                context->stroke ();
-       } else {
-                context->set_line_width (1); 
-                context->set_source_rgb (0.0, 1.0, 0.0);
-                context->move_to (unity_loc, 1);
-                context->line_to (unity_loc, girth);
-                context->stroke ();
+       /* draw the unity-position line if it's not at either end*/
+       if (unity_loc > 0) {
+               if ( _orien == VERT && unity_loc < h ) {
+                                       context->set_line_width (1); 
+                                       context->set_source_rgb (0.0, 1.0, 0.0);
+                                       context->move_to (1, unity_loc);
+                                       context->line_to (girth, unity_loc);
+                                       context->stroke ();
+               } else if ( unity_loc < w ){
+                                       context->set_line_width (1); 
+                                       context->set_source_rgb (0.0, 1.0, 0.0);
+                                       context->move_to (unity_loc, 1);
+                                       context->line_to (unity_loc, girth);
+                                       context->stroke ();
+               }
        }
+       
+       if ( !_text.empty() ) {
 
+               cairo_new_path (cr);    
+
+               /* center text */
+               cairo_move_to (cr, (get_width() - _text_width)/2.0, get_height()/2.0 - _text_height/2.0);
+
+               cairo_set_source_rgba (cr, text_r, text_g, text_b, 0.9);
+               pango_cairo_show_layout (cr, _layout->gobj());
+       } 
+       
 //     if (Config->get_widget_prelight()) {  //pixfader does not have access to config
                if (_hovering) {
                        Gtkmm2ext::rounded_rectangle (cr, 0, 0, get_width(), get_height(), 3);
@@ -243,7 +265,8 @@ PixFader::on_size_allocate (Gtk::Allocation& alloc)
        }
 
        update_unity_position ();
-
+       create_patterns();
+       
        queue_draw ();
 }
 
@@ -499,3 +522,20 @@ PixFader::set_default_value (float d)
        default_value = d;
        update_unity_position ();
 }
+
+void
+PixFader::set_text (const std::string& str)
+{
+       _text = str;
+
+       if (!_layout && !_text.empty()) {
+               _layout = Pango::Layout::create (get_pango_context());
+       } 
+
+       if (_layout) {
+               _layout->set_text (str);
+       }
+
+       queue_resize ();
+}
+