summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2012-08-17 02:14:07 +0000
committerDavid Robillard <d@drobilla.net>2012-08-17 02:14:07 +0000
commit318b37d8b556add13b3f156f31c9e72eca339a16 (patch)
treeca7b881f8980a41eca77602b474f29964b5c89db /src/gui
parenta42744e1068a8630d8034df73bb344ca21a53b32 (diff)
downloadingen-318b37d8b556add13b3f156f31c9e72eca339a16.tar.gz
ingen-318b37d8b556add13b3f156f31c9e72eca339a16.tar.bz2
ingen-318b37d8b556add13b3f156f31c9e72eca339a16.zip
Implement real logging system, LV2 log extension support, and purge evil/ugly/untranslatable C++ stream printing.
Remove coloured log stuff from Raul. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4717 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/App.cpp16
-rw-r--r--src/gui/App.hpp2
-rw-r--r--src/gui/Configuration.cpp4
-rw-r--r--src/gui/ConnectWindow.cpp10
-rw-r--r--src/gui/NodeMenu.cpp7
-rw-r--r--src/gui/NodeModule.cpp13
-rw-r--r--src/gui/PatchCanvas.cpp31
-rw-r--r--src/gui/PatchTreeWindow.cpp23
-rw-r--r--src/gui/PatchTreeWindow.hpp2
-rw-r--r--src/gui/PatchView.cpp11
-rw-r--r--src/gui/Port.cpp4
-rw-r--r--src/gui/PropertiesWindow.cpp21
-rw-r--r--src/gui/RenameWindow.cpp1
-rw-r--r--src/gui/ThreadedLoader.cpp9
-rw-r--r--src/gui/WidgetFactory.cpp23
-rw-r--r--src/gui/ingen_gui_lv2.cpp10
16 files changed, 91 insertions, 96 deletions
diff --git a/src/gui/App.cpp b/src/gui/App.cpp
index e9c9c663..cfba10c7 100644
--- a/src/gui/App.cpp
+++ b/src/gui/App.cpp
@@ -25,15 +25,15 @@
#include "ganv/Edge.hpp"
#include "ingen/EngineBase.hpp"
#include "ingen/Interface.hpp"
+#include "ingen/Log.hpp"
+#include "ingen/World.hpp"
#include "ingen/client/ClientStore.hpp"
#include "ingen/client/ObjectModel.hpp"
#include "ingen/client/PatchModel.hpp"
#include "ingen/client/SigClientInterface.hpp"
-#include "ingen/World.hpp"
#include "ingen/runtime_paths.hpp"
#include "lilv/lilv.h"
#include "raul/Path.hpp"
-#include "raul/log.hpp"
#include "App.hpp"
#include "Configuration.hpp"
@@ -49,8 +49,6 @@
#include "WidgetFactory.hpp"
#include "WindowFactory.hpp"
-#define LOG(s) (s("[GUI] "))
-
using namespace std;
namespace Raul { class Deletable; }
@@ -148,7 +146,6 @@ App::run()
break;
_main->run();
- LOG(Raul::info)("Exiting\n");
}
void
@@ -163,7 +160,7 @@ App::attach(SharedPtr<SigClientInterface> client)
}
_client = client;
- _store = SharedPtr<ClientStore>(new ClientStore(_world->uris(), _world->interface(), client));
+ _store = SharedPtr<ClientStore>(new ClientStore(_world->uris(), _world->log(), _world->interface(), client));
_loader = SharedPtr<ThreadedLoader>(new ThreadedLoader(*this, _world->interface()));
_patch_tree_window->init(*this, *_store);
@@ -229,10 +226,10 @@ App::property_change(const Raul::URI& subject,
{
if (subject == uris().ingen_engine && key == uris().ingen_sampleRate) {
if (value.type() == forge().Int) {
- LOG(Raul::info)(Raul::fmt("Sample rate: %1%\n") % uris().forge.str(value));
+ log().info(Raul::fmt("Sample rate: %1%\n") % uris().forge.str(value));
_sample_rate = value.get_int32();
} else {
- Raul::error << "Engine sample rate property is not an integer" << std::endl;
+ log().error("Engine sample rate property is not an integer\n");
}
}
}
@@ -378,7 +375,8 @@ App::icon_from_path(const string& path, int size)
new IconDestroyNotification(*this, make_pair(path, size)),
&App::icon_destroyed);
} catch (const Glib::Error& e) {
- Raul::warn << "Error loading icon: " << e.what() << endl;
+ log().warn(Raul::fmt("Error loading icon %1%: %2%\n")
+ % path % e.what());
}
return buf;
}
diff --git a/src/gui/App.hpp b/src/gui/App.hpp
index 5d93c805..32c59300 100644
--- a/src/gui/App.hpp
+++ b/src/gui/App.hpp
@@ -35,6 +35,7 @@
namespace Ingen {
class Interface;
+ class Log;
class Port;
class World;
namespace Client {
@@ -118,6 +119,7 @@ public:
inline Ingen::World* world() const { return _world; }
inline Ingen::URIs& uris() const { return _world->uris(); }
+ inline Ingen::Log& log() const { return _world->log(); }
protected:
diff --git a/src/gui/Configuration.cpp b/src/gui/Configuration.cpp
index f7f8977c..1fb48c58 100644
--- a/src/gui/Configuration.cpp
+++ b/src/gui/Configuration.cpp
@@ -21,10 +21,10 @@
#include <string>
#include "ganv/Port.hpp"
+#include "ingen/Log.hpp"
#include "ingen/client/PluginModel.hpp"
#include "ingen/client/PortModel.hpp"
#include "ingen/serialisation/Parser.hpp"
-#include "raul/log.hpp"
#include "App.hpp"
#include "Configuration.hpp"
@@ -95,7 +95,7 @@ Configuration::get_port_color(const Client::PortModel* p)
return _event_port_color;
}
- Raul::warn << "[Configuration] No known port type for " << p->path() << endl;
+ _app.log().warn(Raul::fmt("No known port type for %1%\n") % p->path());
return 0x666666FF;
}
diff --git a/src/gui/ConnectWindow.cpp b/src/gui/ConnectWindow.cpp
index 0aef8dbd..ea196175 100644
--- a/src/gui/ConnectWindow.cpp
+++ b/src/gui/ConnectWindow.cpp
@@ -21,16 +21,16 @@
#include <gtkmm/stock.h>
#include "raul/Process.hpp"
-#include "raul/log.hpp"
-#include "ingen_config.h"
#include "ingen/EngineBase.hpp"
#include "ingen/Interface.hpp"
+#include "ingen/Log.hpp"
+#include "ingen/Module.hpp"
+#include "ingen/World.hpp"
#include "ingen/client/ClientStore.hpp"
#include "ingen/client/PatchModel.hpp"
#include "ingen/client/ThreadedSigClientInterface.hpp"
-#include "ingen/Module.hpp"
-#include "ingen/World.hpp"
+#include "ingen_config.h"
#include "App.hpp"
#include "ConnectWindow.hpp"
@@ -209,7 +209,7 @@ ConnectWindow::connect(bool existing)
Glib::signal_timeout().connect(
sigc::mem_fun(this, &ConnectWindow::gtk_callback), 40);
} else {
- Raul::error << "Failed to launch ingen process." << endl;
+ world->log().error("Failed to launch ingen process\n");
}
return;
}
diff --git a/src/gui/NodeMenu.cpp b/src/gui/NodeMenu.cpp
index 08f88c8b..35a35c39 100644
--- a/src/gui/NodeMenu.cpp
+++ b/src/gui/NodeMenu.cpp
@@ -20,6 +20,7 @@
#include <gtkmm/stock.h>
#include "ingen/Interface.hpp"
+#include "ingen/Log.hpp"
#include "ingen/client/NodeModel.hpp"
#include "ingen/client/PluginModel.hpp"
#include "lv2/lv2plug.in/ns/ext/presets/presets.h"
@@ -108,9 +109,9 @@ NodeMenu::init(App& app, SharedPtr<const Client::NodeModel> node)
lilv_nodes_free(labels);
} else {
- Raul::error << "Preset <"
- << lilv_node_as_string(lilv_nodes_get(presets, i))
- << "> has no rdfs:label" << std::endl;
+ app.log().error(
+ Raul::fmt("Preset <%1> has no rdfs:label\n")
+ % lilv_node_as_string(lilv_nodes_get(presets, i)));
}
}
diff --git a/src/gui/NodeModule.cpp b/src/gui/NodeModule.cpp
index c2305e03..89ecc4a1 100644
--- a/src/gui/NodeModule.cpp
+++ b/src/gui/NodeModule.cpp
@@ -22,12 +22,12 @@
#include "lv2/lv2plug.in/ns/ext/atom/util.h"
#include "ingen/Interface.hpp"
+#include "ingen/Log.hpp"
#include "ingen/client/NodeModel.hpp"
#include "ingen/client/PatchModel.hpp"
#include "ingen/client/PluginModel.hpp"
#include "ingen/client/PluginUI.hpp"
#include "raul/Atom.hpp"
-#include "raul/log.hpp"
#include "App.hpp"
#include "Configuration.hpp"
@@ -220,7 +220,7 @@ NodeModule::embed_gui(bool embed)
{
if (embed) {
if (_gui_window) {
- Raul::warn << "LV2 GUI already popped up, cannot embed" << endl;
+ app().log().warn("LV2 GUI already popped up, cannot embed\n");
return;
}
@@ -239,7 +239,7 @@ NodeModule::embed_gui(bool embed)
container->add(*_gui_widget);
Ganv::Module::embed(container);
} else {
- Raul::error << "Failed to create LV2 UI" << endl;
+ app().log().error("Failed to create LV2 UI\n");
}
if (_gui_widget) {
@@ -294,7 +294,8 @@ NodeModule::delete_port_view(SharedPtr<const PortModel> model)
if (p) {
delete p;
} else {
- Raul::warn << "Failed to find port on module " << model->path() << endl;
+ app().log().warn(Raul::fmt("Failed to find port %1% on module %2%\n")
+ % model->path() % _node->path());
}
}
@@ -303,7 +304,7 @@ NodeModule::popup_gui()
{
if (_node->plugin() && _node->plugin()->type() == PluginModel::LV2) {
if (_plugin_ui) {
- Raul::warn << "LV2 GUI already embedded, cannot pop up" << endl;
+ app().log().warn("LV2 GUI already embedded, cannot pop up\n");
return false;
}
@@ -332,7 +333,7 @@ NodeModule::popup_gui()
return true;
} else {
- Raul::warn << "No LV2 GUI for " << _node->path() << endl;
+ app().log().warn(Raul::fmt("No LV2 GUI for %1%\n") % _node->path());
}
}
diff --git a/src/gui/PatchCanvas.cpp b/src/gui/PatchCanvas.cpp
index 25552202..bc103d50 100644
--- a/src/gui/PatchCanvas.cpp
+++ b/src/gui/PatchCanvas.cpp
@@ -24,17 +24,17 @@
#include "ganv/Canvas.hpp"
#include "ganv/Circle.hpp"
+#include "ingen/Builder.hpp"
+#include "ingen/ClashAvoider.hpp"
#include "ingen/Interface.hpp"
+#include "ingen/Log.hpp"
+#include "ingen/World.hpp"
#include "ingen/client/ClientStore.hpp"
#include "ingen/client/NodeModel.hpp"
#include "ingen/client/PatchModel.hpp"
#include "ingen/client/PluginModel.hpp"
#include "ingen/serialisation/Serialiser.hpp"
-#include "ingen/Builder.hpp"
-#include "ingen/ClashAvoider.hpp"
-#include "ingen/World.hpp"
#include "lv2/lv2plug.in/ns/ext/atom/atom.h"
-#include "raul/log.hpp"
#include "App.hpp"
#include "Edge.hpp"
@@ -50,8 +50,6 @@
#include "WidgetFactory.hpp"
#include "WindowFactory.hpp"
-#define LOG(s) s << "[PatchCanvas] "
-
#define FOREACH_ITEM(iter, coll) \
for (Items::const_iterator (iter) = coll.begin(); \
(iter) != coll.end(); ++(iter))
@@ -228,8 +226,8 @@ PatchCanvas::build_plugin_class_menu(
const char* sub_label_str = lilv_node_as_string(lilv_plugin_class_get_label(c));
const char* sub_uri_str = lilv_node_as_string(lilv_plugin_class_get_uri(c));
if (ancestors.find(sub_uri_str) != ancestors.end()) {
- LOG(Raul::warn) << "Infinite LV2 class recursion: " << class_uri_str
- << " <: " << sub_uri_str << endl;
+ _app.log().warn(Raul::fmt("Infinite LV2 class recursion: %1% <: %2%\n")
+ % class_uri_str % sub_uri_str);
return 0;
}
@@ -490,8 +488,8 @@ PatchCanvas::connection(SharedPtr<const EdgeModel> cm)
if (tail && head) {
new GUI::Edge(*this, cm, tail, head, tail->get_fill_color());
} else {
- LOG(Raul::error) << "Unable to find ports to connect "
- << cm->tail_path() << " -> " << cm->head_path() << endl;
+ _app.log().error(Raul::fmt("Unable to find ports to connect %1% => %2%\n")
+ % cm->tail_path() % cm->head_path());
}
}
@@ -501,11 +499,12 @@ PatchCanvas::disconnection(SharedPtr<const EdgeModel> cm)
Ganv::Port* const src = get_port_view(cm->tail());
Ganv::Port* const dst = get_port_view(cm->head());
- if (src && dst)
+ if (src && dst) {
remove_edge(src, dst);
- else
- LOG(Raul::error) << "Unable to find ports to disconnect "
- << cm->tail_path() << " -> " << cm->head_path() << endl;
+ } else {
+ _app.log().error(Raul::fmt("Unable to find ports to disconnect %1% => %2%\n")
+ % cm->tail_path() % cm->head_path());
+ }
}
void
@@ -703,7 +702,7 @@ PatchCanvas::paste()
Glib::ustring str = Gtk::Clipboard::get()->wait_for_text();
SharedPtr<Serialisation::Parser> parser = _app.loader()->parser();
if (!parser) {
- LOG(Raul::error) << "Unable to load parser, paste unavailable" << endl;
+ _app.log().error("Unable to load parser, paste unavailable\n");
return;
}
@@ -714,7 +713,7 @@ PatchCanvas::paste()
const URIs& uris = _app.uris();
Builder builder(_app.world()->uris(), *_app.interface());
- ClientStore clipboard(_app.world()->uris());
+ ClientStore clipboard(_app.world()->uris(), _app.log());
clipboard.set_plugins(_app.store()->plugins());
// mkdir -p
diff --git a/src/gui/PatchTreeWindow.cpp b/src/gui/PatchTreeWindow.cpp
index 06eed694..00b96926 100644
--- a/src/gui/PatchTreeWindow.cpp
+++ b/src/gui/PatchTreeWindow.cpp
@@ -14,17 +14,15 @@
along with Ingen. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "raul/log.hpp"
-#include "raul/Path.hpp"
-#include "ingen/Interface.hpp"
-#include "ingen/client/ClientStore.hpp"
-#include "ingen/client/PatchModel.hpp"
#include "App.hpp"
#include "PatchTreeWindow.hpp"
#include "SubpatchModule.hpp"
#include "WindowFactory.hpp"
-
-#define LOG(s) s << "[PatchTreeWindow] "
+#include "ingen/Interface.hpp"
+#include "ingen/Log.hpp"
+#include "ingen/client/ClientStore.hpp"
+#include "ingen/client/PatchModel.hpp"
+#include "raul/Path.hpp"
using namespace std;
@@ -160,8 +158,9 @@ PatchTreeWindow::show_patch_menu(GdkEventButton* ev)
if (active) {
Gtk::TreeModel::Row row = *active;
SharedPtr<PatchModel> pm = row[_patch_tree_columns.patch_model_col];
- if (pm)
- Raul::warn << "TODO: patch menu from tree window" << endl;
+ if (pm) {
+ _app->log().warn("TODO: patch menu from tree window");
+ }
}
}
@@ -205,7 +204,8 @@ PatchTreeWindow::patch_property_changed(const Raul::URI& key,
Gtk::TreeModel::Row row = *i;
row[_patch_tree_columns.enabled_col] = value.get_bool();
} else {
- LOG(Raul::error) << "Unable to find patch " << patch->path() << endl;
+ _app->log().error(Raul::fmt("Unable to find patch %1%\n")
+ % patch->path());
}
}
_enable_signal = true;
@@ -223,7 +223,8 @@ PatchTreeWindow::patch_moved(SharedPtr<PatchModel> patch)
Gtk::TreeModel::Row row = *i;
row[_patch_tree_columns.name_col] = patch->symbol().c_str();
} else {
- LOG(Raul::error) << "Unable to find patch " << patch->path() << endl;
+ _app->log().error(Raul::fmt("Unable to find patch %1%\n")
+ % patch->path());
}
_enable_signal = true;
diff --git a/src/gui/PatchTreeWindow.hpp b/src/gui/PatchTreeWindow.hpp
index 8321644f..86e10370 100644
--- a/src/gui/PatchTreeWindow.hpp
+++ b/src/gui/PatchTreeWindow.hpp
@@ -28,7 +28,7 @@ namespace Raul { class Path; }
namespace Ingen {
-namespace Client { class ClientStore; }
+namespace Client { class ClientStore; class ObjectModel; }
namespace GUI {
diff --git a/src/gui/PatchView.cpp b/src/gui/PatchView.cpp
index f1f4c96d..e81d16f7 100644
--- a/src/gui/PatchView.cpp
+++ b/src/gui/PatchView.cpp
@@ -16,15 +16,16 @@
#include <cassert>
#include <fstream>
-#include "raul/log.hpp"
+
#include "ingen/Interface.hpp"
#include "ingen/client/PatchModel.hpp"
+
#include "App.hpp"
-#include "PatchView.hpp"
-#include "PatchCanvas.hpp"
#include "LoadPluginWindow.hpp"
#include "NewSubpatchWindow.hpp"
+#include "PatchCanvas.hpp"
#include "PatchTreeWindow.hpp"
+#include "PatchView.hpp"
#include "WidgetFactory.hpp"
using namespace std;
@@ -192,14 +193,10 @@ PatchView::property_changed(const Raul::URI& predicate, const Raul::Atom& value)
if (predicate == _app->uris().ingen_enabled) {
if (value.type() == _app->uris().forge.Bool) {
_process_but->set_active(value.get_bool());
- } else {
- Raul::warn << "Bad type for ingen:enabled: " << value.type() << endl;
}
} else if (predicate == _app->uris().ingen_polyphony) {
if (value.type() == _app->uris().forge.Int) {
_poly_spin->set_value(value.get_int32());
- } else {
- Raul::warn << "Bad type for ingen:polyphony: " << value.type() << endl;
}
}
_enable_signal = true;
diff --git a/src/gui/Port.cpp b/src/gui/Port.cpp
index a238d60f..265b4caf 100644
--- a/src/gui/Port.cpp
+++ b/src/gui/Port.cpp
@@ -19,9 +19,9 @@
#include "ganv/Module.hpp"
#include "ingen/Interface.hpp"
+#include "ingen/Log.hpp"
#include "ingen/client/PatchModel.hpp"
#include "ingen/client/PortModel.hpp"
-#include "raul/log.hpp"
#include "App.hpp"
#include "Configuration.hpp"
@@ -143,7 +143,7 @@ void
Port::on_value_changed(GVariant* value)
{
if (!g_variant_is_of_type(value, G_VARIANT_TYPE_DOUBLE)) {
- Raul::warn("TODO: Non-float port value changed\n");
+ _app.log().warn("TODO: Non-float port value changed\n");
return;
}
diff --git a/src/gui/PropertiesWindow.cpp b/src/gui/PropertiesWindow.cpp
index b146d412..2acb7ffe 100644
--- a/src/gui/PropertiesWindow.cpp
+++ b/src/gui/PropertiesWindow.cpp
@@ -21,15 +21,14 @@
#include <gtkmm/label.h>
#include <gtkmm/spinbutton.h>
-#include "App.hpp"
-#include "PropertiesWindow.hpp"
#include "ingen/Interface.hpp"
+#include "ingen/Log.hpp"
#include "ingen/World.hpp"
#include "ingen/client/NodeModel.hpp"
#include "ingen/client/PluginModel.hpp"
-#include "raul/log.hpp"
-#define LOG(s) s << "[PropertiesWindow] "
+#include "App.hpp"
+#include "PropertiesWindow.hpp"
using namespace std;
@@ -351,7 +350,8 @@ PropertiesWindow::create_value_widget(const Raul::URI& uri, const Raul::Atom& va
return widget;
}
- LOG(Raul::error) << "Unable to create widget for value " << forge.str(value) << endl;
+ _app->log().error(Raul::fmt("Unable to create widget for value %1%\n")
+ % forge.str(value));
return NULL;
}
@@ -408,7 +408,8 @@ PropertiesWindow::value_edited(const Raul::URI& predicate)
{
Records::iterator r = _records.find(predicate);
if (r == _records.end()) {
- LOG(Raul::error) << "Unknown property `" << predicate << "' edited" << endl;
+ _app->log().error(Raul::fmt("Unknown property `%1%' edited\n")
+ % predicate);
return;
}
@@ -440,7 +441,8 @@ PropertiesWindow::value_edited(const Raul::URI& predicate)
return;
bad_type:
- LOG(Raul::error) << "Property `" << predicate << "' value widget has wrong type" << endl;
+ _app->log().error(Raul::fmt("Property `%1%' value widget has wrong type\n")
+ % predicate);
return;
}
@@ -517,21 +519,16 @@ PropertiesWindow::cancel_clicked()
void
PropertiesWindow::apply_clicked()
{
- LOG(Raul::debug) << "apply {" << endl;
Resource::Properties properties;
for (Records::const_iterator r = _records.begin(); r != _records.end(); ++r) {
const Raul::URI& uri = r->first;
const Record& record = r->second;
if (!_model->has_property(uri, record.value)) {
- LOG(Raul::debug) << "\t" << uri
- << " = " << _app->forge().str(record.value) << endl;
properties.insert(make_pair(uri, record.value));
}
}
_app->interface()->put(_model->uri(), properties);
-
- LOG(Raul::debug) << "}" << endl;
}
void
diff --git a/src/gui/RenameWindow.cpp b/src/gui/RenameWindow.cpp
index df22a3c0..25528df1 100644
--- a/src/gui/RenameWindow.cpp
+++ b/src/gui/RenameWindow.cpp
@@ -80,7 +80,6 @@ void
RenameWindow::values_changed()
{
const string& symbol = _symbol_entry->get_text();
- const string& label = _label_entry->get_text();
if (!Raul::Symbol::is_valid(symbol)) {
_message_label->set_text("Invalid symbol");
_ok_button->property_sensitive() = false;
diff --git a/src/gui/ThreadedLoader.cpp b/src/gui/ThreadedLoader.cpp
index 3154dfbb..bc7aa19c 100644
--- a/src/gui/ThreadedLoader.cpp
+++ b/src/gui/ThreadedLoader.cpp
@@ -16,10 +16,10 @@
#include <string>
+#include "ingen/Log.hpp"
#include "ingen/Module.hpp"
#include "ingen/World.hpp"
#include "ingen/client/PatchModel.hpp"
-#include "raul/log.hpp"
#include "App.hpp"
#include "ThreadedLoader.hpp"
@@ -36,10 +36,11 @@ ThreadedLoader::ThreadedLoader(App& app, SharedPtr<Interface> engine)
, _sem(0)
, _engine(engine)
{
- if (parser())
+ if (parser()) {
start();
- else
- Raul::warn << "Failed to load ingen_serialisation module, load disabled." << endl;
+ } else {
+ app.log().warn("Parser unavailable, patch loading disabled\n");
+ }
}
ThreadedLoader::~ThreadedLoader()
diff --git a/src/gui/WidgetFactory.cpp b/src/gui/WidgetFactory.cpp
index 31749ffe..642e3cea 100644
--- a/src/gui/WidgetFactory.cpp
+++ b/src/gui/WidgetFactory.cpp
@@ -17,8 +17,7 @@
#include <fstream>
#include <string>
-#include "raul/log.hpp"
-
+#include "raul/fmt.hpp"
#include "ingen/runtime_paths.hpp"
#include "WidgetFactory.hpp"
@@ -59,25 +58,21 @@ WidgetFactory::find_ui_file()
if (is_readable(ui_filename))
return;
- Raul::error << "[WidgetFactory] Unable to find ingen_gui.ui in "
- << INGEN_DATA_DIR << endl;
- throw std::runtime_error("Unable to find UI file");
+ throw std::runtime_error((Raul::fmt("Unable to find ingen_gui.ui in %1%\n")
+ % INGEN_DATA_DIR).str());
}
Glib::RefPtr<Gtk::Builder>
WidgetFactory::create(const string& toplevel_widget)
{
- if (ui_filename.empty())
+ if (ui_filename.empty()) {
find_ui_file();
+ }
- try {
- if (toplevel_widget.empty())
- return Gtk::Builder::create_from_file(ui_filename);
- else
- return Gtk::Builder::create_from_file(ui_filename, toplevel_widget.c_str());
- } catch (const Gtk::BuilderError& ex) {
- Raul::error << "[WidgetFactory] " << ex.what() << endl;
- throw ex;
+ if (toplevel_widget.empty()) {
+ return Gtk::Builder::create_from_file(ui_filename);
+ } else {
+ return Gtk::Builder::create_from_file(ui_filename, toplevel_widget.c_str());
}
}
diff --git a/src/gui/ingen_gui_lv2.cpp b/src/gui/ingen_gui_lv2.cpp
index 3dcb6d71..937ecd38 100644
--- a/src/gui/ingen_gui_lv2.cpp
+++ b/src/gui/ingen_gui_lv2.cpp
@@ -89,15 +89,18 @@ instantiate(const LV2UI_Descriptor* descriptor,
LV2_URID_Map* map = NULL;
LV2_URID_Unmap* unmap = NULL;
+ LV2_Log_Log* log = NULL;
for (int i = 0; features[i]; ++i) {
- if (!strcmp(features[i]->URI, LV2_URID_URI "#map")) {
+ if (!strcmp(features[i]->URI, LV2_URID__map)) {
map = (LV2_URID_Map*)features[i]->data;
- } else if (!strcmp(features[i]->URI, LV2_URID_URI "#unmap")) {
+ } else if (!strcmp(features[i]->URI, LV2_URID__unmap)) {
unmap = (LV2_URID_Unmap*)features[i]->data;
+ } else if (!strcmp(features[i]->URI, LV2_LOG__log)) {
+ log = (LV2_Log_Log*)features[i]->data;
}
}
- ui->world = new Ingen::World(ui->argc, ui->argv, map, unmap);
+ ui->world = new Ingen::World(ui->argc, ui->argv, map, unmap, log);
ui->forge = new Ingen::Forge(ui->world->uri_map());
@@ -125,6 +128,7 @@ instantiate(const LV2UI_Descriptor* descriptor,
ui->reader = SharedPtr<Ingen::AtomReader>(
new Ingen::AtomReader(ui->world->uri_map(),
ui->world->uris(),
+ ui->world->log(),
ui->world->forge(),
*ui->client.get()));