diff options
author | Doug McLain <doug@nostar.net> | 2007-07-05 05:33:40 +0000 |
---|---|---|
committer | Doug McLain <doug@nostar.net> | 2007-07-05 05:33:40 +0000 |
commit | 291a186cba343ed705c60d15fa7db0b21eb8a1fd (patch) | |
tree | 683a299b237164b5a67d2d79e9b05dc2251b8f46 /gtk2_ardour | |
parent | 0518b045c62ef764eced6fff0b64d4f71832a7b0 (diff) |
New theme manager from trunk, backported to 2.0-ongoing
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2110 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
55 files changed, 4169 insertions, 836 deletions
diff --git a/gtk2_ardour/SConscript b/gtk2_ardour/SConscript index 6df694380e..1ee37e71f7 100644 --- a/gtk2_ardour/SConscript +++ b/gtk2_ardour/SConscript @@ -106,7 +106,6 @@ simpleline.cc canvas-simplerect.c simplerect.cc canvas-waveview.c -color_manager.cc crossfade_edit.cc crossfade_view.cc curvetest.cc @@ -195,9 +194,11 @@ streamview.cc audio_streamview.cc tape_region_view.cc tempo_dialog.cc +theme_manager.cc time_axis_view.cc time_axis_view_item.cc time_selection.cc +ui_config.cc utils.cc version.cc visual_time_axis.cc @@ -316,10 +317,11 @@ if env['NLS']: i18n (gtkardour, gtkardour_files+skipped_files+fft_analysis_files, env) # configuration files -env.Alias('install', env.Install(os.path.join(config_prefix, 'ardour2'), 'ardour2_ui.rc')) +env.Alias('install', env.Install(os.path.join(config_prefix, 'ardour2'), 'ardour2_ui_dark.rc')) +env.Alias('install', env.Install(os.path.join(config_prefix, 'ardour2'), 'ardour2_ui_light.rc')) +env.Alias('install', env.Install(os.path.join(config_prefix, 'ardour2'), 'ardour2_ui_default.conf')) env.Alias('install', env.Install(os.path.join(config_prefix, 'ardour2'), 'ardour.menus')) env.Alias('install', env.Install(os.path.join(config_prefix, 'ardour2'), 'ardour.bindings')) -env.Alias('install', env.Install(os.path.join(config_prefix, 'ardour2'), 'ardour.colors')) # data files env.Alias('install', env.Install(os.path.join(install_prefix, 'share', 'ardour2'), 'splash.png')) env.Alias('install', env.Install(os.path.join(install_prefix, 'share', 'ardour2', 'pixmaps'), pixmap_files)) @@ -334,8 +336,8 @@ env.Alias ('tarball', env.Distribute (env['DISTTREE'], 'ardour.sh.in', 'ardev_common.sh.in', 'ardev', 'ardbg', - 'ardour2_ui.rc', 'splash.png', - 'ardour.menus', 'ardour.bindings.in', 'ardour.colors', + 'ardour2_ui_dark.rc', 'ardour2_ui_light.rc', 'splash.png', + 'ardour.menus', 'ardour.bindings.in', 'ardour2_ui_default.conf', 'editor_xpms' ] + gtkardour_files + diff --git a/gtk2_ardour/about.cc b/gtk2_ardour/about.cc index ccd4de1c0c..1502b95d14 100644 --- a/gtk2_ardour/about.cc +++ b/gtk2_ardour/about.cc @@ -34,7 +34,7 @@ #include "svn_revision.h" #include "about.h" #include "rgb_macros.h" -#include "ardour_ui.h" +//#include "ardour_ui.h" #include "i18n.h" diff --git a/gtk2_ardour/ardour.colors b/gtk2_ardour/ardour.colors deleted file mode 100644 index 5d6dddbe79..0000000000 --- a/gtk2_ardour/ardour.colors +++ /dev/null @@ -1,107 +0,0 @@ -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 -cSelectedFrameBase 0.71 0.57 0.66 1.0 -cFrameBase 0.75 0.75 0.76 1.0 -cAudioTrackBase 0.78 0.83 0.85 0.41 -cAudioTrackOutline 0.00 0.00 0.00 1.00 -cAudioBusBase 0.86 0.82 0.92 0.41 -cMeterBar 0.40 0.40 0.45 1.0 -cTempoBar 0.45 0.45 0.50 1.0 -cMarkerBar 0.50 0.50 0.55 1.0 -cRangeMarkerBar 0.55 0.55 0.59 1.0 -cTransportMarkerBar 0.60 0.60 0.64 1.0 -cTimeStretchFill 0.89 0.71 0.71 0.59 -cTimeStretchOutline 0.39 0.39 0.39 0.59 -cAutomationLine 0.27 0.74 0.35 1.0 -cLeftPanAutomationLine 0.87 0.44 0.11 1.0 -cRightPanAutomationLine 0.03 0.26 0.73 1.0 -cRedirectAutomationLine 0.48 0.64 0.98 1.0 -cControlPointFill 0 0 0 1.0 -cControlPointOutline 0 0 0 1.0 -cEnteredControlPointOutline 1.0 0.21 0.21 1.0 -cEnteredControlPointSelected 0.00 1.00 0.00 1.00 -cEnteredControlPoint 1.00 0.00 0.00 1.00 -cControlPointSelected 0.91 0.04 0.04 1.00 -cControlPoint 0.00 0.00 0.00 1.00 -cAutomationTrackFill 0.63 0.63 0.81 0.41 -cAutomationTrackOutline 0.16 0.16 0.16 1.0 -cCrossfadeEditorBase 0.16 0.18 0.29 1.0 -cCrossfadeEditorLine 0 0 0 1.0 -cSelectedCrossfadeEditorLine 0 0.86 0.86 1.0 -cCrossfadeEditorLineShading 0 0.63 0.82 0.33 -cCrossfadeEditorPointFill 0 1.0 0 1.0 -cCrossfadeEditorPointOutline 0 0 1.0 1.0 -cCrossfadeEditorWave 1.0 1.0 1.0 0.16 -cSelectedCrossfadeEditorWave 0.98 0.92 0.08 0.63 -cCrossfadeLine 0 0 0 1.0 -cActiveCrossfade 0.91 0.93 0.24 0.47 -cInactiveCrossfade 0 0 0 0 -cLocationMarker 0.77 0.96 0.07 1.0 -cLocationRange 0.29 0.48 0.35 1.0 -cLocationCDMarker 0.12 0.91 0.77 1.0 -cLocationLoop 0.21 0.59 0.31 1.0 -cLocationPunch 0.49 0.23 0.23 1.0 -cVerboseCanvasCursor 0.96 0.95 0.08 0.74 -cRangeDragBarRect 0.59 0.59 0.59 0.78 -cRangeDragBarRectFill 0.78 0.82 0.70 0.43 -cRangeDragRect 0.59 0.59 0.59 0.78 -cRangeDragRectFill 0.51 0.78 0.59 0.78 -cTransportDragRect 0.59 0.59 0.59 0.78 -cTransportDragRectFill 0.78 0.78 0.78 1.43 -cMarkerDragLine 0 0.31 0 0.98 -cTransportLoopRect 0.12 0.47 0.16 0.98 -cTransportLoopRectFill 0.12 0.47 0.16 0.98 -cTransportPunchRect 0.43 0.16 0.16 0.90 -cTransportPunchRectFill 0.43 0.16 0.16 0.90 -cPunchInLine 0.66 0.00 0.00 1.00 -cPunchOutLine 0.66 0.00 0.00 1.00 -cZoomRect 0.59 0.59 0.59 0.78 -cZoomRectFill 0.78 0.82 0.70 0.43 -cRubberBandRect 0.08 1.00 0.52 0.59 -cRubberBandRectFill 0.78 0.78 0.78 0.35 -cFirstActionMessage 0.00 0.00 0.00 1.00 -cEnteredGainLine 0.87 0.39 0.39 1.00 -cEnteredAutomationLine 0.87 0.39 0.39 1.00 -cEnteredMarker 0.87 0.39 0.39 1.00 -cMeterMarker 0.95 0.26 0.36 1.00 -cTempoMarker 0.95 0.26 0.36 1.00 -cMeasureLineBeat 0.45 0.45 0.45 0.40 -cMeasureLineBar 0.55 0.55 0.60 0.55 -cGhostTrackBaseOutline 0.00 0.00 0.00 1.00 -cGhostTrackBaseFill 0.27 0.00 0.49 0.50 -cGhostTrackWave 0.0 3.00 0.0 0.30 -cGhostTrackWaveClip 1.0 0.0 0.0 0.0 -cGhostTrackZeroLine 0.9 0.0 0.9 0.40 -cImageTrackBase 0.87 0.87 0.85 1.00 -cImageTrackOutline 0.00 0.00 0.00 1.00 -cMarkerTrackBase 0.87 0.87 0.85 1.00 -cMarkerTrackOutline 0.00 0.00 0.00 1.00 -cZeroLine 0.71 0.71 0.71 1.00 -cGainLine 0.00 1.00 0.00 1.00 -cGainLineInactive 0.06 0.06 0.06 1.00 -cRecordingRectFill 0.90 0.78 0.78 1.00 -cRecordingRectOutline 0.31 0.16 0.16 1.00 -cSelectionRectFill 0.91 0.96 0.83 0.47 -cSelectionRectOutline 0.39 0.39 0.39 0.59 -cSelectionEndFill 0.39 0.39 0.39 0.70 -cSelectionEndOutline 0.39 0.39 0.39 1.0 -cSelectionStartFill 0.39 0.39 0.39 0.70 -cSelectionStartOutline 0.39 0.39 0.39 1.0 -cVestigialFrameFill 0.27 0.00 0.49 0.06 -cVestigialFrameOutline 0.00 0.00 0.00 1.00 -cTimeAxisFrameFill 0.27 0.00 0.49 0.06 -cTimeAxisFrameOutline 0.00 0.00 0.00 1.00 -cNameHighlightFill 0.00 0.00 1.00 1.00 -cNameHighlightOutline 0.49 0.00 1.00 0.59 -cFrameHandleStartFill 0.49 0.00 1.00 0.59 -cFrameHandleStartOutline 0.00 0.00 0.00 1.00 -cFrameHandleEndFill 0.49 0.00 1.00 0.59 -cFrameHandleEndOutline 0.00 0.00 0.00 1.00 -cTrimHandleLockedStart 0.92 0.06 0.06 0.16 -cTrimHandleLockedEnd 0.92 0.06 0.06 0.16 -cTrimHandleStart 0.10 0.00 1.00 0.27 -cTrimHandleEnd 0.10 0.00 1.00 0.27 -cEditCursor 0.00 0.00 1.00 1.00 -cPlayHead 1.00 0.00 0.00 1.00 - diff --git a/gtk2_ardour/ardour.menus b/gtk2_ardour/ardour.menus index 39d5e77df1..dcb79d4c0b 100644 --- a/gtk2_ardour/ardour.menus +++ b/gtk2_ardour/ardour.menus @@ -238,7 +238,7 @@ <menuitem action='ToggleOptionsEditor'/> <menuitem action='ToggleInspector'/> <menuitem action='ToggleLocations'/> - <menuitem action='ToggleColorManager'/> + <menuitem action='ToggleThemeManager'/> <menuitem action='ToggleBigClock'/> <separator/> </menu> diff --git a/gtk2_ardour/ardour2_ui_dark.rc b/gtk2_ardour/ardour2_ui_dark.rc new file mode 100644 index 0000000000..631ef4b92e --- /dev/null +++ b/gtk2_ardour/ardour2_ui_dark.rc @@ -0,0 +1,1526 @@ +# +# This is the GTK style file for Ardour +# +# + +style "very_small_text" +{ + font_name = "sans 7" +} + +style "small_text" +{ + font_name = "sans 8" +} + +style "small_bold_text" +{ + font_name = "sans bold 8" +} + +style "medium_bold_text" +{ + font_name = "sans bold 8" +} + +style "medium_text" +{ + font_name = "sans 8" +} + +style "red_medium_text" = "medium_text" +{ + fg[NORMAL] = { 1.0, 0, 0 } + fg[ACTIVE] = { 1.0, 0, 0 } + fg[SELECTED] = { 1.0, 0, 0 } +} + + +style "large_text" +{ + font_name = "sans 18" +} + +style "larger_bold_text" +{ + font_name = "sans bold 14" +} + +style "plugin_name_text" +{ + font_name = "sans bold 25" + fg[NORMAL] = { 0.80, 0.80, 0.80 } +} + +style "plugin_maker_text" +{ + font_name = "sans bold 14" + fg[NORMAL] = { 0.80, 0.80, 0.80 } +} + +style "automation_track_name" +{ + font_name = "sans italic 8" +} + +style "first_action_message" +{ + font_name = "sans medium 34" +} + +style "verbose_canvas_cursor" +{ + font_name = "sans bold 24" +} + +style "marker_text" +{ + font_name = "sans 8" +} + +style "time_axis_view_item_name" +{ + font_name = "sans 6" +} + +style "default_base" = "medium_text" +{ + + GtkWidget::cursor_color = {1.0, 1.0, 1.0 } + GtkButton::default_border = { 0, 0, 0, 0 } + GtkButton::default_outside_border = { 0, 0, 0, 0 } + GtkButton::button_relief = GTK_RELIEF_NONE + GtkTreeView::vertical-padding = 0 + GtkTreeView::horizontal-padding = 0 + GtkTreeView::even-row-color = { 0, 0, 0 } + GtkTreeView::odd-row-color = { 0, 0, 0 } + + fg[NORMAL] = { 0.80, 0.80, 0.80 } + fg[ACTIVE] = { 0.80, 0.80, 0.80 } + fg[PRELIGHT] = { 1.0, 1.0, 1.0 } + fg[INSENSITIVE] = { 0.80, 0.80, 0.80 } + fg[SELECTED] = { 0.80, 0.80, 0.80 } + + bg[NORMAL] = { 0.35, 0.35, 0.40 } + bg[ACTIVE] = { 0.35, 0.35, 0.40 } + bg[PRELIGHT] = "#565690" + bg[INSENSITIVE] = { 0.10, 0.10, 0.10 } + bg[SELECTED] = { 0, 0.40, 0.60 } + + text[NORMAL] = { 0.80, 0.80, 0.80 } + text[ACTIVE] = { 0.80, 0.80, 0.80 } + text[PRELIGHT] = { 0.80, 0.80, 0.80 } + text[INSENSITIVE] = { 0.80, 0.80, 0.80} + text[SELECTED] = { 1.0, 1.0, 1.0 } + + base[ACTIVE] = "#272a2f" + base[NORMAL] = "#1a1e20" + base[PRELIGHT] = { 0.20, 0.20, 0.20 } + base[INSENSITIVE] = "#4c5159" + base[SELECTED] = { 0.25, 0.25, 0.25 } + + engine "clearlooks" + { + menubarstyle = 0 # 0 = flat, 1 = sunken, 2 = flat gradient + } +} + +style "base_frame" +{ + fg[NORMAL] = { 0.80, 0.80, 0.80 } + bg[NORMAL] = { 0.35, 0.35, 0.40 } +} + +style "transport_base" = "medium_bold_text" +{ + bg[NORMAL] = { 0.10, 0.10, 0.10 } + bg[ACTIVE] = { 0, 0, 0 } + bg[PRELIGHT] = { 0, 0, 0 } + bg[INSENSITIVE] = { 0, 0, 0 } + bg[SELECTED] = { 0, 0, 0 } +} +/* +style "black_mackie_menu_bar" +{ + font_name = "sans bold 8" + fg[NORMAL] = { 1.0, 1.0, 1.0 } + bg[NORMAL] = { 0, 0, 0 } +} +*/ +style "default_buttons_menus" +{ + font_name = "sans 8" + fg[ACTIVE] = { 1.0, 1.0, 1.0 } + + bg[NORMAL] = { 0.30, 0.30, 0.35 } + bg[ACTIVE] = "#565690" + bg[PRELIGHT] = { 0.15, 0.15, 0.20 } + bg[INSENSITIVE] = { 0.15, 0.15, 0.20 } + bg[SELECTED] = { 0.15, 0.15, 0.20 } +} + +style "very_small_button" = "default_buttons_menus" +{ + font_name = "sans 7" + ythickness = 0 + xthickness = 0 +} + +style "small_button" = "default_buttons_menus" +{ +} + +style "very_small_red_active_and_selected_button" = "very_small_button" +{ + bg[ACTIVE] = { 1.0, 0, 0} + bg[SELECTED] = { 1.0, 0, 0} +} + +style "small_red_active_and_selected_button" = "small_button" +{ + fg[ACTIVE] = { 0, 0, 0 } + bg[ACTIVE] = { 1.0, 0, 0} + bg[SELECTED] = { 1.0, 0, 0} +} + +style "gain_fader" +{ + bg[NORMAL] = { 0.269, 0.269, 0.300} + bg[ACTIVE] = { 0.152, 0.152, 0.168 } +} + + +style "track_rec_enable_button" = "small_button" +{ +} + +style "track_rec_enable_button_active" = "small_button" +{ + fg[SELECTED] = { 0.0, 0.0, 0.0 } + fg[ACTIVE] = { 0.0, 0.0, 0.0 } + fg[PRELIGHT] = { 0.0, 0.0, 0.0 } + fg[NORMAL] = { 0.0, 0.0, 0.0 } + + bg[NORMAL] = { 1.0, 0.0, 0.0 } + bg[ACTIVE] = { 1.0, 0.0, 0.0 } + bg[SELECTED] = { 1.0, 0.0, 0.0 } + bg[PRELIGHT] = { 1.0, 0.0, 0.0 } +} + +style "track_rec_enable_button_alternate" = "small_button" +{ + fg[SELECTED] = { 0.0, 0.0, 0.0 } + fg[ACTIVE] = { 0.0, 0.0, 0.0 } + fg[PRELIGHT] = { 0.0, 0.0, 0.0 } + fg[NORMAL] = { 0.0, 0.0, 0.0 } + + bg[NORMAL] = { 0.91, 0.68, 0.68} + bg[ACTIVE] = { 0.91, 0.68, 0.68} + bg[SELECTED] = { 0.91, 0.68, 0.68} + bg[PRELIGHT] = { 0.91, 0.68, 0.68} +} + +style "mixer_track_rec_enable_button" = "track_rec_enable_button" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} + +style "mixer_track_rec_enable_button_alternate" = "track_rec_enable_button_alternate" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} + +style "mixer_track_rec_enable_button_active" = "track_rec_enable_button_active" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} + +style "solo_button" = "small_button" +{ +} + +style "solo_button_alternate" = "small_button" +{ + bg[NORMAL] = { 0.19, 0.97, 0.69 } # solo-safe + bg[ACTIVE] = { 0.19, 0.97, 0.69 } # solo-safe + bg[SELECTED] = { 0.19, 0.97, 0.69 } # solo-safe + bg[PRELIGHT] = { 0.19, 0.97, 0.69 } # solo-safe + + fg[ACTIVE] = { 0, 0, 0 } + fg[SELECTED] = { 0, 0, 0 } + fg[NORMAL] = { 0, 0, 0 } + fg[PRELIGHT] = { 0, 0, 0 } +} + + +style "solo_button_active" = "small_button" +{ + bg[NORMAL] = { 0.66, 0.97, 0.19 } # solo + bg[ACTIVE] = { 0.66, 0.97, 0.19 } # solo + bg[SELECTED] = { 0.66, 0.97, 0.19 } # solo + bg[PRELIGHT] = { 0.66, 0.97, 0.19 } # solo + + fg[ACTIVE] = { 0, 0, 0 } + fg[SELECTED] = { 0, 0, 0 } + fg[NORMAL] = { 0, 0, 0 } + fg[PRELIGHT] = { 0, 0, 0 } +} + +style "mixer_solo_button" = "solo_button" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} + +style "mixer_solo_button_alternate" = "solo_button_alternate" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} +style "mixer_solo_button_active" = "solo_button_active" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} + + +style "mute_button" = "small_button" +{ +} + +style "mute_button_alternate" = "small_button" +{ + bg[ACTIVE] = { 1.0, 0.98, 0.53 } + bg[NORMAL] = { 1.0, 0.98, 0.53 } + bg[SELECTED] = { 1.0, 0.98, 0.53 } + bg[PRELIGHT] = { 1.0, 0.98, 0.53 } + + fg[SELECTED] = { 0, 0, 0 } + fg[ACTIVE] = { 0, 0, 0 } + fg[NORMAL] = { 0, 0, 0 } + fg[PRELIGHT] = { 0, 0, 0 } +} + +style "mute_button_active" = "small_button" +{ + bg[NORMAL] = { 0.90, 0.89, 0.73 } + bg[ACTIVE] = { 0.90, 0.89, 0.73 } + bg[PRELIGHT] = { 0.90, 0.89, 0.73 } + bg[SELECTED] = { 0.90, 0.89, 0.73 } + + fg[SELECTED] = { 0, 0, 0 } + fg[ACTIVE] = { 0, 0, 0 } + fg[NORMAL] = { 0, 0, 0 } + fg[PRELIGHT] = { 0, 0, 0 } +} + +style "mixer_mute_button" = "mute_button" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} + +style "mixer_mute_button_alternate" = "mute_button_alternate" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} + +style "mixer_mute_button_active" = "mute_button_active" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} + +style "multiline_combo" = "small_button" +{ + font_name = "sans 8" + xthickness = 0 + ythickness = 0 +} + +style "mixer_mute_button" = "mute_button" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} + +style "track_loop_button" = "small_button" +{ + bg[ACTIVE] = { 1.0, 0.98, 0.53 } + bg[PRELIGHT] = { 1.0, 0.98, 0.53 } + +} + +style "mixer_red_active_button" = "very_small_button" +{ + fg[ACTIVE] = { 0, 1.0, 1.0 } + bg[ACTIVE] = { 0.7, 0, 0 } + + base[INSENSITIVE] = { 0.16, 0.16, 0.21 } + bg[INSENSITIVE] = { 0.16, 0.16, 0.21 } +} + +style "time_button" = "default_buttons_menus" +{ + font_name = "sans 8" +} + +style "transport_button" +{ +} + +style "transport_button_active" +{ + bg[NORMAL] = { 0.50, 1.0, 0.50 } + bg[ACTIVE] = { 0.50, 1.0, 0.50 } + bg[SELECTED] = { 0.50, 1.0, 0.50 } + bg[PRELIGHT] = { 0.50, 1.0, 0.50 } + + fg[NORMAL] = { 0, 0, 0 } + fg[PRELIGHT] = { 0, 0, 0 } + fg[SELECTED] = { 0, 0, 0 } + fg[ACTIVE] = { 0, 0, 0 } +} + +style "transport_rec_button" +{ +} + +style "transport_rec_button_active" +{ + bg[ACTIVE] = { 1.0, 0, 0 } + bg[NORMAL] = { 1.0, 0, 0 } + bg[SELECTED] = { 1.0, 0, 0 } + bg[PRELIGHT] = { 1.0, 0, 0 } +} + +style "transport_rec_button_alternate" +{ + bg[PRELIGHT] = { 0.91, 0.68, 0.68 } + bg[NORMAL] = { 0.91, 0.68, 0.68 } + bg[SELECTED] = { 0.91, 0.68, 0.68 } + bg[ACTIVE] = { 0.91, 0.68, 0.68 } +} + +style "shuttle_control" = "very_small_text" +{ + fg[NORMAL] = { 0.85, 0.92, 0.98 } + fg[ACTIVE] = { 0.85, 0.92, 0.98 } + fg[PRELIGHT] = { 0.85, 0.92, 0.98 } + fg[SELECTED] = { 0.85, 0.92, 0.98 } + fg[INSENSITIVE] = { 0.85, 0.92, 0.98 } + + bg[NORMAL] = { 0.26, 0.26, 0.31 } + bg[PRELIGHT] = { 0.26, 0.26, 0.31 } + bg[INSENSITIVE] = { 0.26, 0.26, 0.31 } + bg[ACTIVE] = { 0.70, 0.70, 0.70 } + bg[SELECTED] = { 1.0, 0.04, 0.04 } +} + +style "ardour_adjusters" = "default_buttons_menus" +{ + bg[NORMAL] = { 0.60, 0.60, 0.60 } + bg[PRELIGHT] = { 0.80, 0.80, 0.80 } + bg[ACTIVE] = { 0.06, 0.06, 0.06 } +} + +style "editor_hscrollbar" = "ardour_adjusters" +{ + # + # special case: we want this scrollbar to be as tall as the + # zoom focus selector combobox. scrollbars don't expand to + # fill the space available to them, so we have to explicitly + # make it bigger. + # + GtkRange::slider_width = 27 + GtkScrollbar::slider_width = 27 +} + +style "ardour_progressbars" = "default_buttons_menus" +{ + bg[NORMAL] = { 0, 0, 0 } + bg[PRELIGHT] = { 0.00, 0.36, 0.40 } +} + +style "options_window" = "default_base" +{ + font_name = "sans 8" + fg[PRELIGHT] = { 0.80, 0.80, 0.80 } +} + +style "option_entry" = "default_base" +{ + fg[NORMAL] = { 1.0, 1.0, 1.0 } + fg[ACTIVE] = { 1.0, 1.0, 1.0 } + fg[INSENSITIVE] = { 0.80, 0.80, 0.80 } + + base[INSENSITIVE] = { 0.07, 0.07, 0.12 } + + bg[NORMAL] = { 0.35, 0.35, 0.40 } + bg[ACTIVE] = { 0.35, 0.35, 0.40 } +} + +style "red_when_active" = "medium_text" +{ + fg[NORMAL] = { 0.80, 0.80, 0.80 } + bg[NORMAL] = { 0.26, 0.26, 0.31 } + + fg[ACTIVE] = { 0.80, 0.80, 0.80 } + bg[ACTIVE] = { 1.0, 0, 0} +} + +style "xrun_warn" +{ + font_name = "sans bold 18" + + fg[NORMAL] = { 1.0, 1.0, 1.0 } + fg[ACTIVE] = { 1.0, 1.0, 1.0 } + text[NORMAL] = { 1.0, 1.0, 1.0 } + text[ACTIVE] = { 1.0, 1.0, 1.0 } + base[NORMAL] = { 0.09, 0.48, 0.46 } + base[ACTIVE] = { 0.09, 0.48, 0.46 } + bg[NORMAL] = { 1.0, 0.48, 0.46 } + bg[ACTIVE] = { 0.09, 1.0, 0.46 } +} +/* +style "menu_bar_base" = "default_base" +{ + bg[NORMAL] = { 0.2, 0.2, 0.3 } + bg[ACTIVE] = { 0, 0, 0 } + bg[PRELIGHT] = { 0, 0, 0 } + bg[INSENSITIVE] = { 0, 0, 0 } + bg[SELECTED] = { 0, 0, 0 } +} +*/ +style "fatal_message" = "medium_text" +{ + fg[ACTIVE] = { 1.0, 0, 1.0 } + fg[NORMAL] = { 0.80, 0.80, 0.80 } + bg[ACTIVE] = { 0,0,0 } + bg[NORMAL] = { 0,0,0 } + base[ACTIVE] = { 0,0,0 } + base[NORMAL] = { 0,0,0 } +} + +style "error_message" = "medium_text" +{ + fg[ACTIVE] = { 1.0, 0, 0 } + fg[NORMAL] = { 0.80, 0.80, 0.80 } + bg[ACTIVE] = { 0,0,0 } + bg[NORMAL] = { 0,0,0 } + base[ACTIVE] = { 0,0,0 } + base[NORMAL] = { 0,0,0 } +} + +style "info_message" = "medium_text" +{ + fg[ACTIVE] = { 1.0, 0, 0 } + fg[NORMAL] = { 0.80, 0.80, 0.80 } + bg[ACTIVE] = { 0,0,0 } + bg[NORMAL] = { 0,0,0 } + base[ACTIVE] = { 0,0,0 } + base[NORMAL] = { 0,0,0 } +} + +style "warning_message" = "medium_text" +{ + fg[ACTIVE] = { 0.30,0.30, 1.0 } + fg[NORMAL] = { 0.80, 0.80, 0.80 } + bg[ACTIVE] = { 0, 0, 0 } + bg[NORMAL] = { 0, 0, 0 } + base[ACTIVE] = { 0, 0, 0 } + base[NORMAL] = { 0, 0, 0 } +} + +style "medium_entry" = "medium_text" +{ + fg[NORMAL] = { 0.70, 0.70, 0.70 } + fg[ACTIVE] = { 0.70, 0.70, 0.70 } + fg[SELECTED] = { 1.0, 1.0, 1.0 } + + bg[NORMAL] = { 0.35, 0.35, 0.40 } + + base[NORMAL] = { 0, 0, 0 } + base[ACTIVE] = { 0, 0, 0 } + base[SELECTED] = { 0.70, 0.70, 0.70 } +} + +style "medium_entry_noselection_fg" = "medium_entry" +{ + fg[SELECTED] = { 0.50, 1.0, 0.50 } +} + +style "medium_entry_noselection_bg" = "medium_entry" +{ + bg[SELECTED] = { 1.0, 1.0, 1.0 } +} + +style "medium_bold_entry" = "medium_bold_text" +{ + fg[NORMAL] = { 0.70, 0.70, 0.70 } + fg[ACTIVE] = { 0.70, 0.70, 0.70 } + + bg[NORMAL] = { 0.35, 0.35, 0.40 } + + base[NORMAL] = { 0, 0, 0 } + base[ACTIVE] = { 0, 0, 0 } + base[SELECTED] = { 0, 0, 0 } +} + +style "small_entry" = "small_text" +{ + fg[NORMAL] = { 0.70, 0.70, 0.70 } + fg[ACTIVE] = { 0, 1.0, 0 } + fg[SELECTED] = { 0, 1.0, 0 } + text[NORMAL] = { 0.70, 0.70, 0.70 } + text[ACTIVE] = { 0, 1.0, 0 } + text[SELECTED] = { 0, 1.0, 0 } + bg[NORMAL] = { 0.0, 0.0, 0.0 } + bg[SELECTED] = { 0.0, 0.0, 0.0 } + bg[SELECTED] = { 0.0, 0.0, 0.0 } + base[NORMAL] = { 0, 0, 0 } + base[ACTIVE] = { 0, 0, 0 } + base[SELECTED] = { 0, 0, 0 } +} + +style "red_active_small_entry" = "small_entry" +{ + fg[ACTIVE] = { 1.0, 0.0, 0.0 } + fg[SELECTED] = { 1.0, 0, 0 } +} + +style "small_bold_entry" = "small_bold_text" +{ + fg[NORMAL] = { 0.70, 0.70, 0.70 } + fg[ACTIVE] = { 0.70, 0.70, 0.70 } + + bg[NORMAL] = { 0.35, 0.35, 0.40 } + + base[NORMAL] = { 0, 0, 0 } + base[ACTIVE] = { 0, 0, 0 } + base[SELECTED] = { 0, 0, 0 } +} + +style "small_red_on_black_entry" = "small_bold_text" +{ + fg[NORMAL] = { 1.0, 0, 0 } + fg[ACTIVE] = { 1.0, 0, 0 } + base[NORMAL] = { 0.0, 0.0, 0.0 } + base[ACTIVE] = { 0.0, 0.0, 0.0 } + bg[NORMAL] = { 0.0, 0.0, 0.0 } + bg[ACTIVE] = { 0.0, 0.0, 0.0 } +} + +style "non_recording_big_clock_display" = "medium_entry" +{ + font_name = "sans 60" + + fg[NORMAL] = { 0.50, 1.0, 0.50 } + fg[ACTIVE] = { 1.0, 0, 0.0 } + fg[SELECTED] = { 1.0, 0, 0 } + fg[PRELIGHT] = { 1.0, 0, 0.0 } + fg[INSENSITIVE] = { 1.0, 0, 0.0 } + + base[NORMAL] = { 0.0, 0.0, 0.0 } + base[ACTIVE] = { 0.0, 0.0, 0.0 } + bg[NORMAL] = { 0.0, 0.0, 0.0 } + bg[ACTIVE] = { 0.7, 0.0, 0.0 } +} + +style "recording_big_clock_display" = "non_recording_big_clock_display" +{ + fg[NORMAL] = { 1.0, 0, 0 } +} + +style "transport_clock_display" +{ + font_name = "sans bold 14" + + fg[NORMAL] = { 0.50, 1.0, 0.50 } + fg[ACTIVE] = { 1.0, 0, 0.0 } + fg[SELECTED] = { 1.0, 0, 0 } + fg[PRELIGHT] = { 1.0, 0, 0.0 } + fg[INSENSITIVE] = { 1.0, 0, 0.0 } + + base[NORMAL] = { 0.0, 0.0, 0.0 } + base[ACTIVE] = { 0.0, 0.0, 0.0 } + bg[NORMAL] = { 0.0, 0.0, 0.0 } + bg[ACTIVE] = { 0.0, 0.0, 0.0 } +} + +style "transport_clock_display_delta" = "transport_clock_display" +{ + fg[NORMAL] = { 0.30, 0.30, 1.0 } +} + +style "tempo_meter_clock_display" +{ + font_name = "sans 7" + fg[NORMAL] = { 1.0, 1.0, 1.0 } + fg[ACTIVE] = { 1.0, 1.0, 0.0 } + fg[SELECTED] = { 1.0, 0, 0 } + base[NORMAL] = { 0.0, 0.48, 1.0 } + base[ACTIVE] = { 0.09, 0.98, 0.46 } + bg[NORMAL] = { 0.0, 0.48, 1.0 } + bg[ACTIVE] = { 0.09, 0.98, 0.46 } +} + +style "default_clock_display" = "medium text" +{ + fg[NORMAL] = { 0.50, 1.0, 0.50 } + fg[ACTIVE] = { 1.0, 0.0, 0.0 } + fg[SELECTED] = { 1.0, 0, 0 } + base[NORMAL] = { 0, 0, 0 } + base[ACTIVE] = { 0, 0, 0 } + bg[NORMAL] = { 0, 0, 0 } + bg[ACTIVE] = { 0, 0, 0 } +} + +style "editor_time_ruler" = "small_text" +{ + fg[NORMAL] = { 0.80, 0.80, 0.80 } + bg[NORMAL] = { 0.09, 0.09, 0.09 } +} + +style "audio_bus_base" +{ + font_name = "sans 6" + fg[NORMAL] = { 0.77, 0.77, 0.72 } + fg[NORMAL] = { 0.7, 0.8, 0.2 } + bg[NORMAL] = { 0.20, 0.20, 0.26 } +} + +style "audio_track_base" = "default_base" +{ + font_name = "sans 6" + fg[NORMAL] = { 0.77, 0.77, 0.72 } + bg[NORMAL] = { 0.18, 0.19, 0.22 } + bg[ACTIVE] = { 0.20, 0.20, 0.20 } + bg[PRELIGHT] = { 0.20, 0.20, 0.20 } + bg[INSENSITIVE] = { 0.20, 0.20, 0.20 } + bg[SELECTED] = { 0.20, 0.20, 0.20 } +} + +style "midi_bus_base" +{ + font_name = "sans 6" + fg[NORMAL] = { 0.77, 0.77, 0.72 } + fg[NORMAL] = { 0.7, 0.8, 0.2 } + #bg[NORMAL] = {0, 0.36, 0.40 } + bg[NORMAL] = "#444466" +} + +style "midi_track_base" = "default_base" +{ + font_name = "sans 6" + fg[NORMAL] = { 0.77, 0.77, 0.72 } + bg[NORMAL] = { 0.48, 0.30, 0.32 } + bg[ACTIVE] = { 0.20, 0.20, 0.20 } + bg[PRELIGHT] = { 0.20, 0.20, 0.20 } + bg[INSENSITIVE] = { 0.20, 0.20, 0.20 } + bg[SELECTED] = { 0.20, 0.20, 0.20 } +} + +style "track_name_display" +{ + font_name = "sans medium 8" + fg[NORMAL] = { 0.80, 0.80, 0.80 } + fg[ACTIVE] = { 0.80, 0.80, 0.80 } + + base[NORMAL] = { 0.06, 0.06, 0.06 } + base[ACTIVE] = { 0.26, 0.26, 0.26 } + bg[NORMAL] = { 0.26, 0.26, 0.26 } + bg[ACTIVE] = { 0.26, 0.26, 0.26 } +} + +style "active_track_name_display" +{ + font_name = "sans medium 8" + text[NORMAL] = { 0.26, 0.26, 0.26 } + base[NORMAL] = { 0.89, 0.89, 0.89 } +} + +style "track_separator" +{ + bg[NORMAL] = { 0.35, 0.35, 0.40 } +} + +# +# Track edit groups. These styles define +# the colors that the "edit" button will +# use as a track is moved from +# track edit group to track edit group. +# There are 8 edit groups. Edit group 0 +# is used for tracks that are not editable, +# so we leave its style to the default. +# + +style "edit_group_0" + +{ + bg[ACTIVE] = { 1.0, 0.65, 0.13 } + bg[NORMAL] = { 0.31, 0.31, 0.31 } + fg[NORMAL] = { 0.82, 0.91, 0.99 } + fg[ACTIVE] = { 0, 0, 0 } +} + +style "edit_group_1" +{ + fg[NORMAL] = { 0, 0, 0 } + fg[PRELIGHT] = { 0, 0, 0 } + fg[SELECTED] = { 0, 0, 0 } + bg[NORMAL] = { 0.93, 0.34, 0.08 } + bg[PRELIGHT] = { 0.93, 0.34, 0.08 } + bg[SELECTED] = { 0.93, 0.34, 0.08 } +} + +style "edit_group_2" +{ + fg[NORMAL] = { 0, 0, 0 } + fg[PRELIGHT] = { 0, 0, 0 } + fg[SELECTED] = { 0, 0, 0 } + bg[NORMAL] = { 0.93, 0.34, 0.08 } + bg[PRELIGHT] = { 0.93, 0.34, 0.08 } + bg[SELECTED] = { 0.93, 0.34, 0.08 } +} + +style "edit_group_3" +{ + fg[NORMAL] = { 0, 0, 0 } + fg[PRELIGHT] = { 0, 0, 0 } + fg[SELECTED] = { 0, 0, 0 } + bg[NORMAL] = { 0.93, 0.34, 0.08 } + bg[PRELIGHT] = { 0.93, 0.34, 0.08 } + bg[SELECTED] = { 0.93, 0.34, 0.08 } +} + +style "treeview_parent_node" +{ + # specifies *just* the color used for whole file rows when not selected + fg[NORMAL] = { 0.0, 0.6, 0.85 } +} + +style "treeview_display" = "small_bold_text" +{ + # expander arrow border and DnD "icon" text + fg[NORMAL] = { 0.8, 0.8, 0.8 } + + # background with no rows or no selection, plus + # expander arrow core and DnD "icon" background + base[NORMAL] = { 0.20, 0.20, 0.25 } + + # selected row bg when window does not have focus (including during DnD) + base[ACTIVE] = { 0.0, 0.60, 0.60 } + + # selected row bg when window has focus + base[SELECTED] = { 0, 0.75, 0.75 } + + # row text when in normal state and not a parent + text[NORMAL] = { 0.80, 0.80, 0.80 } + + # selected row text with window focus + text[SELECTED] = { 0, 1.0, 1.0 } + + # selected row text without window focus (including during DnD) + text[ACTIVE] = { 0, 1.0, 1.0 } +} + +style "main_canvas_area" +{ + bg[NORMAL] = { 0.30, 0.30, 0.34 } + bg[ACTIVE] = { 0.30, 0.30, 0.34 } + bg[INSENSITIVE] = { 0.30, 0.30, 0.34 } + bg[SELECTED] = { 0.30, 0.30, 0.34 } + bg[PRELIGHT] = { 0.30, 0.30, 0.34 } +} + +style "track_controls_inactive" +{ + bg[NORMAL] = { 0.60, 0.60, 0.66 } + bg[ACTIVE] = { 0.60, 0.60, 0.66 } + bg[INSENSITIVE] = { 0.60, 0.60, 0.66 } + bg[SELECTED] = { 0.60, 0.60, 0.66 } + bg[PRELIGHT] = { 0.60, 0.60, 0.66 } + + font_name = "sans medium 10" + fg[NORMAL] = { 0.7, 0.8, 0.2 } +} + +style "edit_controls_base_selected" +{ + bg[NORMAL] = { 0.32, 0.32, 0.54 } + bg[ACTIVE] = { 0.32, 0.32, 0.54 } + bg[INSENSITIVE] = { 0.32, 0.32, 0.54 } + bg[SELECTED] = { 0.32, 0.32, 0.54 } + bg[PRELIGHT] = { 0.32, 0.32, 0.54 } +} + +style "automation_track_controls_base" +{ + bg[NORMAL] = { 0.22, 0.22, 0.29 } + bg[ACTIVE] = { 0.22, 0.22, 0.29 } + bg[INSENSITIVE] = { 0.22, 0.22, 0.29 } + bg[SELECTED] = { 0.22, 0.22, 0.29 } + bg[PRELIGHT] = { 0.22, 0.22, 0.29 } +} + +# Plugin Editors +style "plugin_slider" +{ + font_name ="sans bold 10" + + # the slider itself. the inactive part is INSENSITIVE, + # the active part is something else. + + fg[NORMAL] = { 0.37, 0.43, 0.52 } + fg[ACTIVE] = { 0.37, 0.43, 0.52 } + fg[INSENSITIVE] = {0.35, 0.35, 0.40 } # matches default_base + fg[SELECTED] = { 0.37, 0.43, 0.52 } + fg[PRELIGHT] = { 0.37, 0.43, 0.52 } + + # draws the outer rectangle around the slider + + bg[NORMAL] = { 0.80, 0.80, 0.80 } + bg[ACTIVE] = { 0.80, 0.80, 0.80 } + bg[INSENSITIVE] = {0.80, 0.80, 0.80 } + bg[SELECTED] = { 0.80, 0.80, 0.80 } + bg[PRELIGHT] = { 0.80, 0.80, 0.80 } + + # the numeric display + + text[NORMAL] = { 0.80, 0.80, 0.80 } + text[ACTIVE] = { 0.80, 0.80, 0.80 } + text[INSENSITIVE] = { 0.80, 0.80, 0.80 } + text[SELECTED] = { 0.80, 0.80, 0.80 } + text[PRELIGHT] = { 0.80, 0.80, 0.80 } +} + +style "track_list_display" = "small_bold_text" +{ + text[NORMAL] = { 0.80, 0.80, 0.80 } + text[ACTIVE] = { 0.3, 0.3, 0.3 } + text[INSENSITIVE] = { 0, 0, 0 } + text[SELECTED] = { 0.8, 0.8, 0.8 } + + base[NORMAL] = { 0, 0, 0 } + base[ACTIVE] = { 0, 0, 0 } + base[INSENSITIVE] = { 0, 0, 0 } + base[SELECTED] = { 0, 0, 0 } +} + +style "inspector_track_list_display" = "track_list_display" +{ + text[ACTIVE] = { 0.8, 0.8, 0.8 } + + base[NORMAL] = { 0, 0, 0 } + base[ACTIVE] = { 0.2, 0.2, 0.2 } + base[INSENSITIVE] = { 0, 0, 0 } + base[SELECTED] = { 0.3, 0.3, 0.4 } +} + +style "redirect_list_display" +{ + GtkTreeView::horizontal-separator = 0 + GtkTreeView::vertical-separator = 0 + + font_name = "sans 7" + text[NORMAL] = { 0.80, 0.80, 0.80 } + text[ACTIVE] = { 0.70, 0.70, 0.70 } + text[INSENSITIVE] = { 0, 0, 0 } + text[SELECTED] = { 0.9, 0.3, 0.3 } + + base[NORMAL] = { 0, 0, 0 } + base[ACTIVE] = { 0, 0, 0 } + base[INSENSITIVE] = { 0, 0, 0 } + base[SELECTED] = { 0, 0, 0 } + + # these two are explicitly used by the cell renderer for the + # text + + fg[NORMAL] = { 0.5, 0.5, 0.5 } # used for inactive + fg[ACTIVE] = { 1.0, 1.0, 1.0 } # used for active +} + +style "inspector_redirect_list_display" = "redirect_list_display" +{ + base[SELECTED] = { 0.3, 0.3, 0.3 } +} + +# MixerPanZone: +# +# the NORMAL fg color is used for the pan puck +# the ACTIVE fg color is used for the speaker boxes + +style "pan_zone" = "default_base" +{ + fg[NORMAL] = { 0.34, 0.95, 0.92 } + fg[ACTIVE] = { 0.95, 0.48, 0.11 } +} + +style "paler_red_when_active" = "medium_text" +{ + fg[NORMAL] = { 0.80, 0.80, 0.80 } + fg[PRELIGHT] = { 0.80, 0.80, 0.80 } + bg[NORMAL] = { 0.31, 0.31, 0.31 } + bg[PRELIGHT] = { 0.31, 0.31, 0.31 } + + fg[ACTIVE] = { 0.36, 0.46, 0.28 } + bg[ACTIVE] = { 1.00, 0.59, 0.59} +} + +style "peak_display_peaked_entry" = "small_text" +{ + fg[NORMAL] = { 1.0, 1.0, 1.0 } + fg[ACTIVE] = { 1.0, 1.0, 1.0 } + fg[SELECTED] = { 1.0, 1.0, 1.0 } + + bg[NORMAL] = {0.9, 0.0, 0.0 } + bg[ACTIVE] = { 0.9, 0.0, 0.0 } + bg[PRELIGHT] = { 0.9, 0.0, 0.0 } + bg[INSENSITIVE] = { 0.9, 0.0, 0.0 } + bg[SELECTED] = { 0.9, 0.0, 0.0 } + base[NORMAL] = { 0.9, 0.0, 0.0 } + base[ACTIVE] = { 0.9, 0.0, 0.0 } + base[PRELIGHT] = { 0.9, 0.0, 0.0 } + base[INSENSITIVE] = { 0.9, 0.0, 0.0 } + base[SELECTED] = { 0.9, 0.0, 0.0 } +} + +style "selected_strip_frame" +{ + fg[NORMAL] = { 0.74, 0.42, 0.47 } + bg[NORMAL] = { 0.79, 0.28, 0.18 } +} + +style "flashing_alert" = "very_small_text" +{ + fg[NORMAL] = { 0.80, 0.80, 0.80 } + bg[NORMAL] = { 0.26, 0.26, 0.31 } + + fg[ACTIVE] = { 0.80, 0.80, 0.80 } + bg[ACTIVE] = { 1.0, 0, 0} +} + +style "selected_io_selector_port_list" = "medium_bold_text" +{ + + GtkTreeView::even-row-color = { 0, 0, 0 } + GtkTreeView::odd-row-color = { 0, 0, 0 } + +# fg is used to color the fg (text) of the column header button + + fg[NORMAL] = { 0.85, 0.85, 0.85 } + fg[SELECTED] = { 0.85, 0.85, 0.85 } + fg[ACTIVE] = { 0.85, 0.85, 0.85 } + fg[PRELIGHT] = { 0.85, 0.85, 0.85 } + fg[INSENSITIVE] = { 0.85, 0.85, 0.85 } + +# bg is used used to color the background of the column header button + + bg[NORMAL] = { 0.30, 0.30, 0.35 } + bg[ACTIVE] = { 0.30, 0.30, 0.35 } + bg[PRELIGHT] = { 0.30, 0.30, 0.35 } + bg[INSENSITIVE] = { 0.30, 0.30, 0.35 } + bg[SELECTED] = { 0.30, 0.30, 0.35 } + +# text is used to color the treeview row text + + text[NORMAL] = { 0.85, 0.85, 0.85 } + text[SELECTED] = { 0.85, 0.85, 0.85 } + +# base is used to color a treeview with no rows + + base[NORMAL] = { 0.20, 0.20, 0.25 } + base[ACTIVE] = { 0.20, 0.20, 0.25 } + base[PRELIGHT] = { 0.20, 0.20, 0.25 } + base[INSENSITIVE] = { 0.20, 0.20, 0.25 } + base[SELECTED] = { 0.20, 0.20, 0.25 } + +} + +style "io_selector_port_list" = "medium_text" +{ + GtkTreeView::even-row-color = { 0.20, 0.20, 0.25 } + GtkTreeView::odd-row-color = { 0.20, 0.20, 0.25 } +# fg is used to color the fg (text) of the column header button + + fg[NORMAL] = { 0.70, 0.70, 0.70 } + fg[SELECTED] = { 0.70, 0.70, 0.70 } + fg[ACTIVE] = { 0.70, 0.70, 0.70 } + fg[PRELIGHT] = { 0.70, 0.70, 0.70 } + fg[INSENSITIVE] = { 0.70, 0.70, 0.70 } + +# bg is used used to color the background of the column header button + + bg[NORMAL] = { 0.30, 0.30, 0.35 } + bg[ACTIVE] = { 0.30, 0.30, 0.35 } + bg[PRELIGHT] = { 0.30, 0.30, 0.35 } + bg[INSENSITIVE] = { 0.30, 0.30, 0.35 } + bg[SELECTED] = { 0.30, 0.30, 0.35 } + +# text is used to color the treeview row text + + text[NORMAL] = { 0.80, 0.80, 0.80 } + text[SELECTED] = { 0.80, 0.80, 0.80 } + +# base is used to color a treeview with no rows + + base[NORMAL] = { 0.20, 0.20, 0.25 } + base[ACTIVE] = { 0.20, 0.20, 0.25 } + base[PRELIGHT] = { 0.20, 0.20, 0.25 } + base[INSENSITIVE] = { 0.20, 0.20, 0.25 } + base[SELECTED] = { 0.20, 0.20, 0.25 } +} + +style "io_selector_notebook" = "default_base" +{ + fg[NORMAL] = { 1.0, 1.0, 1.0 } + font_name ="sans bold 8" +} + +style "tearoff_arrow" = "medium_bold_entry" +{ + fg[NORMAL] = { 0.80, 0.80, 0.80 } + fg[PRELIGHT] = { 0.80, 0.80, 0.80 } + bg[NORMAL] = { 0.80, 0.80, 0.80 } + bg[PRELIGHT] = { 0.80, 0.80, 0.80 } +} + +style "meter_metrics_strip" = "default_base" +{ + font_name = "sans 4" + fg[NORMAL] = { 1.0, 0.8, 0.2 } +} + +style "location_row_button" = "default_buttons_menus" +{ + font_name = "sans 10" +} + +style "location_rows_clock" = "default_clock_display" +{ + font_name = "sans 12" +} + +style "pan_slider" +{ + font_name = "sans 8" + + fg[NORMAL] = { 0.22, 0.73, 0.22 } + fg[ACTIVE] = { 0.22, 0.73, 0.22 } + fg[INSENSITIVE] = {0.22, 0.53, 0.22 } + fg[SELECTED] = { 0.67, 0.23, 0.22 } + fg[PRELIGHT] = { 0.67, 0.23, 0.22 } + + bg[NORMAL] = { 0.05, 0.05, 0.05 } + bg[ACTIVE] = { 0, 0, 0 } + bg[INSENSITIVE] = {0.12, 0.19, 0.25 } + bg[SELECTED] = { 0, 0, 0 } + bg[PRELIGHT] = { 0, 0, 0 } + + text[NORMAL] = { 0.70, 0.70, 0.70 } + text[ACTIVE] = { 0.70, 0.70, 0.70 } + text[INSENSITIVE] = { 0.70, 0.70, 0.70 } + text[SELECTED] = { 0.70, 0.70, 0.70 } + text[PRELIGHT] = { 0.70, 0.70, 0.70 } + + # used to draw the triangular indicators + + base[NORMAL] = { 0.80, 0.80, 0.80 } + base[ACTIVE] = { 0.80, 0.80, 0.80 } + base[INSENSITIVE] = {0.6, 0.6, 0.6 } + base[SELECTED] = { 0.80, 0.80, 0.80 } + base[PRELIGHT] = { 0.80, 0.80, 0.80 } + +} + +style "ardour_button" ="default_buttons_menus" +{ + xthickness = 1 + ythickness = 1 +} + +#--------------------------------------------------------------- + +class "GtkWidget" style:highest "default_base" +class "GtkScrollbar" style:highest "ardour_adjusters" +class "GtkLabel" style:highest "default_buttons_menus" +class "GtkButton" style:highest "ardour_button" +class "GtkArrow" style:highest "tearoff_arrow" +class "GtkProgressBar" style:highest "ardour_progressbars" + +widget "*FirstActionMessage" style:highest "first_action_message" +widget "*VerboseCanvasCursor" style:highest "verbose_canvas_cursor" +widget "*MarkerText" style:highest "marker_text" +widget "*TimeAxisViewItemName*" style:highest "time_axis_view_item_name" +#widget "*ExportProgress" style:highest "default_buttons_menus" +widget "*ExportFileLabel" style:highest "small_bold_text" +widget "*ExportFormatLabel" style:highest "medium_bold_text" +widget "*ExportHeader" style:highest "small_bold_text" +widget "*ExportFileDisplay" style:highest "medium_entry" +widget "*ExportFormatDisplay" style:highest "medium_entry" +widget "*ExportCheckbox" style:highest "small_entry" +widget "*ExportTrackSelector*" style:highest "medium_entry_noselection_bg" +widget "*EditModeSelector" style:highest "medium_bold_entry" +widget "*SnapTypeSelector" style:highest "medium_bold_entry" +widget "*SnapModeSelector" style:highest "medium_bold_entry" +widget "*ZoomFocusSelector" style:highest "medium_bold_entry" +widget "*ArdourContextMenu*" style:highest "default_buttons_menus" +widget "*EditGroupTitleButton*" style:highest "default_buttons_menus" +widget "*MixerGroupTitleButton*" style:highest "default_buttons_menus" +widget "*ErrorLogCloseButton" style:highest "default_buttons_menus" +widget "*EditorGTKButton*" style:highest "default_buttons_menus" +widget "*ToolbarButton" style:highest "default_buttons_menus" +widget "*ToolbarButton*" style:highest "default_buttons_menus" +widget "*CrossfadeEditButton" style:highest "default_buttons_menus" +widget "*CrossfadeEditButton*" style:highest "default_buttons_menus" +widget "*TrackHistoryButton*" style:highest "default_buttons_menus" +widget "*TrackSizeButton*" style:highest "default_buttons_menus" +widget "*TrackPlaylistButton*" style:highest "default_buttons_menus" +widget "*TrackAutomationButton*" style:highest "default_buttons_menus" +widget "*TrackGroupButton*" style:highest "default_buttons_menus" +widget "*TrackMixButton*" style:highest "default_buttons_menus" +widget "*TrackVisualButton*" style:highest "default_buttons_menus" +widget "*TrackRemoveButton*" style:highest "default_buttons_menus" +widget "*BaseButton" style:highest "default_buttons_menus" +widget "*TakeButtonLabel" style:highest "default_buttons_menus" +widget "*MixerWidthButton" style:highest "default_buttons_menus" +widget "*MixerHideButton" style:highest "default_buttons_menus" +widget "*MixerSendButton" style:highest "default_buttons_menus" +widget "*MixerSendButtonLabel" style:highest "default_buttons_menus" +widget "*MixerSendSwitch" style:highest "default_buttons_menus" +widget "*MixerInsertButton" style:highest "default_buttons_menus" +widget "*MixerInsertButtonLabel" style:highest "default_buttons_menus" +widget "*MixerInsertSwitch" style:highest "default_buttons_menus" +widget "*MixerMonitorInputButton*" style:highest "very_small_button" +widget "*MixerMonitorInputButton.*" style:highest "very_small_button" +widget "*MixerIOButton" style:highest "very_small_button" +widget "*MixerIOButtonLabel" style:highest "very_small_button" +widget "*AddRouteDialogSpinner" style:highest "ardour_adjusters" +widget "*AddRouteDialogRadioButton*" style:highest "options_window" +widget "*OptionsNotebook" style:highest "options_window" +widget "*OptionEditorToggleButton*" style:highest "options_window" +widget "*OptionsLabel" style:highest "options_window" +widget "*OptionEditorAuditionerLabel" style:highest "options_window" +widget "*OptionsEntry" style:highest "option_entry" +widget "*InspectorNotebook" style:highest "options_window" +widget "*NewSessionDialog" style:highest "options_window" +widget "*NewSessionDialogButton*" style:highest "options_window" +widget "*MixerSendSwitch*" style:highest "very_small_red_active_and_selected_button" +widget "*OptionEditorToggleButton" style:highest "small_red_active_and_selected_button" +widget "*NewSessionDialogButton" style:highest "small_red_active_and_selected_button" +widget "*RecordEnableButton" style:highest "track_rec_enable_button" +widget "*RecordEnableButton-active" style:highest "track_rec_enable_button_active" +widget "*RecordEnableButton-alternate" style:highest "track_rec_enable_button_alternate" +widget "*MixerRecordEnableButton" style:highest "mixer_track_rec_enable_button" +widget "*MixerRecordEnableButton-active" style:highest "mixer_track_rec_enable_button_active" +widget "*MixerRecordEnableButton-alternate" style:highest "mixer_track_rec_enable_button_alternate" +widget "*MuteButton" style:highest "mute_button" +widget "*MuteButton-alternate" style:highest "mute_button_alternate" +widget "*MuteButton-active" style:highest "mute_button_active" +widget "*MixerMuteButton" style:highest "mixer_mute_button" +widget "*MixerMuteButton-alternate" style:highest "mixer_mute_button_alternate" +widget "*MixerMuteButton-active" style:highest "mixer_mute_button_active" +widget "*SoloButton" style:highest "solo_button" +widget "*SoloButton-alternate" style:highest "solo_button_alternate" +widget "*SoloButton-active" style:highest "solo_button_active" +widget "*MixerSoloButton" style:highest "mixer_solo_button" +widget "*MixerSoloButton-alternate" style:highest "mixer_solo_button_alternate" +widget "*MixerSoloButton-active" style:highest "mixer_solo_button_active" +widget "*TrackLoopButton*" style:highest "track_loop_button" +widget "*PanAutomationLineSelector*" style:highest "multiline_combo" +widget "*EditorTimeButton*" style:highest "time_button" +widget "*MixerPhaseInvertButton*" style:highest "very_small_button" +widget "*MixerPhaseInvertButton.*" style:highest "very_small_button" +widget "*MixerAutomationRecordingButton*" style:highest "very_small_button" +widget "*MixerAutomationRecordingButton.*" style:highest "very_small_button" +widget "*MixerAutomationModeButton*" style:highest "very_small_button" +widget "*MixerAutomationModeButton.*" style:highest "very_small_button" +widget "*MixerAutomationPlaybackButton*" style:highest "very_small_button" +widget "*MixerAutomationPlaybackButton.*" style:highest "very_small_button" +widget "*MixerNameButton" style:highest "very_small_button" +widget "*MixerNameButtonLabel" style:highest "very_small_button" +widget "*MixerGroupButton" style:highest "very_small_button" +widget "*MixerGroupButtonLabel" style:highest "very_small_button" +widget "*MixerCommentButton" style:highest "very_small_button" +widget "*MixerCommentButton*" style:highest "very_small_button" +widget "*EditGroupButton" style:highest "very_small_button" +widget "*EditGroupButtonLabel" style:highest "very_small_button" +widget "*TransportButton" style:highest "transport_rec_button" +widget "*TransportButton-active" style:highest "transport_button_active" +widget "*ShuttleButton" style:highest "transport_button" +widget "*ShuttleButton*" style:highest "transport_button" +widget "*ShuttleDisplay" style:highest "transport_button" +widget "*ShuttleDisplay*" style:highest "transport_button" +widget "*ShuttleControl" style:highest "shuttle_control" +widget "*TransportRecButton" style:highest "transport_rec_button" +widget "*TransportRecButton*" style:highest "transport_rec_button" +widget "*TransportRecButton-active" style:highest "transport_rec_button_active" +widget "*TransportRecButton-active*" style:highest "transport_rec_button_active" +widget "*TransportRecButton-alternate" style:highest "transport_rec_button_alternate" +widget "*TransportRecButton-alternate*" style:highest "transport_rec_button_alternate" +widget "*TransportRecButton*" style:highest "transport_rec_button" +widget "*RecordingXrunWarningWindow" style:highest "xrun_warn" +widget "*RecordingXrunWarningWindow*" style:highest "xrun_warn" +/*widget "*MainMenuBar" style:highest "menu_bar_base"*/ +widget "*ErrorMessage" style:highest "error_message" +widget "*FatalMessage" style:highest "fatal_message" +widget "*InfoMessage" style:highest "info_message" +widget "*WarningMessage" style:highest "warning_message" +widget "*BigClockNonRecording" style:highest "non_recording_big_clock_display" +widget "*BigClockRecording" style:highest "recording_big_clock_display" +widget "*TransportClockDisplay" style:highest "transport_clock_display" +widget "*SecondaryClockDisplay" style:highest "transport_clock_display" +widget "*TransportClockDisplayDelta" style:highest "transport_clock_display_delta" +widget "*SecondaryClockDisplayDelta" style:highest "transport_clock_display_delta" +widget "*AudioClockFramesUpperInfo" style:highest "tempo_meter_clock_display" +widget "*AudioClockFramesLowerInfo" style:highest "tempo_meter_clock_display" +widget "*AudioClockSMPTEUpperInfo" style:highest "tempo_meter_clock_display" +widget "*AudioClockSMPTELowerInfo" style:highest "tempo_meter_clock_display" +widget "*AudioClockBBTUpperInfo" style:highest "tempo_meter_clock_display" +widget "*AudioClockBBTLowerInfo" style:highest "tempo_meter_clock_display" +widget "*SelectionStartClock" style:highest "default_clock_display" +widget "*SelectionEndClock" style:highest "default_clock_display" +widget "*EditCursorClock" style:highest "default_clock_display" +widget "*PreRollClock" style:highest "default_clock_display" +widget "*PostRollClock" style:highest "default_clock_display" +widget "*NudgeClock" style:highest "default_clock_display" +widget "*ZoomRangeClock" style:highest "default_clock_display" +widget "*SMPTEOffsetClock" style:highest "default_clock_display" +widget "*TransportLabel" style:highest "small_bold_text" +widget "*TakeLabel" style:highest "small_bold_text" +widget "*LocationLabel" style:highest "small_bold_text" +widget "*WipeLabel" style:highest "small_bold_text" +widget "*TakeTagLabel" style:highest "small_bold_text" +widget "*ToolBarLabel" style:highest "small_bold_text" +widget "*EditorDisplayLabel" style:highest "small_bold_text" +widget "*NewSessionLabel" style:highest "large_text" +widget "*GlobalButtonLabel" style:highest "default_buttons_menus" +widget "*ClickButton" style:highest "medium_entry" +widget "*RegionNameDisplay" style:highest "medium_entry" +widget "*PluginDisplay" style:highest "medium_entry" +widget "*SelectionDisplay" style:highest "medium_entry" +widget "*HistorySelector" style:highest "medium_entry" +widget "*LocationSelector" style:highest "medium_entry" +widget "*TakeSelector" style:highest "medium_entry" +widget "*RegionSelector" style:highest "medium_entry" +widget "*SMPTERuler" style:highest "editor_time_ruler" +widget "*BBTRuler" style:highest "editor_time_ruler" +widget "*FramesRuler" style:highest "editor_time_ruler" +widget "*MinSecRuler" style:highest "editor_time_ruler" +widget "*BaseFrame" style:highest "base_frame" +widget "*AudioTrackStripBase" style:highest "audio_track_base" +widget "*MidiTrackStripBase" style:highest "midi_track_base" +widget "*TimeAxisViewControlsBaseUnselected" style:highest "audio_track_base" +widget "*AudioTrackControlsBaseUnselected" style:highest "audio_track_base" +widget "*MidiTrackControlsBaseUnselected" style:highest "midi_track_base" +widget "*AudioTrackFader" style:highest "gain_fader" +widget "*AudioBusStripBase" style:highest "audio_bus_base" +widget "*BusControlsBaseUnselected" style:highest "audio_bus_base" +widget "*AudioBusFader" style:highest "gain_fader" +widget "*TrackSeparator" style:highest "track_separator" +widget "*TrackEditIndicator0*" style:highest "edit_group_0" +widget "*TrackEditIndicator1*" style:highest "edit_group_1" +widget "*TrackEditIndicator2*" style:highest "edit_group_2" +widget "*TrackEditIndicator3*" style:highest "edit_group_3" +widget "*TrackEditIndicator4*" style:highest "edit_group_3" +widget "*TrackEditIndicator5*" style:highest "edit_group_3" +widget "*TrackEditIndicator6*" style:highest "edit_group_3" +widget "*TrackEditIndicator7*" style:highest "edit_group_3" +widget "*EditorTrackNameDisplay" style:highest "track_name_display" +widget "*EditorTrackNameDisplay*" style:highest "track_name_display" +widget "*EditorActiveTrackNameDisplay" style:highest "active_track_name_display" +widget "*EditorActiveTrackNameDisplay*" style:highest "active_track_name_display" +widget "*CrossfadeEditAuditionButton" style:highest "red_when_active" +widget "*CrossfadeEditAuditionButton*" style:highest "red_when_active" +widget "*CrossfadeEditCurveButton" style:highest "red_when_active" +widget "*CrossfadeEditCurveButton*" style:highest "red_when_active" +widget "*CrossfadeEditLabel" style:highest "medium_text" +widget "*CrossfadeEditFrame" style:highest "base_frame" +widget "*MouseModeButton" style:highest "default_buttons_menus" +widget "*MouseModeButton*" style:highest "default_buttons_menus" +widget "*EditorMainCanvas" style:highest "main_canvas_area" +widget "*AudioTrackControlsBaseInactiveUnselected" style:highest "track_controls_inactive" +widget "*BusControlsBaseInactiveUnselected" style:highest "track_controls_inactive" +widget "*AutomationTrackControlsBaseInactiveUnselected" style:highest "track_controls_inactive" +widget "*AutomationTrackName" style:highest "automation_track_name" +widget "*AudioTrackControlsBaseInactiveSelected" style:highest "track_controls_inactive" +widget "*BusControlsBaseInactiveSelected" style:highest "track_controls_inactive" +widget "*AutomationTrackControlsBaseInactiveSelected" style:highest "track_controls_inactive" +widget "*AudioTrackStripBaseInactive" style:highest "track_controls_inactive" +widget "*MidiTrackStripBaseInactive" style:highest "track_controls_inactive" +widget "*AudioBusStripBaseInactive" style:highest "track_controls_inactive" +widget "*AudioTrackControlsBaseSelected" style:highest "edit_controls_base_selected" +widget "*MidiTrackControlsBaseSelected" style:highest "edit_controls_base_selected" +widget "*BusControlsBaseSelected" style:highest "edit_controls_base_selected" +widget "*AutomationTrackControlsBase" style:highest "automation_track_controls_base" +widget "*AutomationTrackControlsBaseSelected" style:highest "edit_controls_base_selected" +/*widget "*EditorMenuBar*" style:highest "black_mackie_menu_bar" +widget "*MainMenuBar*" style:highest "black_mackie_menu_bar" +*/ +widget "*ZoomClickBox" style:highest "medium_bold_entry" +widget "*PluginParameterLabel" style:highest "medium_text" +widget "*PluginNameInfo" style:highest "plugin_name_text" +widget "*PluginMakerInfo" style:highest "plugin_maker_text" +widget "*PluginParameterInfo" style:highest "medium_text" +widget "*MotionControllerValue" style:highest "medium_entry" +widget "*ParameterValueDisplay" style:highest "medium_bold_entry" +widget "*PluginUIClickBox" style:highest "medium_bold_entry" +widget "*PluginUIClickBox*" style:highest "medium_bold_entry" +widget "*PluginSlider" style:highest "plugin_slider" +widget "*RedirectSelector" style:highest "redirect_list_display" +widget "*RedirectSelector.*" style:highest "redirect_list_display" +widget "*EditGroupDisplay" style:highest "treeview_display" +widget "*TrackListDisplay" style:highest "treeview_display" +widget "*RegionListDisplay" style:highest "treeview_display" +widget "*NamedSelectionDisplay" style:highest "treeview_display" +widget "*SnapshotDisplay" style:highest "treeview_display" +widget "*MixerTrackCommentArea" style:highest "option_entry" +widget "*MixerPanZone" style:highest "pan_zone" +widget "*MixerTrackDisplayList" style:highest "treeview_display" +widget "*MixerSnapshotDisplayList" style:highest "treeview_display" +widget "*MixerAuxDisplayList" style:highest "treeview_display" +widget "*MixerGroupList" style:highest "treeview_display" +widget "*RegionEditorLabel" style:highest "medium_text" +widget "*RegionEditorSmallLabel" style:highest "small_text" +widget "*RegionEditorEntry" style:highest "medium_entry" +widget "*RegionEditorClock" style:highest "default_clock_display" +widget "*RegionEditorToggleButton" style:highest "paler_red_when_active" +widget "*RegionEditorToggleButton*" style:highest "paler_red_when_active" +widget "*MixerStripSpeedBase" style:highest "small_entry" +widget "*MixerStripSpeedBase*" style:highest "small_entry" +widget "*MixerStripSpeedBaseNotOne" style:highest "small_red_on_black_entry" +widget "*MixerStripSpeedBaseNotOne*" style:highest "small_red_on_black_entry" +widget "*MixerStripGainDisplay" style:highest "small_entry" +widget "*MixerStripGainDisplay*" style:highest "small_entry" +widget "*MixerStripGainUnitButton" style:highest "very_small_button" +widget "*MixerStripGainUnitButton*" style:highest "very_small_button" +widget "*MixerStripMeterPreButton" style:highest "very_small_button" +widget "*MixerStripMeterPreButton*" style:highest "very_small_button" +widget "*MixerStripPeakDisplay*" style:highest "red_active_small_entry" +widget "*MixerStripPeakDisplayPeak*" style:highest "peak_display_peaked_entry" +widget "*MixerStripSelectedFrame" style:highest "selected_strip_frame" +widget "*MixerStripFrame" style:highest "base_frame" +widget "*HWMonitorButton" style:highest "red_when_active" +widget "*HWMonitorButton*" style:highest "red_when_active" +widget "*BypassButton" style:highest "red_when_active" +widget "*BypassButton*" style:highest "red_when_active" +widget "*TransportSoloAlert" style:highest "flashing_alert" +widget "*TransportSoloAlert.*" style:highest "flashing_alert" +widget "*TransportAuditioningAlert" style:highest "flashing_alert" +widget "*TransportAuditioningAlert.*" style:highest "flashing_alert" +widget "*FadeCurve" style:highest "medium_bold_entry" +widget "*FadeCurve*" style:highest "medium_bold_entry" +widget "*IOSelectorButton" style:highest "default_buttons_menus" +widget "*IOSelectorButton*" style:highest "default_buttons_menus" +widget "*IOSelectorList" style:highest "medium_entry_noselection_fg" +widget "*IOSelectorPortList" style:highest "io_selector_port_list" +widget "*IOSelectorPortList.*" style:highest "io_selector_port_list" +widget "*IOSelectorPortListSelected" style:highest "selected_io_selector_port_list" +widget "*IOSelectorPortListSelected.*" style:highest "selected_io_selector_port_list" +widget "*IOSelectorNotebook" style:highest "io_selector_notebook" +widget "*IOSelectorNotebookTab" style:highest "io_selector_notebook" +widget "*IOSelectorFrame" style:highest "base_frame" +widget "*ConnectionEditorButton" style:highest "default_buttons_menus" +widget "*ConnectionEditorButton*" style:highest "default_buttons_menus" +widget "*ConnectionEditorList" style:highest "medium_entry_noselection_fg" +widget "*ConnectionEditorConnectionList" style:highest "medium_entry" +widget "*ConnectionEditorPortList" style:highest "io_selector_port_list" +widget "*ConnectionEditorPortListSelected" style:highest "selected_io_selector_port_list" +widget "*ConnectionEditorNotebook" style:highest "io_selector_notebook" +widget "*ConnectionEditorNotebookTab" style:highest "io_selector_notebook" +widget "*ConnectionEditorFrame" style:highest "base_frame" +widget "*RouteParamsListDisplay" style:highest "inspector_track_list_display" +widget "*RouteParamsPreListDisplay" style:highest "inspector_redirect_list_display" +widget "*RouteParamsPostListDisplay" style:highest "inspector_redirect_list_display" +widget "*TearOffArrow" style:highest "tearoff_arrow" +widget "*RouteParamsTitleButton" style:highest "medium_text" +widget "*RouteParamsTitleLabel" style:highest "medium_text" +widget "*PluginAutomateRecordButton" style:highest "small_red_active_and_selected_button" +widget "*PluginAutomateRecordButton*" style:highest "small_red_active_and_selected_button" +widget "*PluginAutomatePlayButton" style:highest "small_red_active_and_selected_button" +widget "*PluginAutomatePlayButton*" style:highest "small_red_active_and_selected_button" +widget "*PluginAutomateButton" style:highest "small_button" +widget "*PluginAutomateButton*" style:highest "small_button" +widget "*PluginSaveButton" style:highest "small_button" +widget "*PluginSaveButton*" style:highest "small_button" +widget "*PluginLoadButton" style:highest "small_button" +widget "*PluginLoadButton*" style:highest "small_button" +widget "*FaderMetricsStrip" style:highest "meter_metrics_strip" +widget "*MeterMetricsStrip" style:highest "meter_metrics_strip" +widget "*MetricDialogFrame" style:highest "base_frame" +widget "*MetricEntry" style:highest "medium_bold_entry" +widget "*MetricButton" style:highest "default_buttons_menus" +widget "*MetricButton.*" style:highest "default_buttons_menus" +widget "*MetricLabel" style:highest "medium_text" +widget "*TimeStretchButton" style:highest "default_buttons_menus" +widget "*TimeStretchButton.*" style:highest "default_buttons_menus" +widget "*TimeStretchProgress" style:highest "default_buttons_menus" +widget "*ChoiceWindow" style:highest "default_buttons_menus" +widget "*ChoicePrompt" style:highest "default_buttons_menus" +widget "*ChoiceButton" style:highest "default_buttons_menus" +widget "*ChoiceButton*" style:highest "default_buttons_menus" +widget "*SelectionModeButton" style:highest "default_buttons_menus" +widget "*SelectionModeButton*" style:highest "default_buttons_menus" +widget "*TrackLabel" style:highest "medium_text" +widget "*TrackPlugName" style:highest "medium_text" +widget "*TrackParameterName" style:highest "small_text" +widget "*AddRouteDialog*" style:highest "medium_text" +widget "*AddRouteDialog.GtkLabel" style:highest "medium_text" +widget "*AddRouteDialogChannelChoice" style:highest "medium_bold_entry" +widget "*AddRouteDialogSpinner" style:highest "medium_bold_entry" +widget "*AddRouteDialogSpinner*" style:highest "medium_bold_entry" +widget "*AddRouteDialogRadioButton" style:highest "red_when_active" +widget "*AddRouteDialogButton" style:highest "default_buttons_menus" +widget "*AddRouteDialogNameTemplateEntry" style:highest "medium_bold_entry" +widget "*NewSessionIOLabel" style:highest "larger_bold_text" +widget "*NewSessionSR1Label" style:highest "red_medium_text" +widget "*NewSessionSR2Label" style:highest "medium_text" +widget "*NewSessionChannelChoice" style:highest "medium_bold_entry" +widget "*NewSessionMainButton" style:highest "larger_bold_text" +widget "*NewSessionMainButton*" style:highest "larger_bold_text" +widget "*NewSessionMainLabel" style:highest "larger_bold_text" +widget "*LocationEditRowClock" style:highest "location_rows_clock" +widget "*LocationEditNameLabel" style:highest "medium_text" +widget "*LocationEditSetButton" style:highest "location_row_button" +widget "*LocationEditSetButton*" style:highest "location_row_button" +widget "*LocationEditGoButton" style:highest "location_row_button" +widget "*LocationEditGoButton*" style:highest "location_row_button" +widget "*LocationEditCdButton" style:highest "small_red_active_and_selected_button" +widget "*LocationEditCdButton*" style:highest "small_red_active_and_selected_button" +widget "*LocationEditHideButton" style:highest "small_red_active_and_selected_button" +widget "*LocationEditHideButton*" style:highest "small_red_active_and_selected_button" +widget "*LocationEditNumberLabel" style:highest "small_text" +widget "*LocationLocEditorFrame" style:highest "base_frame" +widget "*LocationRangeEditorFrame" style:highest "base_frame" +widget "*LocationEditNameEntry" style:highest "option_entry" +widget "*LocationAddLocationButton" style:highest "default_buttons_menus" +widget "*LocationAddLocationButton*" style:highest "default_buttons_menus" +widget "*LocationAddRangeButton" style:highest "default_buttons_menus" +widget "*LocationAddRangeButton*" style:highest "default_buttons_menus" +widget "*LocationEditRemoveButton" style:highest "location_row_button" +widget "*LocationEditRemoveButton*" style:highest "location_row_button" +widget "*PanSlider" style:highest "pan_slider" +widget "*PanningLinkButton" style:highest "mixer_red_active_button" +widget "*PanningLinkButton.*" style:highest "mixer_red_active_button" +widget "*PanningLinkDirectionButton" style:highest "very_small_button" +widget "*PanningLinkDirectionButton.*" style:highest "very_small_button" +widget "*ChannelCountSelector" style:highest "medium_bold_entry" +widget "*ChannelCountSelector.GtkArrow" style:highest "default_buttons_menus" +widget "*RegionListWholeFile" style:highest "treeview_parent_node" +widget "*EditorHScrollbar" style:highest "editor_hscrollbar" + diff --git a/gtk2_ardour/ardour2_ui_default.conf b/gtk2_ardour/ardour2_ui_default.conf new file mode 100644 index 0000000000..d6ee9d0304 --- /dev/null +++ b/gtk2_ardour/ardour2_ui_default.conf @@ -0,0 +1,88 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Ardour> + <Canvas> + <Option name="waveform" value="000000cc"/> + <Option name="clipped waveform" value="ff0000e5"/> + <Option name="region base" value="bfbfc1aa"/> + <Option name="selected region base" value="b591a8ff"/> + <Option name="audio track base" value="c6d3d868"/> + <Option name="audio bus base" value="dbd1ea68"/> + <Option name="midi track base" value="ff8f8f3d"/> + <Option name="midi bus base" value="ff0000ee"/> + <Option name="time-stretch-fill" value="e2b5b596"/> + <Option name="time-stretch-outline" value="63636396"/> + <Option name="automation line" value="44bc59ff"/> + <Option name="processor automation line" value="7aa3f9ff"/> + <Option name="control point fill" value="000000ff"/> + <Option name="control point outline" value="000000ff"/> + <Option name="entered control point outline" value="ff0000ee"/> + <Option name="entered control point selected" value="ff3535ff"/> + <Option name="entered control point" value="000000cc"/> + <Option name="control point selected" value="00ff00ff"/> + <Option name="control point" value="ff0000ff"/> + <Option name="automation track fill" value="a0a0ce68"/> + <Option name="automation track outline" value="282828ff"/> + <Option name="crossfade editor base" value="282d49ff"/> + <Option name="crossfade editor line" value="000000ff"/> + <Option name="selected crossfade editor line" value="00dbdbff"/> + <Option name="crossfade editor line shading" value="00a0d154"/> + <Option name="crossfade editor point fill" value="00ff00ff"/> + <Option name="crossfade editor point outline" value="0000ffff"/> + <Option name="crossfade editor wave" value="ffffff28"/> + <Option name="selected crossfade editor wave" value="f9ea14a0"/> + <Option name="crossfade line" value="000000ff"/> + <Option name="active crossfade" value="e8ed3d77"/> + <Option name="inactive crossfade" value="e8ed3d77"/> + <Option name="location marker" value="c4f411ff"/> + <Option name="location range" value="497a59ff"/> + <Option name="location cd marker" value="1ee8c4ff"/> + <Option name="location loop" value="35964fff"/> + <Option name="location punch" value="7c3a3aff"/> + <Option name="verbose canvas cursor" value="f4f214bc"/> + <Option name="marker label" value="000000ff"/> + <Option name="marker bar separator" value="30303088"/> + <Option name="tempo bar" value="72727fff"/> + <Option name="meterbar" value="666672ff"/> + <Option name="markerbar" value="7f7f8cff"/> + <Option name="rangemarker bar" value="8c8c96ff"/> + <Option name="TransportMarkerBar" value="9898a3ff"/> + <Option name="RangeDragBarRect" value="969696c6"/> + <Option name="RangeDragRect" value="82c696c6"/> + <Option name="TransportDragRect" value="969696c6"/> + <Option name="MarkerDragLine" value="004f00f9"/> + <Option name="TransportLoopRect" value="1e7728f9"/> + <Option name="TransportPunchRect" value="6d2828e5"/> + <Option name="PunchLine" value="a80000ff"/> + <Option name="ZoomRect" value="c6d1b26d"/> + <Option name="RubberBandRect" value="c6c6c659"/> + <Option name="EnteredGainLine" value="dd6363ff"/> + <Option name="EnteredAutomationLine" value="dd6363ff"/> + <Option name="EnteredMarker" value="dd6363ff"/> + <Option name="MeterMarker" value="f2425bff"/> + <Option name="TempoMarker" value="f2425bff"/> + <Option name="MeasureLineBeat" value="72727266"/> + <Option name="MeasureLineBar" value="8c8c988c"/> + <Option name="GhostTrackBase" value="44007c7f"/> + <Option name="GhostTrackWave" value="02fd004c"/> + <Option name="GhostTrackWaveClip" value="ff000000"/> + <Option name="GhostTrackZeroLine" value="e500e566"/> + <Option name="ImageTrack" value="ddddd8ff"/> + <Option name="MarkerTrack" value="ddddd8ff"/> + <Option name="ZeroLine" value="b5b5b5ff"/> + <Option name="GainLine" value="ff00ff00"/> + <Option name="GainLineInactive" value="f0f0ffff"/> + <Option name="RecordingRect" value="e5c6c6ff"/> + <Option name="SelectionRect" value="e8f4d377"/> + <Option name="Selection" value="636363b2"/> + <Option name="VestigialFrame" value="44007c0f"/> + <Option name="TimeAxisFrame" value="44007c0f"/> + <Option name="NameHighlightFill" value="0000ffff"/> + <Option name="NameHighlightOutline" value="7c00ff96"/> + <Option name="FrameHandle" value="7c00ff96"/> + <Option name="TrimHandleLocked" value="ea0f0f28"/> + <Option name="TrimHandle" value="1900ff44"/> + <Option name="EditCursor" value="0000ffff"/> + <Option name="PlayHead" value="ff0000ff"/> + </Canvas> +</Ardour> + diff --git a/gtk2_ardour/ardour2_ui_light.rc b/gtk2_ardour/ardour2_ui_light.rc new file mode 100644 index 0000000000..b713af4a8f --- /dev/null +++ b/gtk2_ardour/ardour2_ui_light.rc @@ -0,0 +1,1525 @@ +# +# This is the GTK style file for Ardour +# +# + +style "very_small_text" +{ + font_name = "sans 7" +} + +style "small_text" +{ + font_name = "sans 8" +} + +style "small_bold_text" +{ + font_name = "sans bold 8" +} + +style "medium_bold_text" +{ + font_name = "sans bold 8" +} + +style "medium_text" +{ + font_name = "sans 8" +} + +style "red_medium_text" = "medium_text" +{ + fg[NORMAL] = { 1.0, 0, 0 } + fg[ACTIVE] = { 1.0, 0, 0 } + fg[SELECTED] = { 1.0, 0, 0 } +} + + +style "large_text" +{ + font_name = "sans 18" +} + +style "larger_bold_text" +{ + font_name = "sans bold 14" +} + +style "plugin_name_text" +{ + font_name = "sans bold 25" + fg[NORMAL] = { 0.80, 0.80, 0.80 } +} + +style "plugin_maker_text" +{ + font_name = "sans bold 14" + fg[NORMAL] = { 0.80, 0.80, 0.80 } +} + +style "automation_track_name" +{ + font_name = "sans italic 8" +} + +style "first_action_message" +{ + font_name = "sans medium 34" +} + +style "verbose_canvas_cursor" +{ + font_name = "sans bold 24" +} + +style "marker_text" +{ + font_name = "sans 8" +} + +style "time_axis_view_item_name" +{ + font_name = "sans 9" +} + +style "default_base" = "medium_text" +{ + + GtkButton::default_border = { 0, 0, 0, 0 } + GtkButton::default_outside_border = { 0, 0, 0, 0 } + GtkButton::button_relief = GTK_RELIEF_NONE + GtkTreeView::vertical-padding = 0 + GtkTreeView::horizontal-padding = 0 + GtkTreeView::even-row-color = { 0.70, 0.70, 0.70 } + GtkTreeView::odd-row-color = { 0.70, 0.70, 0.70 } + + fg[NORMAL] = { 0.30, 0.30, 0.40 } + fg[ACTIVE] = { 0.30, 0.30, 0.40 } + fg[PRELIGHT] = { 1.0, 1.0, 1.0 } + fg[INSENSITIVE] = { 0.30, 0.30, 0.40 } + fg[SELECTED] = { 0.30, 0.30, 0.40 } + + bg[NORMAL] = { 0.80, 0.80, 0.80 } + bg[ACTIVE] = { 0.80, 0.80, 0.80 } + bg[PRELIGHT] = { 0.80, 0.80, 0.80 } + bg[INSENSITIVE] = { 0.80, 0.80, 0.80 } + bg[SELECTED] = { 0.80, 0.80, 0.80 } + + text[NORMAL] = { 0.30, 0.30, 0.40 } + text[ACTIVE] = { 0.30, 0.30, 0.40 } + text[PRELIGHT] = { 0.30, 0.30, 0.40 } + text[INSENSITIVE] = { 0.30, 0.30, 0.40 } + text[SELECTED] = { 0, 0, 0 } + + base[ACTIVE] = { 0.80, 0.80, 0.80 } + base[NORMAL] = { 0.80, 0.80, 0.80 } + base[PRELIGHT] = { 0.90, 0.90, 0.90 } + base[INSENSITIVE] = "#4c5159" + base[SELECTED] = { 0.60, 0.60, 0.80 } + + 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 + } +} + +style "base_frame" +{ + bg[NORMAL] = { 0.80, 0.80, 0.80 } + fg[NORMAL] = { 0.35, 0.35, 0.40 } +} + +style "transport_base" = "medium_bold_text" +{ + bg[NORMAL] = { 0.10, 0.10, 0.10 } + bg[ACTIVE] = { 0, 0, 0 } + bg[PRELIGHT] = { 0, 0, 0 } + bg[INSENSITIVE] = { 0, 0, 0 } + bg[SELECTED] = { 0, 0, 0 } +} +/* +style "black_mackie_menu_bar" +{ + font_name = "sans bold 8" + fg[NORMAL] = { 1.0, 1.0, 1.0 } + bg[NORMAL] = { 0, 0, 0 } +} +*/ +style "default_buttons_menus" +{ + font_name = "sans 8" + fg[ACTIVE] = { 1.0, 1.0, 1.0 } + + bg[NORMAL] = { 0.80, 0.80, 0.80 } + bg[ACTIVE] = "#565690" + bg[PRELIGHT] = { 0.70, 0.70, 0.90 } + bg[INSENSITIVE] = { 0.70, 0.70, 0.90 } + bg[SELECTED] = { 0.70, 0.70, 0.90 } +} + +style "very_small_button" = "default_buttons_menus" +{ + font_name = "sans 7" + ythickness = 0 + xthickness = 0 +} + +style "small_button" = "default_buttons_menus" +{ +} + +style "very_small_red_active_and_selected_button" = "very_small_button" +{ + bg[ACTIVE] = { 1.0, 0, 0} + bg[SELECTED] = { 1.0, 0, 0} +} + +style "small_red_active_and_selected_button" = "small_button" +{ + fg[ACTIVE] = { 0, 0, 0 } + bg[ACTIVE] = { 1.0, 0, 0} + bg[SELECTED] = { 1.0, 0, 0} +} + +style "gain_fader" +{ + bg[NORMAL] = { 0.80, 0.80, 0.80 } + bg[ACTIVE] = { 0.80, 0.80, 0.80 } +} + + +style "track_rec_enable_button" = "small_button" +{ +} + +style "track_rec_enable_button_active" = "small_button" +{ + fg[SELECTED] = { 0.0, 0.0, 0.0 } + fg[ACTIVE] = { 0.0, 0.0, 0.0 } + fg[PRELIGHT] = { 0.0, 0.0, 0.0 } + fg[NORMAL] = { 0.0, 0.0, 0.0 } + + bg[NORMAL] = { 1.0, 0.0, 0.0 } + bg[ACTIVE] = { 1.0, 0.0, 0.0 } + bg[SELECTED] = { 1.0, 0.0, 0.0 } + bg[PRELIGHT] = { 1.0, 0.0, 0.0 } +} + +style "track_rec_enable_button_alternate" = "small_button" +{ + fg[SELECTED] = { 0.0, 0.0, 0.0 } + fg[ACTIVE] = { 0.0, 0.0, 0.0 } + fg[PRELIGHT] = { 0.0, 0.0, 0.0 } + fg[NORMAL] = { 0.0, 0.0, 0.0 } + + bg[NORMAL] = { 0.91, 0.68, 0.68} + bg[ACTIVE] = { 0.91, 0.68, 0.68} + bg[SELECTED] = { 0.91, 0.68, 0.68} + bg[PRELIGHT] = { 0.91, 0.68, 0.68} +} + +style "mixer_track_rec_enable_button" = "track_rec_enable_button" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} + +style "mixer_track_rec_enable_button_alternate" = "track_rec_enable_button_alternate" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} + +style "mixer_track_rec_enable_button_active" = "track_rec_enable_button_active" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} + +style "solo_button" = "small_button" +{ +} + +style "solo_button_alternate" = "small_button" +{ + bg[NORMAL] = { 0.19, 0.97, 0.69 } # solo-safe + bg[ACTIVE] = { 0.19, 0.97, 0.69 } # solo-safe + bg[SELECTED] = { 0.19, 0.97, 0.69 } # solo-safe + bg[PRELIGHT] = { 0.19, 0.97, 0.69 } # solo-safe + + fg[ACTIVE] = { 0, 0, 0 } + fg[SELECTED] = { 0, 0, 0 } + fg[NORMAL] = { 0, 0, 0 } + fg[PRELIGHT] = { 0, 0, 0 } +} + + +style "solo_button_active" = "small_button" +{ + bg[NORMAL] = { 0.66, 0.97, 0.19 } # solo + bg[ACTIVE] = { 0.66, 0.97, 0.19 } # solo + bg[SELECTED] = { 0.66, 0.97, 0.19 } # solo + bg[PRELIGHT] = { 0.66, 0.97, 0.19 } # solo + + fg[ACTIVE] = { 0, 0, 0 } + fg[SELECTED] = { 0, 0, 0 } + fg[NORMAL] = { 0, 0, 0 } + fg[PRELIGHT] = { 0, 0, 0 } +} + +style "mixer_solo_button" = "solo_button" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} + +style "mixer_solo_button_alternate" = "solo_button_alternate" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} +style "mixer_solo_button_active" = "solo_button_active" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} + + +style "mute_button" = "small_button" +{ +} + +style "mute_button_alternate" = "small_button" +{ + bg[ACTIVE] = { 1.0, 0.98, 0.53 } + bg[NORMAL] = { 1.0, 0.98, 0.53 } + bg[SELECTED] = { 1.0, 0.98, 0.53 } + bg[PRELIGHT] = { 1.0, 0.98, 0.53 } + + fg[SELECTED] = { 0, 0, 0 } + fg[ACTIVE] = { 0, 0, 0 } + fg[NORMAL] = { 0, 0, 0 } + fg[PRELIGHT] = { 0, 0, 0 } +} + +style "mute_button_active" = "small_button" +{ + bg[NORMAL] = { 0.90, 0.89, 0.73 } + bg[ACTIVE] = { 0.90, 0.89, 0.73 } + bg[PRELIGHT] = { 0.90, 0.89, 0.73 } + bg[SELECTED] = { 0.90, 0.89, 0.73 } + + fg[SELECTED] = { 0, 0, 0 } + fg[ACTIVE] = { 0, 0, 0 } + fg[NORMAL] = { 0, 0, 0 } + fg[PRELIGHT] = { 0, 0, 0 } +} + +style "mixer_mute_button" = "mute_button" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} + +style "mixer_mute_button_alternate" = "mute_button_alternate" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} + +style "mixer_mute_button_active" = "mute_button_active" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} + +style "multiline_combo" = "small_button" +{ + font_name = "sans 8" + xthickness = 0 + ythickness = 0 +} + +style "mixer_mute_button" = "mute_button" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} + +style "track_loop_button" = "small_button" +{ + bg[ACTIVE] = { 1.0, 0.98, 0.53 } + bg[PRELIGHT] = { 1.0, 0.98, 0.53 } + +} + +style "mixer_red_active_button" = "very_small_button" +{ + fg[ACTIVE] = { 0, 1.0, 1.0 } + bg[ACTIVE] = { 0.7, 0, 0 } + + base[INSENSITIVE] = { 0.80, 0.80, 0.80 } + bg[INSENSITIVE] = { 0.80, 0.80, 0.80 } +} + +style "time_button" = "default_buttons_menus" +{ + font_name = "sans 8" +} + +style "transport_button" +{ +} + +style "transport_button_active" +{ + bg[NORMAL] = { 0.50, 1.0, 0.50 } + bg[ACTIVE] = { 0.50, 1.0, 0.50 } + bg[SELECTED] = { 0.50, 1.0, 0.50 } + bg[PRELIGHT] = { 0.50, 1.0, 0.50 } + + fg[NORMAL] = { 0, 0, 0 } + fg[PRELIGHT] = { 0, 0, 0 } + fg[SELECTED] = { 0, 0, 0 } + fg[ACTIVE] = { 0, 0, 0 } +} + +style "transport_rec_button" +{ +} + +style "transport_rec_button_active" +{ + bg[ACTIVE] = { 1.0, 0, 0 } + bg[NORMAL] = { 1.0, 0, 0 } + bg[SELECTED] = { 1.0, 0, 0 } + bg[PRELIGHT] = { 1.0, 0, 0 } +} + +style "transport_rec_button_alternate" +{ + bg[PRELIGHT] = { 0.91, 0.68, 0.68 } + bg[NORMAL] = { 0.91, 0.68, 0.68 } + bg[SELECTED] = { 0.91, 0.68, 0.68 } + bg[ACTIVE] = { 0.91, 0.68, 0.68 } +} + +style "shuttle_control" = "very_small_text" +{ + fg[NORMAL] = { 0.85, 0.92, 0.98 } + fg[ACTIVE] = { 0.85, 0.92, 0.98 } + fg[PRELIGHT] = { 0.85, 0.92, 0.98 } + fg[SELECTED] = { 0.85, 0.92, 0.98 } + fg[INSENSITIVE] = { 0.85, 0.92, 0.98 } + + bg[NORMAL] = { 0.26, 0.26, 0.31 } + bg[PRELIGHT] = { 0.26, 0.26, 0.31 } + bg[INSENSITIVE] = { 0.26, 0.26, 0.31 } + bg[ACTIVE] = { 0.70, 0.70, 0.70 } + bg[SELECTED] = { 1.0, 0.04, 0.04 } +} + +style "ardour_adjusters" = "default_buttons_menus" +{ + bg[NORMAL] = { 0.60, 0.60, 0.60 } + bg[PRELIGHT] = { 0.80, 0.80, 0.80 } + bg[ACTIVE] = { 0.06, 0.06, 0.06 } +} + +style "editor_hscrollbar" = "ardour_adjusters" +{ + # + # special case: we want this scrollbar to be as tall as the + # zoom focus selector combobox. scrollbars don't expand to + # fill the space available to them, so we have to explicitly + # make it bigger. + # + GtkRange::slider_width = 27 + GtkScrollbar::slider_width = 27 +} + +style "ardour_progressbars" = "default_buttons_menus" +{ + bg[NORMAL] = { 0, 0, 0 } + bg[PRELIGHT] = { 0.00, 0.36, 0.40 } +} + +style "options_window" = "default_base" +{ + font_name = "sans 8" + fg[PRELIGHT] = { 0.80, 0.80, 0.80 } +} + +style "option_entry" = "default_base" +{ + fg[NORMAL] = { 1.0, 1.0, 1.0 } + fg[ACTIVE] = { 1.0, 1.0, 1.0 } + fg[INSENSITIVE] = { 0.80, 0.80, 0.80 } + + base[INSENSITIVE] = { 0.07, 0.07, 0.12 } + + bg[NORMAL] = { 0.35, 0.35, 0.40 } + bg[ACTIVE] = { 0.35, 0.35, 0.40 } +} + +style "red_when_active" = "medium_text" +{ + fg[NORMAL] = { 0, 0, 0 } + bg[NORMAL] = { 0.80, 0.80, 0.80 } + + fg[ACTIVE] = { 0, 0, 0 } + bg[ACTIVE] = { 1.0, 0, 0} +} + +style "xrun_warn" +{ + font_name = "sans bold 18" + + fg[NORMAL] = { 1.0, 1.0, 1.0 } + fg[ACTIVE] = { 1.0, 1.0, 1.0 } + text[NORMAL] = { 1.0, 1.0, 1.0 } + text[ACTIVE] = { 1.0, 1.0, 1.0 } + base[NORMAL] = { 0.09, 0.48, 0.46 } + base[ACTIVE] = { 0.09, 0.48, 0.46 } + bg[NORMAL] = { 1.0, 0.48, 0.46 } + bg[ACTIVE] = { 0.09, 1.0, 0.46 } +} +/* +style "menu_bar_base" = "default_base" +{ + bg[NORMAL] = { 0.2, 0.2, 0.3 } + bg[ACTIVE] = { 0, 0, 0 } + bg[PRELIGHT] = { 0, 0, 0 } + bg[INSENSITIVE] = { 0, 0, 0 } + bg[SELECTED] = { 0, 0, 0 } +} +*/ +style "fatal_message" = "medium_text" +{ + fg[ACTIVE] = { 1.0, 0, 1.0 } + fg[NORMAL] = { 0.80, 0.80, 0.80 } + bg[ACTIVE] = { 0,0,0 } + bg[NORMAL] = { 0,0,0 } + base[ACTIVE] = { 0,0,0 } + base[NORMAL] = { 0,0,0 } +} + +style "error_message" = "medium_text" +{ + fg[ACTIVE] = { 1.0, 0, 0 } + fg[NORMAL] = { 0.80, 0.80, 0.80 } + bg[ACTIVE] = { 0,0,0 } + bg[NORMAL] = { 0,0,0 } + base[ACTIVE] = { 0,0,0 } + base[NORMAL] = { 0,0,0 } +} + +style "info_message" = "medium_text" +{ + fg[ACTIVE] = { 1.0, 0, 0 } + fg[NORMAL] = { 0.80, 0.80, 0.80 } + bg[ACTIVE] = { 0,0,0 } + bg[NORMAL] = { 0,0,0 } + base[ACTIVE] = { 0,0,0 } + base[NORMAL] = { 0,0,0 } +} + +style "warning_message" = "medium_text" +{ + fg[ACTIVE] = { 0.30,0.30, 1.0 } + fg[NORMAL] = { 0.80, 0.80, 0.80 } + bg[ACTIVE] = { 0, 0, 0 } + bg[NORMAL] = { 0, 0, 0 } + base[ACTIVE] = { 0, 0, 0 } + base[NORMAL] = { 0, 0, 0 } +} + +style "medium_entry" = "medium_text" +{ + fg[NORMAL] = { 0, 0, 0 } + fg[ACTIVE] = { 0, 0, 0 } + fg[SELECTED] = { 1.0, 1.0, 1.0 } + + bg[NORMAL] = { 0.70, 0.70, 0.70 } + + base[NORMAL] = { 0.70, 0.70, 0.70 } + base[ACTIVE] = { 0.70, 0.70, 0.70 } + base[SELECTED] = { 0.70, 0.70, 0.70 } +} + +style "medium_entry_noselection_fg" = "medium_entry" +{ + fg[SELECTED] = { 0.50, 1.0, 0.50 } +} + +style "medium_entry_noselection_bg" = "medium_entry" +{ + bg[SELECTED] = { 1.0, 1.0, 1.0 } +} + +style "medium_bold_entry" = "medium_bold_text" +{ + fg[NORMAL] = { 0, 0, 0 } + fg[ACTIVE] = { 0, 0, 0 } + fg[SELECTED] = { 1.0, 1.0, 1.0 } + + bg[NORMAL] = { 0.70, 0.70, 0.70 } + + base[NORMAL] = { 0.70, 0.70, 0.70 } + base[ACTIVE] = { 0.70, 0.70, 0.70 } + base[SELECTED] = { 0.70, 0.70, 0.70 } +} + +style "small_entry" = "small_text" +{ + fg[NORMAL] = { 0, 0, 0 } + fg[ACTIVE] = { 0, 1.0, 0 } + fg[SELECTED] = { 0, 1.0, 0 } + text[NORMAL] = { 0, 0, 0 } + text[ACTIVE] = { 0, 1.0, 0 } + text[SELECTED] = { 0, 1.0, 0 } + bg[NORMAL] = { 0.70, 0.70, 0.70 } + bg[SELECTED] = { 0.70, 0.70, 0.70 } + bg[SELECTED] = { 0.70, 0.70, 0.70 } + base[NORMAL] = { 0.70, 0.70, 0.70 } + base[ACTIVE] = { 0.70, 0.70, 0.70 } + base[SELECTED] = { 0.70, 0.70, 0.70 } +} + +style "red_active_small_entry" = "small_entry" +{ + fg[ACTIVE] = { 1.0, 0.0, 0.0 } + fg[SELECTED] = { 1.0, 0, 0 } +} + +style "small_bold_entry" = "small_bold_text" +{ + fg[NORMAL] = { 0, 0, 0 } + fg[ACTIVE] = { 0, 0, 0 } + fg[SELECTED] = { 1.0, 1.0, 1.0 } + + bg[NORMAL] = { 0.70, 0.70, 0.70 } + + base[NORMAL] = { 0.70, 0.70, 0.70 } + base[ACTIVE] = { 0.70, 0.70, 0.70 } + base[SELECTED] = { 0.70, 0.70, 0.70 } +} + +style "small_red_on_black_entry" = "small_bold_text" +{ + fg[NORMAL] = { 1.0, 0, 0 } + fg[ACTIVE] = { 1.0, 0, 0 } + base[NORMAL] = { 0.0, 0.0, 0.0 } + base[ACTIVE] = { 0.0, 0.0, 0.0 } + bg[NORMAL] = { 0.0, 0.0, 0.0 } + bg[ACTIVE] = { 0.0, 0.0, 0.0 } +} + +style "non_recording_big_clock_display" = "medium_entry" +{ + font_name = "sans 60" + + fg[NORMAL] = { 0.50, 1.0, 0.50 } + fg[ACTIVE] = { 1.0, 0, 0.0 } + fg[SELECTED] = { 1.0, 0, 0 } + fg[PRELIGHT] = { 1.0, 0, 0.0 } + fg[INSENSITIVE] = { 1.0, 0, 0.0 } + + base[NORMAL] = { 0.0, 0.0, 0.0 } + base[ACTIVE] = { 0.0, 0.0, 0.0 } + bg[NORMAL] = { 0.0, 0.0, 0.0 } + bg[ACTIVE] = { 0.7, 0.0, 0.0 } +} + +style "recording_big_clock_display" = "non_recording_big_clock_display" +{ + fg[NORMAL] = { 1.0, 0, 0 } +} + +style "transport_clock_display" +{ + font_name = "sans bold 14" + + fg[NORMAL] = { 0.50, 1.0, 0.50 } + fg[ACTIVE] = { 1.0, 0, 0.0 } + fg[SELECTED] = { 1.0, 0, 0 } + fg[PRELIGHT] = { 1.0, 0, 0.0 } + fg[INSENSITIVE] = { 1.0, 0, 0.0 } + + base[NORMAL] = { 0.0, 0.0, 0.0 } + base[ACTIVE] = { 0.0, 0.0, 0.0 } + bg[NORMAL] = { 0.0, 0.0, 0.0 } + bg[ACTIVE] = { 0.0, 0.0, 0.0 } +} + +style "transport_clock_display_delta" = "transport_clock_display" +{ + fg[NORMAL] = { 0.30, 0.30, 1.0 } +} + +style "tempo_meter_clock_display" +{ + font_name = "sans 7" + fg[NORMAL] = { 1.0, 1.0, 1.0 } + fg[ACTIVE] = { 1.0, 1.0, 0.0 } + fg[SELECTED] = { 1.0, 0, 0 } + base[NORMAL] = { 0.0, 0.48, 1.0 } + base[ACTIVE] = { 0.09, 0.98, 0.46 } + bg[NORMAL] = { 0.0, 0.48, 1.0 } + bg[ACTIVE] = { 0.09, 0.98, 0.46 } +} + +style "default_clock_display" = "medium text" +{ + fg[NORMAL] = { 0.50, 1.0, 0.50 } + fg[ACTIVE] = { 1.0, 0.0, 0.0 } + fg[SELECTED] = { 1.0, 0, 0 } + base[NORMAL] = { 0, 0, 0 } + base[ACTIVE] = { 0, 0, 0 } + bg[NORMAL] = { 0, 0, 0 } + bg[ACTIVE] = { 0, 0, 0 } +} + +style "editor_time_ruler" = "small_text" +{ + fg[NORMAL] = { 0, 0, 0 } + bg[NORMAL] = { 0.74, 0.74, 0.77 } +} + +style "audio_bus_base" +{ + font_name = "sans 6" + fg[NORMAL] = { 0.7, 0.8, 0.2 } + bg[NORMAL] = { 0.65, 0.65, 0.65 } +} + +style "audio_track_base" = "default_base" +{ + font_name = "sans 6" + fg[NORMAL] = { 0.30, 0.30, 0.35 } + bg[NORMAL] = { 0.70, 0.70, 0.70 } + bg[ACTIVE] = { 0.80, 0.80, 0.80 } + bg[PRELIGHT] = { 0.80, 0.80, 0.80 } + bg[INSENSITIVE] = { 0.80, 0.80, 0.80 } + bg[SELECTED] = { 0.80, 0.80, 0.80 } +} + +style "midi_bus_base" +{ + font_name = "sans 6" + fg[NORMAL] = { 0.77, 0.77, 0.72 } + fg[NORMAL] = { 0.7, 0.8, 0.2 } + #bg[NORMAL] = {0, 0.36, 0.40 } + bg[NORMAL] = "#444466" +} + +style "midi_track_base" = "default_base" +{ + font_name = "sans 6" + fg[NORMAL] = { 0.77, 0.77, 0.72 } + bg[NORMAL] = { 0.48, 0.30, 0.32 } + bg[ACTIVE] = { 0.70, 0.70, 0.80 } + bg[PRELIGHT] = { 0.70, 0.70, 0.80 } + bg[INSENSITIVE] = { 0.70, 0.70, 0.80 } + bg[SELECTED] = { 0.70, 0.70, 0.80 } +} + +style "track_name_display" +{ + font_name = "sans medium 8" + fg[NORMAL] = { 0.80, 0.80, 0.80 } + fg[ACTIVE] = { 0.80, 0.80, 0.80 } + + base[NORMAL] = { 0.80, 0.80, 0.80 } + base[ACTIVE] = { 0.80, 0.80, 0.80 } + bg[NORMAL] = { 0.80, 0.80, 0.80 } + bg[ACTIVE] = { 0.80, 0.80, 0.80 } +} + +style "active_track_name_display" +{ + font_name = "sans medium 8" + text[NORMAL] = { 0.26, 0.26, 0.26 } + base[NORMAL] = { 0.89, 0.89, 0.89 } +} + +style "track_separator" +{ + bg[NORMAL] = { 0.35, 0.35, 0.40 } +} + +# +# Track edit groups. These styles define +# the colors that the "edit" button will +# use as a track is moved from +# track edit group to track edit group. +# There are 8 edit groups. Edit group 0 +# is used for tracks that are not editable, +# so we leave its style to the default. +# + +style "edit_group_0" + +{ + bg[ACTIVE] = { 1.0, 0.65, 0.13 } + bg[NORMAL] = { 0.31, 0.31, 0.31 } + fg[NORMAL] = { 0.82, 0.91, 0.99 } + fg[ACTIVE] = { 0, 0, 0 } +} + +style "edit_group_1" +{ + fg[NORMAL] = { 0, 0, 0 } + fg[PRELIGHT] = { 0, 0, 0 } + fg[SELECTED] = { 0, 0, 0 } + bg[NORMAL] = { 0.93, 0.34, 0.08 } + bg[PRELIGHT] = { 0.93, 0.34, 0.08 } + bg[SELECTED] = { 0.93, 0.34, 0.08 } +} + +style "edit_group_2" +{ + fg[NORMAL] = { 0, 0, 0 } + fg[PRELIGHT] = { 0, 0, 0 } + fg[SELECTED] = { 0, 0, 0 } + bg[NORMAL] = { 0.93, 0.34, 0.08 } + bg[PRELIGHT] = { 0.93, 0.34, 0.08 } + bg[SELECTED] = { 0.93, 0.34, 0.08 } +} + +style "edit_group_3" +{ + fg[NORMAL] = { 0, 0, 0 } + fg[PRELIGHT] = { 0, 0, 0 } + fg[SELECTED] = { 0, 0, 0 } + bg[NORMAL] = { 0.93, 0.34, 0.08 } + bg[PRELIGHT] = { 0.93, 0.34, 0.08 } + bg[SELECTED] = { 0.93, 0.34, 0.08 } +} + +style "treeview_parent_node" +{ + # specifies *just* the color used for whole file rows when not selected + fg[NORMAL] = { 0.0, 0.0, 1.0 } +} + +style "treeview_display" = "small_bold_text" +{ + # expander arrow border and DnD "icon" text + fg[NORMAL] = { 0, 0, 0 } + + # background with no rows or no selection, plus + # expander arrow core and DnD "icon" background + base[NORMAL] = { 0.20, 0.20, 0.25 } + + # selected row bg when window does not have focus (including during DnD) + base[ACTIVE] = { 0.0, 0.60, 0.60 } + + # selected row bg when window has focus + base[SELECTED] = { 0, 0.75, 0.75 } + + # row text when in normal state and not a parent + text[NORMAL] = { 0, 0, 0 } + + # selected row text with window focus + text[SELECTED] = { 0, 1.0, 1.0 } + + # selected row text without window focus (including during DnD) + text[ACTIVE] = { 0, 1.0, 1.0 } +} + +style "main_canvas_area" +{ + bg[NORMAL] = { 0.40, 0.40, 0.40 } + bg[ACTIVE] = { 0.40, 0.40, 0.40 } + bg[INSENSITIVE] = { 0.40, 0.40, 0.40 } + bg[SELECTED] = { 0.40, 0.40, 0.40 } + bg[PRELIGHT] = { 0.40, 0.40, 0.40 } +} + +style "track_controls_inactive" +{ + bg[NORMAL] = { 0.60, 0.60, 0.66 } + bg[ACTIVE] = { 0.60, 0.60, 0.66 } + bg[INSENSITIVE] = { 0.60, 0.60, 0.66 } + bg[SELECTED] = { 0.60, 0.60, 0.66 } + bg[PRELIGHT] = { 0.60, 0.60, 0.66 } + + font_name = "sans medium 10" + fg[NORMAL] = { 0.7, 0.8, 0.2 } +} + +style "edit_controls_base_selected" +{ + bg[NORMAL] = { 0.60, 0.54, 0.60 } + bg[ACTIVE] = { 0.60, 0.54, 0.60 } + bg[INSENSITIVE] = { 0.60, 0.54, 0.60 } + bg[SELECTED] = { 0.60, 0.54, 0.60 } + bg[PRELIGHT] = { 0.60, 0.54, 0.60 } +} + +style "automation_track_controls_base" +{ + bg[NORMAL] = { 0.22, 0.22, 0.29 } + bg[ACTIVE] = { 0.22, 0.22, 0.29 } + bg[INSENSITIVE] = { 0.22, 0.22, 0.29 } + bg[SELECTED] = { 0.22, 0.22, 0.29 } + bg[PRELIGHT] = { 0.22, 0.22, 0.29 } +} + +# Plugin Editors +style "plugin_slider" +{ + font_name ="sans bold 10" + + # the slider itself. the inactive part is INSENSITIVE, + # the active part is something else. + + fg[NORMAL] = { 0.37, 0.43, 0.52 } + fg[ACTIVE] = { 0.37, 0.43, 0.52 } + fg[INSENSITIVE] = {0.35, 0.35, 0.40 } # matches default_base + fg[SELECTED] = { 0.37, 0.43, 0.52 } + fg[PRELIGHT] = { 0.37, 0.43, 0.52 } + + # draws the outer rectangle around the slider + + bg[NORMAL] = { 0.80, 0.80, 0.80 } + bg[ACTIVE] = { 0.80, 0.80, 0.80 } + bg[INSENSITIVE] = {0.80, 0.80, 0.80 } + bg[SELECTED] = { 0.80, 0.80, 0.80 } + bg[PRELIGHT] = { 0.80, 0.80, 0.80 } + + # the numeric display + + text[NORMAL] = { 0.80, 0.80, 0.80 } + text[ACTIVE] = { 0.80, 0.80, 0.80 } + text[INSENSITIVE] = { 0.80, 0.80, 0.80 } + text[SELECTED] = { 0.80, 0.80, 0.80 } + text[PRELIGHT] = { 0.80, 0.80, 0.80 } +} + +style "track_list_display" = "small_bold_text" +{ + text[NORMAL] = { 0.80, 0.80, 0.80 } + text[ACTIVE] = { 0.3, 0.3, 0.3 } + text[INSENSITIVE] = { 0, 0, 0 } + text[SELECTED] = { 0.8, 0.8, 0.8 } + + base[NORMAL] = { 0.70, 0.70, 0.70 } + base[ACTIVE] = { 0.70, 0.70, 0.70 } + base[INSENSITIVE] = { 0.70, 0.70, 0.70 } + base[SELECTED] = { 0.70, 0.70, 0.70 } +} + +style "inspector_track_list_display" = "track_list_display" +{ + text[ACTIVE] = { 0.8, 0.8, 0.8 } + + base[NORMAL] = { 0.70, 0.70, 0.70 } + base[ACTIVE] = { 0.2, 0.2, 0.2 } + base[INSENSITIVE] = { 0.70, 0.70, 0.70 } + base[SELECTED] = { 0.3, 0.3, 0.4 } +} + +style "redirect_list_display" +{ + GtkTreeView::horizontal-separator = 0 + GtkTreeView::vertical-separator = 0 + + font_name = "sans 7" + text[NORMAL] = { 0.80, 0.80, 0.80 } + text[ACTIVE] = { 0.70, 0.70, 0.70 } + text[INSENSITIVE] = { 0, 0, 0 } + text[SELECTED] = { 0.9, 0.3, 0.3 } + + base[NORMAL] = { 0.70, 0.70, 0.70 } + base[ACTIVE] = { 0.70, 0.70, 0.70 } + base[INSENSITIVE] = { 0.70, 0.70, 0.70 } + base[SELECTED] = { 0.70, 0.70, 0.70 } + + # these two are explicitly used by the cell renderer for the + # text + + fg[NORMAL] = { 0.5, 0.5, 0.5 } # used for inactive + fg[ACTIVE] = { 0, 0, 0 } # used for active +} + +style "inspector_redirect_list_display" = "redirect_list_display" +{ + base[SELECTED] = { 0.3, 0.3, 0.3 } +} + +# MixerPanZone: +# +# the NORMAL fg color is used for the pan puck +# the ACTIVE fg color is used for the speaker boxes + +style "pan_zone" = "default_base" +{ + fg[NORMAL] = { 0.34, 0.95, 0.92 } + fg[ACTIVE] = { 0.95, 0.48, 0.11 } +} + +style "paler_red_when_active" = "medium_text" +{ + fg[NORMAL] = { 0.80, 0.80, 0.80 } + fg[PRELIGHT] = { 0.80, 0.80, 0.80 } + bg[NORMAL] = { 0.31, 0.31, 0.31 } + bg[PRELIGHT] = { 0.31, 0.31, 0.31 } + + fg[ACTIVE] = { 0.36, 0.46, 0.28 } + bg[ACTIVE] = { 1.00, 0.59, 0.59} +} + +style "peak_display_peaked_entry" = "small_text" +{ + fg[NORMAL] = { 1.0, 1.0, 1.0 } + fg[ACTIVE] = { 1.0, 1.0, 1.0 } + fg[SELECTED] = { 1.0, 1.0, 1.0 } + + bg[NORMAL] = {0.9, 0.0, 0.0 } + bg[ACTIVE] = { 0.9, 0.0, 0.0 } + bg[PRELIGHT] = { 0.9, 0.0, 0.0 } + bg[INSENSITIVE] = { 0.9, 0.0, 0.0 } + bg[SELECTED] = { 0.9, 0.0, 0.0 } + base[NORMAL] = { 0.9, 0.0, 0.0 } + base[ACTIVE] = { 0.9, 0.0, 0.0 } + base[PRELIGHT] = { 0.9, 0.0, 0.0 } + base[INSENSITIVE] = { 0.9, 0.0, 0.0 } + base[SELECTED] = { 0.9, 0.0, 0.0 } +} + +style "selected_strip_frame" +{ + fg[NORMAL] = { 0.74, 0.42, 0.47 } + bg[NORMAL] = { 0.79, 0.28, 0.18 } +} + +style "flashing_alert" = "very_small_text" +{ + fg[NORMAL] = { 0, 0, 0 } + bg[NORMAL] = { 0.80, 0.80, 0.80 } + + fg[ACTIVE] = { 0, 0, 0 } + bg[ACTIVE] = { 1.0, 0, 0} +} + +style "selected_io_selector_port_list" = "medium_bold_text" +{ + + GtkTreeView::even-row-color = { 0.70, 0.70, 0.70 } + GtkTreeView::odd-row-color = { 0.70, 0.70, 0.70 } + +# fg is used to color the fg (text) of the column header button + + fg[NORMAL] = { 0.30, 0.30, 0.35 } + fg[SELECTED] = { 0.30, 0.30, 0.35 } + fg[ACTIVE] = { 0.30, 0.30, 0.35 } + fg[PRELIGHT] = { 0.30, 0.30, 0.35 } + fg[INSENSITIVE] = { 0.30, 0.30, 0.35 } + +# bg is used used to color the background of the column header button + + bg[NORMAL] = { 0.80, 0.80, 0.80 } + bg[ACTIVE] = { 0.80, 0.80, 0.80 } + bg[PRELIGHT] = { 0.80, 0.80, 0.80 } + bg[INSENSITIVE] = { 0.80, 0.80, 0.80 } + bg[SELECTED] = { 0.80, 0.80, 0.80 } + +# text is used to color the treeview row text + + text[NORMAL] = { 0.30, 0.30, 0.35 } + text[SELECTED] = { 0.30, 0.30, 0.35 } + +# base is used to color a treeview with no rows + + base[NORMAL] = { 0.70, 0.70, 0.70 } + base[ACTIVE] = { 0.70, 0.70, 0.70 } + base[PRELIGHT] = { 0.70, 0.70, 0.70 } + base[INSENSITIVE] = { 0.70, 0.70, 0.70 } + base[SELECTED] = { 0.70, 0.70, 0.70 } + +} + +style "io_selector_port_list" = "medium_text" +{ + GtkTreeView::even-row-color = { 0.70, 0.70, 0.70 } + GtkTreeView::odd-row-color = { 0.70, 0.70, 0.70 } +# fg is used to color the fg (text) of the column header button + + fg[NORMAL] = { 0.30, 0.30, 0.35 } + fg[SELECTED] = { 0.30, 0.30, 0.35 } + fg[ACTIVE] = { 0.30, 0.30, 0.35 } + fg[PRELIGHT] = { 0.30, 0.30, 0.35 } + fg[INSENSITIVE] = { 0.30, 0.30, 0.35 } + +# bg is used used to color the background of the column header button + + bg[NORMAL] = { 0.80, 0.80, 0.80 } + bg[ACTIVE] = { 0.80, 0.80, 0.80 } + bg[PRELIGHT] = { 0.80, 0.80, 0.80 } + bg[INSENSITIVE] = { 0.80, 0.80, 0.80 } + bg[SELECTED] = { 0.80, 0.80, 0.80 } + +# text is used to color the treeview row text + + text[NORMAL] = { 0.30, 0.30, 0.35 } + text[SELECTED] = { 0.30, 0.30, 0.35 } + +# base is used to color a treeview with no rows + + base[NORMAL] = { 0.20, 0.20, 0.25 } + base[ACTIVE] = { 0.20, 0.20, 0.25 } + base[PRELIGHT] = { 0.20, 0.20, 0.25 } + base[INSENSITIVE] = { 0.20, 0.20, 0.25 } + base[SELECTED] = { 0.20, 0.20, 0.25 } +} + +style "io_selector_notebook" = "default_base" +{ + fg[NORMAL] = { 1.0, 1.0, 1.0 } + font_name ="sans bold 8" +} + +style "tearoff_arrow" = "medium_bold_entry" +{ + fg[NORMAL] = { 0.80, 0.80, 0.80 } + fg[PRELIGHT] = { 0.80, 0.80, 0.80 } + bg[NORMAL] = { 0.80, 0.80, 0.80 } + bg[PRELIGHT] = { 0.80, 0.80, 0.80 } +} + +style "meter_metrics_strip" = "default_base" +{ + font_name = "sans 4" + fg[NORMAL] = { 1.0, 0.8, 0.2 } +} + +style "location_row_button" = "default_buttons_menus" +{ + font_name = "sans 10" +} + +style "location_rows_clock" = "default_clock_display" +{ + font_name = "sans 12" +} + +style "pan_slider" +{ + font_name = "sans 8" + + fg[NORMAL] = { 0.22, 0.73, 0.22 } + fg[ACTIVE] = { 0.22, 0.73, 0.22 } + fg[INSENSITIVE] = {0.22, 0.53, 0.22 } + fg[SELECTED] = { 0.67, 0.23, 0.22 } + fg[PRELIGHT] = { 0.67, 0.23, 0.22 } + + bg[NORMAL] = { 0.05, 0.05, 0.05 } + bg[ACTIVE] = { 0, 0, 0 } + bg[INSENSITIVE] = {0.12, 0.19, 0.25 } + bg[SELECTED] = { 0, 0, 0 } + bg[PRELIGHT] = { 0, 0, 0 } + + text[NORMAL] = { 0.70, 0.70, 0.70 } + text[ACTIVE] = { 0.70, 0.70, 0.70 } + text[INSENSITIVE] = { 0.70, 0.70, 0.70 } + text[SELECTED] = { 0.70, 0.70, 0.70 } + text[PRELIGHT] = { 0.70, 0.70, 0.70 } + + # used to draw the triangular indicators + + base[NORMAL] = { 0.80, 0.80, 0.80 } + base[ACTIVE] = { 0.80, 0.80, 0.80 } + base[INSENSITIVE] = {0.6, 0.6, 0.6 } + base[SELECTED] = { 0.80, 0.80, 0.80 } + base[PRELIGHT] = { 0.80, 0.80, 0.80 } + +} + +style "ardour_button" ="default_buttons_menus" +{ + xthickness = 1 + ythickness = 1 +} + +#--------------------------------------------------------------- + +class "GtkWidget" style:highest "default_base" +class "GtkScrollbar" style:highest "ardour_adjusters" +class "GtkLabel" style:highest "default_buttons_menus" +class "GtkButton" style:highest "ardour_button" +class "GtkArrow" style:highest "tearoff_arrow" +class "GtkProgressBar" style:highest "ardour_progressbars" + +widget "*FirstActionMessage" style:highest "first_action_message" +widget "*VerboseCanvasCursor" style:highest "verbose_canvas_cursor" +widget "*MarkerText" style:highest "marker_text" +widget "*TimeAxisViewItemName*" style:highest "time_axis_view_item_name" +#widget "*ExportProgress" style:highest "default_buttons_menus" +widget "*ExportFileLabel" style:highest "small_bold_text" +widget "*ExportFormatLabel" style:highest "medium_bold_text" +widget "*ExportHeader" style:highest "small_bold_text" +widget "*ExportFileDisplay" style:highest "medium_entry" +widget "*ExportFormatDisplay" style:highest "medium_entry" +widget "*ExportCheckbox" style:highest "small_entry" +widget "*ExportTrackSelector*" style:highest "medium_entry_noselection_bg" +widget "*EditModeSelector" style:highest "medium_bold_entry" +widget "*SnapTypeSelector" style:highest "medium_bold_entry" +widget "*SnapModeSelector" style:highest "medium_bold_entry" +widget "*ZoomFocusSelector" style:highest "medium_bold_entry" +widget "*ArdourContextMenu*" style:highest "default_buttons_menus" +widget "*EditGroupTitleButton*" style:highest "default_buttons_menus" +widget "*MixerGroupTitleButton*" style:highest "default_buttons_menus" +widget "*ErrorLogCloseButton" style:highest "default_buttons_menus" +widget "*EditorGTKButton*" style:highest "default_buttons_menus" +widget "*ToolbarButton" style:highest "default_buttons_menus" +widget "*ToolbarButton*" style:highest "default_buttons_menus" +widget "*CrossfadeEditButton" style:highest "default_buttons_menus" +widget "*CrossfadeEditButton*" style:highest "default_buttons_menus" +widget "*TrackHistoryButton*" style:highest "default_buttons_menus" +widget "*TrackSizeButton*" style:highest "default_buttons_menus" +widget "*TrackPlaylistButton*" style:highest "default_buttons_menus" +widget "*TrackAutomationButton*" style:highest "default_buttons_menus" +widget "*TrackGroupButton*" style:highest "default_buttons_menus" +widget "*TrackMixButton*" style:highest "default_buttons_menus" +widget "*TrackVisualButton*" style:highest "default_buttons_menus" +widget "*TrackRemoveButton*" style:highest "default_buttons_menus" +widget "*BaseButton" style:highest "default_buttons_menus" +widget "*TakeButtonLabel" style:highest "default_buttons_menus" +widget "*MixerWidthButton" style:highest "default_buttons_menus" +widget "*MixerHideButton" style:highest "default_buttons_menus" +widget "*MixerSendButton" style:highest "default_buttons_menus" +widget "*MixerSendButtonLabel" style:highest "default_buttons_menus" +widget "*MixerSendSwitch" style:highest "default_buttons_menus" +widget "*MixerInsertButton" style:highest "default_buttons_menus" +widget "*MixerInsertButtonLabel" style:highest "default_buttons_menus" +widget "*MixerInsertSwitch" style:highest "default_buttons_menus" +widget "*MixerMonitorInputButton*" style:highest "very_small_button" +widget "*MixerMonitorInputButton.*" style:highest "very_small_button" +widget "*MixerIOButton" style:highest "very_small_button" +widget "*MixerIOButtonLabel" style:highest "very_small_button" +widget "*AddRouteDialogSpinner" style:highest "ardour_adjusters" +widget "*AddRouteDialogRadioButton*" style:highest "options_window" +widget "*OptionsNotebook" style:highest "options_window" +widget "*OptionEditorToggleButton*" style:highest "options_window" +widget "*OptionsLabel" style:highest "options_window" +widget "*OptionEditorAuditionerLabel" style:highest "options_window" +widget "*OptionsEntry" style:highest "option_entry" +widget "*InspectorNotebook" style:highest "options_window" +widget "*NewSessionDialog" style:highest "options_window" +widget "*NewSessionDialogButton*" style:highest "options_window" +widget "*MixerSendSwitch*" style:highest "very_small_red_active_and_selected_button" +widget "*OptionEditorToggleButton" style:highest "small_red_active_and_selected_button" +widget "*NewSessionDialogButton" style:highest "small_red_active_and_selected_button" +widget "*RecordEnableButton" style:highest "track_rec_enable_button" +widget "*RecordEnableButton-active" style:highest "track_rec_enable_button_active" +widget "*RecordEnableButton-alternate" style:highest "track_rec_enable_button_alternate" +widget "*MixerRecordEnableButton" style:highest "mixer_track_rec_enable_button" +widget "*MixerRecordEnableButton-active" style:highest "mixer_track_rec_enable_button_active" +widget "*MixerRecordEnableButton-alternate" style:highest "mixer_track_rec_enable_button_alternate" +widget "*MuteButton" style:highest "mute_button" +widget "*MuteButton-alternate" style:highest "mute_button_alternate" +widget "*MuteButton-active" style:highest "mute_button_active" +widget "*MixerMuteButton" style:highest "mixer_mute_button" +widget "*MixerMuteButton-alternate" style:highest "mixer_mute_button_alternate" +widget "*MixerMuteButton-active" style:highest "mixer_mute_button_active" +widget "*SoloButton" style:highest "solo_button" +widget "*SoloButton-alternate" style:highest "solo_button_alternate" +widget "*SoloButton-active" style:highest "solo_button_active" +widget "*MixerSoloButton" style:highest "mixer_solo_button" +widget "*MixerSoloButton-alternate" style:highest "mixer_solo_button_alternate" +widget "*MixerSoloButton-active" style:highest "mixer_solo_button_active" +widget "*TrackLoopButton*" style:highest "track_loop_button" +widget "*PanAutomationLineSelector*" style:highest "multiline_combo" +widget "*EditorTimeButton*" style:highest "time_button" +widget "*MixerPhaseInvertButton*" style:highest "very_small_button" +widget "*MixerPhaseInvertButton.*" style:highest "very_small_button" +widget "*MixerAutomationRecordingButton*" style:highest "very_small_button" +widget "*MixerAutomationRecordingButton.*" style:highest "very_small_button" +widget "*MixerAutomationModeButton*" style:highest "very_small_button" +widget "*MixerAutomationModeButton.*" style:highest "very_small_button" +widget "*MixerAutomationPlaybackButton*" style:highest "very_small_button" +widget "*MixerAutomationPlaybackButton.*" style:highest "very_small_button" +widget "*MixerNameButton" style:highest "very_small_button" +widget "*MixerNameButtonLabel" style:highest "very_small_button" +widget "*MixerGroupButton" style:highest "very_small_button" +widget "*MixerGroupButtonLabel" style:highest "very_small_button" +widget "*MixerCommentButton" style:highest "very_small_button" +widget "*MixerCommentButton*" style:highest "very_small_button" +widget "*EditGroupButton" style:highest "very_small_button" +widget "*EditGroupButtonLabel" style:highest "very_small_button" +widget "*TransportButton" style:highest "transport_rec_button" +widget "*TransportButton-active" style:highest "transport_button_active" +widget "*ShuttleButton" style:highest "transport_button" +widget "*ShuttleButton*" style:highest "transport_button" +widget "*ShuttleDisplay" style:highest "transport_button" +widget "*ShuttleDisplay*" style:highest "transport_button" +widget "*ShuttleControl" style:highest "shuttle_control" +widget "*TransportRecButton" style:highest "transport_rec_button" +widget "*TransportRecButton*" style:highest "transport_rec_button" +widget "*TransportRecButton-active" style:highest "transport_rec_button_active" +widget "*TransportRecButton-active*" style:highest "transport_rec_button_active" +widget "*TransportRecButton-alternate" style:highest "transport_rec_button_alternate" +widget "*TransportRecButton-alternate*" style:highest "transport_rec_button_alternate" +widget "*TransportRecButton*" style:highest "transport_rec_button" +widget "*RecordingXrunWarningWindow" style:highest "xrun_warn" +widget "*RecordingXrunWarningWindow*" style:highest "xrun_warn" +/*widget "*MainMenuBar" style:highest "menu_bar_base"*/ +widget "*ErrorMessage" style:highest "error_message" +widget "*FatalMessage" style:highest "fatal_message" +widget "*InfoMessage" style:highest "info_message" +widget "*WarningMessage" style:highest "warning_message" +widget "*BigClockNonRecording" style:highest "non_recording_big_clock_display" +widget "*BigClockRecording" style:highest "recording_big_clock_display" +widget "*TransportClockDisplay" style:highest "transport_clock_display" +widget "*SecondaryClockDisplay" style:highest "transport_clock_display" +widget "*TransportClockDisplayDelta" style:highest "transport_clock_display_delta" +widget "*SecondaryClockDisplayDelta" style:highest "transport_clock_display_delta" +widget "*AudioClockFramesUpperInfo" style:highest "tempo_meter_clock_display" +widget "*AudioClockFramesLowerInfo" style:highest "tempo_meter_clock_display" +widget "*AudioClockSMPTEUpperInfo" style:highest "tempo_meter_clock_display" +widget "*AudioClockSMPTELowerInfo" style:highest "tempo_meter_clock_display" +widget "*AudioClockBBTUpperInfo" style:highest "tempo_meter_clock_display" +widget "*AudioClockBBTLowerInfo" style:highest "tempo_meter_clock_display" +widget "*SelectionStartClock" style:highest "default_clock_display" +widget "*SelectionEndClock" style:highest "default_clock_display" +widget "*EditCursorClock" style:highest "default_clock_display" +widget "*PreRollClock" style:highest "default_clock_display" +widget "*PostRollClock" style:highest "default_clock_display" +widget "*NudgeClock" style:highest "default_clock_display" +widget "*ZoomRangeClock" style:highest "default_clock_display" +widget "*SMPTEOffsetClock" style:highest "default_clock_display" +widget "*TransportLabel" style:highest "small_bold_text" +widget "*TakeLabel" style:highest "small_bold_text" +widget "*LocationLabel" style:highest "small_bold_text" +widget "*WipeLabel" style:highest "small_bold_text" +widget "*TakeTagLabel" style:highest "small_bold_text" +widget "*ToolBarLabel" style:highest "small_bold_text" +widget "*EditorDisplayLabel" style:highest "small_bold_text" +widget "*NewSessionLabel" style:highest "large_text" +widget "*GlobalButtonLabel" style:highest "default_buttons_menus" +widget "*ClickButton" style:highest "medium_entry" +widget "*RegionNameDisplay" style:highest "medium_entry" +widget "*PluginDisplay" style:highest "medium_entry" +widget "*SelectionDisplay" style:highest "medium_entry" +widget "*HistorySelector" style:highest "medium_entry" +widget "*LocationSelector" style:highest "medium_entry" +widget "*TakeSelector" style:highest "medium_entry" +widget "*RegionSelector" style:highest "medium_entry" +widget "*SMPTERuler" style:highest "editor_time_ruler" +widget "*BBTRuler" style:highest "editor_time_ruler" +widget "*FramesRuler" style:highest "editor_time_ruler" +widget "*MinSecRuler" style:highest "editor_time_ruler" +widget "*BaseFrame" style:highest "base_frame" +widget "*AudioTrackStripBase*" style:highest "audio_track_base" +widget "*TimeAxisViewControlsBaseUnselected" style:highest "audio_track_base" +widget "*AudioTrackControlsBaseUnselected" style:highest "audio_track_base" +widget "*AudioTrackFader" style:highest "gain_fader" +widget "*AudioBusStripBase" style:highest "audio_bus_base" +widget "*BusControlsBaseUnselected" style:highest "audio_bus_base" +widget "*AudioBusFader" style:highest "gain_fader" +widget "*TrackSeparator" style:highest "track_separator" +widget "*TrackEditIndicator0*" style:highest "edit_group_0" +widget "*TrackEditIndicator1*" style:highest "edit_group_1" +widget "*TrackEditIndicator2*" style:highest "edit_group_2" +widget "*TrackEditIndicator3*" style:highest "edit_group_3" +widget "*TrackEditIndicator4*" style:highest "edit_group_3" +widget "*TrackEditIndicator5*" style:highest "edit_group_3" +widget "*TrackEditIndicator6*" style:highest "edit_group_3" +widget "*TrackEditIndicator7*" style:highest "edit_group_3" +widget "*EditorTrackNameDisplay" style:highest "track_name_display" +widget "*EditorTrackNameDisplay*" style:highest "track_name_display" +widget "*EditorActiveTrackNameDisplay" style:highest "active_track_name_display" +widget "*EditorActiveTrackNameDisplay*" style:highest "active_track_name_display" +widget "*CrossfadeEditAuditionButton" style:highest "red_when_active" +widget "*CrossfadeEditAuditionButton*" style:highest "red_when_active" +widget "*CrossfadeEditCurveButton" style:highest "red_when_active" +widget "*CrossfadeEditCurveButton*" style:highest "red_when_active" +widget "*CrossfadeEditLabel" style:highest "medium_text" +widget "*CrossfadeEditFrame" style:highest "base_frame" +widget "*MouseModeButton" style:highest "default_buttons_menus" +widget "*MouseModeButton*" style:highest "default_buttons_menus" +widget "*EditorMainCanvas" style:highest "main_canvas_area" +widget "*AudioTrackControlsBaseInactiveUnselected" style:highest "track_controls_inactive" +widget "*BusControlsBaseInactiveUnselected" style:highest "track_controls_inactive" +widget "*AutomationTrackControlsBaseInactiveUnselected" style:highest "track_controls_inactive" +widget "*AutomationTrackName" style:highest "automation_track_name" +widget "*AudioTrackControlsBaseInactiveSelected" style:highest "track_controls_inactive" +widget "*BusControlsBaseInactiveSelected" style:highest "track_controls_inactive" +widget "*AutomationTrackControlsBaseInactiveSelected" style:highest "track_controls_inactive" +widget "*AudioTrackStripBaseInactive" style:highest "track_controls_inactive" +widget "*AudioBusStripBaseInactive" style:highest "track_controls_inactive" +widget "*AudioTrackControlsBaseSelected" style:highest "edit_controls_base_selected" +widget "*BusControlsBaseSelected" style:highest "edit_controls_base_selected" +widget "*AutomationTrackControlsBase" style:highest "automation_track_controls_base" +widget "*AutomationTrackControlsBaseSelected" style:highest "edit_controls_base_selected" +/*widget "*EditorMenuBar*" style:highest "black_mackie_menu_bar" +widget "*MainMenuBar*" style:highest "black_mackie_menu_bar" +*/ +widget "*ZoomClickBox" style:highest "medium_bold_entry" +widget "*PluginParameterLabel" style:highest "medium_text" +widget "*PluginNameInfo" style:highest "plugin_name_text" +widget "*PluginMakerInfo" style:highest "plugin_maker_text" +widget "*PluginParameterInfo" style:highest "medium_text" +widget "*MotionControllerValue" style:highest "medium_entry" +widget "*ParameterValueDisplay" style:highest "medium_bold_entry" +widget "*PluginUIClickBox" style:highest "medium_bold_entry" +widget "*PluginUIClickBox*" style:highest "medium_bold_entry" +widget "*PluginSlider" style:highest "plugin_slider" +widget "*RedirectSelector" style:highest "redirect_list_display" +widget "*RedirectSelector.*" style:highest "redirect_list_display" +widget "*EditGroupDisplay" style:highest "treeview_display" +widget "*TrackListDisplay" style:highest "treeview_display" +widget "*RegionListDisplay" style:highest "treeview_display" +widget "*NamedSelectionDisplay" style:highest "treeview_display" +widget "*SnapshotDisplay" style:highest "treeview_display" +widget "*MixerTrackCommentArea" style:highest "option_entry" +widget "*MixerPanZone" style:highest "pan_zone" +widget "*MixerTrackDisplayList" style:highest "treeview_display" +widget "*MixerSnapshotDisplayList" style:highest "treeview_display" +widget "*MixerAuxDisplayList" style:highest "treeview_display" +widget "*MixerGroupList" style:highest "treeview_display" +widget "*RegionEditorLabel" style:highest "medium_text" +widget "*RegionEditorSmallLabel" style:highest "small_text" +widget "*RegionEditorEntry" style:highest "medium_entry" +widget "*RegionEditorClock" style:highest "default_clock_display" +widget "*RegionEditorToggleButton" style:highest "paler_red_when_active" +widget "*RegionEditorToggleButton*" style:highest "paler_red_when_active" +widget "*MixerStripSpeedBase" style:highest "small_entry" +widget "*MixerStripSpeedBase*" style:highest "small_entry" +widget "*MixerStripSpeedBaseNotOne" style:highest "small_red_on_black_entry" +widget "*MixerStripSpeedBaseNotOne*" style:highest "small_red_on_black_entry" +widget "*MixerStripGainDisplay" style:highest "small_entry" +widget "*MixerStripGainDisplay*" style:highest "small_entry" +widget "*MixerStripGainUnitButton" style:highest "very_small_button" +widget "*MixerStripGainUnitButton*" style:highest "very_small_button" +widget "*MixerStripMeterPreButton" style:highest "very_small_button" +widget "*MixerStripMeterPreButton*" style:highest "very_small_button" +widget "*MixerStripPeakDisplay*" style:highest "red_active_small_entry" +widget "*MixerStripPeakDisplayPeak*" style:highest "peak_display_peaked_entry" +widget "*MixerStripSelectedFrame" style:highest "selected_strip_frame" +widget "*MixerStripFrame" style:highest "base_frame" +widget "*HWMonitorButton" style:highest "red_when_active" +widget "*HWMonitorButton*" style:highest "red_when_active" +widget "*BypassButton" style:highest "red_when_active" +widget "*BypassButton*" style:highest "red_when_active" +widget "*TransportSoloAlert" style:highest "flashing_alert" +widget "*TransportSoloAlert.*" style:highest "flashing_alert" +widget "*TransportAuditioningAlert" style:highest "flashing_alert" +widget "*TransportAuditioningAlert.*" style:highest "flashing_alert" +widget "*FadeCurve" style:highest "medium_bold_entry" +widget "*FadeCurve*" style:highest "medium_bold_entry" +widget "*IOSelectorButton" style:highest "default_buttons_menus" +widget "*IOSelectorButton*" style:highest "default_buttons_menus" +widget "*IOSelectorList" style:highest "medium_entry_noselection_fg" +widget "*IOSelectorPortList" style:highest "io_selector_port_list" +widget "*IOSelectorPortList.*" style:highest "io_selector_port_list" +widget "*IOSelectorPortListSelected" style:highest "selected_io_selector_port_list" +widget "*IOSelectorPortListSelected.*" style:highest "selected_io_selector_port_list" +widget "*IOSelectorNotebook" style:highest "io_selector_notebook" +widget "*IOSelectorNotebookTab" style:highest "io_selector_notebook" +widget "*IOSelectorFrame" style:highest "base_frame" +widget "*ConnectionEditorButton" style:highest "default_buttons_menus" +widget "*ConnectionEditorButton*" style:highest "default_buttons_menus" +widget "*ConnectionEditorList" style:highest "medium_entry_noselection_fg" +widget "*ConnectionEditorConnectionList" style:highest "medium_entry" +widget "*ConnectionEditorPortList" style:highest "io_selector_port_list" +widget "*ConnectionEditorPortListSelected" style:highest "selected_io_selector_port_list" +widget "*ConnectionEditorNotebook" style:highest "io_selector_notebook" +widget "*ConnectionEditorNotebookTab" style:highest "io_selector_notebook" +widget "*ConnectionEditorFrame" style:highest "base_frame" +widget "*RouteParamsListDisplay" style:highest "inspector_track_list_display" +widget "*RouteParamsPreListDisplay" style:highest "inspector_redirect_list_display" +widget "*RouteParamsPostListDisplay" style:highest "inspector_redirect_list_display" +widget "*TearOffArrow" style:highest "tearoff_arrow" +widget "*RouteParamsTitleButton" style:highest "medium_text" +widget "*RouteParamsTitleLabel" style:highest "medium_text" +widget "*PluginAutomateRecordButton" style:highest "small_red_active_and_selected_button" +widget "*PluginAutomateRecordButton*" style:highest "small_red_active_and_selected_button" +widget "*PluginAutomatePlayButton" style:highest "small_red_active_and_selected_button" +widget "*PluginAutomatePlayButton*" style:highest "small_red_active_and_selected_button" +widget "*PluginAutomateButton" style:highest "small_button" +widget "*PluginAutomateButton*" style:highest "small_button" +widget "*PluginSaveButton" style:highest "small_button" +widget "*PluginSaveButton*" style:highest "small_button" +widget "*PluginLoadButton" style:highest "small_button" +widget "*PluginLoadButton*" style:highest "small_button" +widget "*FaderMetricsStrip" style:highest "meter_metrics_strip" +widget "*MeterMetricsStrip" style:highest "meter_metrics_strip" +widget "*MetricDialogFrame" style:highest "base_frame" +widget "*MetricEntry" style:highest "medium_bold_entry" +widget "*MetricButton" style:highest "default_buttons_menus" +widget "*MetricButton.*" style:highest "default_buttons_menus" +widget "*MetricLabel" style:highest "medium_text" +widget "*TimeStretchButton" style:highest "default_buttons_menus" +widget "*TimeStretchButton.*" style:highest "default_buttons_menus" +widget "*TimeStretchProgress" style:highest "default_buttons_menus" +widget "*ChoiceWindow" style:highest "default_buttons_menus" +widget "*ChoicePrompt" style:highest "default_buttons_menus" +widget "*ChoiceButton" style:highest "default_buttons_menus" +widget "*ChoiceButton*" style:highest "default_buttons_menus" +widget "*SelectionModeButton" style:highest "default_buttons_menus" +widget "*SelectionModeButton*" style:highest "default_buttons_menus" +widget "*TrackLabel" style:highest "medium_text" +widget "*TrackPlugName" style:highest "medium_text" +widget "*TrackParameterName" style:highest "small_text" +widget "*AddRouteDialog*" style:highest "medium_text" +widget "*AddRouteDialog.GtkLabel" style:highest "medium_text" +widget "*AddRouteDialogChannelChoice" style:highest "medium_bold_entry" +widget "*AddRouteDialogSpinner" style:highest "medium_bold_entry" +widget "*AddRouteDialogSpinner*" style:highest "medium_bold_entry" +widget "*AddRouteDialogRadioButton" style:highest "red_when_active" +widget "*AddRouteDialogButton" style:highest "default_buttons_menus" +widget "*AddRouteDialogNameTemplateEntry" style:highest "medium_bold_entry" +widget "*NewSessionIOLabel" style:highest "larger_bold_text" +widget "*NewSessionSR1Label" style:highest "red_medium_text" +widget "*NewSessionSR2Label" style:highest "medium_text" +widget "*NewSessionChannelChoice" style:highest "medium_bold_entry" +widget "*NewSessionMainButton" style:highest "larger_bold_text" +widget "*NewSessionMainButton*" style:highest "larger_bold_text" +widget "*NewSessionMainLabel" style:highest "larger_bold_text" +widget "*LocationEditRowClock" style:highest "location_rows_clock" +widget "*LocationEditNameLabel" style:highest "medium_text" +widget "*LocationEditSetButton" style:highest "location_row_button" +widget "*LocationEditSetButton*" style:highest "location_row_button" +widget "*LocationEditGoButton" style:highest "location_row_button" +widget "*LocationEditGoButton*" style:highest "location_row_button" +widget "*LocationEditCdButton" style:highest "small_red_active_and_selected_button" +widget "*LocationEditCdButton*" style:highest "small_red_active_and_selected_button" +widget "*LocationEditHideButton" style:highest "small_red_active_and_selected_button" +widget "*LocationEditHideButton*" style:highest "small_red_active_and_selected_button" +widget "*LocationEditNumberLabel" style:highest "small_text" +widget "*LocationLocEditorFrame" style:highest "base_frame" +widget "*LocationRangeEditorFrame" style:highest "base_frame" +widget "*LocationEditNameEntry" style:highest "option_entry" +widget "*LocationAddLocationButton" style:highest "default_buttons_menus" +widget "*LocationAddLocationButton*" style:highest "default_buttons_menus" +widget "*LocationAddRangeButton" style:highest "default_buttons_menus" +widget "*LocationAddRangeButton*" style:highest "default_buttons_menus" +widget "*LocationEditRemoveButton" style:highest "location_row_button" +widget "*LocationEditRemoveButton*" style:highest "location_row_button" +widget "*PanSlider" style:highest "pan_slider" +widget "*PanningLinkButton" style:highest "mixer_red_active_button" +widget "*PanningLinkButton.*" style:highest "mixer_red_active_button" +widget "*PanningLinkDirectionButton" style:highest "very_small_button" +widget "*PanningLinkDirectionButton.*" style:highest "very_small_button" +widget "*ChannelCountSelector" style:highest "medium_bold_entry" +widget "*ChannelCountSelector.GtkArrow" style:highest "default_buttons_menus" +widget "*RegionListWholeFile" style:highest "treeview_parent_node" +widget "*EditorHScrollbar" style:highest "editor_hscrollbar" + diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 5cc6418a5e..e7297df483 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -75,7 +75,7 @@ #include "about.h" #include "utils.h" #include "gui_thread.h" -#include "color_manager.h" +#include "theme_manager.h" #include "engine_dialog.h" #include "i18n.h" @@ -87,15 +87,16 @@ using namespace Gtk; using namespace sigc; ARDOUR_UI *ARDOUR_UI::theArdourUI = 0; +UIConfiguration *ARDOUR_UI::ui_config = 0; sigc::signal<void,bool> ARDOUR_UI::Blink; sigc::signal<void> ARDOUR_UI::RapidScreenUpdate; sigc::signal<void> ARDOUR_UI::SuperRapidScreenUpdate; sigc::signal<void,nframes_t> ARDOUR_UI::Clock; -ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], string rcfile) +ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[]) - : Gtkmm2ext::UI (X_("Ardour"), argcp, argvp, rcfile), + : Gtkmm2ext::UI (X_("Ardour"), argcp, argvp), primary_clock (X_("primary"), false, X_("TransportClockDisplay"), true, false, true), secondary_clock (X_("secondary"), false, X_("SecondaryClockDisplay"), true, false, true), @@ -159,13 +160,8 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], string rcfile) theArdourUI = this; } - /* load colors */ - - color_manager = new ColorManager(); - - std::string color_file = ARDOUR::find_config_file("ardour.colors"); - - color_manager->load (color_file); + ui_config = new UIConfiguration(); + theme_manager = new ThemeManager(); editor = 0; mixer = 0; @@ -562,6 +558,7 @@ If you still wish to quit, please use the\n\n\ } engine->stop (true); Config->save_state(); + ARDOUR_UI::config()->save_state(); quit (); } @@ -1464,6 +1461,12 @@ ARDOUR_UI::do_engine_start () return 0; } +void +ARDOUR_UI::setup_theme () +{ + theme_manager->setup_theme(); +} + gint ARDOUR_UI::start_engine () { diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 551919ee03..750a56db7d 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -61,6 +61,7 @@ #include "audio_clock.h" #include "ardour_dialog.h" #include "editing.h" +#include "ui_config.h" class AudioClock; class PublicEditor; @@ -73,7 +74,7 @@ class About; class AddRouteDialog; class NewSessionDialog; class LocationUI; -class ColorManager; +class ThemeManager; namespace Gtkmm2ext { class TearOff; @@ -93,10 +94,12 @@ namespace ALSA { #define FRAME_NAME "BaseFrame" +extern sigc::signal<void> ColorsChanged; + class ARDOUR_UI : public Gtkmm2ext::UI { public: - ARDOUR_UI (int *argcp, char **argvp[], string rcfile); + ARDOUR_UI (int *argcp, char **argvp[]); ~ARDOUR_UI(); void show (); @@ -127,7 +130,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI _will_create_new_session_automatically = yn; } - bool new_session(std::string path = string()); + bool new_session(std::string path = string()); gint cmdline_new_session (string path); int unload_session (); void close_session(); @@ -140,12 +143,13 @@ class ARDOUR_UI : public Gtkmm2ext::UI static ARDOUR::gain_t slider_position_to_gain (double pos); static ARDOUR_UI *instance () { return theArdourUI; } + static UIConfiguration *config () { return ui_config; } PublicEditor& the_editor(){return *editor;} Mixer_UI* the_mixer() { return mixer; } void toggle_location_window (); - void toggle_color_manager (); + void toggle_theme_manager (); void toggle_big_clock_window (); void toggle_connection_editor (); void toggle_route_params_window (); @@ -213,6 +217,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI void save_keybindings (); void setup_profile (); + void setup_theme (); protected: friend class PublicEditor; @@ -595,7 +600,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI int create_location_ui (); void handle_locations_change (ARDOUR::Location*); - ColorManager* color_manager; + static UIConfiguration *ui_config; + ThemeManager *theme_manager; /* Options window */ diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc index f3e8b6e344..da2b2262ea 100644 --- a/gtk2_ardour/ardour_ui2.cc +++ b/gtk2_ardour/ardour_ui2.cc @@ -43,7 +43,7 @@ #include "audio_clock.h" #include "actions.h" #include "utils.h" -#include "color_manager.h" +#include "theme_manager.h" #include "i18n.h" @@ -76,7 +76,7 @@ ARDOUR_UI::setup_windows () setup_transport(); build_menu_bar (); - color_manager->signal_unmap().connect (bind (sigc::ptr_fun(&ActionManager::uncheck_toggleaction), X_("<Actions>/Common/ToggleColorManager"))); + theme_manager->signal_unmap().connect (bind (sigc::ptr_fun(&ActionManager::uncheck_toggleaction), X_("<Actions>/Common/ToggleThemeManager"))); top_packer.pack_start (menu_bar_base, false, false); top_packer.pack_start (transport_frame, false, false); diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index 8a50697e85..fcd75154b4 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -34,7 +34,7 @@ #include "public_editor.h" #include "route_params_ui.h" #include "sfdb_ui.h" -#include "color_manager.h" +#include "theme_manager.h" #include "i18n.h" @@ -324,17 +324,17 @@ ARDOUR_UI::toggle_location_window () } void -ARDOUR_UI::toggle_color_manager () +ARDOUR_UI::toggle_theme_manager () { - RefPtr<Action> act = ActionManager::get_action (X_("Common"), X_("ToggleColorManager")); + RefPtr<Action> act = ActionManager::get_action (X_("Common"), X_("ToggleThemeManager")); if (act) { RefPtr<ToggleAction> tact = RefPtr<ToggleAction>::cast_dynamic(act); if (tact->get_active()) { - color_manager->show_all (); - color_manager->present (); + theme_manager->show_all (); + theme_manager->present (); } else { - color_manager->hide (); + theme_manager->hide (); } } } diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index 27ee75b320..3b70f9c801 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -208,7 +208,7 @@ ARDOUR_UI::install_actions () act = ActionManager::register_toggle_action (common_actions, X_("ToggleBigClock"), _("Big Clock"), mem_fun(*this, &ARDOUR_UI::toggle_big_clock_window)); ActionManager::session_sensitive_actions.push_back (act); ActionManager::register_action (common_actions, X_("About"), _("About"), mem_fun(*this, &ARDOUR_UI::show_splash)); - act = ActionManager::register_toggle_action (common_actions, X_("ToggleColorManager"), _("Colors"), mem_fun(*this, &ARDOUR_UI::toggle_color_manager)); + act = ActionManager::register_toggle_action (common_actions, X_("ToggleThemeManager"), _("Theme Manager"), mem_fun(*this, &ARDOUR_UI::toggle_theme_manager)); act = ActionManager::register_action (common_actions, X_("AddAudioTrack"), _("Add Audio Track"), bind (mem_fun(*this, &ARDOUR_UI::session_add_audio_track), 1, 1, ARDOUR::Normal, 1)); ActionManager::session_sensitive_actions.push_back (act); diff --git a/gtk2_ardour/audio_region_view.cc b/gtk2_ardour/audio_region_view.cc index ac0d317a13..93a3daf069 100644 --- a/gtk2_ardour/audio_region_view.cc +++ b/gtk2_ardour/audio_region_view.cc @@ -46,9 +46,12 @@ #include "utils.h" #include "rgb_macros.h" #include "gui_thread.h" +#include "ardour_ui.h" #include "i18n.h" +#define MUTED_ALPHA 0x50 + using namespace sigc; using namespace ARDOUR; using namespace PBD; @@ -378,9 +381,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(ARDOUR_UI::config()->canvasvar_WaveForm.get(), MUTED_ALPHA); } else { - waves[n]->property_wave_color() = color_map[cWaveForm]; + waves[n]->property_wave_color() = ARDOUR_UI::config()->canvasvar_WaveForm.get(); } } } @@ -669,18 +672,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() ? ARDOUR_UI::config()->canvasvar_GainLine.get() : ARDOUR_UI::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(ARDOUR_UI::config()->canvasvar_WaveForm.get(), MUTED_ALPHA); } else { - waves[n]->property_wave_color() = color_map[cWaveForm]; + waves[n]->property_wave_color() = ARDOUR_UI::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() = ARDOUR_UI::config()->canvasvar_WaveFormClip.get(); + waves[n]->property_zero_color() = ARDOUR_UI::config()->canvasvar_ZeroLine.get(); } } @@ -818,9 +821,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(ARDOUR_UI::config()->canvasvar_WaveForm.get(), MUTED_ALPHA) : ARDOUR_UI::config()->canvasvar_WaveForm.get(); + wave->property_clip_color() = ARDOUR_UI::config()->canvasvar_WaveFormClip.get(); + wave->property_zero_color() = ARDOUR_UI::config()->canvasvar_ZeroLine.get(); wave->property_region_start() = _region->start(); wave->property_rectified() = (bool) (_flags & WaveformRectified); wave->property_logscaled() = (bool) (_flags & WaveformLogScaled); @@ -864,7 +867,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) ARDOUR_UI::config()->canvasvar_ZeroLine.get(); manage_zero_line (); } } @@ -1066,9 +1069,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() = ARDOUR_UI::config()->canvasvar_GhostTrackWave.get(); + wave->property_clip_color() = ARDOUR_UI::config()->canvasvar_GhostTrackWaveClip.get(); + wave->property_zero_color() = ARDOUR_UI::config()->canvasvar_GhostTrackZeroLine.get(); wave->property_region_start() = _region->start(); ghost->waves.push_back(wave); @@ -1121,7 +1124,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() ? ARDOUR_UI::config()->canvasvar_GainLine.get() : ARDOUR_UI::config()->canvasvar_GainLineInactive.get()); } } @@ -1148,22 +1151,9 @@ 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 cGainLineInactive: - case cGainLine: - envelope_active_changed(); - break; - - default: - break; - } + set_colors (); + envelope_active_changed(); } + diff --git a/gtk2_ardour/audio_region_view.h b/gtk2_ardour/audio_region_view.h index 761c0eafd8..2ac313fdab 100644 --- a/gtk2_ardour/audio_region_view.h +++ b/gtk2_ardour/audio_region_view.h @@ -33,7 +33,6 @@ #include "enums.h" #include "waveview.h" #include "canvas.h" -#include "color.h" namespace ARDOUR { class AudioRegion; @@ -145,7 +144,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; vector<ArdourCanvas::WaveView *> waves; diff --git a/gtk2_ardour/audio_streamview.cc b/gtk2_ardour/audio_streamview.cc index 35078804a2..d80207fad9 100644 --- a/gtk2_ardour/audio_streamview.cc +++ b/gtk2_ardour/audio_streamview.cc @@ -46,7 +46,6 @@ #include "rgb_macros.h" #include "gui_thread.h" #include "utils.h" -#include "color.h" #include "i18n.h" @@ -62,12 +61,12 @@ AudioStreamView::AudioStreamView (AudioTimeAxisView& tv) _waveform_shape = Traditional; if (tv.is_audio_track()) - stream_base_color = color_map[cAudioTrackBase]; + stream_base_color = ARDOUR_UI::config()->canvasvar_AudioTrackBase.get(); else - stream_base_color = color_map[cAudioBusBase]; + stream_base_color = ARDOUR_UI::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; @@ -526,12 +525,12 @@ AudioStreamView::setup_rec_box () switch (_trackview.audio_track()->mode()) { case Normal: xend = xstart; - fill_color = color_map[cRecordingRectFill]; + fill_color = ARDOUR_UI::config()->canvasvar_RecordingRect.get(); break; case Destructive: xend = xstart + 2; - fill_color = color_map[cRecordingRectFill]; + fill_color = ARDOUR_UI::config()->canvasvar_RecordingRect.get(); /* make the recording rect translucent to allow the user to see the peak data coming in, etc. */ @@ -544,7 +543,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() = ARDOUR_UI::config()->canvasvar_RecordingRect.get(); rec_rect->property_fill_color_rgba() = fill_color; RecBoxInfo recbox; @@ -767,25 +766,15 @@ 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; + if (_trackview.is_track()) { + canvas_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_AudioTrackBase.get(); + } - default: - break; + if (!_trackview.is_track()) { + canvas_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_AudioBusBase.get(); } + } diff --git a/gtk2_ardour/audio_streamview.h b/gtk2_ardour/audio_streamview.h index b2d538471f..d7bd4de2ef 100644 --- a/gtk2_ardour/audio_streamview.h +++ b/gtk2_ardour/audio_streamview.h @@ -28,7 +28,6 @@ #include <ardour/location.h> #include "enums.h" #include "simplerect.h" -#include "color.h" #include "streamview.h" namespace Gdk { @@ -97,7 +96,7 @@ class AudioStreamView : public StreamView void add_crossfade_weak (boost::weak_ptr<ARDOUR::Crossfade>); void remove_crossfade (boost::shared_ptr<ARDOUR::Crossfade>); - void color_handler (ColorID id, uint32_t val); + void color_handler (); double _amplitude_above_axis; diff --git a/gtk2_ardour/audio_time_axis.cc b/gtk2_ardour/audio_time_axis.cc index 8484bbceca..1d24e6e48f 100644 --- a/gtk2_ardour/audio_time_axis.cc +++ b/gtk2_ardour/audio_time_axis.cc @@ -359,7 +359,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 (ARDOUR_UI::config()->canvasvar_AutomationLine.get()); gain_track->add_line (*line); @@ -439,11 +439,9 @@ AudioTimeAxisView::update_pans () (*p)->automation()); if (p == _route->panner().begin()) { - /* first line is a nice orange */ - line->set_line_color (color_map[cLeftPanAutomationLine]); + line->set_line_color (ARDOUR_UI::config()->canvasvar_AutomationLine.get()); } else { - /* second line is a nice blue */ - line->set_line_color (color_map[cRightPanAutomationLine]); + line->set_line_color (ARDOUR_UI::config()->canvasvar_AutomationLine.get()); } pan_track->add_line (*line); diff --git a/gtk2_ardour/audio_time_axis.h b/gtk2_ardour/audio_time_axis.h index d8c3f07cc1..79dc562b3b 100644 --- a/gtk2_ardour/audio_time_axis.h +++ b/gtk2_ardour/audio_time_axis.h @@ -38,7 +38,6 @@ #include "enums.h" #include "route_time_axis.h" #include "canvas.h" -#include "color.h" namespace ARDOUR { class Session; diff --git a/gtk2_ardour/automation_line.cc b/gtk2_ardour/automation_line.cc index 67f91e1ed4..d4431ff0f2 100644 --- a/gtk2_ardour/automation_line.cc +++ b/gtk2_ardour/automation_line.cc @@ -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() = ARDOUR_UI::config()->canvasvar_ControlPointFill.get(); + item->property_outline_color_rgba() = ARDOUR_UI::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() = ARDOUR_UI::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() = ARDOUR_UI::config()->canvasvar_EnteredControlPointSelected.get(); set_visible(true); } else { - item->property_outline_color_rgba() = color_map[cEnteredControlPoint]; + item->property_outline_color_rgba() = ARDOUR_UI::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() = ARDOUR_UI::config()->canvasvar_ControlPointSelected.get(); set_visible(true); } else { - item->property_outline_color_rgba() = color_map[cControlPoint]; + item->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_ControlPoint.get(); if (hide_too) { set_visible(false); } @@ -1137,7 +1137,7 @@ AutomationLine::set_selected_points (PointSelection& points) } void AutomationLine::set_colors() { - set_line_color( color_map[cAutomationLine] ); + set_line_color( ARDOUR_UI::config()->canvasvar_AutomationLine.get() ); for (vector<ControlPoint*>::iterator i = control_points.begin(); i != control_points.end(); ++i) { (*i)->show_color (false, !points_visible); } diff --git a/gtk2_ardour/automation_time_axis.cc b/gtk2_ardour/automation_time_axis.cc index 356d4d8987..8b3727b7fa 100644 --- a/gtk2_ardour/automation_time_axis.cc +++ b/gtk2_ardour/automation_time_axis.cc @@ -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() = ARDOUR_UI::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() = ARDOUR_UI::config()->canvasvar_AutomationTrackFill.get(); + //base_rect->property_fill_color_rgba() = ARDOUR_UI::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,9 @@ AutomationTimeAxisView::set_colors () { } void -AutomationTimeAxisView::color_handler (ColorID id, uint32_t val) { - - switch (id) { - case cGhostTrackWave: - case cGhostTrackWaveClip: - case cGhostTrackZeroLine: - - case cControlPoint: - case cControlPointFill: - case cControlPointOutline: - case cAutomationLine: - set_colors (); - - break; - - default: - break; - } +AutomationTimeAxisView::color_handler () +{ + set_colors(); } diff --git a/gtk2_ardour/automation_time_axis.h b/gtk2_ardour/automation_time_axis.h index d50412c4e6..f7cfc3c7b7 100644 --- a/gtk2_ardour/automation_time_axis.h +++ b/gtk2_ardour/automation_time_axis.h @@ -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/canvas_vars.h b/gtk2_ardour/canvas_vars.h new file mode 100644 index 0000000000..10067c3a9a --- /dev/null +++ b/gtk2_ardour/canvas_vars.h @@ -0,0 +1,82 @@ +CANVAS_VARIABLE(canvasvar_WaveForm, "waveform") +CANVAS_VARIABLE(canvasvar_WaveFormClip, "clipped waveform") +CANVAS_VARIABLE(canvasvar_FrameBase, "region base") +CANVAS_VARIABLE(canvasvar_SelectedFrameBase, "selected region base") +CANVAS_VARIABLE(canvasvar_AudioTrackBase, "audio track base") +CANVAS_VARIABLE(canvasvar_AudioBusBase, "audio bus base") +CANVAS_VARIABLE(canvasvar_MidiTrackBase, "midi track base") +CANVAS_VARIABLE(canvasvar_MidiBusBase, "midi bus base") +CANVAS_VARIABLE(canvasvar_TimeStretchFill, "time-stretch-fill") +CANVAS_VARIABLE(canvasvar_TimeStretchOutline, "time-stretch-outline") +CANVAS_VARIABLE(canvasvar_AutomationLine, "automation line") +CANVAS_VARIABLE(canvasvar_RedirectAutomationLine, "processor automation line") +CANVAS_VARIABLE(canvasvar_ControlPointFill, "control point fill") +CANVAS_VARIABLE(canvasvar_ControlPointOutline, "control point outline") +CANVAS_VARIABLE(canvasvar_EnteredControlPointOutline, "entered control point outline") +CANVAS_VARIABLE(canvasvar_EnteredControlPointSelected, "entered control point selected") +CANVAS_VARIABLE(canvasvar_EnteredControlPoint, "entered control point") +CANVAS_VARIABLE(canvasvar_ControlPointSelected, "control point selected") +CANVAS_VARIABLE(canvasvar_ControlPoint, "control point") +CANVAS_VARIABLE(canvasvar_AutomationTrackFill, "automation track fill") +CANVAS_VARIABLE(canvasvar_AutomationTrackOutline, "automation track outline") +CANVAS_VARIABLE(canvasvar_CrossfadeEditorBase, "crossfade editor base") +CANVAS_VARIABLE(canvasvar_CrossfadeEditorLine, "crossfade editor line") +CANVAS_VARIABLE(canvasvar_SelectedCrossfadeEditorLine, "selected crossfade editor line") +CANVAS_VARIABLE(canvasvar_CrossfadeEditorLineShading, "crossfade editor line shading") +CANVAS_VARIABLE(canvasvar_CrossfadeEditorPointFill, "crossfade editor point fill") +CANVAS_VARIABLE(canvasvar_CrossfadeEditorPointOutline, "crossfade editor point outline") +CANVAS_VARIABLE(canvasvar_CrossfadeEditorWave, "crossfade editor wave") +CANVAS_VARIABLE(canvasvar_SelectedCrossfadeEditorWave, "selected crossfade editor wave") +CANVAS_VARIABLE(canvasvar_CrossfadeLine, "crossfade line") +CANVAS_VARIABLE(canvasvar_ActiveCrossfade, "active crossfade") +CANVAS_VARIABLE(canvasvar_InactiveCrossfade, "inactive crossfade") +CANVAS_VARIABLE(canvasvar_LocationMarker, "location marker") +CANVAS_VARIABLE(canvasvar_LocationRange, "location range") +CANVAS_VARIABLE(canvasvar_LocationCDMarker, "location cd marker") +CANVAS_VARIABLE(canvasvar_LocationLoop, "location loop") +CANVAS_VARIABLE(canvasvar_LocationPunch, "location punch") +CANVAS_VARIABLE(canvasvar_VerboseCanvasCursor, "verbose canvas cursor") +CANVAS_VARIABLE(canvasvar_MarkerLabel, "marker label") +CANVAS_VARIABLE(canvasvar_MarkerBarSeparator, "marker bar separator") +CANVAS_VARIABLE(canvasvar_TempoBar, "tempo bar") +CANVAS_VARIABLE(canvasvar_MeterBar, "meterbar") +CANVAS_VARIABLE(canvasvar_MarkerBar, "markerbar") +CANVAS_VARIABLE(canvasvar_RangeMarkerBar, "rangemarker bar") +CANVAS_VARIABLE(canvasvar_TransportMarkerBar, "TransportMarkerBar") +CANVAS_VARIABLE(canvasvar_RangeDragBarRect, "RangeDragBarRect") +CANVAS_VARIABLE(canvasvar_RangeDragRect, "RangeDragRect") +CANVAS_VARIABLE(canvasvar_TransportDragRect, "TransportDragRect") +CANVAS_VARIABLE(canvasvar_MarkerDragLine, "MarkerDragLine") +CANVAS_VARIABLE(canvasvar_TransportLoopRect, "TransportLoopRect") +CANVAS_VARIABLE(canvasvar_TransportPunchRect, "TransportPunchRect") +CANVAS_VARIABLE(canvasvar_PunchLine, "PunchLine") +CANVAS_VARIABLE(canvasvar_ZoomRect, "ZoomRect") +CANVAS_VARIABLE(canvasvar_RubberBandRect, "RubberBandRect") +CANVAS_VARIABLE(canvasvar_EnteredGainLine, "EnteredGainLine") +CANVAS_VARIABLE(canvasvar_EnteredAutomationLine, "EnteredAutomationLine") +CANVAS_VARIABLE(canvasvar_EnteredMarker, "EnteredMarker") +CANVAS_VARIABLE(canvasvar_MeterMarker, "MeterMarker") +CANVAS_VARIABLE(canvasvar_TempoMarker, "TempoMarker") +CANVAS_VARIABLE(canvasvar_MeasureLineBeat, "MeasureLineBeat") +CANVAS_VARIABLE(canvasvar_MeasureLineBar, "MeasureLineBar") +CANVAS_VARIABLE(canvasvar_GhostTrackBase, "GhostTrackBase") +CANVAS_VARIABLE(canvasvar_GhostTrackWave, "GhostTrackWave") +CANVAS_VARIABLE(canvasvar_GhostTrackWaveClip, "GhostTrackWaveClip") +CANVAS_VARIABLE(canvasvar_GhostTrackZeroLine, "GhostTrackZeroLine") +CANVAS_VARIABLE(canvasvar_ImageTrack, "ImageTrack") +CANVAS_VARIABLE(canvasvar_MarkerTrack, "MarkerTrack") +CANVAS_VARIABLE(canvasvar_ZeroLine, "ZeroLine") +CANVAS_VARIABLE(canvasvar_GainLine, "GainLine") +CANVAS_VARIABLE(canvasvar_GainLineInactive, "GainLineInactive") +CANVAS_VARIABLE(canvasvar_RecordingRect, "RecordingRect") +CANVAS_VARIABLE(canvasvar_SelectionRect, "SelectionRect") +CANVAS_VARIABLE(canvasvar_Selection, "Selection") +CANVAS_VARIABLE(canvasvar_VestigialFrame, "VestigialFrame") +CANVAS_VARIABLE(canvasvar_TimeAxisFrame, "TimeAxisFrame") +CANVAS_VARIABLE(canvasvar_NameHighlightFill, "NameHighlightFill") +CANVAS_VARIABLE(canvasvar_NameHighlightOutline, "NameHighlightOutline") +CANVAS_VARIABLE(canvasvar_FrameHandle, "FrameHandle") +CANVAS_VARIABLE(canvasvar_TrimHandleLocked, "TrimHandleLocked") +CANVAS_VARIABLE(canvasvar_TrimHandle, "TrimHandle") +CANVAS_VARIABLE(canvasvar_EditCursor, "EditCursor") +CANVAS_VARIABLE(canvasvar_PlayHead, "PlayHead") diff --git a/gtk2_ardour/color.h b/gtk2_ardour/color.h deleted file mode 100644 index 2b9324cf98..0000000000 --- a/gtk2_ardour/color.h +++ /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/color_manager.cc b/gtk2_ardour/color_manager.cc deleted file mode 100644 index ef51079180..0000000000 --- a/gtk2_ardour/color_manager.cc +++ /dev/null @@ -1,223 +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. - -*/ - -#include <cmath> -#include <iostream> -#include <fstream> -#include <errno.h> - -#include <gtkmm/stock.h> - -#include "color_manager.h" -#include "rgb_macros.h" - -#include "i18n.h" - -using namespace std; -using namespace Gtk; -using namespace PBD; - -/* 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; - -ColorManager::ColorManager() - : ArdourDialog ("ColorManager") -{ - color_list = ListStore::create (columns); - color_display.set_model (color_list); - color_display.append_column (_("Object"), columns.name); - color_display.append_column (_("Color"), columns.color); - color_display.get_column (0)->set_data (X_("colnum"), GUINT_TO_POINTER(0)); - color_display.get_column (1)->set_data (X_("colnum"), GUINT_TO_POINTER(1)); - color_display.set_reorderable (false); - color_display.get_selection()->set_mode (SELECTION_NONE); - color_display.set_headers_visible (true); - - CellRenderer* color_cell = color_display.get_column_cell_renderer (1); - TreeViewColumn* color_column = color_display.get_column (1); - color_column->add_attribute (color_cell->property_cell_background_gdk(), columns.gdkcolor); - - scroller.add (color_display); - scroller.set_policy (POLICY_NEVER, POLICY_AUTOMATIC); - - get_vbox()->pack_start (scroller); - - color_display.signal_button_press_event().connect (mem_fun (*this, &ColorManager::button_press_event), false); - - color_dialog.get_colorsel()->set_has_opacity_control (true); - color_dialog.get_colorsel()->set_has_palette (true); - - color_dialog.get_ok_button()->signal_clicked().connect (bind (mem_fun (color_dialog, &Gtk::Dialog::response), RESPONSE_ACCEPT)); - color_dialog.get_cancel_button()->signal_clicked().connect (bind (mem_fun (color_dialog, &Gtk::Dialog::response), RESPONSE_CANCEL)); - - set_size_request (-1, 400); -} - -ColorManager::~ColorManager() -{ -} - -int -ColorManager::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; - } - - 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 -ColorManager::save (string path) -{ - return 0; -} - -bool -ColorManager::button_press_event (GdkEventButton* ev) -{ - TreeIter iter; - TreeModel::Path path; - TreeViewColumn* column; - int cellx; - int celly; - - if (!color_display.get_path_at_pos ((int)ev->x, (int)ev->y, path, column, cellx, celly)) { - return false; - } - - switch (GPOINTER_TO_UINT (column->get_data (X_("colnum")))) { - case 0: - /* allow normal processing to occur */ - return false; - - case 1: /* color */ - if ((iter = color_list->get_iter (path))) { - - ColorID edit_color_id = (*iter)[columns.id]; - int r,g, b, a; - uint32_t rgba; - Gdk::Color color; - - ResponseType result = (ResponseType) color_dialog.run(); - - switch (result) { - case RESPONSE_CANCEL: - break; - case RESPONSE_ACCEPT: - color = color_dialog.get_colorsel()->get_current_color(); - a = color_dialog.get_colorsel()->get_current_alpha(); - r = (int) floor (color.get_red_p() * 255.0); - g = (int) floor (color.get_green_p() * 255.0); - b = (int) floor (color.get_blue_p() * 255.0); - - rgba = RGBA_TO_UINT(r,g,b,a); - - (*iter)[columns.rgba] = rgba; - (*iter)[columns.gdkcolor] = color; - - color_map[edit_color_id] = rgba; - - ColorChanged (edit_color_id, rgba); - break; - - default: - break; - - } - - color_dialog.hide (); - } - return true; - - default: - break; - } - - return false; -} diff --git a/gtk2_ardour/colors.h b/gtk2_ardour/colors.h deleted file mode 100644 index 51ba4861f9..0000000000 --- a/gtk2_ardour/colors.h +++ /dev/null @@ -1,128 +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(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(cTempoBar) -COLORID(cMeterBar) -COLORID(cMarkerBar) -COLORID(cRangeMarkerBar) -COLORID(cTransportMarkerBar) -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) - diff --git a/gtk2_ardour/crossfade_edit.cc b/gtk2_ardour/crossfade_edit.cc index eab26f62c3..c0ae1cc942 100644 --- a/gtk2_ardour/crossfade_edit.cc +++ b/gtk2_ardour/crossfade_edit.cc @@ -48,7 +48,6 @@ #include "canvas_impl.h" #include "simplerect.h" #include "waveview.h" -#include "color.h" using namespace std; using namespace ARDOUR; @@ -129,23 +128,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() = ARDOUR_UI::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() = ARDOUR_UI::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() = ARDOUR_UI::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() = ARDOUR_UI::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() = ARDOUR_UI::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 +453,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() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorPointFill.get(); + p->box->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorPointOutline.get(); p->box->property_outline_pixels() = 1; p->curve = fade[current].line; @@ -976,15 +975,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() = ARDOUR_UI::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() = ARDOUR_UI::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() = ARDOUR_UI::config()->canvasvar_SelectedCrossfadeEditorLine.get(); + fade[Out].line->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorLine.get(); fade[Out].shading->hide(); fade[In].shading->show(); @@ -999,15 +998,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() = ARDOUR_UI::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() = ARDOUR_UI::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() = ARDOUR_UI::config()->canvasvar_SelectedCrossfadeEditorLine.get(); + fade[In].line->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorLine.get(); fade[In].shading->hide(); fade[Out].shading->show(); @@ -1049,9 +1048,9 @@ CrossfadeEditor::make_waves (boost::shared_ptr<AudioRegion> region, WhichFade wh double spu; if (which == In) { - color = color_map[cSelectedCrossfadeEditorWave]; + color = ARDOUR_UI::config()->canvasvar_SelectedCrossfadeEditorWave.get(); } else { - color = color_map[cCrossfadeEditorWave]; + color = ARDOUR_UI::config()->canvasvar_CrossfadeEditorWave.get(); } ht = canvas->get_allocation().get_height() / (double) nchans; diff --git a/gtk2_ardour/crossfade_view.cc b/gtk2_ardour/crossfade_view.cc index c320d07638..2e442f9b43 100644 --- a/gtk2_ardour/crossfade_view.cc +++ b/gtk2_ardour/crossfade_view.cc @@ -31,6 +31,7 @@ #include "audio_region_view.h" #include "utils.h" #include "canvas_impl.h" +#include "ardour_ui.h" using namespace sigc; using namespace ARDOUR; @@ -61,11 +62,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() = ARDOUR_UI::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() = ARDOUR_UI::config()->canvasvar_CrossfadeLine.get(); fade_out->property_width_pixels() = 1; set_height (get_time_axis_view().height); @@ -84,6 +85,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 () @@ -217,15 +219,21 @@ void CrossfadeView::active_changed () { if (crossfade->active()) { - frame->property_fill_color_rgba() = color_map[cActiveCrossfade]; + frame->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_ActiveCrossfade.get(); } else { - frame->property_fill_color_rgba() = color_map[cInactiveCrossfade]; + frame->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_InactiveCrossfade.get(); } redraw_curves (); } void +CrossfadeView::color_handler () +{ + active_changed (); +} + +void CrossfadeView::set_valid (bool yn) { _valid = yn; diff --git a/gtk2_ardour/crossfade_view.h b/gtk2_ardour/crossfade_view.h index 556d8c80c5..a1f6d56f8e 100644 --- a/gtk2_ardour/crossfade_view.h +++ b/gtk2_ardour/crossfade_view.h @@ -77,6 +77,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__ */ diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index f621638bba..13fcc14796 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -311,11 +311,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 = ARDOUR_UI::config()->canvasvar_LocationMarker.get(); + location_range_color = ARDOUR_UI::config()->canvasvar_LocationRange.get(); + location_cd_marker_color = ARDOUR_UI::config()->canvasvar_LocationCDMarker.get(); + location_loop_color = ARDOUR_UI::config()->canvasvar_LocationLoop.get(); + location_punch_color = ARDOUR_UI::config()->canvasvar_LocationPunch.get(); range_marker_drag_rect = 0; marker_drag_line = 0; @@ -1649,7 +1649,7 @@ Editor::add_region_context_items (AudioStreamView* sv, boost::shared_ptr<Region> region_mute_item->set_active(); fooc.block (false); } - + items.push_back (CheckMenuElem (_("Opaque"))); region_opaque_item = static_cast<CheckMenuItem*>(&items.back()); fooc = region_opaque_item->signal_activate().connect (mem_fun(*this, &Editor::toggle_region_opaque)); @@ -1658,7 +1658,7 @@ Editor::add_region_context_items (AudioStreamView* sv, boost::shared_ptr<Region> region_opaque_item->set_active(); fooc.block (false); } - + items.push_back (CheckMenuElem (_("Original position"), mem_fun(*this, &Editor::naturalize))); if (region->at_natural_position()) { items.back().set_sensitive (false); diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 44f105865c..f15513142e 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -1851,6 +1851,7 @@ class Editor : public PublicEditor Glib::RefPtr<Gtk::Action> redo_action; void history_changed (); + void color_handler (); }; #endif /* __ardour_editor_h__ */ diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc index e175cb9c6b..45081a1bbb 100644 --- a/gtk2_ardour/editor_canvas.cc +++ b/gtk2_ardour/editor_canvas.cc @@ -126,7 +126,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]; delete font; @@ -150,34 +149,25 @@ 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_pixels() = 0; 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_pixels() = 0; 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_pixels() = 0; 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_pixels() = 0; 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_pixels() = 0; 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 (); @@ -186,24 +176,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(); @@ -214,7 +197,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); @@ -222,13 +204,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(); @@ -236,8 +215,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(); @@ -247,48 +224,22 @@ Editor::initialize_canvas () range_marker_bar->signal_event().connect (bind (mem_fun (*this, &Editor::canvas_range_marker_bar_event), range_marker_bar)); transport_marker_bar->signal_event().connect (bind (mem_fun (*this, &Editor::canvas_transport_marker_bar_event), transport_marker_bar)); - /* separator lines */ - - tempo_line = new ArdourCanvas::SimpleLine (*tempo_group, 0, timebar_height, max_canvas_coordinate, timebar_height); - tempo_line->property_color_rgba() = RGBA_TO_UINT (0,0,0,255); - - meter_line = new ArdourCanvas::SimpleLine (*meter_group, 0, timebar_height, max_canvas_coordinate, timebar_height); - meter_line->property_color_rgba() = RGBA_TO_UINT (0,0,0,255); - - marker_line = new ArdourCanvas::SimpleLine (*marker_group, 0, timebar_height, max_canvas_coordinate, timebar_height); - marker_line->property_color_rgba() = RGBA_TO_UINT (0,0,0,255); - - range_marker_line = new ArdourCanvas::SimpleLine (*range_marker_group, 0, timebar_height, max_canvas_coordinate, timebar_height); - range_marker_line->property_color_rgba() = RGBA_TO_UINT (0,0,0,255); - - transport_marker_line = new ArdourCanvas::SimpleLine (*transport_marker_group, 0, timebar_height, max_canvas_coordinate, timebar_height); - transport_marker_line->property_color_rgba() = RGBA_TO_UINT (0,0,0,255); - ZoomChanged.connect (bind (mem_fun(*this, &Editor::update_loop_range_view), false)); ZoomChanged.connect (bind (mem_fun(*this, &Editor::update_punch_range_view), false)); 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 +685,65 @@ Editor::canvas_horizontally_scrolled () redisplay_tempo (!_dragging_hscrollbar); } +void +Editor::color_handler() +{ + edit_cursor->canvas_item.property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_EditCursor.get(); + playhead_cursor->canvas_item.property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_PlayHead.get(); + verbose_canvas_cursor->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_VerboseCanvasCursor.get(); + + meter_bar->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_MeterBar.get(); + meter_bar->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_MarkerBarSeparator.get(); + + tempo_bar->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_TempoBar.get(); + tempo_bar->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_MarkerBarSeparator.get(); + + marker_bar->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_MarkerBar.get(); + marker_bar->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_MarkerBarSeparator.get(); + + range_marker_bar->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_RangeMarkerBar.get(); + range_marker_bar->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_MarkerBarSeparator.get(); + + transport_marker_bar->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_TransportMarkerBar.get(); + transport_marker_bar->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_MarkerBarSeparator.get(); + + range_bar_drag_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_RangeDragBarRect.get(); + range_bar_drag_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_RangeDragBarRect.get(); + + transport_bar_drag_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_TransportDragRect.get(); + transport_bar_drag_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_TransportDragRect.get(); + + marker_drag_line->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_MarkerDragLine.get(); + + range_marker_drag_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_RangeDragRect.get(); + range_marker_drag_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_RangeDragRect.get(); + + transport_loop_range_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_TransportLoopRect.get(); + transport_loop_range_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_TransportLoopRect.get(); + + transport_punch_range_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_TransportPunchRect.get(); + transport_punch_range_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_TransportPunchRect.get(); + + transport_punchin_line->property_color_rgba() = ARDOUR_UI::config()->canvasvar_PunchLine.get(); + transport_punchout_line->property_color_rgba() = ARDOUR_UI::config()->canvasvar_PunchLine.get(); + + zoom_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_ZoomRect.get(); + zoom_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_ZoomRect.get(); + + rubberband_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_RubberBandRect.get(); + rubberband_rect->property_fill_color_rgba() = (guint32) ARDOUR_UI::config()->canvasvar_RubberBandRect.get(); + + location_marker_color = ARDOUR_UI::config()->canvasvar_LocationMarker.get(); + location_range_color = ARDOUR_UI::config()->canvasvar_LocationRange.get(); + location_cd_marker_color = ARDOUR_UI::config()->canvasvar_LocationCDMarker.get(); + location_loop_color = ARDOUR_UI::config()->canvasvar_LocationLoop.get(); + location_punch_color = ARDOUR_UI::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 +} + + diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index 6ebb0cc74e..06b8c6fa3f 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -1130,7 +1130,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() = ARDOUR_UI::config()->canvasvar_EnteredGainLine.get(); if (is_drawable()) { track_canvas.get_window()->set_cursor (*fader_cursor); } @@ -1144,7 +1144,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() = ARDOUR_UI::config()->canvasvar_EnteredAutomationLine.get(); } if (is_drawable()) { track_canvas.get_window()->set_cursor (*fader_cursor); @@ -1230,7 +1230,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 (ARDOUR_UI::config()->canvasvar_EnteredMarker.get()); // fall through case MeterMarkerItem: case TempoMarkerItem: @@ -2217,7 +2217,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, ARDOUR_UI::config()->canvasvar_MeterMarker.get(), name, *new MeterSection(meter_marker->meter())); drag_info.item = &new_marker->the_item(); @@ -2348,7 +2348,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, ARDOUR_UI::config()->canvasvar_TempoMarker.get(), name, *new TempoSection(tempo_marker->tempo())); drag_info.item = &new_marker->the_item(); @@ -3198,7 +3198,6 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event) rv->get_canvas_group()->raise_to_top(); rv->get_time_axis_view().canvas_display->raise_to_top(); cursor_group->raise_to_top(); - rv->fake_set_opaque (true); } @@ -4050,7 +4049,7 @@ Editor::trim_motion_callback (ArdourCanvas::Item* item, GdkEvent* event) begin_reversible_command (trim_type); for (list<RegionView*>::const_iterator i = selection->regions.by_layer().begin(); i != selection->regions.by_layer().end(); ++i) { - (*i)->fake_set_opaque(false); + (*i)->fake_set_opaque(false); (*i)->region()->freeze (); AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i); diff --git a/gtk2_ardour/editor_tempodisplay.cc b/gtk2_ardour/editor_tempodisplay.cc index 339c335fa3..df16a8e47f 100644 --- a/gtk2_ardour/editor_tempodisplay.cc +++ b/gtk2_ardour/editor_tempodisplay.cc @@ -42,7 +42,7 @@ #include "tempo_dialog.h" #include "rgb_macros.h" #include "gui_thread.h" -#include "color.h" +#include "ardour_ui.h" #include "time_axis_view.h" #include "i18n.h" @@ -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, ARDOUR_UI::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, ARDOUR_UI::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 = ARDOUR_UI::config()->canvasvar_MeasureLineBar.get(); } else { - color = color_map[cMeasureLineBeat]; + color = ARDOUR_UI::config()->canvasvar_MeasureLineBeat.get(); if (beat_density > 2.0) { /* only draw beat lines if the gaps between beats are large. diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index c9ea6af242..6257e49fb9 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -83,6 +83,7 @@ GainMeter::GainMeter (boost::shared_ptr<IO> io, Session& s) ignore_toggle = false; meter_menu = 0; next_release_selects = false; + style_changed = true; gain_slider = manage (new VSliderController (slider, &gain_adjustment, @@ -202,6 +203,8 @@ GainMeter::GainMeter (boost::shared_ptr<IO> io, Session& s) ResetAllPeakDisplays.connect (mem_fun(*this, &GainMeter::reset_peak_display)); ResetGroupPeakDisplays.connect (mem_fun(*this, &GainMeter::reset_group_peak_display)); + + UI::instance()->theme_changed.connect (mem_fun(*this, &GainMeter::on_theme_changed)); } void @@ -264,9 +267,14 @@ GainMeter::render_metrics (Gtk::Widget& w) gint GainMeter::meter_metrics_expose (GdkEventExpose *ev) { + static Glib::RefPtr<Gtk::Style> meter_style; + + if (style_changed) { + meter_style = meter_metric_area.get_style(); + } Glib::RefPtr<Gdk::Window> win (meter_metric_area.get_window()); - Glib::RefPtr<Gdk::GC> fg_gc (meter_metric_area.get_style()->get_fg_gc (Gtk::STATE_NORMAL)); - Glib::RefPtr<Gdk::GC> bg_gc (meter_metric_area.get_style()->get_bg_gc (Gtk::STATE_NORMAL)); + Glib::RefPtr<Gdk::GC> fg_gc (meter_style->get_fg_gc (Gtk::STATE_NORMAL)); + Glib::RefPtr<Gdk::GC> bg_gc (meter_style->get_fg_gc (Gtk::STATE_NORMAL)); GdkRectangle base_rect; GdkRectangle draw_rect; gint width, height; @@ -281,7 +289,7 @@ GainMeter::meter_metrics_expose (GdkEventExpose *ev) Glib::RefPtr<Gdk::Pixmap> pixmap; std::map<string,Glib::RefPtr<Gdk::Pixmap> >::iterator i = metric_pixmaps.find (meter_metric_area.get_name()); - if (i == metric_pixmaps.end()) { + if (i == metric_pixmaps.end() || style_changed) { pixmap = render_metrics (meter_metric_area); } else { pixmap = i->second; @@ -289,11 +297,18 @@ GainMeter::meter_metrics_expose (GdkEventExpose *ev) gdk_rectangle_intersect (&ev->area, &base_rect, &draw_rect); win->draw_rectangle (bg_gc, true, draw_rect.x, draw_rect.y, draw_rect.width, draw_rect.height); - win->draw_drawable (bg_gc, pixmap, draw_rect.x, draw_rect.y, draw_rect.x, draw_rect.y, draw_rect.width, draw_rect.height); + win->draw_drawable (fg_gc, pixmap, draw_rect.x, draw_rect.y, draw_rect.x, draw_rect.y, draw_rect.width, draw_rect.height); + style_changed = false; return true; } +void +GainMeter::on_theme_changed() +{ + style_changed = true; +} + GainMeter::~GainMeter () { if (meter_menu) { diff --git a/gtk2_ardour/gain_meter.h b/gtk2_ardour/gain_meter.h index a24b93c034..c35cd1e299 100644 --- a/gtk2_ardour/gain_meter.h +++ b/gtk2_ardour/gain_meter.h @@ -185,6 +185,9 @@ class GainMeter : public Gtk::VBox static Glib::RefPtr<Gdk::Pixbuf> slider; static Glib::RefPtr<Gdk::Pixbuf> rail; static int setup_slider_pix (); + + void on_theme_changed (); + bool style_changed; }; #endif /* __ardour_gtk_gain_meter_h__ */ diff --git a/gtk2_ardour/ghostregion.cc b/gtk2_ardour/ghostregion.cc index 844338cd45..bf5dbe0199 100644 --- a/gtk2_ardour/ghostregion.cc +++ b/gtk2_ardour/ghostregion.cc @@ -22,6 +22,7 @@ #include "ghostregion.h" #include "automation_time_axis.h" #include "rgb_macros.h" +#include "ardour_ui.h" using namespace Editing; using namespace ArdourCanvas; @@ -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() = ARDOUR_UI::config()->canvasvar_GhostTrackBase.get(); + base_rect->property_fill_color_rgba() = ARDOUR_UI::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() = ARDOUR_UI::config()->canvasvar_GhostTrackBase.get(); + base_rect->property_fill_color_rgba() = ARDOUR_UI::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() = ARDOUR_UI::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() = ARDOUR_UI::config()->canvasvar_GhostTrackWaveClip.get(); + waves[n]->property_zero_color() = ARDOUR_UI::config()->canvasvar_GhostTrackZeroLine.get(); } } diff --git a/gtk2_ardour/imageframe_time_axis_view.cc b/gtk2_ardour/imageframe_time_axis_view.cc index 91575f3cc5..69205cd511 100644 --- a/gtk2_ardour/imageframe_time_axis_view.cc +++ b/gtk2_ardour/imageframe_time_axis_view.cc @@ -32,6 +32,7 @@ #include "public_editor.h" #include "rgb_macros.h" #include "gui_thread.h" +#include "ardour_ui.h" #include "i18n.h" @@ -52,9 +53,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 = ARDOUR_UI::config()->canvasvar_ImageTrack.get() ; - canvas_rect.property_outline_color_rgba() = color_map[cImageTrackOutline]; + canvas_rect.property_outline_color_rgba() = ARDOUR_UI::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)); diff --git a/gtk2_ardour/main.cc b/gtk2_ardour/main.cc index 501b4912c5..d40c5b257a 100644 --- a/gtk2_ardour/main.cc +++ b/gtk2_ardour/main.cc @@ -57,29 +57,6 @@ extern int curvetest (string); static ARDOUR_UI *ui = 0; -string -which_ui_rcfile () -{ - string rcfile; - char* env; - - if ((env = getenv ("ARDOUR2_UI_RC")) != 0 && strlen (env)) { - rcfile = env; - } else { - rcfile = "ardour2_ui.rc"; - } - - rcfile = find_config_file (rcfile); - - if (rcfile.empty()) { - warning << _("Without a UI style file, ardour will look strange.\n Please set ARDOUR2_UI_RC to point to a valid UI style file") << endmsg; - } else { - cerr << "Loading ui configuration file " << rcfile << endl; - } - - return rcfile; -} - gint show_ui_callback (void *arg) { @@ -252,7 +229,7 @@ int main (int argc, char *argv[]) PBD::ID::init (); try { - ui = new ARDOUR_UI (&argc, &argv, which_ui_rcfile()); + ui = new ARDOUR_UI (&argc, &argv); } catch (failed_constructor& err) { error << _("could not create ARDOUR GUI") << endmsg; exit (1); diff --git a/gtk2_ardour/marker.cc b/gtk2_ardour/marker.cc index 6bc34322f5..4065ad978b 100644 --- a/gtk2_ardour/marker.cc +++ b/gtk2_ardour/marker.cc @@ -24,6 +24,7 @@ #include "public_editor.h" #include "utils.h" #include "canvas_impl.h" +#include "ardour_ui.h" #include "i18n.h" @@ -255,7 +256,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() = "black"; + text->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_MarkerLabel.get(); editor.ZoomChanged.connect (mem_fun (*this, &Marker::reposition)); diff --git a/gtk2_ardour/marker_time_axis_view.cc b/gtk2_ardour/marker_time_axis_view.cc index f33e0bbefc..faa8fb0ead 100644 --- a/gtk2_ardour/marker_time_axis_view.cc +++ b/gtk2_ardour/marker_time_axis_view.cc @@ -31,6 +31,7 @@ #include "public_editor.h" #include "rgb_macros.h" #include "gui_thread.h" +#include "ardour_ui.h" #include "i18n.h" @@ -49,7 +50,7 @@ MarkerTimeAxisView::MarkerTimeAxisView(MarkerTimeAxis& tv) : _trackview (tv) { region_color = _trackview.color(); - stream_base_color = color_map[cMarkerTrackBase]; + stream_base_color = ARDOUR_UI::config()->canvasvar_MarkerTrack.get(); canvas_group = new ArdourCanvas::Group (*_trackview.canvas_display); @@ -58,7 +59,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() = ARDOUR_UI::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)); diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc index 7a8f9b5d6a..efd83ba60c 100644 --- a/gtk2_ardour/region_view.cc +++ b/gtk2_ardour/region_view.cc @@ -44,6 +44,7 @@ #include "utils.h" #include "rgb_macros.h" #include "gui_thread.h" +#include "ardour_ui.h" #include "i18n.h" @@ -150,7 +151,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? */ } @@ -371,7 +372,7 @@ RegionView::set_frame_color () if (_region->opaque()) { fill_opacity = 130; } else { - fill_opacity = 60; + fill_opacity = 0; } TimeAxisViewItem::set_frame_color (); @@ -383,7 +384,7 @@ RegionView::fake_set_opaque (bool yn) if (yn) { fill_opacity = 130; } else { - fill_opacity = 60; + fill_opacity = 0; } TimeAxisViewItem::set_frame_color (); diff --git a/gtk2_ardour/region_view.h b/gtk2_ardour/region_view.h index 5f114bfcbf..c0b3f3d4f5 100644 --- a/gtk2_ardour/region_view.h +++ b/gtk2_ardour/region_view.h @@ -31,7 +31,6 @@ #include "enums.h" #include "waveview.h" #include "canvas.h" -#include "color.h" class TimeAxisView; class RegionEditor; @@ -73,7 +72,7 @@ class RegionView : public TimeAxisViewItem bool set_position(nframes_t pos, void* src, double* delta = 0); void fake_set_opaque (bool yn); - + virtual void show_region_editor () = 0; virtual void hide_region_editor(); @@ -106,7 +105,7 @@ class RegionView : public TimeAxisViewItem void region_moved (void *); virtual void region_muted (); void region_locked (); - void region_opacity (); + void region_opacity (); void region_layered (); void region_renamed (); void region_sync_changed (); @@ -119,7 +118,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; diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc index dd75113f68..237a39bba3 100644 --- a/gtk2_ardour/route_time_axis.cc +++ b/gtk2_ardour/route_time_axis.cc @@ -193,7 +193,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 () @@ -594,8 +594,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() = ARDOUR_UI::config()->canvasvar_TimeStretchFill.get(); + timestretch_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_TimeStretchOutline.get(); } timestretch_rect->show (); @@ -1359,17 +1359,14 @@ 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; + if (timestretch_rect) { + timestretch_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_TimeStretchOutline.get(); + } + + if (timestretch_rect) { + timestretch_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_TimeStretchFill.get(); } } @@ -1541,7 +1538,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 (ARDOUR_UI::config()->canvasvar_RedirectAutomationLine.get()); ral->queue_reset (); ran->view->add_line (*ral); diff --git a/gtk2_ardour/route_time_axis.h b/gtk2_ardour/route_time_axis.h index cf522df789..ae425cf9b3 100644 --- a/gtk2_ardour/route_time_axis.h +++ b/gtk2_ardour/route_time_axis.h @@ -38,7 +38,6 @@ #include "enums.h" #include "time_axis_view.h" #include "canvas.h" -#include "color.h" namespace ARDOUR { class Session; @@ -199,7 +198,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*); diff --git a/gtk2_ardour/streamview.cc b/gtk2_ardour/streamview.cc index 4a454a32f5..55311135fb 100644 --- a/gtk2_ardour/streamview.cc +++ b/gtk2_ardour/streamview.cc @@ -40,7 +40,6 @@ #include "rgb_macros.h" #include "gui_thread.h" #include "utils.h" -#include "color.h" using namespace ARDOUR; using namespace PBD; @@ -77,7 +76,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 () diff --git a/gtk2_ardour/streamview.h b/gtk2_ardour/streamview.h index 4df00d84a5..f1e0ee27ca 100644 --- a/gtk2_ardour/streamview.h +++ b/gtk2_ardour/streamview.h @@ -27,7 +27,6 @@ #include "enums.h" #include "simplerect.h" #include "canvas.h" -#include "color.h" namespace Gdk { class Color; @@ -120,7 +119,7 @@ protected: virtual void playlist_changed (boost::weak_ptr<ARDOUR::Diskstream>); virtual void playlist_modified (); - virtual void color_handler (ColorID, uint32_t) = 0; + virtual void color_handler () = 0; RouteTimeAxisView& _trackview; diff --git a/gtk2_ardour/theme_manager.cc b/gtk2_ardour/theme_manager.cc new file mode 100644 index 0000000000..13e370653b --- /dev/null +++ b/gtk2_ardour/theme_manager.cc @@ -0,0 +1,248 @@ +/* + 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. + +*/ + +#include <cmath> +#include <iostream> +#include <fstream> +#include <errno.h> + +#include <gtkmm/stock.h> +#include <gtkmm2ext/gtk_ui.h> +#include <gtkmm/settings.h> + +#include "theme_manager.h" +#include "rgb_macros.h" +#include "ardour_ui.h" + +#include "i18n.h" + +using namespace std; +using namespace Gtk; +using namespace PBD; +using namespace ARDOUR; + + +sigc::signal<void> ColorsChanged; +sigc::signal<void,uint32_t> ColorChanged; + +ThemeManager::ThemeManager() + : ArdourDialog ("ThemeManager"), + dark_button ("Dark Theme"), + light_button ("Light Theme") +{ + color_list = ListStore::create (columns); + color_display.set_model (color_list); + color_display.append_column (_("Object"), columns.name); + color_display.append_column (_("Color"), columns.color); + color_display.get_column (0)->set_data (X_("colnum"), GUINT_TO_POINTER(0)); + color_display.get_column (1)->set_data (X_("colnum"), GUINT_TO_POINTER(1)); + color_display.set_reorderable (false); + color_display.get_selection()->set_mode (SELECTION_NONE); + color_display.set_headers_visible (true); + + CellRenderer* color_cell = color_display.get_column_cell_renderer (1); + TreeViewColumn* color_column = color_display.get_column (1); + color_column->add_attribute (color_cell->property_cell_background_gdk(), columns.gdkcolor); + + scroller.add (color_display); + scroller.set_policy (POLICY_NEVER, POLICY_AUTOMATIC); + + RadioButton::Group group = dark_button.get_group(); + light_button.set_group(group); + theme_selection_hbox.set_homogeneous(false); + theme_selection_hbox.pack_start (dark_button); + theme_selection_hbox.pack_start (light_button); + + get_vbox()->set_homogeneous(false); + get_vbox()->pack_start (theme_selection_hbox, PACK_SHRINK); + get_vbox()->pack_start (scroller); + + color_display.signal_button_press_event().connect (mem_fun (*this, &ThemeManager::button_press_event), false); + + color_dialog.get_colorsel()->set_has_opacity_control (true); + color_dialog.get_colorsel()->set_has_palette (true); + + color_dialog.get_ok_button()->signal_clicked().connect (bind (mem_fun (color_dialog, &Gtk::Dialog::response), RESPONSE_ACCEPT)); + color_dialog.get_cancel_button()->signal_clicked().connect (bind (mem_fun (color_dialog, &Gtk::Dialog::response), RESPONSE_CANCEL)); + dark_button.signal_toggled().connect (mem_fun (*this, &ThemeManager::on_dark_theme_button_toggled)); + light_button.signal_toggled().connect (mem_fun (*this, &ThemeManager::on_light_theme_button_toggled)); + + set_size_request (-1, 400); + setup_theme (); +} + +ThemeManager::~ThemeManager() +{ +} + +int +ThemeManager::save (string path) +{ + return 0; +} + +bool +ThemeManager::button_press_event (GdkEventButton* ev) +{ + TreeIter iter; + TreeModel::Path path; + TreeViewColumn* column; + int cellx; + int celly; + + UIConfigVariable<uint32_t> *ccvar; + + if (!color_display.get_path_at_pos ((int)ev->x, (int)ev->y, path, column, cellx, celly)) { + return false; + } + + switch (GPOINTER_TO_UINT (column->get_data (X_("colnum")))) { + case 0: + /* allow normal processing to occur */ + return false; + + case 1: /* color */ + if ((iter = color_list->get_iter (path))) { + + int r,g, b, a; + 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_previous_color (color); + color_dialog.get_colorsel()->set_current_color (color); + color_dialog.get_colorsel()->set_previous_alpha (a * 256); + color_dialog.get_colorsel()->set_current_alpha (a * 256); + + ResponseType result = (ResponseType) color_dialog.run(); + + switch (result) { + case RESPONSE_CANCEL: + break; + case RESPONSE_ACCEPT: + color = color_dialog.get_colorsel()->get_current_color(); + a = color_dialog.get_colorsel()->get_current_alpha(); + r = (int) floor (color.get_red_p() * 255.0); + g = (int) floor (color.get_green_p() * 255.0); + b = (int) floor (color.get_blue_p() * 255.0); + + rgba = RGBA_TO_UINT(r,g,b,a>>8); + //cerr << (*iter)[columns.name] << " == " << hex << rgba << endl; + //cerr << "a = " << a << endl; + (*iter)[columns.rgba] = rgba; + (*iter)[columns.gdkcolor] = color; + + ccvar = (*iter)[columns.pVar]; + ccvar->set(rgba); + + //ColorChanged (rgba); + ColorsChanged();//EMIT SIGNAL + break; + + default: + break; + + } + + color_dialog.hide (); + } + return true; + + default: + break; + } + + return false; +} + +void +load_rc_file (const string& filename, bool themechange) +{ + std::string rcfile = find_config_file(filename); + + if(!rcfile.length()) + { + warning << string_compose(_("Unable to find UI style file %1. Ardour will look strange"), rcfile) << endmsg; + return; + } + + info << "Loading ui configuration file " << rcfile << endmsg; + + Gtkmm2ext::UI::instance()->load_rcfile (rcfile, themechange); +} + +void +ThemeManager::on_dark_theme_button_toggled() +{ + if (!dark_button.get_active()) return; + + ARDOUR_UI::config()->ui_rc_file.set("ardour2_ui_dark.rc"); + load_rc_file (ARDOUR_UI::config()->ui_rc_file.get(), true); +} + +void +ThemeManager::on_light_theme_button_toggled() +{ + if (!light_button.get_active()) return; + + ARDOUR_UI::config()->ui_rc_file.set("ardour2_ui_light.rc"); + load_rc_file (ARDOUR_UI::config()->ui_rc_file.get(), true); +} + +void +ThemeManager::setup_theme () +{ + int r, g, b, a; + for (std::vector<UIConfigVariable<uint32_t> *>::iterator i = ARDOUR_UI::config()->canvas_colors.begin(); i != ARDOUR_UI::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; + + } + + ColorsChanged.emit(); + + bool env_defined = false; + string rcfile = Glib::getenv("ARDOUR2_UI_RC", env_defined); + + if(!env_defined) { + rcfile = ARDOUR_UI::config()->ui_rc_file.get(); + } + + if (rcfile == "ardour2_ui_dark.rc") { + dark_button.set_active(); + } else if (rcfile == "ardour2_ui_light.rc") { + light_button.set_active(); + } + + load_rc_file(rcfile, false); +} + diff --git a/gtk2_ardour/color_manager.h b/gtk2_ardour/theme_manager.h index b86f450e21..7ac3111b2a 100644 --- a/gtk2_ardour/color_manager.h +++ b/gtk2_ardour/theme_manager.h @@ -24,17 +24,22 @@ #include <gtkmm/liststore.h> #include <gtkmm/scrolledwindow.h> #include <gtkmm/colorselection.h> +#include <gtkmm/radiobutton.h> +#include <gtkmm/rc.h> #include "ardour_dialog.h" -#include "color.h" +#include "ui_config.h" -class ColorManager : public ArdourDialog +class ThemeManager : public ArdourDialog { public: - ColorManager(); - ~ColorManager(); + ThemeManager(); + ~ThemeManager(); - int load (std::string path); int save (std::string path); + void setup_theme (); + + void on_dark_theme_button_toggled (); + void on_light_theme_button_toggled (); private: struct ColorDisplayModelColumns : public Gtk::TreeModel::ColumnRecord { @@ -42,14 +47,14 @@ class ColorManager : 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<UIConfigVariable<uint32_t> *> pVar; Gtk::TreeModelColumn<uint32_t> rgba; }; @@ -58,10 +63,12 @@ class ColorManager : public ArdourDialog Glib::RefPtr<Gtk::ListStore> color_list; Gtk::ColorSelectionDialog color_dialog; Gtk::ScrolledWindow scroller; + Gtk::HBox theme_selection_hbox; + Gtk::RadioButton dark_button; + Gtk::RadioButton light_button; bool button_press_event (GdkEventButton*); }; - #endif /* __ardour_gtk_color_manager_h__ */ diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc index a0f4e5a868..8df4f40ca7 100644 --- a/gtk2_ardour/time_axis_view.cc +++ b/gtk2_ardour/time_axis_view.cc @@ -149,7 +149,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() @@ -784,20 +784,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() = ARDOUR_UI::config()->canvasvar_SelectionRect.get(); + rect->rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_SelectionRect.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() = ARDOUR_UI::config()->canvasvar_Selection.get(); + rect->start_trim->property_outline_color_rgba() = ARDOUR_UI::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() = ARDOUR_UI::config()->canvasvar_Selection.get(); + rect->end_trim->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_Selection.get(); free_selection_rects.push_front (rect); @@ -1053,23 +1053,30 @@ 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() = ARDOUR_UI::config()->canvasvar_SelectionRect.get(); + (*i)->rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_Selection.get(); + + (*i)->start_trim->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_Selection.get(); + (*i)->start_trim->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_Selection.get(); + + (*i)->end_trim->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_Selection.get(); + (*i)->end_trim->property_outline_color_rgba() = ARDOUR_UI::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() = ARDOUR_UI::config()->canvasvar_SelectionRect.get(); + (*i)->rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_Selection.get(); + + (*i)->start_trim->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_Selection.get(); + (*i)->start_trim->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_Selection.get(); + + (*i)->end_trim->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_Selection.get(); + (*i)->end_trim->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_Selection.get(); } } diff --git a/gtk2_ardour/time_axis_view.h b/gtk2_ardour/time_axis_view.h index 9299562324..2c45325679 100644 --- a/gtk2_ardour/time_axis_view.h +++ b/gtk2_ardour/time_axis_view.h @@ -40,7 +40,6 @@ #include "enums.h" #include "editing.h" #include "canvas.h" -#include "color.h" namespace ARDOUR { class Session; @@ -321,7 +320,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 */ diff --git a/gtk2_ardour/time_axis_view_item.cc b/gtk2_ardour/time_axis_view_item.cc index b178d1c0f4..7b74030403 100644 --- a/gtk2_ardour/time_axis_view_item.cc +++ b/gtk2_ardour/time_axis_view_item.cc @@ -32,6 +32,7 @@ #include "utils.h" #include "canvas_impl.h" #include "rgb_macros.h" +#include "ardour_ui.h" #include "i18n.h" @@ -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; + fill_opacity = 0; 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() = ARDOUR_UI::config()->canvasvar_VestigialFrame.get(); + vestigial_frame->property_fill_color_rgba() = ARDOUR_UI::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() = ARDOUR_UI::config()->canvasvar_TimeAxisFrame.get(); + frame->property_fill_color_rgba() = ARDOUR_UI::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() = ARDOUR_UI::config()->canvasvar_NameHighlightFill.get(); + name_highlight->property_fill_color_rgba() = ARDOUR_UI::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() = ARDOUR_UI::config()->canvasvar_FrameHandle.get(); + frame_handle_start->property_fill_color_rgba() = ARDOUR_UI::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() = ARDOUR_UI::config()->canvasvar_FrameHandle.get(); + frame_handle_end->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_FrameHandle.get(); } else { frame_handle_start = 0; @@ -794,11 +795,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(ARDOUR_UI::config()->canvasvar_SelectedFrameBase.get(), &r, &g, &b, &a); + frame->property_fill_color_rgba() = RGBA_TO_UINT(r, g, b, fill_opacity ? fill_opacity : a);// Lets still use the theme's opacity value if Opaque is not set } 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(ARDOUR_UI::config()->canvasvar_FrameBase.get(), &r, &g, &b, &a); + frame->property_fill_color_rgba() = RGBA_TO_UINT(r, g, b, fill_opacity ? fill_opacity : a); } } } @@ -812,11 +813,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() = ARDOUR_UI::config()->canvasvar_TrimHandleLocked.get(); + frame_handle_end->property_fill_color_rgba() = ARDOUR_UI::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() = ARDOUR_UI::config()->canvasvar_TrimHandle.get(); + frame_handle_end->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_TrimHandle.get(); } } } diff --git a/gtk2_ardour/time_axis_view_item.h b/gtk2_ardour/time_axis_view_item.h index dd78eaa78e..beab5d0b22 100644 --- a/gtk2_ardour/time_axis_view_item.h +++ b/gtk2_ardour/time_axis_view_item.h @@ -435,8 +435,7 @@ class TimeAxisViewItem : public Selectable */ bool show_vestigial; - - uint32_t fill_opacity; + uint32_t fill_opacity; uint32_t fill_color ; uint32_t frame_color_r ; uint32_t frame_color_g ; diff --git a/gtk2_ardour/ui_config.cc b/gtk2_ardour/ui_config.cc new file mode 100644 index 0000000000..910f3808c6 --- /dev/null +++ b/gtk2_ardour/ui_config.cc @@ -0,0 +1,221 @@ +/* + Copyright (C) 1999-2006 Paul Davis + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#include <unistd.h> +#include <cstdio> /* for snprintf, grrr */ + +#include <pbd/failed_constructor.h> +#include <pbd/xml++.h> +#include <pbd/error.h> + +#include <ardour/ardour.h> + +#include "ui_config.h" + +#include "i18n.h" + +using namespace std; +using namespace PBD; +using namespace ARDOUR; + +UIConfiguration::UIConfiguration () + : +#undef UI_CONFIG_VARIABLE +#undef CANVAS_VARIABLE +#define UI_CONFIG_VARIABLE(Type,var,name,val) var (name,val), +#define CANVAS_VARIABLE(var,name) var (name), +#include "ui_config_vars.h" +#include "canvas_vars.h" +#undef UI_CONFIG_VARIABLE +#undef CANVAS_VARIABLE + hack(true) +{ + load_state(); +} + +UIConfiguration::~UIConfiguration () +{ +} + +int +UIConfiguration::load_state () +{ + bool found = false; + + std::string rcfile = find_config_file ("ardour2_ui_default.conf"); + + if (rcfile.length()) + { + XMLTree tree; + found = true; + + cerr << string_compose (_("loading default ui configuration file %1"), rcfile) << endl; + + if (!tree.read (rcfile.c_str())) { + error << string_compose(_("Ardour: cannot read default ui configuration file \"%1\""), rcfile) << endmsg; + return -1; + } + + if (set_state (*tree.root())) { + error << string_compose(_("Ardour: default ui configuration file \"%1\" not loaded successfully."), rcfile) << endmsg; + return -1; + } + } + + rcfile = find_config_file ("ardour2_ui.conf"); + + if (rcfile.length()) + { + XMLTree tree; + found = true; + + cerr << string_compose (_("loading user ui configuration file %1"), rcfile) << endl; + + if (!tree.read (rcfile)) { + error << string_compose(_("Ardour: cannot read ui configuration file \"%1\""), rcfile) << endmsg; + return -1; + } + + if (set_state (*tree.root())) { + error << string_compose(_("Ardour: user ui configuration file \"%1\" not loaded successfully."), rcfile) << endmsg; + return -1; + } + } + + if (!found) + error << "Ardour: could not find any ui configuration file, canvas will look broken." << endmsg; + + pack_canvasvars(); + return 0; +} + +int +UIConfiguration::save_state() +{ + XMLTree tree; + string rcfile; + + rcfile = get_user_ardour_path (); + rcfile += "ardour2_ui.conf"; + + if (rcfile.length()) { + tree.set_root (&get_state()); + if (!tree.write (rcfile.c_str())){ + error << string_compose (_("UI config file %1 not saved"), rcfile) << endmsg; + return -1; + } + } + + return 0; +} + +XMLNode& +UIConfiguration::get_state () +{ + XMLNode* root; + LocaleGuard lg (X_("POSIX")); + + root = new XMLNode("Ardour"); + + root->add_child_nocopy (get_variables ("UI")); + root->add_child_nocopy (get_variables ("Canvas")); + + if (_extra_xml) { + root->add_child_copy (*_extra_xml); + } + + return *root; +} + +XMLNode& +UIConfiguration::get_variables (std::string which_node) +{ + XMLNode* node; + LocaleGuard lg (X_("POSIX")); + + node = new XMLNode(which_node); + +#undef UI_CONFIG_VARIABLE +#undef CANVAS_VARIABLE +#define UI_CONFIG_VARIABLE(Type,var,Name,value) if (node->name() == "UI") { var.add_to_node (*node); } +#define CANVAS_VARIABLE(var,Name) if (node->name() == "Canvas") { var.add_to_node (*node); } +#include "ui_config_vars.h" +#include "canvas_vars.h" +#undef UI_CONFIG_VARIABLE +#undef CANVAS_VARIABLE + + return *node; +} + +int +UIConfiguration::set_state (const XMLNode& root) +{ + if (root.name() != "Ardour") { + return -1; + } + + XMLNodeList nlist = root.children(); + XMLNodeConstIterator niter; + XMLNode *node; + + for (niter = nlist.begin(); niter != nlist.end(); ++niter) { + + node = *niter; + if (node->name() == "Canvas" || node->name() == "UI") { + set_variables (*node); + + } else if (node->name() == "extra") { + _extra_xml = new XMLNode (*node); + + } + } + return 0; +} + +void +UIConfiguration::set_variables (const XMLNode& node) +{ +#undef UI_CONFIG_VARIABLE +#undef CANVAS_VARIABLE +#define UI_CONFIG_VARIABLE(Type,var,name,val) \ + if (var.set_from_node (node)) { \ + ParameterChanged (name); \ + } +#define CANVAS_VARIABLE(var,name) \ + if (var.set_from_node (node)) { \ + ParameterChanged (name); \ + } +#include "ui_config_vars.h" +#include "canvas_vars.h" +#undef UI_CONFIG_VARIABLE +#undef CANVAS_VARIABLE +} + +void +UIConfiguration::pack_canvasvars () +{ +#undef CANVAS_VARIABLE +#define CANVAS_VARIABLE(var,name) canvas_colors.push_back(&var); +#include "canvas_vars.h" +#undef CANVAS_VARIABLE + cerr << "Configuration::pack_canvasvars () called, canvas_colors.size() = " << canvas_colors.size() << endl; + +} + + diff --git a/gtk2_ardour/ui_config.h b/gtk2_ardour/ui_config.h new file mode 100644 index 0000000000..f6bb5c12a3 --- /dev/null +++ b/gtk2_ardour/ui_config.h @@ -0,0 +1,137 @@ +/* + 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 __ardour_ui_configuration_h__ +#define __ardour_ui_configuration_h__ + +#include <sstream> +#include <ostream> +#include <iostream> + +#include <pbd/stateful.h> +#include <pbd/xml++.h> + +using namespace PBD; + +template<class T> +class UIConfigVariable +{ + public: + UIConfigVariable (std::string str) : _name (str) {} + UIConfigVariable (std::string str, T val) : _name (str), value(val) {} + + std::string name() const { return _name; } + + bool set (T val) { + if (val == value) { + return false; + } + value = val; + return true; + } + + T get() const { + return value; + } + + void add_to_node (XMLNode& node) { + std::stringstream ss; + ss << std::hex; + ss.fill('0'); + ss.width(8); + ss << value; + XMLNode* child = new XMLNode ("Option"); + child->add_property ("name", _name); + child->add_property ("value", ss.str()); + node.add_child_nocopy (*child); + } + + bool set_from_node (const XMLNode& node) { + + const XMLProperty* prop; + XMLNodeList nlist; + XMLNodeConstIterator niter; + XMLNode* child; + + nlist = node.children(); + + for (niter = nlist.begin(); niter != nlist.end(); ++niter) { + + child = *niter; + + if (child->name() == "Option") { + if ((prop = child->property ("name")) != 0) { + if (prop->value() == _name) { + if ((prop = child->property ("value")) != 0) { + std::stringstream ss; + ss << std::hex; + ss << prop->value(); + ss >> value; + + return true; + } + } + } + } + } + return false; + } + + protected: + T get_for_save() { return value; } + std::string _name; + T value; + +}; + +class UIConfiguration : public Stateful +{ + public: + UIConfiguration(); + ~UIConfiguration(); + + std::vector<UIConfigVariable<uint32_t> *> canvas_colors; + + int load_state (); + int save_state (); + + int set_state (const XMLNode&); + XMLNode& get_state (void); + XMLNode& get_variables (std::string); + void set_variables (const XMLNode&); + void pack_canvasvars (); + + sigc::signal<void,const char*> ParameterChanged; + +#undef UI_CONFIG_VARIABLE +#undef CANVAS_VARIABLE +#define UI_CONFIG_VARIABLE(Type,var,name,val) UIConfigVariable<Type> var; +#define CANVAS_VARIABLE(var,name) UIConfigVariable<uint32_t> var; +#include "ui_config_vars.h" +#include "canvas_vars.h" +#undef UI_CONFIG_VARIABLE +#undef CANVAS_VARIABLE + + private: + XMLNode& state (); + bool hack; +}; + +#endif /* __ardour_ui_configuration_h__ */ + diff --git a/gtk2_ardour/ui_config_vars.h b/gtk2_ardour/ui_config_vars.h new file mode 100644 index 0000000000..ccae71b94b --- /dev/null +++ b/gtk2_ardour/ui_config_vars.h @@ -0,0 +1,2 @@ +UI_CONFIG_VARIABLE(std::string, ui_rc_file, "ui-rc-file", "ardour2_ui_dark.rc") + |