Major Theme Manager changes, see ardour-dev
authorDoug McLain <doug@nostar.net>
Fri, 15 Jun 2007 22:08:27 +0000 (22:08 +0000)
committerDoug McLain <doug@nostar.net>
Fri, 15 Jun 2007 22:08:27 +0000 (22:08 +0000)
git-svn-id: svn://localhost/ardour2/trunk@1987 d708f5d6-7413-0410-9779-e7cbd77b26cf

45 files changed:
gtk2_ardour/ardour.colors
gtk2_ardour/ardour2_ui_dark.rc
gtk2_ardour/ardour_ui.cc
gtk2_ardour/ardour_ui.h
gtk2_ardour/audio_region_view.cc
gtk2_ardour/audio_region_view.h
gtk2_ardour/audio_streamview.cc
gtk2_ardour/audio_streamview.h
gtk2_ardour/audio_time_axis.cc
gtk2_ardour/automation_line.cc
gtk2_ardour/automation_time_axis.cc
gtk2_ardour/automation_time_axis.h
gtk2_ardour/color.h [deleted file]
gtk2_ardour/colors.h [deleted file]
gtk2_ardour/crossfade_edit.cc
gtk2_ardour/crossfade_view.cc
gtk2_ardour/crossfade_view.h
gtk2_ardour/editor.cc
gtk2_ardour/editor.h
gtk2_ardour/editor_canvas.cc
gtk2_ardour/editor_mouse.cc
gtk2_ardour/editor_tempodisplay.cc
gtk2_ardour/ghostregion.cc
gtk2_ardour/ghostregion.h
gtk2_ardour/imageframe_time_axis_view.cc
gtk2_ardour/marker.cc
gtk2_ardour/marker_time_axis_view.cc
gtk2_ardour/midi_streamview.cc
gtk2_ardour/midi_streamview.h
gtk2_ardour/region_view.cc
gtk2_ardour/region_view.h
gtk2_ardour/route_time_axis.cc
gtk2_ardour/route_time_axis.h
gtk2_ardour/streamview.cc
gtk2_ardour/streamview.h
gtk2_ardour/theme_manager.cc
gtk2_ardour/theme_manager.h
gtk2_ardour/time_axis_view.cc
gtk2_ardour/time_axis_view.h
gtk2_ardour/time_axis_view_item.cc
libs/ardour/ardour/canvas_vars.h [new file with mode: 0644]
libs/ardour/ardour/configuration.h
libs/ardour/ardour/configuration_variable.h
libs/ardour/ardour/configuration_vars.h
libs/ardour/configuration.cc

index c247195c7eefcd6593462698006fd4fc5ef8c3b1..87f53d9d92f3e9d2a66c69d1a24b43a483380dd2 100644 (file)
@@ -1,6 +1,6 @@
 cWaveForm 0.0 0.0 0.0 0.80
 cWaveFormClip 1.0 0.0 0.0 0.90
-cMutedWaveForm 0.35 0.35 0.35 1.0
+cMutedWaveForm 0.0 0.0 0.0 0.30
 cSelectedFrameBase 0.71 0.57 0.66 1.0
 cFrameBase 0.75 0.75 0.76 1.0
 cAudioTrackOutline 0.00 0.00 0.00 1.00
index 29243d7d78778f63b536018a3da896724c9ec734..631ef4b92e2a3a222cc1cf691f5f77c0e45457b0 100644 (file)
@@ -80,7 +80,7 @@ style "marker_text"
 
 style "time_axis_view_item_name"
 {
-       font_name = "sans 9"
+       font_name = "sans 6"
 }
 
 style "default_base" = "medium_text"
@@ -122,9 +122,6 @@ style "default_base" = "medium_text"
   engine "clearlooks" 
   {
     menubarstyle      = 0       # 0 = flat, 1 = sunken, 2 = flat gradient
-    menuitemstyle     = 0       # 0 = flat, 1 = 3d-ish (gradient), 2 = 3d-ish (button)
-    listviewitemstyle = 0       # 0 = flat, 1 = 3d-ish (gradient)
-    progressbarstyle  = 1       # 0 = candy bar, 1 = fancy candy bar, 2 = flat
   }
 }
 
index e47362be8808bf74a3c74fd234796119cfa00917..74baad2857110659a5f3e69e0ec461d477ed8565 100644 (file)
@@ -169,9 +169,9 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[])
 
        theme_manager = new ThemeManager();
 
-       std::string color_file = ARDOUR::find_config_file("ardour.colors");
+       //std::string color_file = ARDOUR::find_config_file("ardour.colors");
 
-       theme_manager->load (color_file);
+       //theme_manager->load (color_file);
 
        editor = 0;
        mixer = 0;
@@ -1527,7 +1527,7 @@ ARDOUR_UI::setup_theme ()
        }
 
        ThemeChanged (rcfile); //EMIT SIGNAL
-       theme_manager->setup_theme_buttons();
+       theme_manager->setup_theme();
 }
 
 gint
index fc4114554c230e9b5325ebabeb4f26d2a6b6373e..08485d9ca3abdef9b283629f0bd007aa0171b4f3 100644 (file)
@@ -57,6 +57,7 @@
 #include <gtkmm2ext/bindable_button.h>
 #include <ardour/ardour.h>
 #include <ardour/session.h>
+#include <ardour/configuration.h>
 
 #include "audio_clock.h"
 #include "ardour_dialog.h"
index 3fb1a016e43c9fa7fb6ffa562376e9b8f62b9628..991f15075a8cd0047c186b00a3eaed877cd52251 100644 (file)
@@ -48,6 +48,8 @@
 
 #include "i18n.h"
 
+#define MUTED_ALPHA 0x50
+
 using namespace sigc;
 using namespace ARDOUR;
 using namespace PBD;
@@ -390,9 +392,9 @@ AudioRegionView::region_muted ()
 
        for (uint32_t n=0; n < waves.size(); ++n) {
                if (_region->muted()) {
-                       waves[n]->property_wave_color() = color_map[cMutedWaveForm];
+                       waves[n]->property_wave_color() = UINT_RGBA_CHANGE_A(Config->canvasvar_WaveForm.get(), MUTED_ALPHA);
                } else {
-                       waves[n]->property_wave_color() = color_map[cWaveForm];
+                       waves[n]->property_wave_color() = Config->canvasvar_WaveForm.get();
                }
        }
 }
@@ -699,18 +701,18 @@ AudioRegionView::set_colors ()
        RegionView::set_colors();
        
        if (gain_line) {
-               gain_line->set_line_color (audio_region()->envelope_active() ? color_map[cGainLine] : color_map[cGainLineInactive]);
+               gain_line->set_line_color (audio_region()->envelope_active() ? Config->canvasvar_GainLine.get() : Config->canvasvar_GainLineInactive.get());
        }
 
        for (uint32_t n=0; n < waves.size(); ++n) {
                if (_region->muted()) {
-                       waves[n]->property_wave_color() = color_map[cMutedWaveForm];
+                       waves[n]->property_wave_color() = UINT_RGBA_CHANGE_A(Config->canvasvar_WaveForm.get(), MUTED_ALPHA);
                } else {
-                       waves[n]->property_wave_color() = color_map[cWaveForm];
+                       waves[n]->property_wave_color() = Config->canvasvar_WaveForm.get();
                }
 
-               waves[n]->property_clip_color() = color_map[cWaveFormClip];
-               waves[n]->property_zero_color() = color_map[cZeroLine];
+               waves[n]->property_clip_color() = Config->canvasvar_WaveFormClip.get();
+               waves[n]->property_zero_color() = Config->canvasvar_ZeroLine.get();
        }
 }
 
@@ -848,9 +850,9 @@ AudioRegionView::create_one_wave (uint32_t which, bool direct)
        wave->property_height() =  (double) ht;
        wave->property_samples_per_unit() =  samples_per_unit;
        wave->property_amplitude_above_axis() =  _amplitude_above_axis;
-       wave->property_wave_color() = _region->muted() ? color_map[cMutedWaveForm] : color_map[cWaveForm];
-       wave->property_clip_color() = color_map[cWaveFormClip];
-       wave->property_zero_color() = color_map[cZeroLine];
+       wave->property_wave_color() = _region->muted() ? UINT_RGBA_CHANGE_A(Config->canvasvar_WaveForm.get(), MUTED_ALPHA) : Config->canvasvar_WaveForm.get();
+       wave->property_clip_color() = Config->canvasvar_WaveFormClip.get();
+       wave->property_zero_color() = Config->canvasvar_ZeroLine.get();
        wave->property_region_start() = _region->start();
        wave->property_rectified() = (bool) (_flags & WaveformRectified);
        wave->property_logscaled() = (bool) (_flags & WaveformLogScaled);
@@ -894,7 +896,7 @@ AudioRegionView::create_one_wave (uint32_t which, bool direct)
                        zero_line = new ArdourCanvas::SimpleLine (*group);
                        zero_line->property_x1() = (gdouble) 1.0;
                        zero_line->property_x2() = (gdouble) (_region->length() / samples_per_unit) - 1.0;
-                       zero_line->property_color_rgba() = (guint) color_map[cZeroLine];
+                       zero_line->property_color_rgba() = (guint) Config->canvasvar_ZeroLine.get();
                        manage_zero_line ();
                }
        }
@@ -1096,9 +1098,9 @@ AudioRegionView::add_ghost (AutomationTimeAxisView& atv)
                wave->property_x() =  0.0;
                wave->property_samples_per_unit() =  samples_per_unit;
                wave->property_amplitude_above_axis() =  _amplitude_above_axis;
-               wave->property_wave_color() = color_map[cGhostTrackWave];
-               wave->property_clip_color() = color_map[cGhostTrackWaveClip];
-               wave->property_zero_color() = color_map[cGhostTrackZeroLine];
+               wave->property_wave_color() = Config->canvasvar_GhostTrackWave.get();
+               wave->property_clip_color() = Config->canvasvar_GhostTrackWaveClip.get();
+               wave->property_zero_color() = Config->canvasvar_GhostTrackZeroLine.get();
                wave->property_region_start() = _region->start();
 
                ghost->waves.push_back(wave);
@@ -1151,7 +1153,7 @@ void
 AudioRegionView::envelope_active_changed ()
 {
        if (gain_line) {
-               gain_line->set_line_color (audio_region()->envelope_active() ? color_map[cGainLine] : color_map[cGainLineInactive]);
+               gain_line->set_line_color (audio_region()->envelope_active() ? Config->canvasvar_GainLine.get() : Config->canvasvar_GainLineInactive.get());
        }
 }
 
@@ -1178,22 +1180,16 @@ AudioRegionView::set_waveview_data_src()
 }
 
 void
-AudioRegionView::color_handler (ColorID id, uint32_t val)
+AudioRegionView::color_handler ()
 {
-       switch (id) {
-       case cMutedWaveForm:
-       case cWaveForm:
-       case cWaveFormClip:
-       case cZeroLine:
-               set_colors ();
-               break;
+       //case cMutedWaveForm:
+       //case cWaveForm:
+       //case cWaveFormClip:
+       //case cZeroLine:
+       set_colors ();
 
-       case cGainLineInactive:
-       case cGainLine:
-               envelope_active_changed();
-               break;
+       //case cGainLineInactive:
+       //case cGainLine:
+       envelope_active_changed();
 
-       default:
-               break;
-       }
 }
index 1facc652a9212974acd8c64e3ead68366bf073d3..4d31cfbe299c874f65a10893e22cbf5df20362d3 100644 (file)
@@ -163,7 +163,7 @@ class AudioRegionView : public RegionView
     void reset_width_dependent_items (double pixel_width);
     void set_waveview_data_src();
     
-    void color_handler (ColorID, uint32_t);
+    void color_handler ();
 
     vector<GnomeCanvasWaveViewCache*> wave_caches;
 
index 573ed0cebaf19353b5b566691df113b7d33fae75..a95c0ba6483b53da74e63e4740d5bf86a9313a21 100644 (file)
@@ -64,12 +64,12 @@ AudioStreamView::AudioStreamView (AudioTimeAxisView& tv)
        _waveform_shape = Traditional;
        
        if (tv.is_track())
-               stream_base_color = color_map[cAudioTrackBase];
+               stream_base_color = Config->canvasvar_AudioTrackBase.get();
        else
-               stream_base_color = color_map[cAudioBusBase];
+               stream_base_color = Config->canvasvar_AudioBusBase.get();
        
        canvas_rect->property_fill_color_rgba() = stream_base_color;
-       canvas_rect->property_outline_color_rgba() = color_map[cAudioTrackOutline];
+       canvas_rect->property_outline_color_rgba() = RGBA_BLACK;
 
        _amplitude_above_axis = 1.0;
 
@@ -520,12 +520,12 @@ AudioStreamView::setup_rec_box ()
                        switch (_trackview.audio_track()->mode()) {
                        case Normal:
                                xend = xstart;
-                               fill_color = color_map[cRecordingRectFill];
+                               fill_color = Config->canvasvar_RecordingRect.get();
                                break;
 
                        case Destructive:
                                xend = xstart + 2;
-                               fill_color = color_map[cRecordingRectFill];
+                               fill_color = Config->canvasvar_RecordingRect.get();
                                /* make the recording rect translucent to allow
                                   the user to see the peak data coming in, etc.
                                */
@@ -538,7 +538,7 @@ AudioStreamView::setup_rec_box ()
                        rec_rect->property_y1() = 1.0;
                        rec_rect->property_x2() = xend;
                        rec_rect->property_y2() = (double) _trackview.height - 1;
-                       rec_rect->property_outline_color_rgba() = color_map[cRecordingRectOutline];
+                       rec_rect->property_outline_color_rgba() = Config->canvasvar_RecordingRect.get();
                        rec_rect->property_fill_color_rgba() = fill_color;
                        rec_rect->lower_to_bottom();
                        
@@ -761,26 +761,18 @@ AudioStreamView::reveal_xfades_involving (AudioRegionView& rv)
 }
 
 void
