summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-11-27 17:33:31 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2016-02-22 15:31:25 -0500
commite268a9d2aae5012d494680d851abe1415c2063c6 (patch)
tree54af03df19ea911f022522fbabcdc2939bbb9f7b
parent30b065f6efcd3ecdbee10aef2e01eae55dcf8e8c (diff)
fix inheritance/class design to get both SessionOptionEditor and RCOptionEditor to work correctly
-rw-r--r--gtk2_ardour/ardour_ui.h2
-rw-r--r--gtk2_ardour/option_editor.cc23
-rw-r--r--gtk2_ardour/option_editor.h27
-rw-r--r--gtk2_ardour/rc_option_editor.cc2
-rw-r--r--gtk2_ardour/rc_option_editor.h2
-rw-r--r--gtk2_ardour/session_option_editor.cc2
-rw-r--r--gtk2_ardour/session_option_editor.h2
7 files changed, 46 insertions, 14 deletions
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index df98c27765..2d76d7eaad 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -121,7 +121,7 @@ class ArdourPrompter;
class PublicEditor;
class SaveAsDialog;
class SessionDialog;
-class SessionOptionEditor;
+class SessionOptionEditorWindow;
class ShuttleControl;
class Splash;
class TimeInfoBox;
diff --git a/gtk2_ardour/option_editor.cc b/gtk2_ardour/option_editor.cc
index 103aa89a12..e5746584d9 100644
--- a/gtk2_ardour/option_editor.cc
+++ b/gtk2_ardour/option_editor.cc
@@ -474,15 +474,11 @@ OptionEditor::OptionEditor (PBD::Configuration* c, std::string const & t)
{
using namespace Notebook_Helpers;
- set_border_width (4);
-
- pack_start (_notebook, true, true);
_notebook.set_show_tabs (true);
_notebook.set_show_border (true);
_notebook.set_name ("OptionsNotebook");
- show_all ();
/* Watch out for changes to parameters */
_config->ParameterChanged.connect (config_connection, invalidator (*this), boost::bind (&OptionEditor::parameter_changed, this, _1), gui_context());
@@ -591,3 +587,22 @@ DirectoryOption::selection_changed ()
{
_set (poor_mans_glob(_file_chooser.get_filename ()));
}
+
+/*--------------------------*/
+
+OptionEditorContainer::OptionEditorContainer (PBD::Configuration* c, string const& str)
+ : OptionEditor (c, str)
+{
+ set_border_width (4);
+ pack_start (notebook(), true, true);
+ show_all ();
+}
+
+OptionEditorWindow::OptionEditorWindow (PBD::Configuration* c, string const& str)
+ : OptionEditor (c, str)
+{
+ container.set_border_width (4);
+ container.pack_start (notebook(), true, true);
+ container.show_all ();
+ add (container);
+}
diff --git a/gtk2_ardour/option_editor.h b/gtk2_ardour/option_editor.h
index 0823d16630..51cdc0131f 100644
--- a/gtk2_ardour/option_editor.h
+++ b/gtk2_ardour/option_editor.h
@@ -25,7 +25,10 @@
#include <gtkmm/comboboxtext.h>
#include <gtkmm/spinbutton.h>
#include <gtkmm/table.h>
+#include <gtkmm/window.h>
+
#include "gtkmm2ext/slider_controller.h"
+
#include "ardour_window.h"
#include "audio_clock.h"
#include "ardour/types.h"
@@ -680,7 +683,7 @@ public:
};
/** The OptionEditor dialog base class */
-class OptionEditor : public Gtk::VBox, public ARDOUR::SessionHandlePtr
+class OptionEditor : public ARDOUR::SessionHandlePtr, virtual public sigc::trackable
{
public:
OptionEditor (PBD::Configuration *, std::string const &);
@@ -692,19 +695,33 @@ public:
void set_current_page (std::string const &);
protected:
-
virtual void parameter_changed (std::string const &);
PBD::Configuration* _config;
+ Gtk::Notebook& notebook() { return _notebook; }
private:
-
PBD::ScopedConnection config_connection;
-
Gtk::Notebook _notebook;
std::map<std::string, OptionEditorPage*> _pages;
};
-#endif /* __gtk_ardour_option_editor_h__ */
+/** The OptionEditor dialog-as-container base class */
+class OptionEditorContainer : public OptionEditor, public Gtk::VBox
+{
+public:
+ OptionEditorContainer (PBD::Configuration *, std::string const &);
+ ~OptionEditorContainer() {}
+};
+/** The OptionEditor dialog-as-container base class */
+class OptionEditorWindow : public OptionEditor, public Gtk::Window
+{
+public:
+ OptionEditorWindow (PBD::Configuration *, std::string const &);
+ ~OptionEditorWindow() {}
+private:
+ Gtk::VBox container;
+};
+#endif /* __gtk_ardour_option_editor_h__ */
diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc
index c828a7074c..60e1ea2083 100644
--- a/gtk2_ardour/rc_option_editor.cc
+++ b/gtk2_ardour/rc_option_editor.cc
@@ -1720,7 +1720,7 @@ private:
RCOptionEditor::RCOptionEditor ()
- : OptionEditor (Config, string_compose (_("%1 Preferences"), PROGRAM_NAME))
+ : OptionEditorContainer (Config, string_compose (_("%1 Preferences"), PROGRAM_NAME))
, Tabbable (*this, _("Preferences")) /* pack self-as-vbox into tabbable */
, _rc_config (Config)
, _mixer_strip_visibility ("mixer-element-visibility")
diff --git a/gtk2_ardour/rc_option_editor.h b/gtk2_ardour/rc_option_editor.h
index 0252d23478..fe47fbbcd6 100644
--- a/gtk2_ardour/rc_option_editor.h
+++ b/gtk2_ardour/rc_option_editor.h
@@ -34,7 +34,7 @@
*/
/** Editor for options which are obtained from and written back to one of the .rc files. */
-class RCOptionEditor : public OptionEditor, public Gtkmm2ext::Tabbable
+class RCOptionEditor : public OptionEditorContainer, public Gtkmm2ext::Tabbable
{
public:
RCOptionEditor ();
diff --git a/gtk2_ardour/session_option_editor.cc b/gtk2_ardour/session_option_editor.cc
index fa02278752..6c33e1ca7c 100644
--- a/gtk2_ardour/session_option_editor.cc
+++ b/gtk2_ardour/session_option_editor.cc
@@ -29,7 +29,7 @@ using namespace ARDOUR;
using namespace Timecode;
SessionOptionEditor::SessionOptionEditor (Session* s)
- : OptionEditor (&(s->config), _("Session Properties"))
+ : OptionEditorWindow (&(s->config), _("Session Properties"))
, _session_config (&(s->config))
{
set_session (s);
diff --git a/gtk2_ardour/session_option_editor.h b/gtk2_ardour/session_option_editor.h
index 425ec3707b..759f28ff18 100644
--- a/gtk2_ardour/session_option_editor.h
+++ b/gtk2_ardour/session_option_editor.h
@@ -27,7 +27,7 @@ namespace ARDOUR {
class SessionConfiguration;
}
-class SessionOptionEditor : public OptionEditor
+class SessionOptionEditor : public OptionEditorWindow
{
public:
SessionOptionEditor (ARDOUR::Session* s);