diff options
-rw-r--r-- | gtk2_ardour/ardour_ui.h | 1 | ||||
-rw-r--r-- | gtk2_ardour/button_joiner.cc | 280 | ||||
-rw-r--r-- | gtk2_ardour/button_joiner.h | 65 | ||||
-rw-r--r-- | gtk2_ardour/editor.h | 1 | ||||
-rw-r--r-- | gtk2_ardour/wscript | 1 |
5 files changed, 0 insertions, 348 deletions
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 43a77fe523..eeebb5f422 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -122,7 +122,6 @@ class IdleOMeter; class VideoTimeLine; class ArdourKeyboard; class AudioClock; -class ButtonJoiner; class ConnectionEditor; class DuplicateRouteDialog; class MainClock; diff --git a/gtk2_ardour/button_joiner.cc b/gtk2_ardour/button_joiner.cc deleted file mode 100644 index a7e360e064..0000000000 --- a/gtk2_ardour/button_joiner.cc +++ /dev/null @@ -1,280 +0,0 @@ -/* - Copyright (C) 2012 Paul Davis - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -*/ - -#include <iostream> -#include <algorithm> - - -#include <gtkmm/toggleaction.h> - -#include "pbd/compose.h" -#include "gtkmm2ext/utils.h" -#include "gtkmm2ext/rgb_macros.h" - -#include "widgets/tooltips.h" - -#include "button_joiner.h" -#include "ui_config.h" - -using namespace Gtk; -using namespace ArdourWidgets; -using namespace ARDOUR_UI_UTILS; - -ButtonJoiner::ButtonJoiner (const std::string& str, Gtk::Widget& lw, Gtk::Widget& rw, bool central_joiner) - : left (lw) - , right (rw) - , name (str) - , active_fill_pattern (0) - , inactive_fill_pattern (0) - , central_link (central_joiner) -{ - packer.set_homogeneous (true); - - if (central_link) { - packer.set_spacing (20); - } - - packer.pack_start (left); - packer.pack_start (right); - packer.show (); - - /* this alignment is how we position the box that holds the two widgets - within our allocation, and how we request more space around them. - */ - - align.add (packer); - - if (!central_link) { - align.set (0.5, 1.0); - align.set_padding (9, 0, 9, 9); - } else { - align.set (0.5, 0.5); - align.set_padding (1, 1, 1, 1); - } - - align.show (); - - add (align); - - add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK| - Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK); - - uint32_t border_color; - uint32_t r, g, b, a; - - border_color = UIConfiguration::instance().color (string_compose ("%1: border end", name)); - UINT_TO_RGBA (border_color, &r, &g, &b, &a); - - border_r = r/255.0; - border_g = g/255.0; - border_b = b/255.0; - - /* child cairo widgets need the color of the inner edge as their - * "background" - */ - - Gdk::Color col; - col.set_rgb_p (border_r, border_g, border_b); - provide_background_for_cairo_widget (*this, col); -} - -ButtonJoiner::~ButtonJoiner () -{ - if (active_fill_pattern) { - cairo_pattern_destroy (active_fill_pattern); - cairo_pattern_destroy (inactive_fill_pattern); - } -} - -void -ButtonJoiner::render (Cairo::RefPtr<Cairo::Context> const& ctx, cairo_rectangle_t*) -{ - cairo_t* cr = ctx->cobj(); - double h = get_height(); - - if (!get_active()) { - cairo_set_source (cr, inactive_fill_pattern); - } else { - cairo_set_source (cr, active_fill_pattern); - } - - if (!central_link) { - /* outer rect */ - - Gtkmm2ext::rounded_top_rectangle (cr, 0, 0, get_width(), h, 8); - cairo_fill_preserve (cr); - - /* outer edge */ - - cairo_set_line_width (cr, 1.5); - cairo_set_source_rgb (cr, border_r, border_g, border_b); - cairo_stroke (cr); - - /* inner "edge" */ - - Gtkmm2ext::rounded_top_rectangle (cr, 8, 8, get_width() - 16, h - 8, 6); - cairo_stroke (cr); - } else { - if (get_active()) { - Gtkmm2ext::rounded_top_rectangle (cr, 0, 0, (get_width() - 20.0)/2.0 , h, 8); - cairo_fill_preserve (cr); - - Gtkmm2ext::rounded_top_rectangle (cr, (get_width() - 20.)/2.0 + 20.0, 0.0, - (get_width() - 20.0)/2.0 , h, 8); - cairo_fill_preserve (cr); - - cairo_move_to (cr, get_width()/2.0 - 10.0, h/2.0); - cairo_set_line_width (cr, 1.5); - cairo_rel_line_to (cr, 20.0, 0.0); - cairo_set_source (cr, active_fill_pattern); - cairo_stroke (cr); - } else { - cairo_arc (cr, get_width()/2.0, h/2.0, 6.0, 0, M_PI*2.0); - cairo_set_line_width (cr, 1.5); - cairo_fill_preserve (cr); - cairo_set_source_rgb (cr, border_r, border_g, border_b); - cairo_stroke (cr); - } - } -} - -void -ButtonJoiner::on_size_allocate (Allocation& alloc) -{ - CairoWidget::on_size_allocate (alloc); - set_colors (); -} - -bool -ButtonJoiner::on_button_release_event (GdkEventButton*) -{ - if (_action) { - _action->activate (); - } - - return true; -} - -void -ButtonJoiner::on_size_request (Gtk::Requisition* r) -{ - CairoWidget::on_size_request (r); -} - -void -ButtonJoiner::set_related_action (Glib::RefPtr<Action> act) -{ - Gtkmm2ext::Activatable::set_related_action (act); - - if (_action) { - - action_tooltip_changed (); - - Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (_action); - if (tact) { - action_toggled (); - tact->signal_toggled().connect (sigc::mem_fun (*this, &ButtonJoiner::action_toggled)); - } - - _action->connect_property_changed ("sensitive", sigc::mem_fun (*this, &ButtonJoiner::action_sensitivity_changed)); - _action->connect_property_changed ("visible", sigc::mem_fun (*this, &ButtonJoiner::action_visibility_changed)); - _action->connect_property_changed ("tooltip", sigc::mem_fun (*this, &ButtonJoiner::action_tooltip_changed)); - } -} - -void -ButtonJoiner::action_sensitivity_changed () -{ - if (_action->property_sensitive ()) { - set_visual_state (Gtkmm2ext::VisualState (visual_state() & ~Gtkmm2ext::Insensitive)); - } else { - set_visual_state (Gtkmm2ext::VisualState (visual_state() | Gtkmm2ext::Insensitive)); - } - -} - -void -ButtonJoiner::action_visibility_changed () -{ - if (_action->property_visible ()) { - show (); - } else { - hide (); - } -} - -void -ButtonJoiner::action_tooltip_changed () -{ - std::string str = _action->property_tooltip().get_value(); - set_tooltip (*this, str); -} - -void -ButtonJoiner::action_toggled () -{ - Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (_action); - - if (tact) { - set_active (tact->get_active()); - } -} - -void -ButtonJoiner::set_active_state (Gtkmm2ext::ActiveState s) -{ - bool changed = (_active_state != s); - CairoWidget::set_active_state (s); - if (changed) { - set_colors (); - } -} - -void -ButtonJoiner::set_colors () -{ - uint32_t start_color; - uint32_t end_color; - uint32_t r, g, b, a; - - if (active_fill_pattern) { - cairo_pattern_destroy (active_fill_pattern); - cairo_pattern_destroy (inactive_fill_pattern); - } - - active_fill_pattern = cairo_pattern_create_linear (0.0, 0.0, 0.0, get_height()); - inactive_fill_pattern = cairo_pattern_create_linear (0.0, 0.0, 0.0, get_height()); - - start_color = UIConfiguration::instance().color (string_compose ("%1: fill start", name)); - end_color = UIConfiguration::instance().color (string_compose ("%1: fill end", name)); - UINT_TO_RGBA (start_color, &r, &g, &b, &a); - cairo_pattern_add_color_stop_rgba (inactive_fill_pattern, 0, r/255.0,g/255.0,b/255.0, a/255.0); - UINT_TO_RGBA (end_color, &r, &g, &b, &a); - cairo_pattern_add_color_stop_rgba (inactive_fill_pattern, 1, r/255.0,g/255.0,b/255.0, a/255.0); - - start_color = UIConfiguration::instance().color (string_compose ("%1: fill start active", name)); - end_color = UIConfiguration::instance().color (string_compose ("%1: fill end active", name)); - UINT_TO_RGBA (start_color, &r, &g, &b, &a); - cairo_pattern_add_color_stop_rgba (active_fill_pattern, 0, r/255.0,g/255.0,b/255.0, a/255.0); - UINT_TO_RGBA (end_color, &r, &g, &b, &a); - cairo_pattern_add_color_stop_rgba (active_fill_pattern, 1, r/255.0,g/255.0,b/255.0, a/255.0); - - queue_draw (); -} - diff --git a/gtk2_ardour/button_joiner.h b/gtk2_ardour/button_joiner.h deleted file mode 100644 index 8f009c8dbc..0000000000 --- a/gtk2_ardour/button_joiner.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - Copyright (C) 2012 Paul Davis - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -*/ - -#ifndef __gtk2_ardour_button_joiner_h__ -#define __gtk2_ardour_button_joiner_h__ - -#include <gtkmm/box.h> -#include <gtkmm/alignment.h> -#include <gtkmm/action.h> - -#include "gtkmm2ext/activatable.h" -#include "gtkmm2ext/cairo_widget.h" - -class ButtonJoiner : public CairoWidget, public Gtkmm2ext::Activatable -{ -public: - ButtonJoiner (const std::string&, Gtk::Widget&, Gtk::Widget&, bool central_link = false); - ~ButtonJoiner (); - - void set_related_action (Glib::RefPtr<Gtk::Action>); - void set_active_state (Gtkmm2ext::ActiveState); - -protected: - void render (Cairo::RefPtr<Cairo::Context> const&, cairo_rectangle_t*); - bool on_button_release_event (GdkEventButton*); - void on_size_request (Gtk::Requisition*); - void on_size_allocate (Gtk::Allocation&); - - void action_sensitivity_changed (); - void action_visibility_changed (); - void action_tooltip_changed (); - void action_toggled (); - -private: - Gtk::Widget& left; - Gtk::Widget& right; - Gtk::HBox packer; - Gtk::Alignment align; - std::string name; - cairo_pattern_t* active_fill_pattern; - cairo_pattern_t* inactive_fill_pattern; - bool central_link; - double border_r; - double border_g; - double border_b; - void set_colors (); -}; - -#endif /* __gtk2_ardour_button_joiner_h__ */ diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 606444c6bd..b09e027832 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -103,7 +103,6 @@ class AutomationLine; class AutomationSelection; class AutomationTimeAxisView; class BundleManager; -class ButtonJoiner; class ControlPoint; class CursorContext; class DragManager; diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript index 123cf1e994..96a5e7229f 100644 --- a/gtk2_ardour/wscript +++ b/gtk2_ardour/wscript @@ -54,7 +54,6 @@ gtk2_ardour_sources = [ 'axis_view.cc', 'big_clock_window.cc', 'bundle_manager.cc', - 'button_joiner.cc', 'clock_group.cc', 'color_theme_manager.cc', 'configinfo.cc', |