#include <gtkmm/stock.h>
#include <gtkmm2ext/gtk_ui.h>
+#include <gtkmm2ext/window_title.h>
#include <gtkmm/settings.h>
-#include <pbd/file_utils.h>
+#include "pbd/file_utils.h"
-#include <ardour/configuration.h>
-#include <ardour/filesystem_paths.h>
+#include "ardour/configuration.h"
+#include "ardour/filesystem_paths.h"
+#include "ardour/profile.h"
#include "theme_manager.h"
#include "rgb_macros.h"
ThemeManager::ThemeManager()
: ArdourDialog ("ThemeManager"),
- dark_button ("Dark Theme"),
- light_button ("Light Theme")
+ dark_button ("Dark theme"),
+ light_button ("Light theme"),
+ reset_button ("Restore Defaults")
{
+ Gtkmm2ext::WindowTitle title (Glib::get_application_name ());
+ title += _("Theme Manager");
+ set_title (title.get_string ());
+
color_list = ListStore::create (columns);
color_display.set_model (color_list);
color_display.append_column (_("Object"), columns.name);
get_vbox()->set_homogeneous(false);
get_vbox()->pack_start (theme_selection_hbox, PACK_SHRINK);
+ get_vbox()->pack_start (reset_button, 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_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));
+ reset_button.signal_clicked().connect (mem_fun (*this, &ThemeManager::reset_canvas_colors));
set_size_request (-1, 400);
setup_theme ();
spath += user_config_directory();
spath += system_config_search_path();
- if(!find_file_in_search_path (spath, filename, rc_file_path))
- {
- warning << string_compose(_("Unable to find UI style file %1 in search path %2. Ardour will look strange"),
- filename, spath.get_string())
- << endmsg;
+ if (!find_file_in_search_path (spath, filename, rc_file_path)) {
+ warning << string_compose(
+ _("Unable to find UI style file %1 in search path %2. Ardour will look strange"),
+ filename, spath.to_string())
+ << endmsg;
return;
}
- info << "Loading ui configuration file " << rc_file_path.to_string() << endmsg;
+ cerr << "Loading ui configuration file " << rc_file_path.to_string() << endmsg;
Gtkmm2ext::UI::instance()->load_rcfile (rc_file_path.to_string(), themechange);
}
+/* hmm, this is a problem. the profile doesn't
+ exist when the theme manager is constructed
+ and toggles buttons during "normal" GTK setup.
+
+ a better solution will be to make all Profile
+ methods static or something.
+
+ XXX FIX ME
+*/
+
+#define HACK_PROFILE_IS_SAE() (getenv("ARDOUR_SAE")!=0)
+
void
ThemeManager::on_dark_theme_button_toggled()
{
if (!dark_button.get_active()) return;
- ARDOUR_UI::config()->ui_rc_file.set("ardour2_ui_dark.rc");
+ if (HACK_PROFILE_IS_SAE()){
+ ARDOUR_UI::config()->ui_rc_file.set("ardour3_ui_dark_sae.rc");
+ } else {
+ ARDOUR_UI::config()->ui_rc_file.set("ardour3_ui_dark.rc");
+ }
+
load_rc_file (ARDOUR_UI::config()->ui_rc_file.get(), true);
}
{
if (!light_button.get_active()) return;
- ARDOUR_UI::config()->ui_rc_file.set("ardour2_ui_light.rc");
+ if (HACK_PROFILE_IS_SAE()){
+ ARDOUR_UI::config()->ui_rc_file.set("ardour3_ui_light_sae.rc");
+ } else {
+ ARDOUR_UI::config()->ui_rc_file.set("ardour3_ui_light.rc");
+ }
+
load_rc_file (ARDOUR_UI::config()->ui_rc_file.get(), true);
}
ThemeManager::setup_theme ()
{
int r, g, b, a;
+ color_list->clear();
+
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());
ColorsChanged.emit();
bool env_defined = false;
- string rcfile = Glib::getenv("ARDOUR2_UI_RC", env_defined);
+ string rcfile = Glib::getenv("ARDOUR3_UI_RC", env_defined);
if(!env_defined) {
rcfile = ARDOUR_UI::config()->ui_rc_file.get();
}
- if (rcfile == "ardour2_ui_dark.rc") {
+ if (rcfile == "ardour3_ui_dark.rc" || rcfile == "ardour3_ui_dark_sae.rc") {
dark_button.set_active();
- } else if (rcfile == "ardour2_ui_light.rc") {
+ } else if (rcfile == "ardour3_ui_light.rc" || "ardour3_ui_light_sae.rc") {
light_button.set_active();
}
load_rc_file(rcfile, false);
}
+void
+ThemeManager::reset_canvas_colors()
+{
+ ARDOUR_UI::config()->load_defaults();
+ setup_theme ();
+}
+