Switched patch "description" window into a properties window (hopefully to extend

in the future)


git-svn-id: http://svn.drobilla.net/lad@40 a436a847-0d15-0410-975c-d299462d15a1
This commit is contained in:
dave 2006-06-15 08:22:48 +00:00
parent 4846b3eea8
commit f0d0c5cc23
12 changed files with 76 additions and 64 deletions

View File

@ -72,8 +72,8 @@ om_gtk_SOURCES = \
NewSubpatchWindow.cpp \ NewSubpatchWindow.cpp \
ConfigWindow.h \ ConfigWindow.h \
ConfigWindow.cpp \ ConfigWindow.cpp \
PatchDescriptionWindow.h \ PatchPropertiesWindow.h \
PatchDescriptionWindow.cpp \ PatchPropertiesWindow.cpp \
Loader.h \ Loader.h \
Loader.cpp \ Loader.cpp \
RenameWindow.h \ RenameWindow.h \

View File

@ -77,8 +77,8 @@ public:
void control_window(NodeControlWindow* cw) { m_control_window = cw; } void control_window(NodeControlWindow* cw) { m_control_window = cw; }
virtual void show_control_window(); virtual void show_control_window();
virtual void show_properties_window();
void show_rename_window(); void show_rename_window();
void show_properties_window();
bool has_control_inputs(); bool has_control_inputs();

View File

@ -53,9 +53,11 @@ NodePropertiesWindow::set_node(CountedPtr<NodeModel> node_model)
CountedPtr<PluginModel> pm = node_model->plugin(); CountedPtr<PluginModel> pm = node_model->plugin();
m_plugin_type_label->set_text(pm->type_string()); if (pm) {
m_plugin_uri_label->set_text(pm->uri()); m_plugin_type_label->set_text(pm->type_string());
m_plugin_name_label->set_text(pm->name()); m_plugin_uri_label->set_text(pm->uri());
m_plugin_name_label->set_text(pm->name());
}
} }

View File

@ -40,6 +40,7 @@
#include "PortController.h" #include "PortController.h"
#include "App.h" #include "App.h"
#include "PatchTreeWindow.h" #include "PatchTreeWindow.h"
#include "PatchPropertiesWindow.h"
#include "DSSIController.h" #include "DSSIController.h"
#include "PatchModel.h" #include "PatchModel.h"
#include "Store.h" #include "Store.h"
@ -53,6 +54,7 @@ namespace OmGtk {
PatchController::PatchController(CountedPtr<PatchModel> model) PatchController::PatchController(CountedPtr<PatchModel> model)
: NodeController(model), : NodeController(model),
m_properties_window(NULL),
m_window(NULL), m_window(NULL),
m_patch_view(NULL), m_patch_view(NULL),
m_patch_model(model), m_patch_model(model),
@ -349,6 +351,20 @@ PatchController::create_view()
} }
void
PatchController::show_properties_window()
{
if (!m_properties_window) {
Glib::RefPtr<Gnome::Glade::Xml> glade_xml = GladeFactory::new_glade_reference();
glade_xml->get_widget_derived("patch_properties_win", m_properties_window);
m_properties_window->patch_model(patch_model());
}
m_properties_window->show();
}
/** Create a connection in the view (canvas). /** Create a connection in the view (canvas).
*/ */
void void
@ -387,11 +403,14 @@ PatchController::create_connection(CountedPtr<ConnectionModel> cm)
} }
/** Add a child node to this patch.
*
* This is for plugin nodes and patches, and is responsible for creating the
* GtkObjectController for @a object (and through that the View if necessary)
*/
void void
PatchController::add_node(CountedPtr<NodeModel> object) PatchController::add_node(CountedPtr<NodeModel> object)
{ {
cerr << "ADD NODE\n";
assert(object); assert(object);
assert(object->parent() == m_patch_model); assert(object->parent() == m_patch_model);
assert(object->path().parent() == m_patch_model->path()); assert(object->path().parent() == m_patch_model->path());
@ -405,19 +424,15 @@ PatchController::add_node(CountedPtr<NodeModel> object)
CountedPtr<NodeModel> node(object); CountedPtr<NodeModel> node(object);
if (node) { if (node) {
cerr << "\tNode Child\n";
assert(node->parent() == m_patch_model); assert(node->parent() == m_patch_model);
NodeController* nc = NULL; NodeController* nc = NULL;
CountedPtr<PatchModel> patch(node); CountedPtr<PatchModel> patch(node);
if (patch) { if (patch) {
cerr << "\t.. is a Patch Child\n";
assert(patch->parent() == m_patch_model); assert(patch->parent() == m_patch_model);
nc = new PatchController(patch); nc = new PatchController(patch);
} else { } else {
cerr << "\t... is a Plugin Node Child\n";
assert(node->plugin()); assert(node->plugin());
if (node->plugin()->type() == PluginModel::DSSI) if (node->plugin()->type() == PluginModel::DSSI)
nc = new DSSIController(node); nc = new DSSIController(node);
@ -465,13 +480,6 @@ PatchController::add_node(CountedPtr<NodeModel> object)
} }
} }
/*CountedPtr<PortModel> port(object);
if (port) {
cerr << "\tPort Child??\n";
//assert(port->parent() == m_patch_model);
}*/
} }

