summaryrefslogtreecommitdiff
path: root/gtk2_ardour/theme_manager.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2014-12-14 16:14:18 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2014-12-14 16:14:18 -0500
commit59f32dc80f7ba299534e4fefa2bf02e9fff4b8b2 (patch)
treefe804b585bce618fd39c4357b22098407b49dea6 /gtk2_ardour/theme_manager.cc
parent48a7a11974fb378483da9c4cce6e2af4d7060c5d (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.cc196
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: