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() " " " " " " - " " - " " " " " " " " @@ -129,6 +127,9 @@ WorkspaceWindow::create_ui() " " " " " " + " " + " " + " " " " " " " "