diff --git a/src/gui.cpp b/src/gui.cpp index 72fc238..e83f8dc 100644 --- a/src/gui.cpp +++ b/src/gui.cpp @@ -6,58 +6,40 @@ #include "gui.h" #include "config.h" -Gui::Gui() +Glib::RefPtr g_builder; + +Gui::Gui(BaseObjectType *cobject, const Glib::RefPtr &builder) + : Gtk::Window(cobject), + m_scrolledwindow(NULL) { - set_title("JACK Sweeper"); - set_border_width(0); - set_size_request(100, 100); + builder->get_widget("scrolledwindow1", m_scrolledwindow); - add(m_box); + if (m_scrolledwindow != NULL) { + m_scrolledwindow->add(m_matrix); + } - m_scrolledwindow.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); - m_scrolledwindow.set_border_width(0); - - m_scrolledwindow.add(m_matrix); m_matrix.parent = this; Refresh(); Glib::signal_idle().connect(sigc::mem_fun(*this, &Gui::on_idle)); - - m_actiongroup = Gtk::ActionGroup::create(); - m_actiongroup->add(Gtk::Action::create("MenuFile", "_File")); - m_actiongroup->add(Gtk::Action::create("Connect", "Connect")); - m_actiongroup->add(Gtk::Action::create("Disconnect", "Disconnect")); - m_actiongroup->add(Gtk::Action::create("Quit", Gtk::Stock::QUIT)); - - m_uimanager = Gtk::UIManager::create(); - m_uimanager->insert_action_group(m_actiongroup); - add_accel_group(m_uimanager->get_accel_group()); - - std::string ui_info = - "" - " " - " " - " " - " " - " " - " " - " " - " " - ""; - m_uimanager->add_ui_from_string(ui_info); - - Gtk::Widget *menubar = m_uimanager->get_widget("/MenuBar"); - m_box.pack_start(*menubar, Gtk::PACK_SHRINK); - m_box.pack_start(m_scrolledwindow); - - show_all_children(); } Gui::~Gui() { } +Gui *Gui::Open() +{ + if (g_builder == NULL) { + g_builder = Gtk::Builder::create_from_file("jsweeper.ui"); + } + + Gui *window = NULL; + g_builder->get_widget_derived("window1", window); + return window; +} + void Gui::Refresh() { m_matrix.Refresh(); diff --git a/src/gui.h b/src/gui.h index 88d8b92..e68c924 100644 --- a/src/gui.h +++ b/src/gui.h @@ -4,17 +4,18 @@ #include #include "matrix.h" +extern Glib::RefPtr g_builder; + class Gui : public Gtk::Window { private: - Glib::RefPtr m_actiongroup; - Glib::RefPtr m_uimanager; - Gtk::ScrolledWindow m_scrolledwindow; - Gtk::VBox m_box; + Gtk::ScrolledWindow *m_scrolledwindow; Matrix m_matrix; public: - Gui(); + Gui(BaseObjectType *cobject, const Glib::RefPtr &builder); + + static Gui *Open(); virtual ~Gui(); void Refresh(); diff --git a/src/jsweeper.cpp b/src/jsweeper.cpp index ad058e4..2190b42 100644 --- a/src/jsweeper.cpp +++ b/src/jsweeper.cpp @@ -17,7 +17,7 @@ int main(int argc, char **argv) jack.Connect(); - Gui *g = new Gui(); + Gui *g = Gui::Open(); kit.run(*g); delete g; diff --git a/src/jsweeper.glade b/src/jsweeper.glade new file mode 100644 index 0000000..fecf362 --- /dev/null +++ b/src/jsweeper.glade @@ -0,0 +1,1341 @@ + + + + + + JACK Sweeper + + + True + + + True + + + True + _File + True + + + True + + + True + gtk-quit + True + True + + + + + + + + + True + _Session + True + + + True + + + True + gtk-open + True + True + + + + + True + gtk-save + True + True + + + + + True + gtk-save-as + True + True + + + + + True + + + + + True + gtk-close + True + True + + + + + + + + + True + _Edit + True + + + True + + + True + gtk-preferences + True + True + + + + + + + + + True + _JACK + True + + + True + + + True + gtk-connect + True + True + + + + + True + gtk-disconnect + True + True + + + + + + + + + True + _Help + True + + + True + + + True + gtk-about + True + True + + + + + + + + + False + + + + + True + True + + + True + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + + + + + + False + + + + + True + Audio + + + tab + False + + + + + + + + True + MIDI + + + tab + 1 + False + + + + + 1 + + + + + True + 2 + + + False + 2 + + + + + + + 5 + JACK Sweeper Preferences + GTK_WIN_POS_CENTER_ON_PARENT + GDK_WINDOW_TYPE_HINT_DIALOG + False + + + True + 2 + + + True + True + 5 + + + True + 12 + 18 + + + True + 6 + + + True + 0 + <b>Grid behaviour</b> + True + + + False + + + + + True + + + True + + + + False + + + + + True + 6 + + + True + True + Use separate pane for MIDI ports + 0 + True + + + + + True + True + Expand new client tabs + 0 + True + + + 1 + + + + + True + True + Expand new port group tabs + 0 + True + + + 2 + + + + + 1 + + + + + 1 + + + + + False + + + + + True + 6 + + + True + 0 + <b>Sessions</b> + True + + + False + + + + + True + + + True + + + + False + + + + + True + 6 + + + True + True + Use default session location (~/.local/share/jsweeper) + 0 + True + + + + + True + + + True + + + + False + + + + + True + 6 + + + True + 0 + Custom location: + + + False + + + + + True + GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + False + 1 + + + + + + + True + JACK + + + tab + False + + + + + True + 12 + 18 + + + True + 6 + + + True + 0 + <b>Connections</b> + True + + + False + + + + + True + + + True + + + + False + + + + + True + 6 + + + True + True + Activate automatic connections + 0 + True + + + + + True + 12 + + + True + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + + + True + True + + + + + + + True + 6 + + + True + True + True + gtk-add + True + 0 + + + + + True + True + True + gtk-remove + True + 0 + + + 1 + + + + + True + True + True + gtk-edit + True + 0 + + + 2 + + + + + True + True + True + gtk-go-up + True + 0 + + + False + 3 + + + + + True + True + True + gtk-go-down + True + 0 + + + False + 4 + + + + + False + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + False + + + + + True + 6 + + + True + 0 + <b>Aliases</b> + True + + + False + + + + + True + + + True + + + + False + + + + + True + 6 + + + True + True + Activate automatic aliases + 0 + True + + + + + True + 12 + + + True + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + + + True + True + + + + + + + True + 6 + + + True + True + True + gtk-add + True + 0 + + + + + True + True + True + gtk-remove + True + 0 + + + 1 + + + + + True + True + True + gtk-edit + True + 0 + + + 2 + + + + + True + True + True + gtk-go-up + True + 0 + + + False + 3 + + + + + True + True + True + gtk-go-down + True + 0 + + + False + 4 + + + + + False + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + False + 1 + + + + + 1 + + + + + True + Connections and Aliases + + + tab + 1 + False + + + + + True + 12 + 18 + + + True + 6 + + + True + 0 + <b>Grid layout</b> + True + + + False + False + + + + + True + + + True + + + + False + + + + + True + 2 + 2 + 6 + 6 + + + True + 0 + Font: + + + GTK_FILL + + + + + True + True + True + 0 + + + 1 + 2 + + + + + True + 0 + Cell padding: + + + 1 + 2 + GTK_FILL + + + + + True + True + 0 0 100 1 10 10 + + + 1 + 2 + 1 + 2 + + + + + 1 + + + + + 1 + + + + + False + + + + + True + 6 + + + True + 0 + <b>Colours</b> + True + + + False + False + + + + + True + + + True + + + + False + + + + + True + 4 + 2 + 6 + 6 + + + True + 0 + Background: + + + GTK_FILL + + + + + True + 0 + Client tabs: + + + 1 + 2 + GTK_FILL + + + + + True + 0 + Port group tabs: + + + 2 + 3 + GTK_FILL + + + + + True + 0 + Port tabs: + + + 3 + 4 + GTK_FILL + + + + + True + True + True + 0 + #000000000000 + + + 1 + 2 + + + + + + True + True + True + 0 + #000000000000 + + + 1 + 2 + 1 + 2 + GTK_EXPAND + + + + + True + True + True + 0 + #000000000000 + + + 1 + 2 + 2 + 3 + GTK_EXPAND + + + + + True + True + True + 0 + #000000000000 + + + 1 + 2 + 3 + 4 + GTK_EXPAND + + + + + 1 + + + + + 1 + + + + + False + 1 + + + + + 2 + + + + + True + Appearance + + + tab + 2 + False + + + + + 1 + + + + + True + GTK_BUTTONBOX_END + + + True + True + True + gtk-close + True + 0 + + + + + False + GTK_PACK_END + + + + + + + 5 + About JACK Sweeper + False + GTK_WIN_POS_CENTER_ON_PARENT + GDK_WINDOW_TYPE_HINT_DIALOG + False + JACK Sweeper + 1.0 + Copyright © 2009 Peter Nelson + This software is licensed under the GNU General Public License version 2. Please see the included file GPL-2 for full license terms. + + + True + + + True + 2 + + + + + + True + GTK_BUTTONBOX_END + + + False + GTK_PACK_END + + + + + + + 5 + Add Connection Rule + False + GTK_WIN_POS_CENTER_ON_PARENT + GDK_WINDOW_TYPE_HINT_DIALOG + False + + + True + 2 + + + True + 5 + 3 + 2 + 6 + 6 + + + True + True + + + 1 + 2 + 1 + 2 + + + + + True + True + + + 1 + 2 + + + + + True + 0 + _Destination match rule: + True + True + + + 1 + 2 + GTK_FILL + + + + + True + 0 + _Source match rule: + True + True + + + GTK_FILL + + + + + True + True + Stop after matching rule + 0 + True + + + 2 + 2 + 3 + + + + + False + 1 + + + + + True + GTK_BUTTONBOX_END + + + True + True + True + gtk-cancel + True + 0 + + + + + True + True + True + gtk-ok + True + 0 + + + 1 + + + + + False + GTK_PACK_END + + + + + + + 5 + Add Alias Rule + False + GTK_WIN_POS_CENTER_ON_PARENT + GDK_WINDOW_TYPE_HINT_DIALOG + False + + + True + 2 + + + True + 5 + 3 + 2 + 6 + 6 + + + True + True + + + 1 + 2 + 1 + 2 + + + + + True + True + + + 1 + 2 + + + + + True + 0 + _Replace rule: + True + True + + + 1 + 2 + GTK_FILL + + + + + True + 0 + _Match rule: + True + True + + + GTK_FILL + + + + + True + True + Stop after matching rule + 0 + True + + + 2 + 2 + 3 + + + + + False + 1 + + + + + True + GTK_BUTTONBOX_END + + + True + True + True + gtk-cancel + True + 0 + + + + + True + True + True + gtk-ok + True + 0 + + + 1 + + + + + False + GTK_PACK_END + + + + + + diff --git a/src/matrix.cpp b/src/matrix.cpp index a51983a..ff54c87 100644 --- a/src/matrix.cpp +++ b/src/matrix.cpp @@ -283,7 +283,7 @@ void Matrix::Refresh() m_height = h; set_size_request(w, h); - parent->set_size_request(w + 20, h + 20); +// parent->set_size_request(w + 20, h + 20); } void Matrix::Box(Cairo::RefPtr cr, float r, float g, float b, Rect &rect)