diff options
author | David Robillard <d@drobilla.net> | 2011-05-20 03:27:08 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2011-05-20 03:27:08 +0000 |
commit | e86465f6b554033be89e7e0a0b8c50fd1105c80a (patch) | |
tree | 420700bdd5d63ffb2972e05ea558186ed0f6a7b1 | |
parent | 4735eba0accf93893930abaf0a117e6bad77e0d0 (diff) | |
download | machina-e86465f6b554033be89e7e0a0b8c50fd1105c80a.tar.gz machina-e86465f6b554033be89e7e0a0b8c50fd1105c80a.tar.bz2 machina-e86465f6b554033be89e7e0a0b8c50fd1105c80a.zip |
Remove dependency on glade and glademm (migrate to GtkBuilder).
git-svn-id: http://svn.drobilla.net/lad/trunk/machina@3295 a436a847-0d15-0410-975c-d299462d15a1
-rw-r--r-- | src/gui/MachinaGUI.cpp | 5 | ||||
-rw-r--r-- | src/gui/NodePropertiesWindow.cpp | 7 | ||||
-rw-r--r-- | src/gui/NodePropertiesWindow.hpp | 12 | ||||
-rw-r--r-- | src/gui/WidgetFactory.hpp (renamed from src/gui/GladeXml.hpp) | 27 | ||||
-rw-r--r-- | src/gui/machina.ui (renamed from src/gui/machina.glade) | 550 | ||||
-rw-r--r-- | src/gui/wscript | 2 | ||||
-rw-r--r-- | wscript | 6 |
7 files changed, 299 insertions, 310 deletions
diff --git a/src/gui/MachinaGUI.cpp b/src/gui/MachinaGUI.cpp index d4c4841..779bcfc 100644 --- a/src/gui/MachinaGUI.cpp +++ b/src/gui/MachinaGUI.cpp @@ -23,7 +23,6 @@ #include <limits.h> #include <pthread.h> #include <libgnomecanvasmm.h> -#include <libglademm/xml.h> #include "sord/sordmm.hpp" #include "machina/Controller.hpp" #include "machina/Engine.hpp" @@ -31,7 +30,7 @@ #include "machina/Mutation.hpp" #include "machina/Updates.hpp" #include "client/ClientModel.hpp" -#include "GladeXml.hpp" +#include "WidgetFactory.hpp" #include "MachinaGUI.hpp" #include "MachinaCanvas.hpp" #include "NodeView.hpp" @@ -54,7 +53,7 @@ MachinaGUI::MachinaGUI(SharedPtr<Machina::Engine> engine) { _canvas = boost::shared_ptr<MachinaCanvas>(new MachinaCanvas(this, 1600*2, 1200*2)); - Glib::RefPtr<Gnome::Glade::Xml> xml = GladeXml::create(); + Glib::RefPtr<Gtk::Builder> xml = WidgetFactory::create(); xml->get_widget("machina_win", _main_window); xml->get_widget("about_win", _about_window); diff --git a/src/gui/NodePropertiesWindow.cpp b/src/gui/NodePropertiesWindow.cpp index 2a16899..90e1269 100644 --- a/src/gui/NodePropertiesWindow.cpp +++ b/src/gui/NodePropertiesWindow.cpp @@ -17,14 +17,15 @@ #include <string> #include "NodePropertiesWindow.hpp" -#include "GladeXml.hpp" +#include "WidgetFactory.hpp" using namespace std; using namespace Machina; NodePropertiesWindow* NodePropertiesWindow::_instance = NULL; -NodePropertiesWindow::NodePropertiesWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml) +NodePropertiesWindow::NodePropertiesWindow(BaseObjectType* cobject, + const Glib::RefPtr<Gtk::Builder>& xml) : Gtk::Dialog(cobject) { property_visible() = false; @@ -108,7 +109,7 @@ void NodePropertiesWindow::present(Gtk::Window* parent, SharedPtr<Machina::Client::ClientObject> node) { if (!_instance) { - Glib::RefPtr<Gnome::Glade::Xml> xml = GladeXml::create(); + Glib::RefPtr<Gtk::Builder> xml = WidgetFactory::create(); xml->get_widget_derived("node_properties_dialog", _instance); diff --git a/src/gui/NodePropertiesWindow.hpp b/src/gui/NodePropertiesWindow.hpp index 0651d01..2b61d03 100644 --- a/src/gui/NodePropertiesWindow.hpp +++ b/src/gui/NodePropertiesWindow.hpp @@ -20,8 +20,6 @@ #include <gtkmm.h> -#include <libglademm/xml.h> - #include "raul/SharedPtr.hpp" namespace Machina { namespace Client { class ClientObject; } } @@ -29,13 +27,15 @@ namespace Machina { namespace Client { class ClientObject; } } class NodePropertiesWindow : public Gtk::Dialog { public: - static void present(Gtk::Window* parent, SharedPtr<Machina::Client::ClientObject> node); + NodePropertiesWindow(BaseObjectType* cobject, + const Glib::RefPtr<Gtk::Builder>& xml); -private: - friend class Gnome::Glade::Xml; - NodePropertiesWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& glade_xml); ~NodePropertiesWindow(); + static void present(Gtk::Window* parent, + SharedPtr<Machina::Client::ClientObject> node); + +private: void set_node(SharedPtr<Machina::Client::ClientObject> node); void apply_clicked(); diff --git a/src/gui/GladeXml.hpp b/src/gui/WidgetFactory.hpp index a889693..79d7412 100644 --- a/src/gui/GladeXml.hpp +++ b/src/gui/WidgetFactory.hpp @@ -20,27 +20,26 @@ #include <string> #include <gtkmm.h> -#include <libglademm/xml.h> #include "machina-config.h" -class GladeXml +class WidgetFactory { public: - static Glib::RefPtr<Gnome::Glade::Xml> create() { - Glib::RefPtr<Gnome::Glade::Xml> xml; + static Glib::RefPtr<Gtk::Builder> create() { + Glib::RefPtr<Gtk::Builder> xml; - // Check for the .glade file in current directory - std::string glade_filename = "./machina.glade"; - std::ifstream fs(glade_filename.c_str()); - if (fs.fail()) { // didn't find it, check PKGDATADIR + // Check for the .ui file in current directory + std::string ui_filename = "./machina.ui"; + std::ifstream fs(ui_filename.c_str()); + if (fs.fail()) { // didn't find it, check MACHINA_DATA_DIR fs.clear(); - glade_filename = MACHINA_DATA_DIR; - glade_filename += "/machina.glade"; + ui_filename = MACHINA_DATA_DIR; + ui_filename += "/machina.ui"; - fs.open(glade_filename.c_str()); + fs.open(ui_filename.c_str()); if (fs.fail()) { - std::cerr << "Unable to find machina.glade in current directory or " + std::cerr << "Unable to find machina.ui in current directory or " << MACHINA_DATA_DIR << "." << std::endl; exit(EXIT_FAILURE); } @@ -48,8 +47,8 @@ public: } try { - xml = Gnome::Glade::Xml::create(glade_filename); - } catch(const Gnome::Glade::XmlError& ex) { + xml = Gtk::Builder::create_from_file(ui_filename); + } catch(const Gtk::BuilderError& ex) { std::cerr << ex.what() << std::endl; throw ex; } diff --git a/src/gui/machina.glade b/src/gui/machina.ui index 4cfc5a7..61e7d95 100644 --- a/src/gui/machina.glade +++ b/src/gui/machina.ui @@ -1,640 +1,608 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> -<!--*- mode: xml -*--> -<glade-interface> - <widget class="GtkWindow" id="machina_win"> +<?xml version="1.0"?> +<interface> + <!-- interface-requires gtk+ 2.10 --> + <!-- interface-naming-policy toplevel-contextual --> + <object class="GtkWindow" id="machina_win"> <property name="border_width">1</property> <property name="title" translatable="yes">Machina</property> <property name="default_width">640</property> <property name="default_height">480</property> <property name="icon">machina.svg</property> <child> - <widget class="GtkVBox" id="main_vbox"> + <object class="GtkVBox" id="main_vbox"> <property name="visible">True</property> <child> - <widget class="GtkMenuBar" id="menubar"> + <object class="GtkMenuBar" id="menubar"> <property name="visible">True</property> <child> - <widget class="GtkMenuItem" id="file_menu"> + <object class="GtkMenuItem" id="file_menu"> <property name="visible">True</property> <property name="label" translatable="yes">_File</property> <property name="use_underline">True</property> - <child> - <widget class="GtkMenu" id="file_menu_menu"> + <child type="submenu"> + <object class="GtkMenu" id="file_menu_menu"> <child> - <widget class="GtkImageMenuItem" id="open_menuitem"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Open a saved machine</property> + <object class="GtkImageMenuItem" id="open_menuitem"> <property name="label">gtk-open</property> + <property name="visible">True</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_open_session_menuitem_activate"/> - </widget> + </object> </child> <child> - <widget class="GtkImageMenuItem" id="save_menuitem"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Save machine</property> + <object class="GtkImageMenuItem" id="save_menuitem"> <property name="label">gtk-save</property> + <property name="visible">True</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_save_session_menuitem_activate"/> - </widget> + </object> </child> <child> - <widget class="GtkImageMenuItem" id="save_as_menuitem"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Save machine to file</property> + <object class="GtkImageMenuItem" id="save_as_menuitem"> <property name="label">gtk-save-as</property> + <property name="visible">True</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_save_session_as_menuitem_activate"/> - </widget> + </object> </child> <child> - <widget class="GtkSeparatorMenuItem" id="separator5"> + <object class="GtkSeparatorMenuItem" id="separator5"> <property name="visible">True</property> - </widget> + </object> </child> <child> - <widget class="GtkImageMenuItem" id="import_midi_menuitem"> + <object class="GtkImageMenuItem" id="import_midi_menuitem"> + <property name="label">_Import MIDI...</property> <property name="visible">True</property> - <property name="tooltip" translatable="yes">Import a MIDI file</property> - <property name="label" translatable="yes">_Import MIDI...</property> <property name="use_underline">True</property> + <property name="use_stock">True</property> + <accelerator key="I" signal="activate" modifiers="GDK_CONTROL_MASK"/> <signal name="activate" handler="on_learn_midi_menuitem_activate"/> - <accelerator key="I" modifiers="GDK_CONTROL_MASK" signal="activate"/> - <child internal-child="image"> - <widget class="GtkImage" id="image26"> - <property name="visible">True</property> - <property name="stock">gtk-media-record</property> - <property name="icon_size">1</property> - </widget> - </child> - </widget> + </object> </child> <child> - <widget class="GtkImageMenuItem" id="export_midi_menuitem"> + <object class="GtkImageMenuItem" id="export_midi_menuitem"> + <property name="label">_Export MIDI...</property> <property name="visible">True</property> - <property name="tooltip" translatable="yes">Export a MIDI file</property> - <property name="label" translatable="yes">_Export MIDI...</property> <property name="use_underline">True</property> + <property name="use_stock">True</property> + <accelerator key="E" signal="activate" modifiers="GDK_CONTROL_MASK"/> <signal name="activate" handler="on_export_midi_menuitem_activate"/> - <accelerator key="E" modifiers="GDK_CONTROL_MASK" signal="activate"/> - <child internal-child="image"> - <widget class="GtkImage" id="image27"> - <property name="visible">True</property> - <property name="stock">gtk-convert</property> - <property name="icon_size">1</property> - </widget> - </child> - </widget> + </object> </child> <child> - <widget class="GtkSeparatorMenuItem" id="separator7"> + <object class="GtkSeparatorMenuItem" id="separator7"> <property name="visible">True</property> - </widget> + </object> </child> <child> - <widget class="GtkImageMenuItem" id="export_graphviz_menuitem"> + <object class="GtkImageMenuItem" id="export_graphviz_menuitem"> + <property name="label">Export _GraphViz...</property> <property name="visible">True</property> - <property name="tooltip" translatable="yes">Export a DOT file for rendering with GraphViz</property> - <property name="label" translatable="yes">Export _GraphViz...</property> <property name="use_underline">True</property> + <property name="use_stock">True</property> + <accelerator key="G" signal="activate" modifiers="GDK_CONTROL_MASK"/> <signal name="activate" handler="on_export_graphviz_menuitem_activate"/> - <accelerator key="G" modifiers="GDK_CONTROL_MASK" signal="activate"/> - <child internal-child="image"> - <widget class="GtkImage" id="image28"> - <property name="visible">True</property> - <property name="stock">gtk-convert</property> - <property name="icon_size">1</property> - </widget> - </child> - </widget> + </object> </child> <child> - <widget class="GtkSeparatorMenuItem" id="separator6"> + <object class="GtkSeparatorMenuItem" id="separator6"> <property name="visible">True</property> - </widget> + </object> </child> <child> - <widget class="GtkImageMenuItem" id="quit_menuitem"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Exit Machina</property> + <object class="GtkImageMenuItem" id="quit_menuitem"> <property name="label">gtk-quit</property> + <property name="visible">True</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_quit1_activate"/> - </widget> + </object> </child> - </widget> + </object> </child> - </widget> + </object> </child> <child> - <widget class="GtkMenuItem" id="view_menu"> + <object class="GtkMenuItem" id="view_menu"> <property name="visible">True</property> <property name="label" translatable="yes">_View</property> <property name="use_underline">True</property> - <child> - <widget class="GtkMenu" id="view_menu_menu"> + <child type="submenu"> + <object class="GtkMenu" id="view_menu_menu"> <child> - <widget class="GtkCheckMenuItem" id="view_time_edges_menuitem"> + <object class="GtkCheckMenuItem" id="view_time_edges_menuitem"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="tooltip" translatable="yes">Lay out the graph with edge length corresponding to tail node duration</property> <property name="label" translatable="yes">_Time Based Edges</property> <property name="use_underline">True</property> - </widget> + </object> </child> <child> - <widget class="GtkCheckMenuItem" id="view_labels_menuitem"> + <object class="GtkCheckMenuItem" id="view_labels_menuitem"> <property name="visible">True</property> - <property name="tooltip" translatable="yes">Show labels on canvas</property> <property name="label" translatable="yes">_Labels</property> <property name="use_underline">True</property> + <accelerator key="L" signal="activate" modifiers="GDK_CONTROL_MASK"/> <signal name="activate" handler="on_view_edge_labels_menuitem_activate"/> - <accelerator key="L" modifiers="GDK_CONTROL_MASK" signal="activate"/> - </widget> + </object> </child> <child> - <widget class="GtkCheckMenuItem" id="view_toolbar_menuitem"> + <object class="GtkCheckMenuItem" id="view_toolbar_menuitem"> <property name="visible">True</property> <property name="label" translatable="yes">_Toolbar</property> <property name="use_underline">True</property> <property name="active">True</property> + <accelerator key="T" signal="activate" modifiers="GDK_CONTROL_MASK"/> <signal name="activate" handler="on_toolbar2_activate"/> - <accelerator key="T" modifiers="GDK_CONTROL_MASK" signal="activate"/> - </widget> + </object> </child> - </widget> + </object> </child> - </widget> + </object> </child> <child> - <widget class="GtkMenuItem" id="help_menu"> + <object class="GtkMenuItem" id="help_menu"> <property name="visible">True</property> <property name="label" translatable="yes">_Help</property> <property name="use_underline">True</property> - <child> - <widget class="GtkMenu" id="help_menu_menu"> + <child type="submenu"> + <object class="GtkMenu" id="help_menu_menu"> <child> - <widget class="GtkImageMenuItem" id="help_help_menuitem"> - <property name="visible">True</property> + <object class="GtkImageMenuItem" id="help_help_menuitem"> <property name="label">gtk-help</property> + <property name="visible">True</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_help_about_menuitem_activate"/> - </widget> + </object> </child> <child> - <widget class="GtkImageMenuItem" id="help_about_menuitem"> - <property name="visible">True</property> + <object class="GtkImageMenuItem" id="help_about_menuitem"> <property name="label">gtk-about</property> + <property name="visible">True</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_about1_activate"/> - </widget> + </object> </child> - </widget> + </object> </child> - </widget> + </object> </child> - </widget> + </object> <packing> <property name="expand">False</property> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> - <widget class="GtkHBox" id="hbox2"> + <object class="GtkHBox" id="hbox2"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <child> - <widget class="GtkToolbar" id="toolbar"> + <object class="GtkToolbar" id="toolbar"> <property name="visible">True</property> - <property name="toolbar_style">GTK_TOOLBAR_ICONS</property> + <property name="toolbar_style">icons</property> <property name="show_arrow">False</property> <child> - <widget class="GtkToggleToolButton" id="record_but"> + <object class="GtkToggleToolButton" id="record_but"> <property name="visible">True</property> - <property name="tooltip" translatable="yes">Record</property> <property name="stock_id">gtk-media-record</property> - </widget> + </object> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> - <widget class="GtkToolButton" id="stop_but"> + <object class="GtkToolButton" id="stop_but"> <property name="visible">True</property> - <property name="tooltip" translatable="yes">Stop playback or recording</property> <property name="stock_id">gtk-media-stop</property> - </widget> + </object> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> - <widget class="GtkToggleToolButton" id="play_but"> + <object class="GtkToggleToolButton" id="play_but"> <property name="visible">True</property> - <property name="tooltip" translatable="yes">Play</property> <property name="stock_id">gtk-media-play</property> <property name="active">True</property> - </widget> + </object> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> - <widget class="GtkSeparatorToolItem" id="separatortoolitem4"> + <object class="GtkSeparatorToolItem" id="separatortoolitem4"> <property name="visible">True</property> - </widget> + </object> <packing> <property name="expand">False</property> - <property name="homogeneous">False</property> </packing> </child> <child> - <widget class="GtkToggleToolButton" id="step_record_checkbutton"> + <object class="GtkToggleToolButton" id="step_record_checkbutton"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="tooltip" translatable="yes">Step recording</property> <property name="stock_id">gtk-add</property> - </widget> + </object> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> - <child> - <widget class="GtkSeparatorToolItem" id="separatortoolitem4"> + <child> + <object class="GtkSeparatorToolItem" id="separatortoolitem1"> <property name="visible">True</property> - </widget> + </object> <packing> <property name="expand">False</property> - <property name="homogeneous">False</property> </packing> </child> <child> - <widget class="GtkToolItem" id="toolitem1"> + <object class="GtkToolItem" id="toolitem1"> <property name="visible">True</property> <child> - <widget class="GtkHBox" id="hbox3"> + <object class="GtkHBox" id="hbox3"> <property name="visible">True</property> <child> - <widget class="GtkCheckButton" id="clock_checkbutton"> + <object class="GtkCheckButton" id="clock_checkbutton"> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="receives_default">False</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="tooltip" translatable="yes">Internal clock</property> - <property name="response_id">0</property> <property name="active">True</property> <property name="draw_indicator">True</property> - </widget> + </object> + <packing> + <property name="position">0</property> + </packing> </child> <child> - <widget class="GtkSpinButton" id="bpm_spinbutton"> + <object class="GtkSpinButton" id="bpm_spinbutton"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="tooltip" translatable="yes">Set internal tempo</property> - <property name="adjustment">120 1 640 1 10 0</property> + <property name="adjustment"></property> <property name="climb_rate">1</property> - </widget> + </object> <packing> <property name="position">1</property> </packing> </child> <child> - <widget class="GtkLabel" id="label8"> + <object class="GtkLabel" id="label8"> <property name="visible">True</property> <property name="label" translatable="yes"> BPM</property> - </widget> + </object> <packing> <property name="expand">False</property> <property name="fill">False</property> <property name="position">2</property> </packing> </child> - </widget> + </object> </child> - </widget> + </object> <packing> <property name="expand">False</property> - <property name="homogeneous">False</property> </packing> </child> <child> - <widget class="GtkSeparatorToolItem" id="separatortoolitem2"> + <object class="GtkSeparatorToolItem" id="separatortoolitem2"> <property name="visible">True</property> - </widget> + </object> <packing> <property name="expand">False</property> - <property name="homogeneous">False</property> </packing> </child> <child> - <widget class="GtkToolItem" id="toolitem3"> + <object class="GtkToolItem" id="toolitem3"> <property name="visible">True</property> <child> - <widget class="GtkHBox" id="hbox4"> + <object class="GtkHBox" id="hbox4"> <property name="visible">True</property> <property name="border_width">4</property> <child> - <widget class="GtkCheckButton" id="quantize_checkbutton"> + <object class="GtkCheckButton" id="quantize_checkbutton"> + <property name="label" translatable="yes">1/</property> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="tooltip" translatable="yes">Quantize recording (beats)</property> - <property name="label" translatable="yes">1/</property> + <property name="receives_default">False</property> <property name="use_underline">True</property> - <property name="response_id">0</property> <property name="draw_indicator">True</property> - </widget> + </object> <packing> <property name="expand">False</property> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> - <widget class="GtkSpinButton" id="quantize_spinbutton"> + <object class="GtkSpinButton" id="quantize_spinbutton"> <property name="visible">True</property> <property name="sensitive">False</property> <property name="can_focus">True</property> - <property name="adjustment">1 1 99 1 4 0</property> + <property name="adjustment"></property> <property name="climb_rate">1</property> - </widget> + </object> <packing> <property name="position">1</property> </packing> </child> - </widget> + </object> </child> - </widget> + </object> <packing> <property name="expand">False</property> - <property name="homogeneous">False</property> </packing> </child> <child> - <widget class="GtkSeparatorToolItem" id="separatortoolitem3"> + <object class="GtkSeparatorToolItem" id="separatortoolitem3"> <property name="visible">True</property> - </widget> + </object> <packing> <property name="expand">False</property> - <property name="homogeneous">False</property> </packing> </child> <child> - <widget class="GtkToolButton" id="zoom_normal_but"> + <object class="GtkToolButton" id="zoom_normal_but"> <property name="visible">True</property> - <property name="tooltip" translatable="yes">Zoom to normal size</property> <property name="stock_id">gtk-zoom-100</property> - </widget> + </object> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> - <widget class="GtkToolButton" id="zoom_full_but"> + <object class="GtkToolButton" id="zoom_full_but"> <property name="visible">True</property> - <property name="tooltip" translatable="yes">Zoom to fit entire machine</property> <property name="stock_id">gtk-zoom-fit</property> - </widget> + </object> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> - <widget class="GtkToolButton" id="arrange_but"> + <object class="GtkToolButton" id="arrange_but"> <property name="visible">True</property> - <property name="tooltip" translatable="yes">Automatically arrange nodes</property> <property name="stock_id">gtk-refresh</property> - </widget> + </object> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> - </widget> + </object> + <packing> + <property name="position">0</property> + </packing> </child> <child> - <widget class="GtkToolbar" id="evolve_toolbar"> + <object class="GtkToolbar" id="evolve_toolbar"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="toolbar_style">GTK_TOOLBAR_ICONS</property> + <property name="toolbar_style">icons</property> <property name="show_arrow">False</property> - <property name="icon_size">GTK_ICON_SIZE_SMALL_TOOLBAR</property> + <property name="icon_size">0</property> <property name="icon_size_set">True</property> <child> - <widget class="GtkSeparatorToolItem" id="toolbutton7"> + <object class="GtkSeparatorToolItem" id="toolbutton7"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - </widget> + </object> <packing> <property name="expand">False</property> </packing> </child> <child> - <widget class="GtkToolButton" id="load_target_but"> + <object class="GtkToolButton" id="load_target_but"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="tooltip" translatable="yes">Load MIDI file as evolutionary goal</property> <property name="stock_id">gtk-open</property> - </widget> + </object> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> - <widget class="GtkSeparatorToolItem" id="toolbutton5"> + <object class="GtkSeparatorToolItem" id="toolbutton5"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - </widget> + </object> <packing> <property name="expand">False</property> - <property name="homogeneous">False</property> </packing> </child> <child> - <widget class="GtkToggleToolButton" id="evolve_but"> + <object class="GtkToggleToolButton" id="evolve_but"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="label" translatable="yes">Evolve machine (towards target MIDI)</property> <property name="stock_id">gtk-execute</property> - </widget> + </object> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> - <widget class="GtkSeparatorToolItem" id="toolbutton4"> + <object class="GtkSeparatorToolItem" id="toolbutton4"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - </widget> + </object> <packing> <property name="expand">False</property> - <property name="homogeneous">False</property> </packing> </child> <child> - <widget class="GtkToolButton" id="mutate_but"> + <object class="GtkToolButton" id="mutate_but"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="tooltip" translatable="yes">Random mutation</property> <property name="stock_id">gtk-dialog-warning</property> - <accelerator key="m" modifiers="GDK_CONTROL_MASK" signal="clicked"/> - </widget> + <accelerator key="m" signal="clicked" modifiers="GDK_CONTROL_MASK"/> + </object> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> - <widget class="GtkSeparatorToolItem" id="toolbutton3"> + <object class="GtkSeparatorToolItem" id="toolbutton3"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - </widget> + </object> <packing> <property name="expand">False</property> - <property name="homogeneous">False</property> </packing> </child> <child> - <widget class="GtkToolButton" id="compress_but"> + <object class="GtkToolButton" id="compress_but"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="tooltip" translatable="yes">Compress (merge identical nodes)</property> <property name="stock_id">gtk-convert</property> - </widget> + </object> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> - <widget class="GtkSeparatorToolItem" id="toolbutton2"> + <object class="GtkSeparatorToolItem" id="toolbutton2"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - </widget> + </object> <packing> <property name="expand">False</property> - <property name="homogeneous">False</property> </packing> </child> <child> - <widget class="GtkToolButton" id="add_node_but"> + <object class="GtkToolButton" id="add_node_but"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="tooltip" translatable="yes">Create node</property> <property name="label" translatable="yes">Add Node</property> <property name="stock_id">gtk-new</property> - </widget> + </object> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> - <widget class="GtkToolButton" id="remove_node_but"> + <object class="GtkToolButton" id="remove_node_but"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="tooltip" translatable="yes">Delete node</property> <property name="label" translatable="yes">Delete Node</property> <property name="stock_id">gtk-delete</property> - </widget> + </object> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> - <widget class="GtkToolButton" id="adjust_node_but"> + <object class="GtkToolButton" id="adjust_node_but"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="tooltip" translatable="yes">Adjust node</property> <property name="label" translatable="yes">Adjust Node</property> <property name="stock_id">gtk-edit</property> - </widget> + </object> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> - <widget class="GtkSeparatorToolItem" id="toolbutton1"> + <object class="GtkSeparatorToolItem" id="toolbutton1"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - </widget> + </object> <packing> <property name="expand">False</property> - <property name="homogeneous">False</property> </packing> </child> <child> - <widget class="GtkToolButton" id="add_edge_but"> + <object class="GtkToolButton" id="add_edge_but"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="tooltip" translatable="yes">Add edge</property> <property name="label" translatable="yes">Add Edge</property> <property name="stock_id">gtk-connect</property> - </widget> + </object> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> - <widget class="GtkToolButton" id="remove_edge_but"> + <object class="GtkToolButton" id="remove_edge_but"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="tooltip" translatable="yes">Remove edge</property> <property name="label" translatable="yes">Remove Edge</property> <property name="stock_id">gtk-disconnect</property> - </widget> + </object> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> - <widget class="GtkToolButton" id="adjust_edge_but"> + <object class="GtkToolButton" id="adjust_edge_but"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="tooltip" translatable="yes">Adjust edge</property> <property name="label" translatable="yes">Adjust Edge</property> <property name="stock_id">gtk-select-color</property> - </widget> + </object> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> - </widget> + </object> <packing> <property name="expand">False</property> <property name="position">1</property> </packing> </child> - </widget> + </object> <packing> <property name="expand">False</property> <property name="position">1</property> </packing> </child> <child> - <widget class="GtkScrolledWindow" id="canvas_scrolledwindow"> + <object class="GtkScrolledWindow" id="canvas_scrolledwindow"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="has_focus">True</property> <property name="can_default">True</property> <property name="has_default">True</property> - <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="shadow_type">in</property> <child> <placeholder/> </child> - </widget> + </object> <packing> <property name="padding">2</property> <property name="position">2</property> </packing> </child> - </widget> + </object> </child> - </widget> - <widget class="GtkAboutDialog" id="about_win"> + </object> + <object class="GtkAboutDialog" id="about_win"> <property name="destroy_with_parent">True</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> - <property name="copyright" translatable="yes">© 2007 David Robillard <http://drobilla.net></property> + <property name="type_hint">normal</property> + <property name="copyright" translatable="yes">© 2007 David Robillard <http://drobilla.net></property> <property name="comments" translatable="yes">A MIDI sequencer based on probabilistic finite-state automata</property> <property name="website">http://drobilla.net/software/machina</property> @@ -657,30 +625,30 @@ along with Machina; if not, write to the Free Software Foundation, Inc., <property name="translator_credits" translatable="yes" comments="TRANSLATORS: Replace this string with your names, one name per line.">translator-credits</property> <property name="logo">machina.svg</property> <child internal-child="vbox"> - <widget class="GtkVBox" id="dialog-vbox1"> + <object class="GtkVBox" id="dialog-vbox1"> <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="dialog-action_area1"> - </widget> + <object class="GtkHButtonBox" id="dialog-action_area1"/> <packing> <property name="expand">False</property> - <property name="pack_type">GTK_PACK_END</property> + <property name="pack_type">end</property> + <property name="position">0</property> </packing> </child> - </widget> + </object> </child> - </widget> - <widget class="GtkDialog" id="help_dialog"> + </object> + <object class="GtkDialog" id="help_dialog"> <property name="border_width">8</property> <property name="title" translatable="yes">Machina Help</property> <property name="resizable">False</property> - <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> + <property name="window_position">center-on-parent</property> <property name="icon_name">gtk-help</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="type_hint">dialog</property> <child internal-child="vbox"> - <widget class="GtkVBox" id="dialog-vbox1"> + <object class="GtkVBox" id="dialog-vbox2"> <property name="visible">True</property> <child> - <widget class="GtkLabel" id="label5"> + <object class="GtkLabel" id="label5"> <property name="visible">True</property> <property name="xalign">0</property> <property name="yalign">0</property> @@ -695,64 +663,73 @@ Selector nodes are shown in green. - Ctrl+Right click a node to make it a selector node - Ctrl+Left click edge probabilities to decrease - Ctrl+Right click edge probabilities to increase</property> - </widget> + </object> <packing> <property name="padding">8</property> <property name="position">2</property> </packing> </child> <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="dialog-action_area1"> + <object class="GtkHButtonBox" id="dialog-action_area2"> <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> + <property name="layout_style">end</property> <child> - <widget class="GtkButton" id="closebutton1"> + <object class="GtkButton" id="closebutton1"> + <property name="label">gtk-close</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="can_default">True</property> - <property name="label">gtk-close</property> + <property name="receives_default">False</property> <property name="use_stock">True</property> - <property name="response_id">-7</property> - </widget> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> </child> - </widget> + </object> <packing> <property name="expand">False</property> - <property name="pack_type">GTK_PACK_END</property> + <property name="pack_type">end</property> + <property name="position">0</property> </packing> </child> - </widget> + </object> </child> - </widget> - <widget class="GtkDialog" id="node_properties_dialog"> + <action-widgets> + <action-widget response="-7">closebutton1</action-widget> + </action-widgets> + </object> + <object class="GtkDialog" id="node_properties_dialog"> <property name="border_width">8</property> <property name="title" translatable="yes">dialog1</property> <property name="resizable">False</property> <property name="icon">machina.svg</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="type_hint">dialog</property> <property name="skip_taskbar_hint">True</property> <property name="skip_pager_hint">True</property> <child internal-child="vbox"> - <widget class="GtkVBox" id="dialog-vbox3"> + <object class="GtkVBox" id="dialog-vbox3"> <property name="visible">True</property> <property name="spacing">8</property> <child> - <widget class="GtkTable" id="table1"> + <object class="GtkTable" id="table1"> <property name="visible">True</property> <property name="n_rows">2</property> <property name="n_columns">2</property> <property name="column_spacing">4</property> <property name="row_spacing">8</property> <child> - <widget class="GtkSpinButton" id="node_properties_duration_spinbutton"> + <object class="GtkSpinButton" id="node_properties_duration_spinbutton"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="has_focus">True</property> - <property name="adjustment">1 0 999999 1 10 0</property> + <property name="adjustment"></property> <property name="climb_rate">1</property> <property name="digits">2</property> <property name="numeric">True</property> - </widget> + </object> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> @@ -762,11 +739,11 @@ Selector nodes are shown in green. </packing> </child> <child> - <widget class="GtkLabel" id="label7"> + <object class="GtkLabel" id="label7"> <property name="visible">True</property> <property name="xalign">0</property> <property name="label" translatable="yes">Duration: </property> - </widget> + </object> <packing> <property name="top_attach">1</property> <property name="bottom_attach">2</property> @@ -775,83 +752,98 @@ Selector nodes are shown in green. </packing> </child> <child> - <widget class="GtkLabel" id="label6"> + <object class="GtkLabel" id="label6"> <property name="visible">True</property> <property name="xalign">0</property> <property name="label" translatable="yes">Note: </property> - </widget> + </object> <packing> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkSpinButton" id="node_properties_note_spinbutton"> + <object class="GtkSpinButton" id="node_properties_note_spinbutton"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="adjustment">60 0 127 1 10 0</property> + <property name="adjustment"></property> <property name="climb_rate">1</property> <property name="numeric">True</property> - </widget> + </object> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> <property name="y_options"></property> </packing> </child> - </widget> + </object> <packing> <property name="position">2</property> </packing> </child> <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="dialog-action_area3"> + <object class="GtkHButtonBox" id="dialog-action_area3"> <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> + <property name="layout_style">end</property> <child> - <widget class="GtkButton" id="node_properties_apply_button"> + <object class="GtkButton" id="node_properties_apply_button"> + <property name="label">gtk-apply</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="can_default">True</property> - <property name="label">gtk-apply</property> + <property name="receives_default">False</property> <property name="use_stock">True</property> - <property name="response_id">-10</property> - </widget> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> </child> <child> - <widget class="GtkButton" id="node_properties_cancel_button"> + <object class="GtkButton" id="node_properties_cancel_button"> + <property name="label">gtk-cancel</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="can_default">True</property> - <property name="label">gtk-cancel</property> + <property name="receives_default">False</property> <property name="use_stock">True</property> - <property name="response_id">-6</property> - </widget> + </object> <packing> + <property name="expand">False</property> + <property name="fill">False</property> <property name="position">1</property> </packing> </child> <child> - <widget class="GtkButton" id="node_properties_ok_button"> + <object class="GtkButton" id="node_properties_ok_button"> + <property name="label">gtk-ok</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="can_default">True</property> <property name="has_default">True</property> - <property name="label">gtk-ok</property> + <property name="receives_default">False</property> <property name="use_stock">True</property> - <property name="response_id">-5</property> - </widget> + </object> <packing> + <property name="expand">False</property> + <property name="fill">False</property> <property name="position">2</property> </packing> </child> - </widget> + </object> <packing> <property name="expand">False</property> - <property name="pack_type">GTK_PACK_END</property> + <property name="pack_type">end</property> + <property name="position">0</property> </packing> </child> - </widget> + </object> </child> - </widget> -</glade-interface> + <action-widgets> + <action-widget response="-10">node_properties_apply_button</action-widget> + <action-widget response="-6">node_properties_cancel_button</action-widget> + <action-widget response="-5">node_properties_ok_button</action-widget> + </action-widgets> + </object> +</interface> diff --git a/src/gui/wscript b/src/gui/wscript index 089a70b..a728ce1 100644 --- a/src/gui/wscript +++ b/src/gui/wscript @@ -29,7 +29,7 @@ def build(bld): ''') # GUI runtime files - bld.install_files('${DATADIR}/machina', 'machina.glade') + bld.install_files('${DATADIR}/machina', 'machina.ui') bld.install_files('${DATADIR}/machina', 'machina.svg') # Executable @@ -27,15 +27,13 @@ def configure(conf): autowaf.check_pkg(conf, 'gthread-2.0', uselib_store='GTHREAD', atleast_version='2.14.0', mandatory=True) autowaf.check_pkg(conf, 'gtkmm-2.4', uselib_store='GTKMM', - atleast_version='2.11.12', mandatory=False) + atleast_version='2.12.0', mandatory=False) autowaf.check_pkg(conf, 'jack', uselib_store='JACK', atleast_version='0.109.0', mandatory=True) autowaf.check_pkg(conf, 'raul', uselib_store='RAUL', atleast_version='0.5.1', mandatory=True) autowaf.check_pkg(conf, 'flowcanvas', uselib_store='FLOWCANVAS', atleast_version='0.5.1', mandatory=False) - autowaf.check_pkg(conf, 'libglademm-2.4', uselib_store='GLADEMM', - atleast_version='2.6.0', mandatory=False) autowaf.check_pkg(conf, 'sord-0', uselib_store='SORD', atleast_version='0.2.0', mandatory=False) #autowaf.check_pkg(conf, 'eugene', uselib_store='EUGENE', @@ -47,7 +45,7 @@ def configure(conf): define_name='HAVE_POSIX_MEMALIGN', mandatory=False) - if conf.is_defined('HAVE_GLADEMM') and conf.is_defined('HAVE_FLOWCANVAS'): + if conf.is_defined('HAVE_GTKMM') and conf.is_defined('HAVE_FLOWCANVAS'): autowaf.define(conf, 'MACHINA_BUILD_GUI', 1) autowaf.define(conf, 'MACHINA_PPQN', 19200) |