-AudioStreamView::color_handler (ColorID id, uint32_t val)
+AudioStreamView::color_handler ()
 {
-       switch (id) {
-       case cAudioTrackBase:
-               if (_trackview.is_track()) {
-                       canvas_rect->property_fill_color_rgba() = val;
-               } 
-               break;
-       case cAudioBusBase:
-               if (!_trackview.is_track()) {
-                       canvas_rect->property_fill_color_rgba() = val;
-               }
-               break;
-       case cAudioTrackOutline:
-               canvas_rect->property_outline_color_rgba() = val;
-               break;
+       //case cAudioTrackBase:
+       if (_trackview.is_track()) {
+               canvas_rect->property_fill_color_rgba() = Config->canvasvar_AudioTrackBase.get();
+       } 
 
-       default:
-               break;
+       //case cAudioBusBase:
+       if (!_trackview.is_track()) {
+               canvas_rect->property_fill_color_rgba() = Config->canvasvar_AudioBusBase.get();
        }
+
 }
 
 void
index 2baf1a6f66ef167c250546317561e400f87b7b52..c8c9d5c4f610481704c9ebccbf8e2131797b245c 100644 (file)
@@ -97,7 +97,7 @@ class AudioStreamView : public StreamView
        void add_crossfade_weak (boost::weak_ptr<ARDOUR::Crossfade>);
        void remove_crossfade (boost::shared_ptr<ARDOUR::Region>);
 
-       void color_handler (ColorID id, uint32_t val);
+       void color_handler ();
 
        void update_contents_y_position_and_height ();
        
index d37b164ed1d2af6354e6222c1c0e224f8e950d49..b515180f2f35492b2599870362149ee4b74f585b 100644 (file)
@@ -379,7 +379,7 @@ AudioTimeAxisView::add_gain_automation_child ()
                                       *gain_track->canvas_display,
                                       _route->gain_automation_curve());
 
-       line->set_line_color (color_map[cAutomationLine]);
+       line->set_line_color (Config->canvasvar_AutomationLine.get());
        
 
        gain_track->add_line (*line);
@@ -460,10 +460,10 @@ AudioTimeAxisView::update_pans ()
 
                if (p == _route->panner().begin()) {
                        /* first line is a nice orange */
-                       line->set_line_color (color_map[cLeftPanAutomationLine]);
+                       line->set_line_color (Config->canvasvar_AutomationLine.get());
                } else {
                        /* second line is a nice blue */
-                       line->set_line_color (color_map[cRightPanAutomationLine]);
+                       line->set_line_color (Config->canvasvar_AutomationLine.get());
                }
 
                pan_track->add_line (*line);
index a72916191173a202609b0e388837dc3b450c006d..683a76793547f84fd62f3873071453a87d71fc89 100644 (file)
@@ -69,8 +69,8 @@ ControlPoint::ControlPoint (AutomationLine& al)
        item = new Canvas::SimpleRect (line.canvas_group());
        item->property_draw() = true;
        item->property_fill() = false;
-       item->property_fill_color_rgba() =  color_map[cControlPointFill];
-       item->property_outline_color_rgba() = color_map[cControlPointOutline];
+       item->property_fill_color_rgba() =  Config->canvasvar_ControlPointFill.get();
+       item->property_outline_color_rgba() = Config->canvasvar_ControlPointOutline.get();
        item->property_outline_pixels() = 1;
        item->set_data ("control_point", this);
        item->signal_event().connect (mem_fun (this, &ControlPoint::event_handler));
