diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2014-12-14 16:14:18 -0500 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2014-12-14 16:14:18 -0500 |
commit | 59f32dc80f7ba299534e4fefa2bf02e9fff4b8b2 (patch) | |
tree | fe804b585bce618fd39c4357b22098407b49dea6 /gtk2_ardour/theme_manager.cc | |
parent | 48a7a11974fb378483da9c4cce6e2af4d7060c5d (diff) |
remove base color concept from UIConfiguration and ThemeManager.
What used to be "relative colors" (defined relative to base colors) are now defined
in absolute terms.
Diffstat (limited to 'gtk2_ardour/theme_manager.cc')
-rw-r--r-- | gtk2_ardour/theme_manager.cc | 196 |
1 files changed, 31 insertions, 165 deletions
diff --git a/gtk2_ardour/theme_manager.cc b/gtk2_ardour/theme_manager.cc index 551aeb7ba6..b21b713706 100644 --- a/gtk2_ardour/theme_manager.cc +++ b/gtk2_ardour/theme_manager.cc @@ -82,41 +82,15 @@ ThemeManager::ThemeManager() { set_title (_("Theme Manager")); - /* Basic color list */ - - basic_color_list = TreeStore::create (basic_color_columns); - basic_color_display.set_model (basic_color_list); - basic_color_display.append_column (_("Object"), basic_color_columns.name); - - Gtkmm2ext::CellRendererColorSelector* color_renderer = manage (new Gtkmm2ext::CellRendererColorSelector); - TreeViewColumn* color_column = manage (new TreeViewColumn (_("Color"), *color_renderer)); - color_column->add_attribute (color_renderer->property_color(), basic_color_columns.gdkcolor); - - basic_color_display.append_column (*color_column); - - basic_color_display.get_column (0)->set_data (X_("colnum"), GUINT_TO_POINTER(0)); - basic_color_display.get_column (0)->set_expand (true); - basic_color_display.get_column (1)->set_data (X_("colnum"), GUINT_TO_POINTER(1)); - basic_color_display.get_column (1)->set_expand (false); - basic_color_display.set_reorderable (false); - basic_color_display.get_selection()->set_mode (SELECTION_NONE); - basic_color_display.set_headers_visible (true); - - basic_color_display.signal_button_press_event().connect (sigc::mem_fun (*this, &ThemeManager::basic_color_button_press_event), false); - - scroller.add (basic_color_display); - scroller.set_policy (POLICY_NEVER, POLICY_AUTOMATIC); - /* Now the alias list */ alias_list = TreeStore::create (alias_columns); alias_display.set_model (alias_list); - alias_display.append_column (_("Object"), basic_color_columns.name); - - color_renderer = manage (new Gtkmm2ext::CellRendererColorSelector); - color_column = manage (new TreeViewColumn (_("Color"), *color_renderer)); + alias_display.append_column (_("Object"), alias_columns.name); + + Gtkmm2ext::CellRendererColorSelector* color_renderer = manage (new Gtkmm2ext::CellRendererColorSelector); + TreeViewColumn* color_column = manage (new TreeViewColumn (_("Color"), *color_renderer)); color_column->add_attribute (color_renderer->property_color(), alias_columns.color); - alias_display.append_column (*color_column); alias_display.get_column (0)->set_data (X_("colnum"), GUINT_TO_POINTER(0)); @@ -186,7 +160,6 @@ ThemeManager::ThemeManager() notebook.append_page (alias_scroller, _("Items")); notebook.append_page (palette_scroller, _("Palette")); - notebook.append_page (scroller, _("Colors")); vbox->pack_start (notebook); @@ -225,7 +198,6 @@ ThemeManager::ThemeManager() PROGRAM_NAME)); set_size_request (-1, 400); - setup_basic_color_display (); /* no need to call setup_palette() here, it will be done when its size is allocated */ setup_aliases (); @@ -243,7 +215,6 @@ ThemeManager::~ThemeManager() void ThemeManager::colors_changed () { - setup_basic_color_display (); setup_palette (); setup_aliases (); } @@ -254,77 +225,6 @@ ThemeManager::save (string /*path*/) return 0; } -bool -ThemeManager::basic_color_button_press_event (GdkEventButton* ev) -{ - TreeIter iter; - TreeModel::Path path; - TreeViewColumn* column; - int cellx; - int celly; - - if (!basic_color_display.get_path_at_pos ((int)ev->x, (int)ev->y, path, column, cellx, celly)) { - return false; - } - - switch (GPOINTER_TO_UINT (column->get_data (X_("colnum")))) { - case 0: - /* allow normal processing to occur */ - return false; - - case 1: /* color */ - if ((iter = basic_color_list->get_iter (path))) { - - string color_name = (*iter)[basic_color_columns.name]; - Gdk::Color color; - double r, g, b, a; - - ArdourCanvas::color_to_rgba (ARDOUR_UI::config()->base_color_by_name (color_name), r, g, b, a); - color.set_rgb_p (r, g, b); - color_dialog.get_colorsel()->set_previous_color (color); - color_dialog.get_colorsel()->set_current_color (color); - color_dialog.get_colorsel()->set_previous_alpha ((guint16) (a * 65535.0)); - color_dialog.get_colorsel()->set_current_alpha ((guint16) (a * 65535.0)); - - color_dialog_connection.disconnect (); - color_dialog_connection = color_dialog.signal_response().connect (sigc::bind (sigc::mem_fun (*this, &ThemeManager::basic_color_response), color_name)); - color_dialog.present (); - } - } - - return true; -} - -void -ThemeManager::basic_color_response (int result, string name) -{ - Gdk::Color color; - double a; - - color_dialog_connection.disconnect (); - - switch (result) { - case RESPONSE_CANCEL: - break; - case RESPONSE_ACCEPT: - case RESPONSE_OK: - color = color_dialog.get_colorsel()->get_current_color(); - a = color_dialog.get_colorsel()->get_current_alpha() / 65535.0; - - ARDOUR_UI::config()->set_base (name, ArdourCanvas::rgba_to_color (color.get_red_p(), - color.get_green_p(), - color.get_blue_p(), - a)); - break; - - default: - break; - - } - - color_dialog.hide (); -} - void ThemeManager::on_flat_buttons_toggled () { @@ -404,43 +304,34 @@ ThemeManager::on_light_theme_button_toggled() } void -ThemeManager::setup_basic_color_display () +ThemeManager::reset_canvas_colors() { - basic_color_list->clear(); - - for (UIConfiguration::BaseColors::const_iterator i = ARDOUR_UI::config()->base_colors.begin(); i != ARDOUR_UI::config()->base_colors.end(); i++) { - TreeModel::Row row; - - row = *(basic_color_list->append()); - row[basic_color_columns.name] = i->first; + ARDOUR_UI::config()->load_defaults(); + ARDOUR_UI::config()->save_state (); +} - ArdourCanvas::Color c = i->second; +ArdourCanvas::Container* +ThemeManager::initialize_palette_canvas (ArdourCanvas::Canvas& canvas) +{ + using namespace ArdourCanvas; - /* Gdk colors don't support alpha */ + /* hide background */ + canvas.set_background_color (rgba_to_color (0.0, 0.0, 1.0, 0.0)); - double r, g, b, a; - ArdourCanvas::color_to_rgba (c, r, g, b, a); - Gdk::Color gcolor; - gcolor.set_rgb_p (r, g, b); + /* bi-directional scroll group */ + + ScrollGroup* scroll_group = new ScrollGroup (canvas.root(), ScrollGroup::ScrollSensitivity (ScrollGroup::ScrollsVertically|ScrollGroup::ScrollsHorizontally)); + canvas.add_scroller (*scroll_group); - row[basic_color_columns.gdkcolor] = gcolor; - } + /* new container to hold everything */ - UIConfiguration* uic (ARDOUR_UI::config()); - - flat_buttons.set_active (uic->get_flat_buttons()); - blink_rec_button.set_active (uic->get_blink_rec_arm()); - waveform_gradient_depth.set_value (uic->get_waveform_gradient_depth()); - timeline_item_gradient_depth.set_value (uic->get_timeline_item_gradient_depth()); - all_dialogs.set_active (uic->get_all_floating_windows_are_dialogs()); + return new ArdourCanvas::Container (scroll_group); } void -ThemeManager::reset_canvas_colors() +ThemeManager::palette_canvas_allocated (Gtk::Allocation& alloc, ArdourCanvas::Container* group, ArdourCanvas::Canvas* canvas, sigc::slot<bool,GdkEvent*,std::string> event_handler) { - ARDOUR_UI::config()->load_defaults(); - setup_basic_color_display (); - ARDOUR_UI::config()->save_state (); + build_palette_canvas (*canvas, *group, event_handler); } struct NamedColor { @@ -463,29 +354,6 @@ struct SortByHue { } }; -ArdourCanvas::Container* -ThemeManager::initialize_palette_canvas (ArdourCanvas::Canvas& canvas) -{ - using namespace ArdourCanvas; - - /* hide background */ - canvas.set_background_color (rgba_to_color (0.0, 0.0, 1.0, 0.0)); - - /* bi-directional scroll group */ - - ScrollGroup* scroll_group = new ScrollGroup (canvas.root(), ScrollGroup::ScrollSensitivity (ScrollGroup::ScrollsVertically|ScrollGroup::ScrollsHorizontally)); - canvas.add_scroller (*scroll_group); - - /* new container to hold everything */ - - return new ArdourCanvas::Container (scroll_group); -} - -void -ThemeManager::palette_canvas_allocated (Gtk::Allocation& alloc, ArdourCanvas::Container* group, ArdourCanvas::Canvas* canvas, sigc::slot<bool,GdkEvent*,std::string> event_handler) -{ - build_palette_canvas (*canvas, *group, event_handler); -} void ThemeManager::build_palette_canvas (ArdourCanvas::Canvas& canvas, ArdourCanvas::Container& group, sigc::slot<bool,GdkEvent*,std::string> event_handler) @@ -494,10 +362,10 @@ ThemeManager::build_palette_canvas (ArdourCanvas::Canvas& canvas, ArdourCanvas:: /* we want the colors sorted by hue, with their name */ - UIConfiguration::RelativeColors& relatives (ARDOUR_UI::instance()->config()->relative_colors); + UIConfiguration::Colors& colors (ARDOUR_UI::instance()->config()->colors); vector<NamedColor> nc; - for (UIConfiguration::RelativeColors::const_iterator x = relatives.begin(); x != relatives.end(); ++x) { - nc.push_back (NamedColor (x->first, x->second.get())); + for (UIConfiguration::Colors::const_iterator x = colors.begin(); x != colors.end(); ++x) { + nc.push_back (NamedColor (x->first, HSV (x->second))); } SortByHue sorter; sort (nc.begin(), nc.end(), sorter); @@ -519,10 +387,10 @@ ThemeManager::build_palette_canvas (ArdourCanvas::Canvas& canvas, ArdourCanvas:: string name = nc[color_num++].name; - UIConfiguration::RelativeColors::iterator c = relatives.find (name); + UIConfiguration::Colors::iterator c = colors.find (name); - if (c != relatives.end()) { - Color color = c->second.get().color (); + if (c != colors.end()) { + Color color = c->second; r->set_fill_color (color); r->set_outline_color (rgba_to_color (0.0, 0.0, 0.0, 1.0)); r->set_tooltip (name); @@ -535,7 +403,7 @@ ThemeManager::build_palette_canvas (ArdourCanvas::Canvas& canvas, ArdourCanvas:: void ThemeManager::palette_size_request (Gtk::Requisition* req) { - uint32_t ncolors = ARDOUR_UI::instance()->config()->relative_colors.size(); + uint32_t ncolors = ARDOUR_UI::instance()->config()->colors.size(); const int box_size = 20; double c = sqrt ((double)ncolors); @@ -598,7 +466,6 @@ ThemeManager::palette_color_response (int result, std::string name) color_dialog_connection.disconnect (); UIConfiguration* uic (ARDOUR_UI::instance()->config()); - UIConfiguration::RelativeHSV rhsv ("", HSV()); Gdk::Color gdkcolor; double r,g, b, a; @@ -610,9 +477,8 @@ ThemeManager::palette_color_response (int result, std::string name) r = gdkcolor.get_red_p(); g = gdkcolor.get_green_p(); b = gdkcolor.get_blue_p(); - - rhsv = uic->color_as_relative_hsv (rgba_to_color (r, g, b, a)); - uic->set_relative (name, rhsv); + + uic->set_color (name, rgba_to_color (r, g, b, a)); break; default: |