diff --git a/SConstruct b/SConstruct
index 3c49573da..03df2a5c9 100644
--- a/SConstruct
+++ b/SConstruct
@@ -342,13 +342,6 @@ def defineBuildTargets(env, artifacts):
envPlu.Append(CPPDEFINES='LUMIERA_PLUGIN')
artifacts['plugins'] = [] # currently none
-
- # the Lumiera GTK GUI
- envGtk = env.Clone()
- envGtk.mergeConf(['gtkmm-2.4','cairomm-1.0','gdl-1.0','librsvg-2.0','xv','xext','sm'])
- envGtk.Append(CPPDEFINES='LUMIERA_PLUGIN', LIBS=core)
- objgui = srcSubtree(envGtk,'$SRCDIR/gui')
-
# render and install Icons
vector_icon_dir = env.subst('$ICONDIR/svg')
prerendered_icon_dir = env.subst('$ICONDIR/prerendered')
@@ -356,13 +349,18 @@ def defineBuildTargets(env, artifacts):
+ [env.IconCopy(f) for f in scanSubtree(prerendered_icon_dir, ['*.png'])]
)
- guimodule = envGtk.LoadableModule('$LIBDIR/gtk_gui', objgui, SHLIBPREFIX='', SHLIBSUFFIX='.lum')
- artifacts['lumigui'] = ( guimodule
- + envGtk.Program('$BINDIR/lumigui', objgui )
- + env.Install('$BINDIR', env.Glob('$SRCDIR/gui/*.rc'))
- + artifacts['icons']
- )
+ # the Lumiera GTK GUI
+ envGtk = env.Clone()
+ envGtk.mergeConf(['gtkmm-2.4','cairomm-1.0','gdl-1.0','librsvg-2.0','xv','xext','sm'])
+ envGtk.Append(CPPDEFINES='LUMIERA_PLUGIN', LIBS=core)
+ objgui = srcSubtree(envGtk,'$SRCDIR/gui')
+ guimodule = envGtk.LoadableModule('$LIBDIR/gtk_gui', objgui, SHLIBPREFIX='', SHLIBSUFFIX='.lum')
+ artifacts['gui'] = ( guimodule
+ + env.Install('$BINDIR', env.Glob('$SRCDIR/gui/*.rc'))
+ + artifacts['icons']
+ )
+
# call subdir SConscript(s) for independent components
SConscript(dirs=[SRCDIR+'/tool'], exports='env envGtk artifacts core')
SConscript(dirs=[TESTDIR], exports='env envPlu artifacts core')
@@ -377,7 +375,7 @@ def definePostBuildTargets(env, artifacts):
il = env.Alias('install-lib', '$DESTDIR/lib')
env.Alias('install', [ib, il])
- build = env.Alias('build', artifacts['lumiera']+artifacts['lumigui']+artifacts['plugins']+artifacts['tools'])
+ build = env.Alias('build', artifacts['lumiera']+artifacts['gui']+artifacts['plugins']+artifacts['tools'])
allbu = env.Alias('allbuild', build+artifacts['testsuite'])
env.Default('build')
# additional files to be cleaned when cleaning 'build'
@@ -418,6 +416,7 @@ artifacts = {}
# Each entry actually is a SCons-Node list.
# Passing these entries to other builders defines dependencies.
# 'lumiera' : the App
+# 'gui' : the GTK UI (plugin)
# 'plugins' : plugin shared lib
# 'tools' : small tool applications (e.g mpegtoc)
# 'src,tar' : source tree as tarball (without doc)
diff --git a/src/gui/Makefile.am b/src/gui/Makefile.am
index 1cef51ae3..166744b2a 100644
--- a/src/gui/Makefile.am
+++ b/src/gui/Makefile.am
@@ -17,36 +17,6 @@
lumigui_srcdir = $(top_srcdir)/src/gui
-#
-# lumigui is the standalone gui mockup, will be removed later
-#
-bin_PROGRAMS += lumigui
-
-lumigui_CPPFLAGS = $(AM_CPPFLAGS) \
- -DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \
- -DPACKAGE_SRC_DIR=\""$(srcdir)"\" \
- -DPACKAGE_DATA_DIR=\""$(datadir)"\" \
- $(LUMIERA_GUI_CFLAGS)
-
-lumigui_CFLAGS = $(AM_CFLAGS) -std=gnu99 -Wall -Wextra -Werror
-lumigui_CXXFLAGS = $(AM_CXXFLAGS) -Wall -Wextra
-
-lumigui_LDADD = \
- liblumieracommon.la \
- liblumierabackend.la \
- liblumieraproc.la \
- liblumiera.la \
- libgui.la \
- $(LUMIERA_GUI_LIBS) \
- $(NOBUGMT_LUMIERA_LIBS) \
- -lboost_program_options-mt \
- -lboost_regex-mt
-
-lumigui_SOURCES = \
- $(lumigui_srcdir)/gtk-lumiera.cpp \
- $(lumigui_srcdir)/gtk-lumiera.hpp
-
-
#
# themes, locales and other supplemental data
#
@@ -64,7 +34,13 @@ pkglib_LTLIBRARIES += gtk_gui.la
gtk_gui_la_CFLAGS = $(AM_CFLAGS) -std=gnu99 -Wall -Wextra -Werror
gtk_gui_la_CXXFLAGS = $(AM_CXXFLAGS) -Wall -Wextra
-gtk_gui_la_CPPFLAGS = $(AM_CPPFLAGS) $(LUMIERA_GUI_CFLAGS) -DLUMIERA_PLUGIN -I$(top_srcdir)/src/
+gtk_gui_la_CPPFLAGS = $(AM_CPPFLAGS) \
+ $(LUMIERA_GUI_CFLAGS) \
+ -DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \
+ -DPACKAGE_SRC_DIR=\""$(srcdir)"\" \
+ -DPACKAGE_DATA_DIR=\""$(datadir)"\" \
+ -DLUMIERA_PLUGIN -I$(top_srcdir)/src/ \
+ $(LUMIERA_GUI_CFLAGS)
gtk_gui_la_LDFLAGS = -module -avoid-version -no-undefined -rpath /dev/null -shrext .lum
gtk_gui_la_LIBADD = \
@@ -72,29 +48,13 @@ gtk_gui_la_LIBADD = \
liblumierabackend.la \
liblumieraproc.la \
liblumiera.la \
- libgui.la \
$(LUMIERA_GUI_LIBS) \
$(NOBUGMT_LUMIERA_LIBS)
-gtk_gui_la_SOURCES = \
- $(lumigui_srcdir)/guistart.cpp
-
-
-#
-# libgui is a convenience library used by lumigui and the gtk_gui module
-#
-noinst_LTLIBRARIES += libgui.la
-
-libgui_la_CFLAGS = $(AM_CFLAGS) -std=gnu99 -Wall -Wextra -Werror
-libgui_la_CXXFLAGS = $(AM_CXXFLAGS) -Wall -Wextra
-
-libgui_la_CPPFLAGS = $(AM_CPPFLAGS) \
- -DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \
- -DPACKAGE_SRC_DIR=\""$(srcdir)"\" \
- -DPACKAGE_DATA_DIR=\""$(datadir)"\" \
- $(LUMIERA_GUI_CFLAGS)
-
-libgui_la_SOURCES = \
+gtk_gui_la_SOURCES = \
+ $(lumigui_srcdir)/guistart.cpp \
+ $(lumigui_srcdir)/gtk-lumiera.cpp \
+ $(lumigui_srcdir)/gtk-lumiera.hpp \
$(lumigui_srcdir)/notification-service.cpp \
$(lumigui_srcdir)/window-manager.cpp \
$(lumigui_srcdir)/window-manager.hpp \
@@ -176,13 +136,8 @@ libgui_la_SOURCES = \
$(lumigui_srcdir)/util/rectangle.cpp \
$(lumigui_srcdir)/util/rectangle.hpp
-libgui_la_LIBADD = \
- liblumieracommon.la \
- liblumierabackend.la \
- liblumieraproc.la \
- liblumiera.la \
- $(LUMIERA_GUI_LIBS) \
- $(NOBUGMT_LUMIERA_LIBS)
+
+
diff --git a/src/gui/gtk-lumiera.cpp b/src/gui/gtk-lumiera.cpp
index 87e2c34a7..fb804c2d6 100644
--- a/src/gui/gtk-lumiera.cpp
+++ b/src/gui/gtk-lumiera.cpp
@@ -132,14 +132,3 @@ application()
}
} // namespace gui
-
-/**
- * Run the Lumiera GTK GUI as standalone application without backend.
- */
-int
-main (int argc, char *argv[])
-{
- NOBUG_INIT;
- gui::application().main(argc, argv);
- return 0;
-}
diff --git a/src/gui/widgets/timeline/timeline-header-container.cpp b/src/gui/widgets/timeline/timeline-header-container.cpp
index a5880d6e0..9e4a60512 100644
--- a/src/gui/widgets/timeline/timeline-header-container.cpp
+++ b/src/gui/widgets/timeline/timeline-header-container.cpp
@@ -414,7 +414,7 @@ TimelineHeaderContainer::begin_drag()
// Set the cursor to a hand
REQUIRE(gdkWindow);
- gdkWindow->set_cursor(Gdk::Cursor(Gdk::HAND1));
+ gdkWindow->set_cursor(Gdk::Cursor(Gdk::FLEUR));
}
void
@@ -431,7 +431,7 @@ TimelineHeaderContainer::end_drag(bool apply)
// Reset the arrow as a cursor
REQUIRE(gdkWindow);
- gdkWindow->set_cursor(Gdk::Cursor(Gdk::ARROW));
+ gdkWindow->set_cursor(Gdk::Cursor(Gdk::LEFT_PTR));
}
void
diff --git a/src/gui/workspace/actions.cpp b/src/gui/workspace/actions.cpp
index e2679b7f1..b2cf555db 100644
--- a/src/gui/workspace/actions.cpp
+++ b/src/gui/workspace/actions.cpp
@@ -90,10 +90,6 @@ Actions::Actions(WorkspaceWindow &workspace_window) :
sigc::mem_fun(*this, &Actions::on_menu_view_viewer));
actionGroup->add(viewerPanelAction);
- actionGroup->add(Action::create("ViewNewWindow",
- Gtk::StockID("new_window")),
- sigc::mem_fun(*this, &Actions::on_menu_view_new_window));
-
// Sequence Menu
actionGroup->add(Action::create("SequenceMenu", _("_Sequence")));
actionGroup->add(Action::create("SequenceAdd", _("_Add...")),
@@ -104,6 +100,12 @@ Actions::Actions(WorkspaceWindow &workspace_window) :
actionGroup->add(Action::create("TrackAdd", _("_Add...")),
sigc::mem_fun(*this, &Actions::on_menu_track_add));
+ // Window Menu
+ actionGroup->add(Action::create("WindowMenu", _("_Window")));
+ actionGroup->add(Action::create("WindowNewWindow",
+ Gtk::StockID("new_window")),
+ sigc::mem_fun(*this, &Actions::on_menu_window_new_window));
+
// Help Menu
actionGroup->add(Action::create("HelpMenu", _("_Help")) );
actionGroup->add(Action::create("HelpAbout", Stock::ABOUT),
@@ -151,7 +153,9 @@ Actions::on_menu_file_render()
void
Actions::on_menu_file_quit()
{
- workspaceWindow.hide(); // Closes the main window to stop the Gtk::Main::run().
+ Main *main = Main::instance();
+ REQUIRE(main);
+ main->quit();
}
/* ===== Edit Menu Event Handlers ===== */
@@ -187,13 +191,6 @@ Actions::on_menu_view_viewer()
workspaceWindow.viewerPanel->show(viewerPanelAction->get_active());
}
-void
-Actions::on_menu_view_new_window()
-{
- application().get_window_manager().new_window(workspaceWindow.project,
- workspaceWindow.controller);
-}
-
/* ===== Sequence Menu Event Handlers ===== */
void
@@ -213,7 +210,16 @@ Actions::on_menu_track_add()
g_message("Hello");
}
-/* ===== View Menu Event Handlers ===== */
+/* ===== Window Menu Event Handlers ===== */
+
+void
+Actions::on_menu_window_new_window()
+{
+ application().get_window_manager().new_window(workspaceWindow.project,
+ workspaceWindow.controller);
+}
+
+/* ===== Help Menu Event Handlers ===== */
void
Actions::on_menu_help_about()
diff --git a/src/gui/workspace/actions.hpp b/src/gui/workspace/actions.hpp
index eb995fc02..668c71975 100644
--- a/src/gui/workspace/actions.hpp
+++ b/src/gui/workspace/actions.hpp
@@ -69,12 +69,13 @@ private:
void on_menu_view_resources();
void on_menu_view_timeline();
void on_menu_view_viewer();
- void on_menu_view_new_window();
void on_menu_sequence_add();
void on_menu_track_add();
+ void on_menu_window_new_window();
+
void on_menu_help_about();
// Temporary Junk
diff --git a/src/gui/workspace/workspace-window.cpp b/src/gui/workspace/workspace-window.cpp
index d79008367..1d872c5c9 100644
--- a/src/gui/workspace/workspace-window.cpp
+++ b/src/gui/workspace/workspace-window.cpp
@@ -120,8 +120,6 @@ WorkspaceWindow::create_ui()
" "
" "
" "
- "