@@ -97,7 +97,7 @@ ControlPoint::ControlPoint (const ControlPoint& other, bool dummy_arg_to_force_s
 
        item = new Canvas::SimpleRect (line.canvas_group());
        item->property_fill() = false;
-       item->property_outline_color_rgba() = color_map[cEnteredControlPointOutline];
+       item->property_outline_color_rgba() = Config->canvasvar_EnteredControlPointOutline.get();
        item->property_outline_pixels() = 1;
        
        /* NOTE: no event handling in copied ControlPoints */
@@ -148,10 +148,10 @@ ControlPoint::show_color (bool entered, bool hide_too)
 {
        if (entered) {
                if (selected) {
-                       item->property_outline_color_rgba() = color_map[cEnteredControlPointSelected];
+                       item->property_outline_color_rgba() = Config->canvasvar_EnteredControlPointSelected.get();
                        set_visible(true);
                } else {
-                       item->property_outline_color_rgba() = color_map[cEnteredControlPoint];
+                       item->property_outline_color_rgba() = Config->canvasvar_EnteredControlPoint.get();
                        if (hide_too) {
                                set_visible(false);
                        }
@@ -159,10 +159,10 @@ ControlPoint::show_color (bool entered, bool hide_too)
 
        } else {
                if (selected) {
-                       item->property_outline_color_rgba() = color_map[cControlPointSelected];
+                       item->property_outline_color_rgba() = Config->canvasvar_ControlPointSelected.get();
                        set_visible(true);
                } else {
-                       item->property_outline_color_rgba() = color_map[cControlPoint];
+                       item->property_outline_color_rgba() = Config->canvasvar_ControlPoint.get();
                        if (hide_too) {
                                set_visible(false);
                        }
@@ -1148,7 +1148,7 @@ AutomationLine::set_selected_points (PointSelection& points)
 }
 
 void AutomationLine::set_colors() {
-       set_line_color( color_map[cAutomationLine] );
+       set_line_color( Config->canvasvar_AutomationLine.get() );
        for (vector<ControlPoint*>::iterator i = control_points.begin(); i != control_points.end(); ++i) {
                (*i)->show_color (false, !points_visible);
        }
index 45103ec7f157b97ac83d4a67cd1e3d0d2989cfb7..04ac1ee0763835d54c0c2415b29bb49073d7df8f 100644 (file)
@@ -74,11 +74,11 @@ AutomationTimeAxisView::AutomationTimeAxisView (Session& s, boost::shared_ptr<Ro
        base_rect->property_x1() = 0.0;
        base_rect->property_y1() = 0.0;
        base_rect->property_x2() = editor.frame_to_pixel (max_frames);
-       base_rect->property_outline_color_rgba() = color_map[cAutomationTrackOutline];
+       base_rect->property_outline_color_rgba() = Config->canvasvar_AutomationTrackOutline.get();
        /* outline ends and bottom */
        base_rect->property_outline_what() = (guint32) (0x1|0x2|0x8);
-       base_rect->property_fill_color_rgba() = color_map[cAutomationTrackFill];
-       //base_rect->property_fill_color_rgba() = color_map[cEnteredControlPoint];
+       base_rect->property_fill_color_rgba() = Config->canvasvar_AutomationTrackFill.get();
+       //base_rect->property_fill_color_rgba() = Config->canvasvar_EnteredControlPoint.get();
        
        base_rect->set_data ("trackview", this);
 
@@ -182,7 +182,7 @@ AutomationTimeAxisView::AutomationTimeAxisView (Session& s, boost::shared_ptr<Ro
        /* make sure labels etc. are correct */
 
        automation_state_changed ();
-       ColorChanged.connect (mem_fun (*this, &AutomationTimeAxisView::color_handler));
+       ColorsChanged.connect (mem_fun (*this, &AutomationTimeAxisView::color_handler));
 }
 
 AutomationTimeAxisView::~AutomationTimeAxisView ()
@@ -821,24 +821,19 @@ AutomationTimeAxisView::set_colors () {
 }
 
 void
-AutomationTimeAxisView::color_handler (ColorID id, uint32_t val) {
+AutomationTimeAxisView::color_handler () 
+{
     
-       switch (id) {
-       case cGhostTrackWave:
-       case cGhostTrackWaveClip:
-       case cGhostTrackZeroLine:
-
-       case cControlPoint:
-       case cControlPointFill:
-       case cControlPointOutline:
-       case cAutomationLine:
-               set_colors ();
+       //case cGhostTrackWave:
+       //case cGhostTrackWaveClip:
+       //case cGhostTrackZeroLine:
 
-               break;
+       //case cControlPoint:
+       //case cControlPointFill:
+       //case cControlPointOutline:
+       //case cAutomationLine:
+       set_colors ();
 
-       default: 
-               break;
-       }
 }
 
 
index 7b62e6eee2586397329c5d2f09ffe0719f495807..e302e14ebb537bac60cd31bb50772e2b9361da06 100644 (file)
@@ -142,7 +142,7 @@ class AutomationTimeAxisView : public TimeAxisView {
        void exited ();
 
        void set_colors ();
-       void color_handler (ColorID, uint32_t);
+       void color_handler ();
 
        static Pango::FontDescription name_font;
        static bool have_name_font;
diff --git a/gtk2_ardour/color.h b/gtk2_ardour/color.h
deleted file mode 100644 (file)
index 2b9324c..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-    Copyright (C) 2000-2007 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 __gtk_ardour_color_h__
-#define __gtk_ardour_color_h__
-
-#include <sigc++/signal.h>
-
-#undef COLORID
-#define COLORID(a) a,
-enum ColorID {
-        #include "colors.h"
-};
-#undef COLORID
-
-typedef std::map<ColorID,int> ColorMap;
-extern ColorMap color_map;
-
-extern sigc::signal<void>                  ColorsChanged;
-extern sigc::signal<void,ColorID,uint32_t> ColorChanged;
-
-#endif /* __gtk_ardour_color_h__ */
diff --git a/gtk2_ardour/colors.h b/gtk2_ardour/colors.h
deleted file mode 100644 (file)
index 05571f4..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
-    Copyright (C) 2000-2007 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.
-
-*/
-
-/* no guard clauses here */
-
-COLORID(cWaveForm)
-COLORID(cWaveFormClip)
-COLORID(cMutedWaveForm)
-COLORID(cSelectedFrameBase)
-COLORID(cFrameBase)
-COLORID(cAudioTrackBase)
-COLORID(cAudioTrackOutline)
-COLORID(cAudioBusBase)
-COLORID(cMidiTrackBase)
-COLORID(cMidiTrackOutline)
-COLORID(cMidiBusBase)
-COLORID(cTimeStretchFill)
-COLORID(cTimeStretchOutline)
-COLORID(cAutomationLine)
-COLORID(cLeftPanAutomationLine)
-COLORID(cRightPanAutomationLine)
-COLORID(cRedirectAutomationLine)
-COLORID(cControlPointFill)
-COLORID(cControlPointOutline)
-COLORID(cEnteredControlPointOutline)
-COLORID(cEnteredControlPointSelected)
-COLORID(cEnteredControlPoint)
-COLORID(cControlPointSelected)
-COLORID(cControlPoint)
-COLORID(cAutomationTrackFill)
-COLORID(cAutomationTrackOutline)
-COLORID(cCrossfadeEditorBase)
-COLORID(cCrossfadeEditorLine)
-COLORID(cSelectedCrossfadeEditorLine)
-COLORID(cCrossfadeEditorLineShading)
-COLORID(cCrossfadeEditorPointFill)
-COLORID(cCrossfadeEditorPointOutline)
-COLORID(cCrossfadeEditorWave)
-COLORID(cSelectedCrossfadeEditorWave)
-COLORID(cCrossfadeLine)
-COLORID(cActiveCrossfade)
-COLORID(cInactiveCrossfade)
-COLORID(cLocationMarker)
-COLORID(cLocationRange)
-COLORID(cLocationCDMarker)
-COLORID(cLocationLoop)
-COLORID(cLocationPunch)
-COLORID(cVerboseCanvasCursor)
-COLORID(cMarkerLabel)
-COLORID(cTempoBar)
-COLORID(cTempoSeparator)
-COLORID(cMeterBar)
-COLORID(cMeterSeparator)
-COLORID(cMarkerBar)
-COLORID(cMarkerSeparator)
-COLORID(cRangeMarkerBar)
-COLORID(cRangeMarkerSeparator)
-COLORID(cTransportMarkerBar)
-COLORID(cTransportMarkerSeparator)
-COLORID(cRangeDragBarRect)
-COLORID(cRangeDragBarRectFill)
-COLORID(cRangeDragRect)
-COLORID(cRangeDragRectFill)
-COLORID(cTransportDragRect)
-COLORID(cTransportDragRectFill)
-COLORID(cMarkerDragLine)
-COLORID(cTransportLoopRect)
-COLORID(cTransportLoopRectFill)
-COLORID(cTransportPunchRect)
-COLORID(cTransportPunchRectFill)
-COLORID(cPunchInLine)
-COLORID(cPunchOutLine)
-COLORID(cZoomRect)
-COLORID(cZoomRectFill)
-COLORID(cRubberBandRect)
-COLORID(cRubberBandRectFill)
-COLORID(cFirstActionMessage)
-COLORID(cEnteredGainLine)
-COLORID(cEnteredAutomationLine)
-COLORID(cEnteredMarker)
-COLORID(cMeterMarker)
-COLORID(cTempoMarker)
-COLORID(cMeasureLineBeat)
-COLORID(cMeasureLineBar)
-COLORID(cGhostTrackBaseOutline)
-COLORID(cGhostTrackBaseFill)
-COLORID(cGhostTrackWave)
-COLORID(cGhostTrackWaveClip)
-COLORID(cGhostTrackZeroLine)
-COLORID(cImageTrackBase)
-COLORID(cImageTrackOutline)
-COLORID(cMarkerTrackBase)
-COLORID(cMarkerTrackOutline)
-COLORID(cZeroLine)
-COLORID(cGainLine)
-COLORID(cGainLineInactive)
-COLORID(cRecordingRectFill)
-COLORID(cRecordingRectOutline)
-COLORID(cSelectionRectFill)
-COLORID(cSelectionRectOutline)
-COLORID(cSelectionEndFill)
-COLORID(cSelectionEndOutline)
-COLORID(cSelectionStartFill)
-COLORID(cSelectionStartOutline)
-COLORID(cVestigialFrameFill)
-COLORID(cVestigialFrameOutline)
-COLORID(cTimeAxisFrameFill)
-COLORID(cTimeAxisFrameOutline)
-COLORID(cNameHighlightFill)
-COLORID(cNameHighlightOutline)
-COLORID(cFrameHandleStartFill)
-COLORID(cFrameHandleStartOutline)
-COLORID(cFrameHandleEndFill)
-COLORID(cFrameHandleEndOutline)
-COLORID(cTrimHandleLockedStart)
-COLORID(cTrimHandleLockedEnd)
-COLORID(cTrimHandleStart)
-COLORID(cTrimHandleEnd)
-COLORID(cEditCursor)
-COLORID(cPlayHead)
-
index badbc0f1056459176b1e845fa37584990035d4f8..349297f8cda83506b16d5f1a7ac323fc8877ea99 100644 (file)
@@ -129,23 +129,23 @@ CrossfadeEditor::CrossfadeEditor (Session& s, boost::shared_ptr<Crossfade> xf, d
        toplevel->property_x2() =  10.0;
        toplevel->property_y2() =  10.0;
        toplevel->property_fill() =  true;
-       toplevel->property_fill_color_rgba() = color_map[cCrossfadeEditorBase];
+       toplevel->property_fill_color_rgba() = Config->canvasvar_CrossfadeEditorBase.get();
        toplevel->property_outline_pixels() =  0;
        toplevel->signal_event().connect (mem_fun (*this, &CrossfadeEditor::canvas_event));
        
        fade[Out].line = new ArdourCanvas::Line (*(canvas->root()));
        fade[Out].line->property_width_pixels() = 1;
-       fade[Out].line->property_fill_color_rgba() = color_map[cCrossfadeEditorLine];
+       fade[Out].line->property_fill_color_rgba() = Config->canvasvar_CrossfadeEditorLine.get();
                
        fade[Out].shading = new ArdourCanvas::Polygon (*(canvas->root()));
-       fade[Out].shading->property_fill_color_rgba() = color_map[cCrossfadeEditorLineShading];
+       fade[Out].shading->property_fill_color_rgba() = Config->canvasvar_CrossfadeEditorLineShading.get();
 
        fade[In].line = new ArdourCanvas::Line (*(canvas->root()));
        fade[In].line->property_width_pixels() = 1;
-       fade[In].line->property_fill_color_rgba() = color_map[cCrossfadeEditorLine];
+       fade[In].line->property_fill_color_rgba() = Config->canvasvar_CrossfadeEditorLine.get();
                
        fade[In].shading = new ArdourCanvas::Polygon (*(canvas->root()));
-       fade[In].shading->property_fill_color_rgba() = color_map[cCrossfadeEditorLineShading];
+       fade[In].shading->property_fill_color_rgba() = Config->canvasvar_CrossfadeEditorLineShading.get();
        
        fade[In].shading->signal_event().connect (mem_fun (*this, &CrossfadeEditor::canvas_event));
        fade[In].line->signal_event().connect (mem_fun (*this, &CrossfadeEditor::curve_event));
@@ -454,8 +454,8 @@ CrossfadeEditor::make_point ()
 
        p->box = new ArdourCanvas::SimpleRect (*(canvas->root()));
        p->box->property_fill() = true;
-       p->box->property_fill_color_rgba() = color_map[cCrossfadeEditorPointFill];
-       p->box->property_outline_color_rgba() = color_map[cCrossfadeEditorPointOutline];
+       p->box->property_fill_color_rgba() = Config->canvasvar_CrossfadeEditorPointFill.get();
+       p->box->property_outline_color_rgba() = Config->canvasvar_CrossfadeEditorPointOutline.get();
        p->box->property_outline_pixels() = 1;
 
        p->curve = fade[current].line;
@@ -976,15 +976,15 @@ CrossfadeEditor::curve_select_clicked (WhichFade wf)
        if (wf == In) {
                
                for (vector<ArdourCanvas::WaveView*>::iterator i = fade[In].waves.begin(); i != fade[In].waves.end(); ++i) {
-                       (*i)->property_wave_color() = color_map[cSelectedCrossfadeEditorWave];
+                       (*i)->property_wave_color() = Config->canvasvar_SelectedCrossfadeEditorWave.get();
                }
 
                for (vector<ArdourCanvas::WaveView*>::iterator i = fade[Out].waves.begin(); i != fade[Out].waves.end(); ++i) {
-                       (*i)->property_wave_color() = color_map[cCrossfadeEditorWave];
+                       (*i)->property_wave_color() = Config->canvasvar_CrossfadeEditorWave.get();
                }
 
-               fade[In].line->property_fill_color_rgba() = color_map[cSelectedCrossfadeEditorLine];
-               fade[Out].line->property_fill_color_rgba() = color_map[cCrossfadeEditorLine];
+               fade[In].line->property_fill_color_rgba() = Config->canvasvar_SelectedCrossfadeEditorLine.get();
+               fade[Out].line->property_fill_color_rgba() = Config->canvasvar_CrossfadeEditorLine.get();
                fade[Out].shading->hide();
                fade[In].shading->show();
 
@@ -999,15 +999,15 @@ CrossfadeEditor::curve_select_clicked (WhichFade wf)
        } else {
 
                for (vector<ArdourCanvas::WaveView*>::iterator i = fade[In].waves.begin(); i != fade[In].waves.end(); ++i) {
-                       (*i)->property_wave_color() = color_map[cCrossfadeEditorWave];
+                       (*i)->property_wave_color() = Config->canvasvar_CrossfadeEditorWave.get();
                }
 
                for (vector<ArdourCanvas::WaveView*>::iterator i = fade[Out].waves.begin(); i != fade[Out].waves.end(); ++i) {
-                       (*i)->property_wave_color() = color_map[cSelectedCrossfadeEditorWave];
+                       (*i)->property_wave_color() = Config->canvasvar_SelectedCrossfadeEditorWave.get();
                }
 
-               fade[Out].line->property_fill_color_rgba() = color_map[cSelectedCrossfadeEditorLine];
-               fade[In].line->property_fill_color_rgba() = color_map[cCrossfadeEditorLine];
+               fade[Out].line->property_fill_color_rgba() = Config->canvasvar_SelectedCrossfadeEditorLine.get();
+               fade[In].line->property_fill_color_rgba() = Config->canvasvar_CrossfadeEditorLine.get();
                fade[In].shading->hide();
                fade[Out].shading->show();
 
@@ -1049,9 +1049,9 @@ CrossfadeEditor::make_waves (boost::shared_ptr<AudioRegion> region, WhichFade wh
        double spu;
 
        if (which == In) {
-               color = color_map[cSelectedCrossfadeEditorWave];
+               color = Config->canvasvar_SelectedCrossfadeEditorWave.get();
        } else {
-               color = color_map[cCrossfadeEditorWave];
+               color = Config->canvasvar_CrossfadeEditorWave.get();
        }
 
        ht = canvas->get_allocation().get_height() / (double) nchans;
index 261b2b3ca4070d67c8009fe82a41aa0cb8b1a7d8..d2fdd94e039828d58e862b3d044ddc9bad14554c 100644 (file)
@@ -61,11 +61,11 @@ CrossfadeView::CrossfadeView (ArdourCanvas::Group *parent,
        _visible = true;
 
        fade_in = new Line (*group);
-       fade_in->property_fill_color_rgba() = color_map[cCrossfadeLine];
+       fade_in->property_fill_color_rgba() = Config->canvasvar_CrossfadeLine.get();
        fade_in->property_width_pixels() = 1;
 
        fade_out = new Line (*group);
-       fade_out->property_fill_color_rgba() = color_map[cCrossfadeLine];
+       fade_out->property_fill_color_rgba() = Config->canvasvar_CrossfadeLine.get();
        fade_out->property_width_pixels() = 1;
        
        set_y_position_and_height (0, get_time_axis_view().height);
@@ -84,6 +84,7 @@ CrossfadeView::CrossfadeView (ArdourCanvas::Group *parent,
        crossfade_changed (Change (~0));
 
        crossfade->StateChanged.connect (mem_fun(*this, &CrossfadeView::crossfade_changed));
+       ColorsChanged.connect (mem_fun (*this, &CrossfadeView::color_handler));
 }
 
 CrossfadeView::~CrossfadeView ()
@@ -219,14 +220,20 @@ void
 CrossfadeView::active_changed ()
 {
        if (crossfade->active()) {
-               frame->property_fill_color_rgba() = color_map[cActiveCrossfade];
+               frame->property_fill_color_rgba() = Config->canvasvar_ActiveCrossfade.get();
        } else {
-               frame->property_fill_color_rgba() = color_map[cInactiveCrossfade];
+               frame->property_fill_color_rgba() = Config->canvasvar_InactiveCrossfade.get();
        }
 
        redraw_curves ();
 }
 
+void
+CrossfadeView::color_handler ()
+{
+       active_changed ();
+}
+
 void
 CrossfadeView::set_valid (bool yn)
 {
@@ -262,3 +269,4 @@ CrossfadeView::fake_hide ()
 {
        group->hide();
 }
+
index 02f3cd0df20b2f14da91c26d987935d8eb9a6792..39ca8bf1c3e9ef31980a34b62df25d15a213f8fa 100644 (file)
@@ -79,6 +79,7 @@ struct CrossfadeView : public TimeAxisViewItem
     void crossfade_changed (ARDOUR::Change);
     void active_changed ();
     void redraw_curves ();
+       void color_handler ();
 };
 
 #endif /* __gtk_ardour_crossfade_view_h__ */
index d77736a41f61eefe46252d494330b35031cf48af..ddf724e7a0eb6977d146cf23d265ca3b32297c20 100644 (file)
@@ -312,11 +312,11 @@ Editor::Editor ()
        _dragging_playhead = false;
        _dragging_hscrollbar = false;
 
-       location_marker_color = color_map[cLocationMarker];
-       location_range_color = color_map[cLocationRange];
-       location_cd_marker_color = color_map[cLocationCDMarker];
-       location_loop_color = color_map[cLocationLoop];
-       location_punch_color = color_map[cLocationPunch];
+       location_marker_color = Config->canvasvar_LocationMarker.get();
+       location_range_color = Config->canvasvar_LocationRange.get();
+       location_cd_marker_color = Config->canvasvar_LocationCDMarker.get();
+       location_loop_color = Config->canvasvar_LocationLoop.get();
+       location_punch_color = Config->canvasvar_LocationPunch.get();
 
        range_marker_drag_rect = 0;
        marker_drag_line = 0;
@@ -3649,3 +3649,4 @@ Editor::edit_cursor_position(bool sync)
 
        return edit_cursor->current_frame;
 }
+
index 739feb957e8a672a7bda309643cd759051768382..eee7c701cb09f7a56b15ca7483837fac89a600e7 100644 (file)
@@ -351,6 +351,7 @@ class Editor : public PublicEditor
   private:
 
        /// The session that we are editing, or 0
+       void color_handler ();
        ARDOUR::Session     *session;
        bool                 constructed;
 
index 0c11092af66c269c0616a48aa26c5798e4635040..2aa76d4a85c0913da6a3ef3aa4cc39957b2d6e56 100644 (file)
@@ -138,7 +138,6 @@ Editor::initialize_canvas ()
        verbose_canvas_cursor = new ArdourCanvas::Text (*track_canvas.root());
        verbose_canvas_cursor->property_font_desc() = font;
        verbose_canvas_cursor->property_anchor() = ANCHOR_NW;
-       verbose_canvas_cursor->property_fill_color_rgba() = color_map[cVerboseCanvasCursor];
        
        verbose_cursor_visible = false;
        
@@ -160,44 +159,30 @@ Editor::initialize_canvas ()
        transport_marker_group = new ArdourCanvas::Group (*time_canvas.root(), 0.0, timebar_height * 4.0);
        
        tempo_bar = new ArdourCanvas::SimpleRect (*tempo_group, 0.0, 0.0, max_canvas_coordinate, timebar_height-1.0);
-       tempo_bar->property_fill_color_rgba() = color_map[cTempoBar];
        tempo_bar->property_outline_what() = (0x1 | 0x8);
        tempo_bar->property_outline_pixels() = 1;
-       tempo_bar->property_outline_color_rgba() = color_map[cTempoSeparator];
        
        meter_bar = new ArdourCanvas::SimpleRect (*meter_group, 0.0, 0.0, max_canvas_coordinate, timebar_height-1.0);
-       meter_bar->property_fill_color_rgba() = color_map[cMeterBar];
        meter_bar->property_outline_what() = (0x1 | 0x8);
        meter_bar->property_outline_pixels() = 1;
-       meter_bar->property_outline_color_rgba() = color_map[cMeterSeparator];
        
        marker_bar = new ArdourCanvas::SimpleRect (*marker_group, 0.0, 0.0, max_canvas_coordinate, timebar_height-1.0);
-       marker_bar->property_fill_color_rgba() = color_map[cMarkerBar];
        marker_bar->property_outline_what() = (0x1 | 0x8);
        marker_bar->property_outline_pixels() = 1;
-       marker_bar->property_outline_color_rgba() = color_map[cMarkerSeparator];
        
        range_marker_bar = new ArdourCanvas::SimpleRect (*range_marker_group, 0.0, 0.0, max_canvas_coordinate, timebar_height-1.0);
-       range_marker_bar->property_fill_color_rgba() = color_map[cRangeMarkerBar];
        range_marker_bar->property_outline_what() = (0x1 | 0x8);
        range_marker_bar->property_outline_pixels() = 1;
-       range_marker_bar->property_outline_color_rgba() = color_map[cRangeMarkerSeparator];
        
        transport_marker_bar = new ArdourCanvas::SimpleRect (*transport_marker_group, 0.0, 0.0, max_canvas_coordinate, timebar_height-1.0);
-       transport_marker_bar->property_fill_color_rgba() = color_map[cTransportMarkerBar];
        transport_marker_bar->property_outline_what() = (0x1 | 0x8);
        transport_marker_bar->property_outline_pixels() = 1;
-       transport_marker_bar->property_outline_color_rgba() = color_map[cTransportMarkerSeparator];
 
        range_bar_drag_rect = new ArdourCanvas::SimpleRect (*range_marker_group, 0.0, 0.0, max_canvas_coordinate, timebar_height-1.0);
-       range_bar_drag_rect->property_fill_color_rgba() = color_map[cRangeDragBarRectFill];
-       range_bar_drag_rect->property_outline_color_rgba() = color_map[cRangeDragBarRect];
        range_bar_drag_rect->property_outline_pixels() = 0;
        range_bar_drag_rect->hide ();
        
        transport_bar_drag_rect = new ArdourCanvas::SimpleRect (*transport_marker_group, 0.0, 0.0, max_canvas_coordinate, timebar_height-1.0);
-       transport_bar_drag_rect ->property_fill_color_rgba() = color_map[cTransportDragRectFill];
-       transport_bar_drag_rect->property_outline_color_rgba() = color_map[cTransportDragRect];
        transport_bar_drag_rect->property_outline_pixels() = 0;
        transport_bar_drag_rect->hide ();
        
@@ -206,24 +191,17 @@ Editor::initialize_canvas ()
 
        marker_drag_line = new ArdourCanvas::Line (*track_canvas.root());
        marker_drag_line->property_width_pixels() = 1;
-       marker_drag_line->property_fill_color_rgba() = color_map[cMarkerDragLine];
        marker_drag_line->property_points() = marker_drag_line_points;
        marker_drag_line->hide();
 
        range_marker_drag_rect = new ArdourCanvas::SimpleRect (*track_canvas.root(), 0.0, 0.0, 0.0, 0.0);
-       range_marker_drag_rect->property_fill_color_rgba() = color_map[cRangeDragRectFill];
-       range_marker_drag_rect->property_outline_color_rgba() = color_map[cRangeDragRect];
        range_marker_drag_rect->hide ();
        
        transport_loop_range_rect = new ArdourCanvas::SimpleRect (*time_line_group, 0.0, 0.0, 0.0, 0.0);
-       transport_loop_range_rect->property_fill_color_rgba() = color_map[cTransportLoopRectFill];
-       transport_loop_range_rect->property_outline_color_rgba() = color_map[cTransportLoopRect];
        transport_loop_range_rect->property_outline_pixels() = 1;
        transport_loop_range_rect->hide();
 
        transport_punch_range_rect = new ArdourCanvas::SimpleRect (*time_line_group, 0.0, 0.0, 0.0, 0.0);
-       transport_punch_range_rect->property_fill_color_rgba() = color_map[cTransportPunchRectFill];
-       transport_punch_range_rect->property_outline_color_rgba() = color_map[cTransportPunchRect];
        transport_punch_range_rect->property_outline_pixels() = 0;
        transport_punch_range_rect->hide();
        
@@ -234,7 +212,6 @@ Editor::initialize_canvas ()
        transport_punchin_line->property_y1() = 0.0;
        transport_punchin_line->property_x2() = 0.0;
        transport_punchin_line->property_y2() = 0.0;
-       transport_punchin_line->property_color_rgba() = color_map[cPunchInLine];
        transport_punchin_line->hide ();
        
        transport_punchout_line  = new ArdourCanvas::SimpleLine (*time_line_group);
@@ -242,13 +219,10 @@ Editor::initialize_canvas ()
        transport_punchout_line->property_y1() = 0.0;
        transport_punchout_line->property_x2() = 0.0;
        transport_punchout_line->property_y2() = 0.0;
-       transport_punchout_line->property_color_rgba() = color_map[cPunchOutLine];
        transport_punchout_line->hide();
        
        // used to show zoom mode active zooming
        zoom_rect = new ArdourCanvas::SimpleRect (*track_canvas.root(), 0.0, 0.0, 0.0, 0.0);
-       zoom_rect->property_fill_color_rgba() = color_map[cZoomRectFill];
-       zoom_rect->property_outline_color_rgba() = color_map[cZoomRect];
        zoom_rect->property_outline_pixels() = 1;
        zoom_rect->hide();
        
@@ -256,8 +230,6 @@ Editor::initialize_canvas ()
        
        // used as rubberband rect
        rubberband_rect = new ArdourCanvas::SimpleRect (*track_canvas.root(), 0.0, 0.0, 0.0, 0.0);
-       rubberband_rect->property_outline_color_rgba() = color_map[cRubberBandRect];
-       rubberband_rect->property_fill_color_rgba() = (guint32) color_map[cRubberBandRectFill];
        rubberband_rect->property_outline_pixels() = 1;
        rubberband_rect->hide();
        
@@ -273,25 +245,16 @@ Editor::initialize_canvas ()
        double time_height = timebar_height * 5;
        double time_width = FLT_MAX/frames_per_unit;
        time_canvas.set_scroll_region(0.0, 0.0, time_width, time_height);
-       
-       if (!color_map[cEditCursor]) {
-                warning << _("edit cursor color not defined, check your ardour.colors file!") << endmsg;
-               color_map[cEditCursor] = RGBA_TO_UINT (30,30,30,255);
-       }
-
-       if (!color_map[cPlayHead]) {
-               warning << _("playhead color not defined, check your ardour.colors file!") << endmsg;
-               color_map[cPlayHead] = RGBA_TO_UINT (0,0,0,255);
-       }
 
        edit_cursor = new Cursor (*this, &Editor::canvas_edit_cursor_event);
-       edit_cursor->canvas_item.property_fill_color_rgba() = color_map[cEditCursor];
        playhead_cursor = new Cursor (*this, &Editor::canvas_playhead_cursor_event);
-       playhead_cursor->canvas_item.property_fill_color_rgba() = color_map[cPlayHead];
 
        initial_ruler_update_required = true;
        track_canvas.signal_size_allocate().connect (mem_fun(*this, &Editor::track_canvas_allocate));
 
+       ColorsChanged.connect (mem_fun (*this, &Editor::color_handler));
+       color_handler();
+
 }
 
 void
@@ -734,3 +697,64 @@ Editor::canvas_horizontally_scrolled ()
        redisplay_tempo (!_dragging_hscrollbar);
 }
 
+void
+Editor::color_handler()
+{
+       edit_cursor->canvas_item.property_fill_color_rgba() = Config->canvasvar_EditCursor.get();
+       playhead_cursor->canvas_item.property_fill_color_rgba() = Config->canvasvar_PlayHead.get();
+       verbose_canvas_cursor->property_fill_color_rgba() = Config->canvasvar_VerboseCanvasCursor.get();
+       
+       meter_bar->property_fill_color_rgba() = Config->canvasvar_MeterBar.get();
+       meter_bar->property_outline_color_rgba() = Config->canvasvar_MeterBar.get();
+
+       tempo_bar->property_fill_color_rgba() = Config->canvasvar_TempoBar.get();
+       tempo_bar->property_outline_color_rgba() = Config->canvasvar_TempoBar.get();
+
+       marker_bar->property_fill_color_rgba() = Config->canvasvar_MarkerBar.get();
+       marker_bar->property_outline_color_rgba() = Config->canvasvar_MarkerBar.get();
+
+       range_marker_bar->property_fill_color_rgba() = Config->canvasvar_RangeMarkerBar.get();
+       range_marker_bar->property_outline_color_rgba() = Config->canvasvar_RangeMarkerBar.get();
+
+       transport_marker_bar->property_fill_color_rgba() = Config->canvasvar_TransportMarkerBar.get();
+       transport_marker_bar->property_outline_color_rgba() = Config->canvasvar_TransportMarkerBar.get();
+
+       range_bar_drag_rect->property_fill_color_rgba() = Config->canvasvar_RangeDragBarRect.get();
+       range_bar_drag_rect->property_outline_color_rgba() = Config->canvasvar_RangeDragBarRect.get();
+
+       transport_bar_drag_rect->property_fill_color_rgba() = Config->canvasvar_TransportDragRect.get();
+       transport_bar_drag_rect->property_outline_color_rgba() = Config->canvasvar_TransportDragRect.get();
+
+       marker_drag_line->property_fill_color_rgba() = Config->canvasvar_MarkerDragLine.get();
+
+       range_marker_drag_rect->property_fill_color_rgba() = Config->canvasvar_RangeDragRect.get();
+       range_marker_drag_rect->property_outline_color_rgba() = Config->canvasvar_RangeDragRect.get();
+
+       transport_loop_range_rect->property_fill_color_rgba() = Config->canvasvar_TransportLoopRect.get();
+       transport_loop_range_rect->property_outline_color_rgba() = Config->canvasvar_TransportLoopRect.get();
+
+       transport_punch_range_rect->property_fill_color_rgba() = Config->canvasvar_TransportPunchRect.get();
+       transport_punch_range_rect->property_outline_color_rgba() = Config->canvasvar_TransportPunchRect.get();
+
+       transport_punchin_line->property_color_rgba() = Config->canvasvar_PunchLine.get();
+       transport_punchout_line->property_color_rgba() = Config->canvasvar_PunchLine.get();
+
+       zoom_rect->property_fill_color_rgba() = Config->canvasvar_ZoomRect.get();
+       zoom_rect->property_outline_color_rgba() = Config->canvasvar_ZoomRect.get();
+
+       rubberband_rect->property_outline_color_rgba() = Config->canvasvar_RubberBandRect.get();
+       rubberband_rect->property_fill_color_rgba() = (guint32) Config->canvasvar_RubberBandRect.get();
+
+       location_marker_color = Config->canvasvar_LocationMarker.get();
+       location_range_color = Config->canvasvar_LocationRange.get();
+       location_cd_marker_color = Config->canvasvar_LocationCDMarker.get();
+       location_loop_color = Config->canvasvar_LocationLoop.get();
+       location_punch_color = Config->canvasvar_LocationPunch.get();
+
+       refresh_location_display ();
+       redisplay_tempo (true);
+
+       if (session)
+               session->tempo_map().apply_with_metrics (*this, &Editor::draw_metric_marks); // redraw metric markers
+}
+
index 22bb6e8a08c14adfa60d63665342e2ca69561935..2f671c77ebaac21e52b434e3c6d14e6c01b8745d 100644 (file)
@@ -1087,7 +1087,7 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
                if (mouse_mode == MouseGain) {
                        ArdourCanvas::Line *line = dynamic_cast<ArdourCanvas::Line *> (item);
                        if (line)
-                               line->property_fill_color_rgba() = color_map[cEnteredGainLine];
+                               line->property_fill_color_rgba() = Config->canvasvar_EnteredGainLine.get();
                        if (is_drawable()) {
                                track_canvas.get_window()->set_cursor (*fader_cursor);
                        }
@@ -1101,7 +1101,7 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
                        {
                                ArdourCanvas::Line *line = dynamic_cast<ArdourCanvas::Line *> (item);
                                if (line)
-                                       line->property_fill_color_rgba() = color_map[cEnteredAutomationLine];
+                                       line->property_fill_color_rgba() = Config->canvasvar_EnteredAutomationLine.get();
                        }
                        if (is_drawable()) {
                                track_canvas.get_window()->set_cursor (*fader_cursor);
@@ -1188,7 +1188,7 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
                if ((marker = static_cast<Marker *> (item->get_data ("marker"))) == 0) {
                        break;
                }
-               marker->set_color_rgba (color_map[cEnteredMarker]);
+               marker->set_color_rgba (Config->canvasvar_EnteredMarker.get());
                // fall through
        case MeterMarkerItem:
        case TempoMarkerItem:
@@ -2179,7 +2179,7 @@ Editor::start_meter_marker_copy_grab (ArdourCanvas::Item* item, GdkEvent* event)
        // The actual copying is not done before we reach the finish callback.
        char name[64];
        snprintf (name, sizeof(name), "%g/%g", meter_marker->meter().beats_per_bar(), meter_marker->meter().note_divisor ());
-       MeterMarker* new_marker = new MeterMarker(*this, *meter_group, color_map[cMeterMarker], name, 
+       MeterMarker* new_marker = new MeterMarker(*this, *meter_group, Config->canvasvar_MeterMarker.get(), name, 
                                                  *new MeterSection(meter_marker->meter()));
 
        drag_info.item = &new_marker->the_item();
@@ -2310,7 +2310,7 @@ Editor::start_tempo_marker_copy_grab (ArdourCanvas::Item* item, GdkEvent* event)
        // The actual copying is not done before we reach the finish callback.
        char name[64];
        snprintf (name, sizeof (name), "%.2f", tempo_marker->tempo().beats_per_minute());
-       TempoMarker* new_marker = new TempoMarker(*this, *tempo_group, color_map[cTempoMarker], name, 
+       TempoMarker* new_marker = new TempoMarker(*this, *tempo_group, Config->canvasvar_TempoMarker.get(), name, 
                                                  *new TempoSection(tempo_marker->tempo()));
 
        drag_info.item = &new_marker->the_item();
index 7fe87596390436f0a73fae47b9f2216c672535ef..c1cc2bb3a8e1879596ca0450a523b8f702514027 100644 (file)
@@ -70,7 +70,7 @@ void
 Editor::draw_metric_marks (const Metrics& metrics)
 {
 
-        const MeterSection *ms;
+       const MeterSection *ms;
        const TempoSection *ts;
        char buf[64];
        
@@ -80,11 +80,11 @@ Editor::draw_metric_marks (const Metrics& metrics)
                
                if ((ms = dynamic_cast<const MeterSection*>(*i)) != 0) {
                        snprintf (buf, sizeof(buf), "%g/%g", ms->beats_per_bar(), ms->note_divisor ());
-                       metric_marks.push_back (new MeterMarker (*this, *meter_group, color_map[cMeterMarker], buf, 
+                       metric_marks.push_back (new MeterMarker (*this, *meter_group, Config->canvasvar_MeterMarker.get(), buf, 
                                                                 *(const_cast<MeterSection*>(ms))));
                } else if ((ts = dynamic_cast<const TempoSection*>(*i)) != 0) {
                        snprintf (buf, sizeof (buf), "%.2f", ts->beats_per_minute());
-                       metric_marks.push_back (new TempoMarker (*this, *tempo_group, color_map[cTempoMarker], buf, 
+                       metric_marks.push_back (new TempoMarker (*this, *tempo_group, Config->canvasvar_TempoMarker.get(), buf, 
                                                                 *(const_cast<TempoSection*>(ts))));
                }
                
@@ -249,9 +249,9 @@ Editor::draw_measures ()
                case TempoMap::Beat:
                        
                        if ((*i).beat == 1) {
-                               color = color_map[cMeasureLineBar];
+                               color = Config->canvasvar_MeasureLineBar.get();
                        } else {
-                               color = color_map[cMeasureLineBeat];
+                               color = Config->canvasvar_MeasureLineBeat.get();
 
                                if (beat_density > 2.0) {
                                        /* only draw beat lines if the gaps between beats are large.
index 844338cd45c50f2df036fefd737acc6903da04e5..c9b4217b24c36ad678a937d14c3a6f094d3bdaa1 100644 (file)
@@ -25,6 +25,7 @@
 
 using namespace Editing;
 using namespace ArdourCanvas;
+using namespace ARDOUR;
 
 GhostRegion::GhostRegion (AutomationTimeAxisView& atv, double initial_pos)
        : trackview (atv)
@@ -43,8 +44,8 @@ GhostRegion::GhostRegion (AutomationTimeAxisView& atv, double initial_pos)
        base_rect->property_y1() = (double) 0.0;
        base_rect->property_y2() = (double) trackview.height;
        base_rect->property_outline_what() = (guint32) 0;
-       base_rect->property_outline_color_rgba() = color_map[cGhostTrackBaseOutline];
-       base_rect->property_fill_color_rgba() = color_map[cGhostTrackBaseFill];
+       base_rect->property_outline_color_rgba() = Config->canvasvar_GhostTrackBase.get();
+       base_rect->property_fill_color_rgba() = Config->canvasvar_GhostTrackBase.get();
        group->lower_to_bottom ();
 
        atv.add_ghost (this);
@@ -91,10 +92,13 @@ GhostRegion::set_height ()
 void
 GhostRegion::set_colors ()
 {
+       base_rect->property_outline_color_rgba() = Config->canvasvar_GhostTrackBase.get();
+       base_rect->property_fill_color_rgba() = Config->canvasvar_GhostTrackBase.get();
+
     for (uint32_t n=0; n < waves.size(); ++n) {
-       waves[n]->property_wave_color() = color_map[cGhostTrackWave];
+       waves[n]->property_wave_color() = Config->canvasvar_GhostTrackWave.get();
 
-       waves[n]->property_clip_color() = color_map[cGhostTrackWaveClip];
-       waves[n]->property_zero_color() = color_map[cGhostTrackZeroLine];
+       waves[n]->property_clip_color() = Config->canvasvar_GhostTrackWaveClip.get();
+       waves[n]->property_zero_color() = Config->canvasvar_GhostTrackZeroLine.get();
     }
 }
index 1e32add7944199592d83b1221dcca2fbaad4f159..16d945f5439eb93fe7b575b37d3143f8a3f2d000 100644 (file)
@@ -23,6 +23,7 @@
 #include <vector>
 #include <sigc++/signal.h>
 #include <libgnomecanvasmm.h>
+#include <ardour/configuration.h>
 #include "canvas.h"
 #include "simplerect.h"
 
index 91575f3cc54522f21881c35c995ba7e9a259ba04..895254450f0caa73d10d30894e735c998fe11936 100644 (file)
@@ -52,9 +52,9 @@ ImageFrameTimeAxisView::ImageFrameTimeAxisView (ImageFrameTimeAxis& tv)
          canvas_rect (canvas_group, 0.0, 0.0, 1000000.0, tv.height)
 {
        region_color = _trackview.color() ;
-       stream_base_color = color_map[cImageTrackBase] ;
+       stream_base_color = Config->canvasvar_ImageTrack.get() ;
 
-       canvas_rect.property_outline_color_rgba() = color_map[cImageTrackOutline];
+       canvas_rect.property_outline_color_rgba() = Config->canvasvar_ImageTrack.get();
        canvas_rect.property_fill_color_rgba() = stream_base_color;
 
        canvas_rect.signal_event().connect (bind (mem_fun (_trackview.editor, &PublicEditor::canvas_imageframe_view_event), (ArdourCanvas::Item*) &canvas_rect, &tv));
index 244079af41184e0a132dad87f9b16bc9f1c5af00..0325bcfc31429aff8c6913f31863239567489c50 100644 (file)
@@ -28,6 +28,8 @@
 
 #include "i18n.h"
 
+using namespace ARDOUR;
+
 Marker::Marker (PublicEditor& ed, ArdourCanvas::Group& parent, guint32 rgba, const string& annotation, 
                Type type, nframes_t frame, bool handle_events)
 
@@ -253,7 +255,7 @@ Marker::Marker (PublicEditor& ed, ArdourCanvas::Group& parent, guint32 rgba, con
        }
        text->property_y() = 0.0;
        text->property_anchor() = Gtk::ANCHOR_NW;
-       text->property_fill_color_rgba() = color_map[cMarkerLabel];
+       text->property_fill_color_rgba() = Config->canvasvar_MarkerLabel.get();
 
        editor.ZoomChanged.connect (mem_fun (*this, &Marker::reposition));
 
index 34acf51fbf75fc382b3ed36e3d39cdbe67e12f80..cbd363a0217f3170ccde70f30916ef4a1f43373a 100644 (file)
@@ -49,7 +49,7 @@ MarkerTimeAxisView::MarkerTimeAxisView(MarkerTimeAxis& tv)
        : _trackview (tv)
 {
        region_color = _trackview.color();
-       stream_base_color = color_map[cMarkerTrackBase];
+       stream_base_color = Config->canvasvar_MarkerTrack.get();
 
        canvas_group = new ArdourCanvas::Group (*_trackview.canvas_display);
 
@@ -58,7 +58,7 @@ MarkerTimeAxisView::MarkerTimeAxisView(MarkerTimeAxis& tv)
        canvas_rect->property_y1() = 0.0;
        canvas_rect->property_x2() = max_frames;
        canvas_rect->property_y2() = (double)20;
-       canvas_rect->property_outline_color_rgba() = color_map[cMarkerTrackOutline];
+       canvas_rect->property_outline_color_rgba() = Config->canvasvar_MarkerTrack.get();
        canvas_rect->property_fill_color_rgba() = stream_base_color;
                   
        canvas_rect->signal_event().connect (bind (mem_fun (_trackview.editor, &PublicEditor::canvas_marker_time_axis_view_event), canvas_rect, &_trackview));
index c99f6ca77772ed642fcdaaf0a2ee21b2020626ae..503e6195a9c8aeda5a7930689c2fe0712537ef77 100644 (file)
@@ -56,12 +56,12 @@ MidiStreamView::MidiStreamView (MidiTimeAxisView& tv)
        : StreamView (tv)
 {
        if (tv.is_track())
-               stream_base_color = color_map[cMidiTrackBase];
+               stream_base_color = Config->canvasvar_MidiTrackBase.get();
        else
-               stream_base_color = color_map[cMidiBusBase];
+               stream_base_color = Config->canvasvar_MidiBusBase.get();
        
        canvas_rect->property_fill_color_rgba() = stream_base_color;
-       canvas_rect->property_outline_color_rgba() = color_map[cAudioTrackOutline];
+       canvas_rect->property_outline_color_rgba() = RGBA_BLACK;
 
        //use_rec_regions = tv.editor.show_waveforms_recording ();
        use_rec_regions = true;
@@ -216,14 +216,14 @@ MidiStreamView::setup_rec_box ()
                        assert(_trackview.midi_track()->mode() == Normal);
                        
                        xend = xstart;
-                       fill_color = color_map[cRecordingRectFill];
+                       fill_color = Config->canvasvar_RecordingRect.get();
                        
                        ArdourCanvas::SimpleRect * rec_rect = new Gnome::Canvas::SimpleRect (*canvas_group);
                        rec_rect->property_x1() = xstart;
                        rec_rect->property_y1() = 1.0;
                        rec_rect->property_x2() = xend;
                        rec_rect->property_y2() = (double) _trackview.height - 1;
-                       rec_rect->property_outline_color_rgba() = color_map[cRecordingRectOutline];
+                       rec_rect->property_outline_color_rgba() = Config->canvasvar_RecordingRect.get();
                        rec_rect->property_fill_color_rgba() = fill_color;
                        rec_rect->lower_to_bottom();
                        
@@ -409,24 +409,17 @@ MidiStreamView::rec_data_range_ready (boost::shared_ptr<MidiBuffer> data, jack_n
 }
 
 void
-MidiStreamView::color_handler (ColorID id, uint32_t val)
+MidiStreamView::color_handler ()
 {
-       switch (id) {
-       case cMidiTrackBase:
-               if (_trackview.is_midi_track()) {
-                       canvas_rect->property_fill_color_rgba() = val;
-               } 
-               break;
-       case cMidiBusBase:
-               if (!_trackview.is_midi_track()) {
-                       canvas_rect->property_fill_color_rgba() = val;
-               }
-               break;
-       case cMidiTrackOutline:
-               canvas_rect->property_outline_color_rgba() = val;
-               break;
 
-       default:
-               break;
+       //case cMidiTrackBase:
+       if (_trackview.is_midi_track()) {
+               canvas_rect->property_fill_color_rgba() = Config->canvasvar_MidiTrackBase.get();
+       } 
+
+       //case cMidiBusBase:
+       if (!_trackview.is_midi_track()) {
+               canvas_rect->property_fill_color_rgba() = Config->canvasvar_MidiBusBase.get();;
        }
 }
+
index d2885b4391e5efe5398a8b1eeb828714833fbea9..480b968e50a9a884714f32194fcf7948bc861851 100644 (file)
@@ -68,7 +68,7 @@ class MidiStreamView : public StreamView
 
        void redisplay_diskstream ();
 
-       void color_handler (ColorID id, uint32_t val);
+       void color_handler ();
 };
 
 #endif /* __ardour_midi_streamview_h__ */
index 2d3346df562ecaa0f5d9278a9aa109afa49ea4c3..523f5e57b2ebec00413c870db2eeb2a869552300 100644 (file)
@@ -146,7 +146,7 @@ RegionView::init (Gdk::Color& basic_color, bool wfd)
 
        set_colors ();
 
-       ColorChanged.connect (mem_fun (*this, &RegionView::color_handler));
+       ColorsChanged.connect (mem_fun (*this, &RegionView::color_handler));
 
        /* XXX sync mark drag? */
 }
index 6277354519338132435ebccae792814ca9c605be..26d7cdde86364de972ab3341e510f2001672d63f 100644 (file)
@@ -117,7 +117,7 @@ class RegionView : public TimeAxisViewItem
     virtual void set_frame_color ();
     virtual void reset_width_dependent_items (double pixel_width);
 
-    virtual void color_handler (ColorID, uint32_t) {}
+    virtual void color_handler () {}
        
     boost::shared_ptr<ARDOUR::Region> _region;
     
index 4de34d61d5375f95f1dded4ac0c4f2732557f371..c56be02366d38e23124d959140e71c03fe93baec 100644 (file)
@@ -197,7 +197,7 @@ RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session& sess, boost::sh
        }
 
        editor.ZoomChanged.connect (mem_fun(*this, &RouteTimeAxisView::reset_samples_per_unit));
-       ColorChanged.connect (mem_fun (*this, &RouteTimeAxisView::color_handler));
+       ColorsChanged.connect (mem_fun (*this, &RouteTimeAxisView::color_handler));
 }
 
 RouteTimeAxisView::~RouteTimeAxisView ()
@@ -599,8 +599,8 @@ RouteTimeAxisView::show_timestretch (nframes_t start, nframes_t end)
                timestretch_rect->property_y1() =  0.0;
                timestretch_rect->property_x2() =  0.0;
                timestretch_rect->property_y2() =  0.0;
-               timestretch_rect->property_fill_color_rgba() =  color_map[cTimeStretchFill];
-               timestretch_rect->property_outline_color_rgba() = color_map[cTimeStretchOutline];
+               timestretch_rect->property_fill_color_rgba() =  Config->canvasvar_TimeStretchFill.get();
+               timestretch_rect->property_outline_color_rgba() = Config->canvasvar_TimeStretchOutline.get();
        }
 
        timestretch_rect->show ();
@@ -1367,18 +1367,17 @@ RouteTimeAxisView::map_frozen ()
 }
 
 void
-RouteTimeAxisView::color_handler (ColorID id, uint32_t val)
+RouteTimeAxisView::color_handler ()
 {
-       switch (id) {
-       case cTimeStretchOutline:
-               timestretch_rect->property_outline_color_rgba() = val;
-               break;
-       case cTimeStretchFill:
-               timestretch_rect->property_fill_color_rgba() = val;
-               break;
-       default:
-               break;
+       //case cTimeStretchOutline:
+       if (timestretch_rect) {
+               timestretch_rect->property_outline_color_rgba() = Config->canvasvar_TimeStretchOutline.get();
+       }
+       //case cTimeStretchFill:
+       if (timestretch_rect) {
+               timestretch_rect->property_fill_color_rgba() = Config->canvasvar_TimeStretchFill.get();
        }
+
 }
 
 void
@@ -1549,7 +1548,7 @@ RouteTimeAxisView::add_redirect_automation_curve (boost::shared_ptr<Redirect> re
                                          *redirect, what, _session, *ran->view,
                                          *ran->view->canvas_display, redirect->automation_list (what));
        
-       ral->set_line_color (color_map[cRedirectAutomationLine]);
+       ral->set_line_color (Config->canvasvar_RedirectAutomationLine.get());
        ral->queue_reset ();
 
        ran->view->add_line (*ral);
index cf522df7895736673f319bf88fc634c6b2a1c697..368e29d0a021af492cdab42ab5f96b8b97a0e5e4 100644 (file)
@@ -199,7 +199,7 @@ protected:
        
        void map_frozen ();
 
-       void color_handler (ColorID, uint32_t);
+       void color_handler ();
 
        void region_view_added (RegionView*);
        void add_ghost_to_redirect (RegionView*, AutomationTimeAxisView*);
index aa8767ac13974ab438863d88c345ed73d3590f40..305b5c32404acfb760d8df3ed0bbd645f7a1975a 100644 (file)
@@ -80,7 +80,7 @@ StreamView::StreamView (RouteTimeAxisView& tv)
                _trackview.session().RecordStateChanged.connect (mem_fun (*this, &StreamView::sess_rec_enable_changed));
        } 
 
-       ColorChanged.connect (mem_fun (*this, &StreamView::color_handler));
+       ColorsChanged.connect (mem_fun (*this, &StreamView::color_handler));
 }
 
 StreamView::~StreamView ()
index f83b35191ddbf95b4ce7d259dba8e0e706e90de0..70118015601e69f37038571cc9fe5e588a3a5fe8 100644 (file)
@@ -121,7 +121,7 @@ protected:
        virtual void playlist_modified_weak (boost::weak_ptr<ARDOUR::Diskstream>);
        virtual void playlist_modified (boost::shared_ptr<ARDOUR::Diskstream>);
        
-       virtual void color_handler (ColorID, uint32_t) = 0;
+       virtual void color_handler () = 0;
 
        virtual void update_contents_y_position_and_height ();
 
index e98c170e1099787b9e449f696f0693fd858fb865..6d512a71e07fd3efee6c43ec1db2e2c5b447856f 100644 (file)
@@ -39,23 +39,9 @@ using namespace Gtk;
 using namespace PBD;
 using namespace ARDOUR;
 
-/* the global color map */
-
-ColorMap color_map;
-
-/* lookup table of color IDs as strings */
-
-#undef COLORID
-#define COLORID(s) #s,
-static const char *color_id_strs[] = {
-       #include "colors.h"
-};
-#undef COLORID
-
-/* global color change signals */
 
 sigc::signal<void> ColorsChanged;
-sigc::signal<void,ColorID,uint32_t> ColorChanged;
+sigc::signal<void,uint32_t> ColorChanged;
 
 ThemeManager::ThemeManager()
        : ArdourDialog ("ThemeManager"),
@@ -106,73 +92,6 @@ ThemeManager::~ThemeManager()
 {
 }
 
-int
-ThemeManager::load (string path)
-{
-       ifstream in (path.c_str());
-
-       if (!in) {
-               error << string_compose (_("cannot open color definition file %1: %2"), path, strerror(errno)) << endmsg;
-               return -1;
-       }
-
-       cerr << "Loading color definition file " << path << endl;
-
-       while (in) {
-               string name;
-               double r, g, b, a;
-
-               in >> name; if (!in) break;
-               in >> r; if (!in) break;
-               in >> g; if (!in) break;
-               in >> b; if (!in) break;
-               in >> a; if (!in) break;
-
-               for (uint32_t i = 0; i < sizeof (color_id_strs)/sizeof(color_id_strs[0]); ++i) {
-                       if (name == color_id_strs[i]) {
-
-                               /* set color map */
-
-                               int ir,ig,ib,ia;
-                               int rgba;
-
-                               ir = (int) floor (r * 255.0);
-                               ig = (int) floor (g * 255.0);
-                               ib = (int) floor (b * 255.0);
-                               ia = (int) floor (a * 255.0);
-                               rgba = RGBA_TO_UINT (ir, ig, ib, ia);
-
-                               color_map[(ColorID)i] = rgba;
-
-                               /* set up list entry */
-
-                               Gdk::Color col;
-                               col.set_rgb_p (r,g,b);
-
-                               TreeModel::Row row = *(color_list->append());
-
-                               /* all the color names are prefixed by 'c' to avoid
-                                  naming collisions when used as enums. trim
-                                  this leading character from the displayed
-                                  value.
-                               */
-
-                               row[columns.name] = name.substr (1);
-                               row[columns.color] = "";
-                               row[columns.id] = (ColorID) i;
-                               row[columns.gdkcolor] = col;
-                               row[columns.rgba] = rgba;
-
-                               break;
-                       }
-               }
-       }
-       
-       ColorsChanged(); /* emit signal */
-
-       return 0;
-}
-
 int
 ThemeManager::save (string path)
 {
@@ -187,6 +106,8 @@ ThemeManager::button_press_event (GdkEventButton* ev)
        TreeViewColumn* column;
        int cellx;
        int celly;
+
+       ARDOUR::ConfigVariable<uint32_t> *ccvar;
        
        if (!color_display.get_path_at_pos ((int)ev->x, (int)ev->y, path, column, cellx, celly)) {
                return false;
@@ -200,11 +121,16 @@ ThemeManager::button_press_event (GdkEventButton* ev)
        case 1: /* color */
                if ((iter = color_list->get_iter (path))) {
 
-                       ColorID edit_color_id = (*iter)[columns.id];
                        int r,g, b, a;
-                       uint32_t rgba;
+                       uint32_t rgba = (*iter)[columns.rgba];
                        Gdk::Color color;
 
+                       UINT_TO_RGBA (rgba, &r, &g, &b, &a);
+                       color.set_rgb_p (r / 255.0, g / 255.0, b / 255.0);
+                       color_dialog.get_colorsel()->set_current_color (color);
+                       color_dialog.get_colorsel()->set_previous_color (color);
+                       color_dialog.get_colorsel()->set_current_alpha (a * 256);
+                       color_dialog.get_colorsel()->set_previous_alpha (a * 256);
                        ResponseType result = (ResponseType) color_dialog.run();
 
                        switch (result) {
@@ -218,13 +144,15 @@ ThemeManager::button_press_event (GdkEventButton* ev)
                                b = (int) floor (color.get_blue_p() * 255.0);
 
                                rgba = RGBA_TO_UINT(r,g,b,a);
-                               
+                               cerr << (*iter)[columns.name] << " == " << hex << rgba << endl;
                                (*iter)[columns.rgba] = rgba;
                                (*iter)[columns.gdkcolor] = color;
 
-                               color_map[edit_color_id] = rgba;
+                               ccvar = (*iter)[columns.pVar];
+                               ccvar->set(rgba);
 
-                               ColorChanged (edit_color_id, rgba);
+                               //ColorChanged (rgba);
+                               ColorsChanged();//EMIT SIGNAL
                                break;
 
                        default:
@@ -260,12 +188,34 @@ ThemeManager::load_rc(int which)
        ThemeChanged(find_config_file(Config->get_ui_rc_file())); //EMIT SIGNAL
        
        cerr << "load_rc() called " << find_config_file(Config->get_ui_rc_file()) << endl;
+
 }
 
 void
-ThemeManager::setup_theme_buttons ()
+ThemeManager::setup_theme ()
 {
+       int r, g, b, a;
+       for (std::vector<ConfigVariable<uint32_t> *>::iterator i = Config->canvas_colors.begin(); i != Config->canvas_colors.end(); i++) {
+               
+               TreeModel::Row row = *(color_list->append());
+
+               Gdk::Color col;
+               uint32_t rgba = (*i)->get();
+               UINT_TO_RGBA (rgba, &r, &g, &b, &a);
+               cerr << (*i)->name() << " == " << hex << rgba << ": " << hex << r << " " << hex << g << " " << hex << b << endl;
+               col.set_rgb_p (r / 255.0, g / 255.0, b / 255.0);
 
+               row[columns.name] = (*i)->name();
+               row[columns.color] = "";
+               row[columns.pVar] = *i;
+               row[columns.rgba] = rgba;
+               row[columns.gdkcolor] = col;
+
+               //cerr << (*i)->name() << " == " << rgba << endl;
+       }
+       cerr << "ThemeManager::setup_theme () called" << endl;
+       ColorsChanged(); //EMIT SIGNAL
+               
        if (getenv ("ARDOUR2_UI_RC")) {
                return;
        }
@@ -275,5 +225,6 @@ ThemeManager::setup_theme_buttons ()
        } else if (Config->get_ui_rc_file() == "ardour2_ui_light.rc") {
                light_button.set_active();
        }
+       
 }
 
index 8bb8fa9fce34ef0fb8168fdc05b5bddf0db0192d..a8a70b6c9a860c696d54e7d1ac6f707c600a6bd1 100644 (file)
@@ -26,8 +26,8 @@
 #include <gtkmm/colorselection.h>
 #include <gtkmm/radiobutton.h>
 #include <gtkmm/rc.h>
+#include <ardour/configuration.h>
 #include "ardour_dialog.h"
-#include "color.h"
 
 
 class ThemeManager : public ArdourDialog
@@ -36,10 +36,9 @@ class ThemeManager : public ArdourDialog
        ThemeManager();
        ~ThemeManager();
 
-       int load (std::string path);
        int save (std::string path);
        void load_rc (int which);
-       void setup_theme_buttons ();
+       void setup_theme ();
 
   private:
        struct ColorDisplayModelColumns : public Gtk::TreeModel::ColumnRecord {
@@ -47,14 +46,14 @@ class ThemeManager : public ArdourDialog
                    add (name);
                    add (color);
                    add (gdkcolor);
-                   add (id);
+                       add (pVar);
                    add (rgba);
            }
            
            Gtk::TreeModelColumn<Glib::ustring>  name;
            Gtk::TreeModelColumn<Glib::ustring>  color;
            Gtk::TreeModelColumn<Gdk::Color>     gdkcolor;
-           Gtk::TreeModelColumn<ColorID> id;
+           Gtk::TreeModelColumn<ARDOUR::ConfigVariable<uint32_t> *> pVar;
            Gtk::TreeModelColumn<uint32_t>       rgba;
        };
 
index 63ff0622683b2dc91faa5c4745bd4f2f318b0c4b..b2121b26fb8d5a0cd1c931d6b6b6d83e7fa3915d 100644 (file)
@@ -152,7 +152,7 @@ TimeAxisView::TimeAxisView (ARDOUR::Session& sess, PublicEditor& ed, TimeAxisVie
        controls_frame.set_name ("TimeAxisViewControlsBaseUnselected");
        controls_frame.set_shadow_type (Gtk::SHADOW_ETCHED_OUT);
 
-       ColorChanged.connect (mem_fun (*this, &TimeAxisView::color_handler));
+       ColorsChanged.connect (mem_fun (*this, &TimeAxisView::color_handler));
 }
 
 TimeAxisView::~TimeAxisView()
@@ -787,20 +787,20 @@ TimeAxisView::get_selection_rect (uint32_t id)
                rect->rect->property_y1() = 0.0;
                rect->rect->property_x2() = 0.0;
                rect->rect->property_y2() = 0.0;
-               rect->rect->property_fill_color_rgba() = color_map[cSelectionRectFill];
-               rect->rect->property_outline_color_rgba() = color_map[cSelectionRectOutline];
+               rect->rect->property_fill_color_rgba() = Config->canvasvar_SelectionRect.get();
+               rect->rect->property_outline_color_rgba() = Config->canvasvar_Selection.get();
                
                rect->start_trim = new SimpleRect (*selection_group);
                rect->start_trim->property_x1() = 0.0;
                rect->start_trim->property_x2() = 0.0;
-               rect->start_trim->property_fill_color_rgba() = color_map[cSelectionStartFill];
-               rect->start_trim->property_outline_color_rgba() = color_map[cSelectionStartOutline];
+               rect->start_trim->property_fill_color_rgba() = Config->canvasvar_Selection.get();
+               rect->start_trim->property_outline_color_rgba() = Config->canvasvar_Selection.get();
                
                rect->end_trim = new SimpleRect (*selection_group);
                rect->end_trim->property_x1() = 0.0;
                rect->end_trim->property_x2() = 0.0;
-               rect->end_trim->property_fill_color_rgba() = color_map[cSelectionEndFill];
-               rect->end_trim->property_outline_color_rgba() = color_map[cSelectionEndOutline];
+               rect->end_trim->property_fill_color_rgba() = Config->canvasvar_Selection.get();
+               rect->end_trim->property_outline_color_rgba() = Config->canvasvar_Selection.get();
 
                free_selection_rects.push_front (rect);
 
@@ -1056,23 +1056,31 @@ TimeAxisView::hide_name_entry ()
 }
 
 void
-TimeAxisView::color_handler (ColorID id, uint32_t val)
+TimeAxisView::color_handler ()
 {
-       switch (id) {
-       case cSelectionRectFill:
-               break;
-       case cSelectionRectOutline:
-               break;
-       case cSelectionStartFill:
-               break;
-       case cSelectionStartOutline:
-               break;
-       case cSelectionEndFill:
-               break;
-       case cSelectionEndOutline:
-               break;
-       default:
-               break;
+       
+       for (list<SelectionRect*>::iterator i = used_selection_rects.begin(); i != used_selection_rects.end(); ++i) {
+
+               (*i)->rect->property_fill_color_rgba() = Config->canvasvar_SelectionRect.get();
+               (*i)->rect->property_outline_color_rgba() = Config->canvasvar_Selection.get();
+
+               (*i)->start_trim->property_fill_color_rgba() = Config->canvasvar_Selection.get();
+               (*i)->start_trim->property_outline_color_rgba() = Config->canvasvar_Selection.get();
+
+               (*i)->end_trim->property_fill_color_rgba() = Config->canvasvar_Selection.get();
+               (*i)->end_trim->property_outline_color_rgba() = Config->canvasvar_Selection.get();
+       }
+
+       for (list<SelectionRect*>::iterator i = free_selection_rects.begin(); i != free_selection_rects.end(); ++i) {
+
+               (*i)->rect->property_fill_color_rgba() = Config->canvasvar_SelectionRect.get();
+               (*i)->rect->property_outline_color_rgba() = Config->canvasvar_Selection.get();
+
+               (*i)->start_trim->property_fill_color_rgba() = Config->canvasvar_Selection.get();
+               (*i)->start_trim->property_outline_color_rgba() = Config->canvasvar_Selection.get();
+
+               (*i)->end_trim->property_fill_color_rgba() = Config->canvasvar_Selection.get();
+               (*i)->end_trim->property_outline_color_rgba() = Config->canvasvar_Selection.get();
        }
 }
 
index 1f401967eb917adeafcc8a4004b2f4205c9562cc..299971f1ee1810d9c73e6a81bfc9a24f8ce98545 100644 (file)
@@ -305,7 +305,7 @@ class TimeAxisView : public virtual AxisView
        static bool need_size_info;
 
        void set_height_pixels (uint32_t h);
-       void color_handler (ColorID, uint32_t);
+       void color_handler ();
 
 }; /* class TimeAxisView */
 
index 0e66ab2bae2b1372344f565c1572471e7a97df30..b5c85f9b13c22f2e2690eb6ade166a9a9c71417e 100644 (file)
@@ -39,6 +39,7 @@ using namespace std;
 using namespace Editing;
 using namespace Glib;
 using namespace PBD;
+using namespace ARDOUR;
 
 //------------------------------------------------------------------------------
 /** Initialize const static memeber data */
@@ -133,7 +134,7 @@ TimeAxisViewItem::init (const string& it_name, double spu, Gdk::Color& base_colo
        frame_position = start ;
        item_duration = duration ;
        name_connected = false;
-       fill_opacity = 60;
+       // why? fill_opacity = 60;
        position_locked = false ;
        max_item_duration = ARDOUR::max_frames;
        min_item_duration = 0 ;
@@ -150,8 +151,8 @@ TimeAxisViewItem::init (const string& it_name, double spu, Gdk::Color& base_colo
        vestigial_frame->property_y1() = (double) 1.0;
        vestigial_frame->property_x2() = 2.0;
        vestigial_frame->property_y2() = (double) trackview.height;
-       vestigial_frame->property_outline_color_rgba() = color_map[cVestigialFrameOutline];
-       vestigial_frame->property_fill_color_rgba() = color_map[cVestigialFrameFill];
+       vestigial_frame->property_outline_color_rgba() = Config->canvasvar_VestigialFrame.get();
+       vestigial_frame->property_fill_color_rgba() = Config->canvasvar_VestigialFrame.get();
        vestigial_frame->hide ();
 
        if (visibility & ShowFrame) {
@@ -160,8 +161,8 @@ TimeAxisViewItem::init (const string& it_name, double spu, Gdk::Color& base_colo
                frame->property_y1() = (double) 1.0;
                frame->property_x2() = (double) trackview.editor.frame_to_pixel(duration);
                frame->property_y2() = (double) trackview.height;
-               frame->property_outline_color_rgba() = color_map[cTimeAxisFrameOutline];
-               frame->property_fill_color_rgba() = color_map[cTimeAxisFrameFill];
+               frame->property_outline_color_rgba() = Config->canvasvar_TimeAxisFrame.get();
+               frame->property_fill_color_rgba() = Config->canvasvar_TimeAxisFrame.get();
 
                /* by default draw all 4 edges */
 
@@ -196,8 +197,8 @@ TimeAxisViewItem::init (const string& it_name, double spu, Gdk::Color& base_colo
                }
                name_highlight->property_y1() = (double) (trackview.height - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE);
                name_highlight->property_y2() = (double) (trackview.height - 1);
-               name_highlight->property_outline_color_rgba() = color_map[cNameHighlightFill];
-               name_highlight->property_fill_color_rgba() = color_map[cNameHighlightOutline];
+               name_highlight->property_outline_color_rgba() = Config->canvasvar_NameHighlightFill.get();
+               name_highlight->property_fill_color_rgba() = Config->canvasvar_NameHighlightOutline.get();
 
                name_highlight->set_data ("timeaxisviewitem", this);
 
@@ -229,16 +230,16 @@ TimeAxisViewItem::init (const string& it_name, double spu, Gdk::Color& base_colo
                frame_handle_start->property_x2() = (double) TimeAxisViewItem::GRAB_HANDLE_LENGTH;
                frame_handle_start->property_y1() = (double) 1.0;
                frame_handle_start->property_y2() = (double) TimeAxisViewItem::GRAB_HANDLE_LENGTH+1;
-               frame_handle_start->property_outline_color_rgba() = color_map[cFrameHandleStartOutline];
-               frame_handle_start->property_fill_color_rgba() = color_map[cFrameHandleStartFill];
+               frame_handle_start->property_outline_color_rgba() = Config->canvasvar_FrameHandle.get();
+               frame_handle_start->property_fill_color_rgba() = Config->canvasvar_FrameHandle.get();
                
                frame_handle_end = new ArdourCanvas::SimpleRect (*group);
                frame_handle_end->property_x1() = (double) (trackview.editor.frame_to_pixel(get_duration())) - (TimeAxisViewItem::GRAB_HANDLE_LENGTH);
                frame_handle_end->property_x2() = (double) trackview.editor.frame_to_pixel(get_duration());
                frame_handle_end->property_y1() = (double) 1;
                frame_handle_end->property_y2() = (double) TimeAxisViewItem::GRAB_HANDLE_LENGTH + 1;
-               frame_handle_end->property_outline_color_rgba() = color_map[cFrameHandleEndOutline];
-               frame_handle_end->property_fill_color_rgba() = color_map[cFrameHandleEndFill];
+               frame_handle_end->property_outline_color_rgba() = Config->canvasvar_FrameHandle.get();
+               frame_handle_end->property_fill_color_rgba() = Config->canvasvar_FrameHandle.get();
 
        } else {
                frame_handle_start = 0;
@@ -797,11 +798,11 @@ TimeAxisViewItem::set_frame_color()
                uint32_t r,g,b,a;
                
                if (_selected && should_show_selection) {
-                       UINT_TO_RGBA(color_map[cSelectedFrameBase], &r, &g, &b, &a);
-                       frame->property_fill_color_rgba() = RGBA_TO_UINT(r, g, b, fill_opacity);
+                       UINT_TO_RGBA(Config->canvasvar_SelectedFrameBase.get(), &r, &g, &b, &a);
+                       frame->property_fill_color_rgba() = RGBA_TO_UINT(r, g, b, a);
                } else {
-                       UINT_TO_RGBA(color_map[cFrameBase], &r, &g, &b, &a);
-                       frame->property_fill_color_rgba() = RGBA_TO_UINT(r, g, b, fill_opacity);
+                       UINT_TO_RGBA(Config->canvasvar_FrameBase.get(), &r, &g, &b, &a);
+                       frame->property_fill_color_rgba() = RGBA_TO_UINT(r, g, b, a);
                }
        }
 }
@@ -815,11 +816,11 @@ TimeAxisViewItem::set_trim_handle_colors()
 {
        if (frame_handle_start) {
                if (position_locked) {
-                       frame_handle_start->property_fill_color_rgba() = color_map[cTrimHandleLockedStart];
-                       frame_handle_end->property_fill_color_rgba() = color_map[cTrimHandleLockedEnd];
+                       frame_handle_start->property_fill_color_rgba() = Config->canvasvar_TrimHandleLocked.get();
+                       frame_handle_end->property_fill_color_rgba() = Config->canvasvar_TrimHandleLocked.get();
                } else {
-                       frame_handle_start->property_fill_color_rgba() = color_map[cTrimHandleStart];
-                       frame_handle_end->property_fill_color_rgba() = color_map[cTrimHandleEnd];
+                       frame_handle_start->property_fill_color_rgba() = Config->canvasvar_TrimHandle.get();
+                       frame_handle_end->property_fill_color_rgba() = Config->canvasvar_TrimHandle.get();
                }
        }
 }
diff --git a/libs/ardour/ardour/canvas_vars.h b/libs/ardour/ardour/canvas_vars.h
new file mode 100644 (file)
index 0000000..4a3c510
--- /dev/null
@@ -0,0 +1,81 @@
+CANVAS_VARIABLE(canvasvar_WaveForm, "waveform", 0x000000cc)
+CANVAS_VARIABLE(canvasvar_WaveFormClip, "clipped aveform", 0xff0000e5)
+CANVAS_VARIABLE(canvasvar_FrameBase, "region base", 0xbfbfc1ff)
+CANVAS_VARIABLE(canvasvar_SelectedFrameBase, "selected region base", 0xb591a8ff)
+CANVAS_VARIABLE(canvasvar_AudioTrackBase, "audio track base", 0xc6d3d868)
+CANVAS_VARIABLE(canvasvar_AudioBusBase, "audio bus base", 0xdbd1ea68)
+CANVAS_VARIABLE(canvasvar_MidiTrackBase, "midi track base", 0x00000033)
+CANVAS_VARIABLE(canvasvar_MidiBusBase, "midi bus base", 0xff0000ee)
+CANVAS_VARIABLE(canvasvar_TimeStretchFill, "time-stretch-fill", 0xe2b5b596)
+CANVAS_VARIABLE(canvasvar_TimeStretchOutline, "time-stretch-outline", 0x63636396)
+CANVAS_VARIABLE(canvasvar_AutomationLine, "automation line", 0x44bc59ff)
+CANVAS_VARIABLE(canvasvar_RedirectAutomationLine, "redirect automation line", 0x7aa3f9ff)
+CANVAS_VARIABLE(canvasvar_ControlPointFill, "control point fill", 0x000000ff)
+CANVAS_VARIABLE(canvasvar_ControlPointOutline, "control point outline", 0x000000ff)
+CANVAS_VARIABLE(canvasvar_EnteredControlPointOutline, "entered control point outline", 0xff0000ee)
+CANVAS_VARIABLE(canvasvar_EnteredControlPointSelected, "entered control point selected", 0xff3535ff)
+CANVAS_VARIABLE(canvasvar_EnteredControlPoint, "entered control point", 0x000000cc)
+CANVAS_VARIABLE(canvasvar_ControlPointSelected, "control point selected", 0x00ff00ff)
+CANVAS_VARIABLE(canvasvar_ControlPoint, "control point", 0xff0000ff)
+CANVAS_VARIABLE(canvasvar_AutomationTrackFill, "automation track fill", 0xa0a0ce68)
+CANVAS_VARIABLE(canvasvar_AutomationTrackOutline, "automation track outline", 0x282828ff)
+CANVAS_VARIABLE(canvasvar_CrossfadeEditorBase, "crossfade editor base", 0x282d49ff)
+CANVAS_VARIABLE(canvasvar_CrossfadeEditorLine, "crossfade editor line", 0x000000ff)
+CANVAS_VARIABLE(canvasvar_SelectedCrossfadeEditorLine, "selected crossfade editor line", 0x00dbdbff)
+CANVAS_VARIABLE(canvasvar_CrossfadeEditorLineShading, "crossfade editor line shading", 0x00a0d154)
+CANVAS_VARIABLE(canvasvar_CrossfadeEditorPointFill, "crossfade editor point fill", 0x00ff00ff)
+CANVAS_VARIABLE(canvasvar_CrossfadeEditorPointOutline, "crossfade editor point outline", 0x0000ffff)
+CANVAS_VARIABLE(canvasvar_CrossfadeEditorWave, "crossfade editor wave", 0xffffff28)
+CANVAS_VARIABLE(canvasvar_SelectedCrossfadeEditorWave, "selected crossfade editor wave", 0xf9ea14a0)
+CANVAS_VARIABLE(canvasvar_CrossfadeLine, "crossfade line", 0x000000ff)
+CANVAS_VARIABLE(canvasvar_ActiveCrossfade, "active crossfade", 0xe8ed3d77)
+CANVAS_VARIABLE(canvasvar_InactiveCrossfade, "inactive crossfade", 0xe8ed3d77)
+CANVAS_VARIABLE(canvasvar_LocationMarker, "location marker", 0xc4f411ff)
+CANVAS_VARIABLE(canvasvar_LocationRange, "location range", 0x497a59ff)
+CANVAS_VARIABLE(canvasvar_LocationCDMarker, "location cd marker", 0x1ee8c4ff)
+CANVAS_VARIABLE(canvasvar_LocationLoop, "location loop", 0x35964fff)
+CANVAS_VARIABLE(canvasvar_LocationPunch, "location punch", 0x7c3a3aff)
+CANVAS_VARIABLE(canvasvar_VerboseCanvasCursor, "verbose canvas cursor", 0xf4f214bc)
+CANVAS_VARIABLE(canvasvar_MarkerLabel, "marker label", 0xc4f411ff)
+CANVAS_VARIABLE(canvasvar_TempoBar, "tempo bar", 0x72727fff)
+CANVAS_VARIABLE(canvasvar_MeterBar, "meterbar", 0x666672ff)
+CANVAS_VARIABLE(canvasvar_MarkerBar, "markerbar", 0x7f7f8cff)
+CANVAS_VARIABLE(canvasvar_RangeMarkerBar, "rangemarker bar", 0x8c8c96ff)
+CANVAS_VARIABLE(canvasvar_TransportMarkerBar, "TransportMarkerBar", 0x9898a3ff)
+CANVAS_VARIABLE(canvasvar_RangeDragBarRect, "RangeDragBarRect", 0x969696c6)
+CANVAS_VARIABLE(canvasvar_RangeDragRect, "RangeDragRect", 0x82c696c6)
+CANVAS_VARIABLE(canvasvar_TransportDragRect, "TransportDragRect", 0x969696c6)
+CANVAS_VARIABLE(canvasvar_MarkerDragLine, "MarkerDragLine", 0x004f00f9)
+CANVAS_VARIABLE(canvasvar_TransportLoopRect, "TransportLoopRect", 0x1e7728f9)
+CANVAS_VARIABLE(canvasvar_TransportPunchRect, "TransportPunchRect", 0x6d2828e5)
+CANVAS_VARIABLE(canvasvar_PunchLine, "PunchLine", 0xa80000ff)
+CANVAS_VARIABLE(canvasvar_ZoomRect, "ZoomRect", 0xc6d1b26d)
+CANVAS_VARIABLE(canvasvar_RubberBandRect, "RubberBandRect", 0xc6c6c659)
+CANVAS_VARIABLE(canvasvar_EnteredGainLine, "EnteredGainLine", 0xdd6363ff)
+CANVAS_VARIABLE(canvasvar_EnteredAutomationLine, "EnteredAutomationLine", 0xdd6363ff)
+CANVAS_VARIABLE(canvasvar_EnteredMarker, "EnteredMarker", 0xdd6363ff)
+CANVAS_VARIABLE(canvasvar_MeterMarker, "MeterMarker", 0xf2425bff)
+CANVAS_VARIABLE(canvasvar_TempoMarker, "TempoMarker", 0xf2425bff)
+CANVAS_VARIABLE(canvasvar_MeasureLineBeat, "MeasureLineBeat", 0x72727266)
+CANVAS_VARIABLE(canvasvar_MeasureLineBar, "MeasureLineBar", 0x8c8c988c)
+CANVAS_VARIABLE(canvasvar_GhostTrackBase, "GhostTrackBase", 0x44007c7f)
+CANVAS_VARIABLE(canvasvar_GhostTrackWave, "GhostTrackWave", 0x02fd004c)
+CANVAS_VARIABLE(canvasvar_GhostTrackWaveClip, "GhostTrackWaveClip", 0xff000000)
+CANVAS_VARIABLE(canvasvar_GhostTrackZeroLine, "GhostTrackZeroLine", 0xe500e566)
+CANVAS_VARIABLE(canvasvar_ImageTrack, "ImageTrack", 0xddddd8ff)
+CANVAS_VARIABLE(canvasvar_MarkerTrack, "MarkerTrack", 0xddddd8ff)
+CANVAS_VARIABLE(canvasvar_ZeroLine, "ZeroLine", 0xb5b5b5ff)
+CANVAS_VARIABLE(canvasvar_GainLine, "GainLine", 0xff00ff00)
+CANVAS_VARIABLE(canvasvar_GainLineInactive, "GainLineInactive", 0xf0f0fff)
+CANVAS_VARIABLE(canvasvar_RecordingRect, "RecordingRect", 0xe5c6c6ff)
+CANVAS_VARIABLE(canvasvar_SelectionRect, "SelectionRect", 0xe8f4d377)
+CANVAS_VARIABLE(canvasvar_Selection, "Selection", 0x636363b2)
+CANVAS_VARIABLE(canvasvar_VestigialFrame, "VestigialFrame", 0x44007c0f)
+CANVAS_VARIABLE(canvasvar_TimeAxisFrame, "TimeAxisFrame", 0x44007c0f)
+CANVAS_VARIABLE(canvasvar_NameHighlightFill, "NameHighlightFill", 0x0000ffff)
+CANVAS_VARIABLE(canvasvar_NameHighlightOutline, "NameHighlightOutline", 0x7c00ff96)
+CANVAS_VARIABLE(canvasvar_FrameHandle, "FrameHandle", 0x7c00ff96)
+CANVAS_VARIABLE(canvasvar_TrimHandleLocked, "TrimHandleLocked", 0xea0f0f28)
+CANVAS_VARIABLE(canvasvar_TrimHandle, "TrimHandle", 0x1900ff44)
+CANVAS_VARIABLE(canvasvar_EditCursor, "EditCursor", 0x0000ffff)
+CANVAS_VARIABLE(canvasvar_PlayHead, "PlayHead", 0xff0000ff)
index 31cb74ab3343294f2e4fb41581ccd68aa7a6c4a1..ecc54946907963d098903cb07598494557a9ee3c 100644 (file)
@@ -54,6 +54,8 @@ class Configuration : public Stateful
 
        std::map<std::string,MidiPortDescriptor *> midi_ports;
 
+       std::vector<ConfigVariable<uint32_t> *> canvas_colors;
+
        void map_parameters (sigc::slot<void,const char*> theSlot);
 
        int load_state ();
@@ -61,8 +63,9 @@ class Configuration : public Stateful
 
        int set_state (const XMLNode&);
        XMLNode& get_state (void);
-       XMLNode& get_variables (sigc::slot<bool,ConfigVariableBase::Owner>);
+       XMLNode& get_variables (sigc::slot<bool,ConfigVariableBase::Owner>, std::string which_node = "Config");
        void set_variables (const XMLNode&, ConfigVariableBase::Owner owner);
+       void pack_canvasvars ();
 
        void set_current_owner (ConfigVariableBase::Owner);
 
@@ -83,7 +86,12 @@ class Configuration : public Stateful
 #include "ardour/configuration_vars.h"
 #undef  CONFIG_VARIABLE
 #undef  CONFIG_VARIABLE_SPECIAL
-       
+
+#undef  CANVAS_VARIABLE
+#define CANVAS_VARIABLE(var,name,value) ConfigVariable<uint32_t> var;  // <-- is this really so bad?
+#include "ardour/canvas_vars.h"
+#undef  CANVAS_VARIABLE
+
   private:
 
         /* declare variables */
index fa149672be2920c1d5a1f6008e4fef01726332cb..fa6701250ae7037fb7abdc0f7babb9504b61c1b3 100644 (file)
@@ -65,7 +65,7 @@ class ConfigVariable : public ConfigVariableBase
        ConfigVariable (std::string str) : ConfigVariableBase (str) {}
        ConfigVariable (std::string str, T val) : ConfigVariableBase (str), value (val) {}
 
-       virtual bool set (T val, Owner owner) {
+       virtual bool set (T val, Owner owner = ARDOUR::ConfigVariableBase::Config) {
                if (val == value) {
                        miss ();
                        return false;
@@ -92,7 +92,7 @@ class ConfigVariable : public ConfigVariableBase
 
        bool set_from_node (const XMLNode& node, Owner owner) {
 
-               if (node.name() == "Config") {
+               if (node.name() == "Config" || node.name() == "Canvas") {
 
                        /* ardour.rc */
 
index 8ba9830841e3b67f3b72db0976a24b84feed3355..b78421b48f624c495a74da3c7ac486f9a63a9b1f 100644 (file)
@@ -160,3 +160,4 @@ CONFIG_VARIABLE (string, bwf_organization_code, "bwf-organization-code", "US")
 /* these variables have custom set() methods (e.g. path globbing) */
 
 CONFIG_VARIABLE_SPECIAL(Glib::ustring, raid_path, "raid-path", "", path_expand)
+
index c8d71c5155b2199ea8065cb109483ba69c63189d..58d702e3d923baaf9136510a467a8e3129dcd309 100644 (file)
@@ -51,7 +51,12 @@ Configuration::Configuration ()
 #define CONFIG_VARIABLE_SPECIAL(Type,var,name,value,mutator) var (name,value,mutator),
 #include "ardour/configuration_vars.h"
 #undef  CONFIG_VARIABLE
-#undef  CONFIG_VARIABLE_SPECIAL        
+#undef  CONFIG_VARIABLE_SPECIAL
+
+#undef  CANVAS_VARIABLE
+#define CANVAS_VARIABLE(var,name,value) var (name,value),  // <-- is this really so bad?
+#include "ardour/canvas_vars.h"
+#undef  CANVAS_VARIABLE
 
        current_owner (ConfigVariableBase::Default)
 {
@@ -120,6 +125,7 @@ Configuration::load_state ()
                }
        }
 
+       pack_canvasvars();
        return 0;
 }
 
@@ -162,7 +168,8 @@ Configuration::get_state ()
                root->add_child_nocopy(m->second->get_state());
        }
        
-       root->add_child_nocopy (get_variables (sigc::mem_fun (*this, &Configuration::save_config_options_predicate)));
+       root->add_child_nocopy (get_variables (sigc::mem_fun (*this, &Configuration::save_config_options_predicate), "Config"));
+       root->add_child_nocopy (get_variables (sigc::mem_fun (*this, &Configuration::save_config_options_predicate), "Canvas"));
        
        if (_extra_xml) {
                root->add_child_copy (*_extra_xml);
@@ -174,23 +181,28 @@ Configuration::get_state ()
 }
 
 XMLNode&
-Configuration::get_variables (sigc::slot<bool,ConfigVariableBase::Owner> predicate)
+Configuration::get_variables (sigc::slot<bool,ConfigVariableBase::Owner> predicate, std::string which_node)
 {
        XMLNode* node;
        LocaleGuard lg (X_("POSIX"));
 
-       node = new XMLNode("Config");
+       node = new XMLNode(which_node);
 
 #undef  CONFIG_VARIABLE
 #undef  CONFIG_VARIABLE_SPECIAL        
-#define CONFIG_VARIABLE(type,var,name,value) \
-         if (predicate (var.owner())) { var.add_to_node (*node); }
-#define CONFIG_VARIABLE_SPECIAL(type,var,name,value,mutator) \
-         if (predicate (var.owner())) { var.add_to_node (*node); }
+#define CONFIG_VARIABLE(type,var,Name,value) \
+         if (node->name() == "Config") { if (predicate (var.owner())) { var.add_to_node (*node); }}
+#define CONFIG_VARIABLE_SPECIAL(type,var,Name,value,mutator) \
+         if (node->name() == "Config") { if (predicate (var.owner())) { var.add_to_node (*node); }}
 #include "ardour/configuration_vars.h"
 #undef  CONFIG_VARIABLE
 #undef  CONFIG_VARIABLE_SPECIAL        
-       
+
+#undef  CANVAS_VARIABLE
+#define CANVAS_VARIABLE(var,Name,value) if (node->name() == "Canvas") { if (predicate (ConfigVariableBase::Config)) { var.add_to_node (*node); }}
+#include "ardour/canvas_vars.h"
+#undef  CANVAS_VARIABLE
+
        return *node;
 }
 
@@ -222,7 +234,7 @@ Configuration::set_state (const XMLNode& root)
                                warning << _("ill-formed MIDI port specification in ardour rcfile (ignored)") << endmsg;
                        }
 
-               } else if (node->name() == "Config") {
+               } else if (node->name() == "Config" || node->name() == "Canvas" ) {
                        
                        set_variables (*node, ConfigVariableBase::Config);
                        
@@ -252,10 +264,30 @@ Configuration::set_variables (const XMLNode& node, ConfigVariableBase::Owner own
          if (var.set_from_node (node, owner)) { \
                 ParameterChanged (name); \
         }
+
 #include "ardour/configuration_vars.h"
 #undef  CONFIG_VARIABLE
 #undef  CONFIG_VARIABLE_SPECIAL        
 
+#undef  CANVAS_VARIABLE
+#define CANVAS_VARIABLE(var,name,value) \
+         if (var.set_from_node (node, owner)) { \
+                ParameterChanged (name); \
+                }
+#include "ardour/canvas_vars.h"
+#undef  CANVAS_VARIABLE
+       
+}
+
+void
+Configuration::pack_canvasvars ()
+{
+#undef  CANVAS_VARIABLE
+#define CANVAS_VARIABLE(var,name,value) canvas_colors.push_back(&var); 
+#include "ardour/canvas_vars.h"
+#undef  CANVAS_VARIABLE
+       cerr << "Configuration::pack_canvasvars () called, canvas_colors.size() = " << canvas_colors.size() << endl;
+       
 }
 
 Configuration::MidiPortDescriptor::MidiPortDescriptor (const XMLNode& node)