View File

@ -41,6 +41,7 @@ class SubpatchModule;
class Controller; class Controller;
class OmFlowCanvas; class OmFlowCanvas;
class NodeControlWindow; class NodeControlWindow;
class PatchPropertiesWindow;
class ControlPanel; class ControlPanel;
class PatchView; class PatchView;
class NodeController; class NodeController;
@ -81,6 +82,7 @@ public:
void get_new_module_location(int& x, int& y); void get_new_module_location(int& x, int& y);
void show_control_window(); void show_control_window();
void show_properties_window();
void show_patch_window(); void show_patch_window();
void claim_patch_view(); void claim_patch_view();
@ -111,7 +113,9 @@ private:
void create_connection(CountedPtr<ConnectionModel> cm); void create_connection(CountedPtr<ConnectionModel> cm);
PatchWindow* m_window; ///< Window currently showing this patch PatchPropertiesWindow* m_properties_window;
PatchWindow* m_window; ///< Patch Window currently showing m_patch_view
PatchView* m_patch_view; ///< View (canvas) of this patch PatchView* m_patch_view; ///< View (canvas) of this patch
CountedPtr<PatchModel> m_patch_model; CountedPtr<PatchModel> m_patch_model;

View File

@ -14,7 +14,7 @@
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
#include "PatchDescriptionWindow.h" #include "PatchPropertiesWindow.h"
#include <string> #include <string>
#include "PatchModel.h" #include "PatchModel.h"
@ -22,17 +22,17 @@ namespace OmGtk {
using std::string; using std::string;
PatchDescriptionWindow::PatchDescriptionWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& glade_xml) PatchPropertiesWindow::PatchPropertiesWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& glade_xml)
: Gtk::Window(cobject) : Gtk::Window(cobject)
, m_patch_model(NULL) , m_patch_model(NULL)
{ {
glade_xml->get_widget("description_author_entry", m_author_entry); glade_xml->get_widget("properties_author_entry", m_author_entry);
glade_xml->get_widget("description_description_textview", m_textview); glade_xml->get_widget("properties_description_textview", m_textview);
glade_xml->get_widget("description_cancel_button", m_cancel_button); glade_xml->get_widget("properties_cancel_button", m_cancel_button);
glade_xml->get_widget("description_ok_button", m_ok_button); glade_xml->get_widget("properties_ok_button", m_ok_button);
m_cancel_button->signal_clicked().connect(sigc::mem_fun(this, &PatchDescriptionWindow::cancel_clicked)); m_cancel_button->signal_clicked().connect(sigc::mem_fun(this, &PatchPropertiesWindow::cancel_clicked));
m_ok_button->signal_clicked().connect(sigc::mem_fun(this, &PatchDescriptionWindow::ok_clicked)); m_ok_button->signal_clicked().connect(sigc::mem_fun(this, &PatchPropertiesWindow::ok_clicked));
} }
@ -42,7 +42,7 @@ PatchDescriptionWindow::PatchDescriptionWindow(BaseObjectType* cobject, const Gl
* the window in any way. * the window in any way.
*/ */
void void
PatchDescriptionWindow::patch_model(CountedPtr<PatchModel> patch_model) PatchPropertiesWindow::patch_model(CountedPtr<PatchModel> patch_model)
{ {
property_title() = patch_model->path() + " Properties"; property_title() = patch_model->path() + " Properties";
m_patch_model = patch_model; m_patch_model = patch_model;
@ -52,7 +52,7 @@ PatchDescriptionWindow::patch_model(CountedPtr<PatchModel> patch_model)
void void
PatchDescriptionWindow::cancel_clicked() PatchPropertiesWindow::cancel_clicked()
{ {
m_author_entry->set_text(m_patch_model->get_metadata("author")); m_author_entry->set_text(m_patch_model->get_metadata("author"));
m_textview->get_buffer()->set_text(m_patch_model->get_metadata("description")); m_textview->get_buffer()->set_text(m_patch_model->get_metadata("description"));
@ -61,7 +61,7 @@ PatchDescriptionWindow::cancel_clicked()
void void
PatchDescriptionWindow::ok_clicked() PatchPropertiesWindow::ok_clicked()
{ {
m_patch_model->set_metadata("author", m_author_entry->get_text()); m_patch_model->set_metadata("author", m_author_entry->get_text());
m_patch_model->set_metadata("description", m_textview->get_buffer()->get_text()); m_patch_model->set_metadata("description", m_textview->get_buffer()->get_text());

View File

@ -14,8 +14,8 @@
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
#ifndef PATCHDESCRIPTIONWINDOW_H #ifndef PATCHPROPERTIESWINDOW_H
#define PATCHDESCRIPTIONWINDOW_H #define PATCHPROPERTIESWINDOW_H
#include <string> #include <string>
#include <gtkmm.h> #include <gtkmm.h>
@ -29,16 +29,16 @@ using LibOmClient::PatchModel;
namespace OmGtk { namespace OmGtk {
/** Patch Description Window. /** Patch Properties Window.
* *
* Loaded by libglade as a derived object. * Loaded by libglade as a derived object.
* *
* \ingroup OmGtk * \ingroup OmGtk
*/ */
class PatchDescriptionWindow : public Gtk::Window class PatchPropertiesWindow : public Gtk::Window
{ {
public: public:
PatchDescriptionWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& refGlade); PatchPropertiesWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& refGlade);
void patch_model(CountedPtr<PatchModel> patch_model); void patch_model(CountedPtr<PatchModel> patch_model);
@ -57,4 +57,4 @@ private:
} // namespace OmGtk } // namespace OmGtk
#endif // PATCHDESCRIPTIONWINDOW_H #endif // PATCHPROPERTIESWINDOW_H

View File

@ -26,7 +26,7 @@
#include "NewSubpatchWindow.h" #include "NewSubpatchWindow.h"
#include "LoadSubpatchWindow.h" #include "LoadSubpatchWindow.h"
#include "NodeControlWindow.h" #include "NodeControlWindow.h"
#include "PatchDescriptionWindow.h" #include "PatchPropertiesWindow.h"
#include "PatchTreeWindow.h" #include "PatchTreeWindow.h"
#include "Controller.h" #include "Controller.h"

View File

@ -28,7 +28,7 @@
#include "LoadPatchWindow.h" #include "LoadPatchWindow.h"
#include "LoadSubpatchWindow.h" #include "LoadSubpatchWindow.h"
#include "NodeControlWindow.h" #include "NodeControlWindow.h"
#include "PatchDescriptionWindow.h" #include "PatchPropertiesWindow.h"
#include "ConfigWindow.h" #include "ConfigWindow.h"
#include "MessagesWindow.h" #include "MessagesWindow.h"
#include "PatchTreeWindow.h" #include "PatchTreeWindow.h"
@ -79,13 +79,11 @@ PatchWindow::PatchWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glad
xml->get_widget_derived("new_subpatch_win", m_new_subpatch_window); xml->get_widget_derived("new_subpatch_win", m_new_subpatch_window);
xml->get_widget_derived("load_patch_win", m_load_patch_window); xml->get_widget_derived("load_patch_win", m_load_patch_window);
xml->get_widget_derived("load_subpatch_win", m_load_subpatch_window); xml->get_widget_derived("load_subpatch_win", m_load_subpatch_window);
xml->get_widget_derived("patch_description_win", m_description_window);
//m_load_plugin_window->set_transient_for(*this); //m_load_plugin_window->set_transient_for(*this);
m_new_subpatch_window->set_transient_for(*this); m_new_subpatch_window->set_transient_for(*this);
m_load_patch_window->set_transient_for(*this); m_load_patch_window->set_transient_for(*this);
m_load_subpatch_window->set_transient_for(*this); m_load_subpatch_window->set_transient_for(*this);
m_description_window->set_transient_for(*this);
m_menu_view_control_window->property_sensitive() = false; m_menu_view_control_window->property_sensitive() = false;
//m_status_bar->push(Controller::instance().engine_url()); //m_status_bar->push(Controller::instance().engine_url());
@ -110,9 +108,9 @@ PatchWindow::PatchWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glad
m_menu_fullscreen->signal_toggled().connect( m_menu_fullscreen->signal_toggled().connect(
sigc::mem_fun(this, &PatchWindow::event_fullscreen_toggled)); sigc::mem_fun(this, &PatchWindow::event_fullscreen_toggled));
m_menu_view_control_window->signal_activate().connect( m_menu_view_control_window->signal_activate().connect(
sigc::mem_fun(this, &PatchWindow::show_control_window)); sigc::mem_fun(this, &PatchWindow::event_show_controls));
m_menu_view_patch_description->signal_activate().connect( m_menu_view_patch_description->signal_activate().connect(
sigc::mem_fun(this, &PatchWindow::show_description_window)); sigc::mem_fun(this, &PatchWindow::event_show_properties));
m_menu_destroy_patch->signal_activate().connect( m_menu_destroy_patch->signal_activate().connect(
sigc::mem_fun(this, &PatchWindow::event_destroy)); sigc::mem_fun(this, &PatchWindow::event_destroy));
m_menu_clear->signal_activate().connect( m_menu_clear->signal_activate().connect(
@ -201,7 +199,7 @@ PatchWindow::patch_controller(PatchController* pc)
set_title(m_patch->model()->path()); set_title(m_patch->model()->path());
m_description_window->patch_model(pc->patch_model()); //m_properties_window->patch_model(pc->patch_model());
// Setup breadcrumbs box // Setup breadcrumbs box
@ -283,10 +281,11 @@ PatchWindow::rebuild_breadcrumbs()
void void
PatchWindow::breadcrumb_clicked(BreadCrumb* crumb) PatchWindow::breadcrumb_clicked(BreadCrumb* crumb)
{ {
cerr << "FIXME: crumb\n";
/*
if (m_enable_signal) { if (m_enable_signal) {
PatchController* const pc = crumb->patch(); // FIXME: check to be sure PatchModel exists, then controller - maybe
// even make a controller if there isn't one?
PatchController* const pc = dynamic_cast<PatchController*>(
Store::instance().patch(crumb->path())->controller());
assert(pc != NULL); assert(pc != NULL);
if (pc == m_patch) { if (pc == m_patch) {
@ -298,22 +297,22 @@ PatchWindow::breadcrumb_clicked(BreadCrumb* crumb)
patch_controller(pc); patch_controller(pc);
} }
} }
*/
} }
void void
PatchWindow::show_control_window() PatchWindow::event_show_controls()
{ {
if (m_patch != NULL) if (m_patch)
m_patch->show_control_window(); m_patch->show_control_window();
} }
void void
PatchWindow::show_description_window() PatchWindow::event_show_properties()
{ {
m_description_window->show(); if (m_patch)
m_patch->show_properties_window();
} }

View File

@ -69,9 +69,6 @@ public:
LoadSubpatchWindow* load_subpatch_window() const { return m_load_subpatch_window; } LoadSubpatchWindow* load_subpatch_window() const { return m_load_subpatch_window; }
NewSubpatchWindow* new_subpatch_window() const { return m_new_subpatch_window; } NewSubpatchWindow* new_subpatch_window() const { return m_new_subpatch_window; }
void show_control_window();
void show_description_window();
// Breadcrumb management // Breadcrumb management
void node_removed(const string& name); void node_removed(const string& name);
void node_renamed(const string& old_path, const string& new_path); void node_renamed(const string& old_path, const string& new_path);
@ -96,13 +93,15 @@ private:
void event_destroy(); void event_destroy();
void event_clear(); void event_clear();
void event_fullscreen_toggled(); void event_fullscreen_toggled();
void event_show_properties();
void event_show_controls();
PatchController* m_patch; PatchController* m_patch;
LoadPluginWindow* m_load_plugin_window; LoadPluginWindow* m_load_plugin_window;
LoadPatchWindow* m_load_patch_window; LoadPatchWindow* m_load_patch_window;
NewSubpatchWindow* m_new_subpatch_window; NewSubpatchWindow* m_new_subpatch_window;
LoadSubpatchWindow* m_load_subpatch_window; LoadSubpatchWindow* m_load_subpatch_window;
PatchDescriptionWindow* m_description_window;
bool m_enable_signal; bool m_enable_signal;
bool m_position_stored; bool m_position_stored;

View File

@ -1252,7 +1252,7 @@
<widget class="GtkVBox" id="dialog-vbox1"> <widget class="GtkVBox" id="dialog-vbox1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="homogeneous">False</property> <property name="homogeneous">False</property>
<property name="spacing">10</property> <property name="spacing">24</property>
<child internal-child="action_area"> <child internal-child="action_area">
<widget class="GtkHButtonBox" id="dialog-action_area1"> <widget class="GtkHButtonBox" id="dialog-action_area1">
@ -1606,7 +1606,7 @@
<child internal-child="vbox"> <child internal-child="vbox">
<widget class="GtkVBox" id="vbox11"> <widget class="GtkVBox" id="vbox11">
<property name="homogeneous">False</property> <property name="homogeneous">False</property>
<property name="spacing">8</property> <property name="spacing">24</property>
<child internal-child="action_area"> <child internal-child="action_area">
<widget class="GtkHButtonBox" id="hbuttonbox1"> <widget class="GtkHButtonBox" id="hbuttonbox1">
@ -2476,7 +2476,7 @@
</child> </child>
</widget> </widget>
<widget class="GtkWindow" id="patch_description_win"> <widget class="GtkWindow" id="patch_properties_win">
<property name="border_width">8</property> <property name="border_width">8</property>
<property name="width_request">400</property> <property name="width_request">400</property>
<property name="height_request">200</property> <property name="height_request">200</property>
@ -2533,7 +2533,7 @@
</child> </child>
<child> <child>
<widget class="GtkEntry" id="description_author_entry"> <widget class="GtkEntry" id="properties_author_entry">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="editable">True</property> <property name="editable">True</property>
@ -2568,7 +2568,7 @@
<property name="window_placement">GTK_CORNER_TOP_LEFT</property> <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
<child> <child>
<widget class="GtkTextView" id="description_description_textview"> <widget class="GtkTextView" id="properties_description_textview">
<property name="visible">True</property> <property name="visible">True</property>
<property name="tooltip" translatable="yes">A short description of the patch to be included in the patch file</property> <property name="tooltip" translatable="yes">A short description of the patch to be included in the patch file</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
@ -2602,7 +2602,7 @@
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
<widget class="GtkButton" id="description_cancel_button"> <widget class="GtkButton" id="properties_cancel_button">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_default">True</property> <property name="can_default">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
@ -2614,7 +2614,7 @@
</child> </child>
<child> <child>
<widget class="GtkButton" id="description_ok_button"> <widget class="GtkButton" id="properties_ok_button">
<property name="visible">True</property> <property name="visible">True</property>
<property name="tooltip" translatable="yes">Apply these changes to be saved the next time the patch is saved</property> <property name="tooltip" translatable="yes">Apply these changes to be saved the next time the patch is saved</property>
<property name="can_default">True</property> <property name="can_default">True</property>

View File

@ -2476,7 +2476,7 @@
</child> </child>
</widget> </widget>
<widget class="GtkWindow" id="patch_description_win"> <widget class="GtkWindow" id="patch_properties_win">
<property name="border_width">8</property> <property name="border_width">8</property>
<property name="width_request">400</property> <property name="width_request">400</property>
<property name="height_request">200</property> <property name="height_request">200</property>