summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/canvas_vars.h81
-rw-r--r--gtk2_ardour/ui_config.cc11
-rw-r--r--gtk2_ardour/ui_config.h8
-rw-r--r--gtk2_ardour/utils.cc12
-rw-r--r--gtk2_ardour/utils.h1
5 files changed, 72 insertions, 41 deletions
diff --git a/gtk2_ardour/canvas_vars.h b/gtk2_ardour/canvas_vars.h
index 3b39f33a10..f939ee5d44 100644
--- a/gtk2_ardour/canvas_vars.h
+++ b/gtk2_ardour/canvas_vars.h
@@ -255,45 +255,44 @@ CLOCK_VARS(PunchClock, "punch clock")
CLOCK_VARS(SelectionClock, "selection clock")
CLOCK_VARS(NudgeClock, "nudge clock")
CLOCK_VARS(GenericClock, "clock")
-
-CANVAS_STRING_VARIABLE(canvasvar_SmallFont, "small font")
-CANVAS_STRING_VARIABLE(canvasvar_SmallerFont, "smaller font")
-CANVAS_STRING_VARIABLE(canvasvar_NormalFont, "normal font")
-CANVAS_STRING_VARIABLE(canvasvar_BigFont, "big font")
-CANVAS_STRING_VARIABLE(canvasvar_LargeFont, "large font")
-CANVAS_STRING_VARIABLE(canvasvar_LargerFont, "larger font")
-CANVAS_STRING_VARIABLE(canvasvar_HugerFont, "huger font")
-CANVAS_STRING_VARIABLE(canvasvar_MassiveFont, "massive font")
-CANVAS_STRING_VARIABLE(canvasvar_SmallBoldFont, "small bold font")
-CANVAS_STRING_VARIABLE(canvasvar_SmallerBoldFont, "smaller bold font")
-CANVAS_STRING_VARIABLE(canvasvar_NormalBoldFont, "normal bold font")
-CANVAS_STRING_VARIABLE(canvasvar_BigBoldFont, "big bold font")
-CANVAS_STRING_VARIABLE(canvasvar_LargeBoldFont, "large bold font")
-CANVAS_STRING_VARIABLE(canvasvar_LargerBoldFont, "larger bold font")
-CANVAS_STRING_VARIABLE(canvasvar_HugerBoldFont, "huger bold font")
-CANVAS_STRING_VARIABLE(canvasvar_MassiveBoldFont, "massive bold font")
-CANVAS_STRING_VARIABLE(canvasvar_SmallItalicFont, "small italic font")
-CANVAS_STRING_VARIABLE(canvasvar_SmallerItalicFont, "smaller italic font")
-CANVAS_STRING_VARIABLE(canvasvar_NormalItalicFont, "normal italic font")
-CANVAS_STRING_VARIABLE(canvasvar_BigItalicFont, "big italic font")
-CANVAS_STRING_VARIABLE(canvasvar_LargeItalicFont, "large italic font")
-CANVAS_STRING_VARIABLE(canvasvar_LargerItalicFont, "larger italic font")
-CANVAS_STRING_VARIABLE(canvasvar_HugerItalicFont, "huger italic font")
-CANVAS_STRING_VARIABLE(canvasvar_MassiveItalicFont, "massive italic font")
-CANVAS_STRING_VARIABLE(canvasvar_SmallMonospaceFont, "small monospace font")
-CANVAS_STRING_VARIABLE(canvasvar_SmallerMonospaceFont, "smaller monospace font")
-CANVAS_STRING_VARIABLE(canvasvar_NormalMonospaceFont, "normal monospace font")
-CANVAS_STRING_VARIABLE(canvasvar_BigMonospaceFont, "big monospace font")
-CANVAS_STRING_VARIABLE(canvasvar_LargeMonospaceFont, "large monospace font")
-CANVAS_STRING_VARIABLE(canvasvar_LargerMonospaceFont, "larger monospace font")
-CANVAS_STRING_VARIABLE(canvasvar_HugerMonospaceFont, "huger monospace font")
-CANVAS_STRING_VARIABLE(canvasvar_MassiveMonospaceFont, "massive monospace font")
-CANVAS_STRING_VARIABLE(canvasvar_SmallBoldMonospaceFont, "small bold monospace font")
-CANVAS_STRING_VARIABLE(canvasvar_SmallerBoldMonospaceFont, "smaller bold monospace font")
-CANVAS_STRING_VARIABLE(canvasvar_NormalBoldMonospaceFont, "normal bold monospace font")
-CANVAS_STRING_VARIABLE(canvasvar_BigBoldMonospaceFont, "big bold monospace font")
-CANVAS_STRING_VARIABLE(canvasvar_LargeBoldMonospaceFont, "large bold monospace font")
-CANVAS_STRING_VARIABLE(canvasvar_LargerBoldMonospaceFont, "larger bold monospace font")
-CANVAS_STRING_VARIABLE(canvasvar_HugerBoldMonospaceFont, "huger bold monospace font")
-CANVAS_STRING_VARIABLE(canvasvar_MassiveBoldMonospaceFont, "massive bold monospace font")
+CANVAS_FONT_VARIABLE(canvasvar_SmallFont, "small font")
+CANVAS_FONT_VARIABLE(canvasvar_SmallerFont, "smaller font")
+CANVAS_FONT_VARIABLE(canvasvar_NormalFont, "normal font")
+CANVAS_FONT_VARIABLE(canvasvar_BigFont, "big font")
+CANVAS_FONT_VARIABLE(canvasvar_LargeFont, "large font")
+CANVAS_FONT_VARIABLE(canvasvar_LargerFont, "larger font")
+CANVAS_FONT_VARIABLE(canvasvar_HugerFont, "huger font")
+CANVAS_FONT_VARIABLE(canvasvar_MassiveFont, "massive font")
+CANVAS_FONT_VARIABLE(canvasvar_SmallBoldFont, "small bold font")
+CANVAS_FONT_VARIABLE(canvasvar_SmallerBoldFont, "smaller bold font")
+CANVAS_FONT_VARIABLE(canvasvar_NormalBoldFont, "normal bold font")
+CANVAS_FONT_VARIABLE(canvasvar_BigBoldFont, "big bold font")
+CANVAS_FONT_VARIABLE(canvasvar_LargeBoldFont, "large bold font")
+CANVAS_FONT_VARIABLE(canvasvar_LargerBoldFont, "larger bold font")
+CANVAS_FONT_VARIABLE(canvasvar_HugerBoldFont, "huger bold font")
+CANVAS_FONT_VARIABLE(canvasvar_MassiveBoldFont, "massive bold font")
+CANVAS_FONT_VARIABLE(canvasvar_SmallItalicFont, "small italic font")
+CANVAS_FONT_VARIABLE(canvasvar_SmallerItalicFont, "smaller italic font")
+CANVAS_FONT_VARIABLE(canvasvar_NormalItalicFont, "normal italic font")
+CANVAS_FONT_VARIABLE(canvasvar_BigItalicFont, "big italic font")
+CANVAS_FONT_VARIABLE(canvasvar_LargeItalicFont, "large italic font")
+CANVAS_FONT_VARIABLE(canvasvar_LargerItalicFont, "larger italic font")
+CANVAS_FONT_VARIABLE(canvasvar_HugerItalicFont, "huger italic font")
+CANVAS_FONT_VARIABLE(canvasvar_MassiveItalicFont, "massive italic font")
+CANVAS_FONT_VARIABLE(canvasvar_SmallMonospaceFont, "small monospace font")
+CANVAS_FONT_VARIABLE(canvasvar_SmallerMonospaceFont, "smaller monospace font")
+CANVAS_FONT_VARIABLE(canvasvar_NormalMonospaceFont, "normal monospace font")
+CANVAS_FONT_VARIABLE(canvasvar_BigMonospaceFont, "big monospace font")
+CANVAS_FONT_VARIABLE(canvasvar_LargeMonospaceFont, "large monospace font")
+CANVAS_FONT_VARIABLE(canvasvar_LargerMonospaceFont, "larger monospace font")
+CANVAS_FONT_VARIABLE(canvasvar_HugerMonospaceFont, "huger monospace font")
+CANVAS_FONT_VARIABLE(canvasvar_MassiveMonospaceFont, "massive monospace font")
+CANVAS_FONT_VARIABLE(canvasvar_SmallBoldMonospaceFont, "small bold monospace font")
+CANVAS_FONT_VARIABLE(canvasvar_SmallerBoldMonospaceFont, "smaller bold monospace font")
+CANVAS_FONT_VARIABLE(canvasvar_NormalBoldMonospaceFont, "normal bold monospace font")
+CANVAS_FONT_VARIABLE(canvasvar_BigBoldMonospaceFont, "big bold monospace font")
+CANVAS_FONT_VARIABLE(canvasvar_LargeBoldMonospaceFont, "large bold monospace font")
+CANVAS_FONT_VARIABLE(canvasvar_LargerBoldMonospaceFont, "larger bold monospace font")
+CANVAS_FONT_VARIABLE(canvasvar_HugerBoldMonospaceFont, "huger bold monospace font")
+CANVAS_FONT_VARIABLE(canvasvar_MassiveBoldMonospaceFont, "massive bold monospace font")
diff --git a/gtk2_ardour/ui_config.cc b/gtk2_ardour/ui_config.cc
index 342adb294f..3666a280c9 100644
--- a/gtk2_ardour/ui_config.cc
+++ b/gtk2_ardour/ui_config.cc
@@ -47,11 +47,13 @@ UIConfiguration::UIConfiguration ()
#define UI_CONFIG_VARIABLE(Type,var,name,val) var (name,val),
#define CANVAS_VARIABLE(var,name) var (name),
#define CANVAS_STRING_VARIABLE(var,name) var (name),
+#define CANVAS_FONT_VARIABLE(var,name) var (name),
#include "ui_config_vars.h"
#include "canvas_vars.h"
#undef UI_CONFIG_VARIABLE
#undef CANVAS_VARIABLE
#undef CANVAS_STRING_VARIABLE
+#undef CANVAS_FONT_VARIABLE
_dirty (false)
{
load_state();
@@ -218,11 +220,13 @@ UIConfiguration::get_variables (std::string which_node)
#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); }
#define CANVAS_STRING_VARIABLE(var,Name) if (node->name() == "Canvas") { var.add_to_node (*node); }
+#define CANVAS_FONT_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
#undef CANVAS_STRING_VARIABLE
+#undef CANVAS_FONT_VARIABLE
return *node;
}
@@ -270,11 +274,16 @@ UIConfiguration::set_variables (const XMLNode& node)
if (var.set_from_node (node)) { \
ParameterChanged (name); \
}
+#define CANVAS_FONT_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
#undef CANVAS_STRING_VARIABLE
+#undef CANVAS_FONT_VARIABLE
}
void
@@ -283,9 +292,11 @@ UIConfiguration::pack_canvasvars ()
#undef CANVAS_VARIABLE
#define CANVAS_VARIABLE(var,name) canvas_colors.insert (std::pair<std::string,ColorVariable<uint32_t>* >(name,&var));
#define CANVAS_STRING_VARIABLE(var,name)
+#define CANVAS_FONT_VARIABLE(var,name)
#include "canvas_vars.h"
#undef CANVAS_VARIABLE
#undef CANVAS_STRING_VARIABLE
+#undef CANVAS_FONT_VARIABLE
}
uint32_t
diff --git a/gtk2_ardour/ui_config.h b/gtk2_ardour/ui_config.h
index ec9e1ad940..a5bba2c87c 100644
--- a/gtk2_ardour/ui_config.h
+++ b/gtk2_ardour/ui_config.h
@@ -28,6 +28,8 @@
#include "pbd/xml++.h"
#include "ardour/configuration_variable.h"
+#include "utils.h"
+
/* This is very similar to ARDOUR::ConfigVariable but expects numeric values to
* be in hexadecimal. This is because it is intended for use with color
* specifications which are easier to scan for issues in "rrggbbaa" format than
@@ -113,9 +115,13 @@ class UIConfiguration : public PBD::Stateful
#define CANVAS_STRING_VARIABLE(var,name) \
std::string get_##var () const { return var.get(); } \
bool set_##var (const std::string& val) { bool ret = var.set (val); if (ret) { ParameterChanged (name); } return ret; }
+#define CANVAS_FONT_VARIABLE(var,name) \
+ Pango::FontDescription get_##var () const { return sanitized_font (var.get()); } \
+ bool set_##var (const std::string& val) { bool ret = var.set (val); if (ret) { ParameterChanged (name); } return ret; }
#include "canvas_vars.h"
#undef CANVAS_VARIABLE
#undef CANVAS_STRING_VARIABLE
+#undef CANVAS_FONT_VARIABLE
private:
@@ -129,9 +135,11 @@ class UIConfiguration : public PBD::Stateful
#undef CANVAS_VARIABLE
#define CANVAS_VARIABLE(var,name) ColorVariable<uint32_t> var;
#define CANVAS_STRING_VARIABLE(var,name) ARDOUR::ConfigVariable<std::string> var;
+#define CANVAS_FONT_VARIABLE(var,name) ARDOUR::ConfigVariable<std::string> var;
#include "canvas_vars.h"
#undef CANVAS_VARIABLE
#undef CANVAS_STRING_VARIABLE
+#undef CANVAS_FONT_VARIABLE
XMLNode& state ();
bool _dirty;
diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc
index facbe92db5..104005e21a 100644
--- a/gtk2_ardour/utils.cc
+++ b/gtk2_ardour/utils.cc
@@ -207,6 +207,18 @@ xpm2rgba (const char** xpm, uint32_t& w, uint32_t& h)
}
Pango::FontDescription
+sanitized_font (std::string const& name)
+{
+ Pango::FontDescription fd (name);
+
+ if (fd.get_family().empty()) {
+ fd.set_family ("Sans");
+ }
+
+ return fd;
+}
+
+Pango::FontDescription
get_font_for_style (string widgetname)
{
Gtk::Window window (WINDOW_TOPLEVEL);
diff --git a/gtk2_ardour/utils.h b/gtk2_ardour/utils.h
index 63b6ef08ae..4ff563080a 100644
--- a/gtk2_ardour/utils.h
+++ b/gtk2_ardour/utils.h
@@ -57,6 +57,7 @@ unsigned char* xpm2rgba (const char** xpm, uint32_t& w, uint32_t& h);
ArdourCanvas::Points* get_canvas_points (std::string who, uint32_t npoints);
+Pango::FontDescription sanitized_font (std::string const&);
Pango::FontDescription get_font_for_style (std::string widgetname);
uint32_t rgba_from_style (std::string, uint32_t, uint32_t, uint32_t, uint32_t, std::string = "fg", int = Gtk::STATE_NORMAL, bool = true);