[ease/builder] Ported the editor window to GtkBuilder.



commit ca7704874542ad7d9e18e5e2e0c17c1c4fb7c361
Author: Nate Stedman <natesm gmail com>
Date:   Thu Jul 1 18:42:54 2010 -0400

    Ported the editor window to GtkBuilder.
    
    - Removed MainToolbar
    - Moved signal lambdas to functions

 Makefile.am                 |    2 +-
 configure.ac                |    4 +-
 data/Makefile.am            |    2 +
 data/ui/editor-window.ui    |  461 +++++++++++++++++++++++++++++++++++++++++++
 src/ease-editor-window.vala |  299 ++++++++++------------------
 src/ease-main-toolbar.vala  |   87 --------
 src/ease-temp.vala          |    1 +
 7 files changed, 573 insertions(+), 283 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index 5a29d2e..8b8e2fb 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -30,7 +30,6 @@ ease_SOURCES = \
 	src/ease-inspector.vala \
 	src/ease-inspector-window.vala \
 	src/ease-json-parser.vala \
-	src/ease-main-toolbar.vala \
 	src/ease-media-element.vala \
 	src/ease-open-dialog.vala \
 	src/ease-pdf-exporter.vala \
@@ -80,6 +79,7 @@ VALAFLAGS = --pkg glib-2.0 \
 		--pkg clutter-gst-1.0\
 		--pkg json-glib-1.0\
 		--pkg libarchive\
+		--pkg gmodule-2.0\
 		-g \
 		$(NULL)
 
diff --git a/configure.ac b/configure.ac
index 5a2aeb9..f6cd4a4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -27,9 +27,9 @@ GNOME_COMPILE_WARNINGS([maximum])
 GNOME_MAINTAINER_MODE_DEFINES
 
 dnl FIXME
-pkg_modules="clutter-gtk-0.10 >= 0.10 gee-1.0 >= 0.5.0 clutter-gst-1.0 >= 1.0.0 json-glib-1.0 >= 0.7.6 libarchive"
+pkg_modules="clutter-gtk-0.10 >= 0.10 gee-1.0 >= 0.5.0 clutter-gst-1.0 >= 1.0.0 json-glib-1.0 >= 0.7.6 libarchive gmodule-2.0"
 
-EASE_PACKAGES="--pkg glib-2.0 --pkg gtk+-2.0 --pkg clutter-1.0 --pkg gdk-2.0 --pkg libxml-2.0 --pkg gee-1.0 --pkg clutter-gtk-0.10 --pkg cogl-1.0 --pkg gio-2.0 --pkg clutter-gst-1.0 --pkg libarchive"
+EASE_PACKAGES="--pkg glib-2.0 --pkg gtk+-2.0 --pkg clutter-1.0 --pkg gdk-2.0 --pkg libxml-2.0 --pkg gee-1.0 --pkg clutter-gtk-0.10 --pkg cogl-1.0 --pkg gio-2.0 --pkg clutter-gst-1.0 --pkg libarchive --pkg gmodule-2.0"
 
 PKG_CHECK_MODULES(EASE, [$pkg_modules])
 
diff --git a/data/Makefile.am b/data/Makefile.am
index 9793c2e..5bd78d5 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -9,3 +9,5 @@ svg_DATA = $(wildcard $(top_srcdir)/data/svg/*.svg)
 
 EXTRA_DIST = $(svg_DATA) $(desktop_in_files)
 
+uidir = $(datadir)/ease/ui
+ui_DATA = $(wildcard $(top_srcdir)/data/ui/*.ui)
diff --git a/data/ui/editor-window.ui b/data/ui/editor-window.ui
new file mode 100644
index 0000000..fbcce92
--- /dev/null
+++ b/data/ui/editor-window.ui
@@ -0,0 +1,461 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkVBox" id="Editor Widget">
+    <property name="visible">True</property>
+    <child>
+      <object class="GtkMenuBar" id="Menu Bar">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkMenuItem" id="File Item">
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">_File</property>
+            <property name="use_underline">True</property>
+            <child type="submenu">
+              <object class="GtkMenu" id="File Menu">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkImageMenuItem" id="New">
+                    <property name="label">gtk-new</property>
+                    <property name="visible">True</property>
+                    <property name="use_underline">True</property>
+                    <property name="use_stock">True</property>
+                    <signal name="activate" handler="ease_main_show_welcome"/>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkImageMenuItem" id="Open">
+                    <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="ease_open_dialog_run"/>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkSeparatorMenuItem" id="menuitem1">
+                    <property name="visible">True</property>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkImageMenuItem" id="Save">
+                    <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="ease_editor_window_save_document"/>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkImageMenuItem" id="Save As">
+                    <property name="label">gtk-save-as</property>
+                    <property name="visible">True</property>
+                    <property name="use_underline">True</property>
+                    <property name="use_stock">True</property>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkImageMenuItem" id="Save a Copy">
+                    <property name="label" translatable="yes">Save a _Copy</property>
+                    <property name="visible">True</property>
+                    <property name="use_underline">True</property>
+                    <property name="image">image1</property>
+                    <property name="use_stock">False</property>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkSeparatorMenuItem" id="separatormenuitem1">
+                    <property name="visible">True</property>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkMenuItem" id="Export">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">_Export Presentation</property>
+                    <property name="use_underline">True</property>
+                    <child type="submenu">
+                      <object class="GtkMenu" id="menu1">
+                        <property name="visible">True</property>
+                        <child>
+                          <object class="GtkMenuItem" id="PDF Export">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">_PDF</property>
+                            <property name="use_underline">True</property>
+                            <signal name="activate" handler="ease_editor_window_export_to_pdf"/>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="GtkMenuItem" id="HTML Export">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">_HTML</property>
+                            <property name="use_underline">True</property>
+                            <signal name="activate" handler="ease_editor_window_export_to_html"/>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkSeparatorMenuItem" id="menuitem2">
+                    <property name="visible">True</property>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkImageMenuItem" id="Quit">
+                    <property name="label">gtk-quit</property>
+                    <property name="visible">True</property>
+                    <property name="use_underline">True</property>
+                    <property name="use_stock">True</property>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+        </child>
+        <child>
+          <object class="GtkMenuItem" id="Edit Item">
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">_Edit</property>
+            <property name="use_underline">True</property>
+            <child type="submenu">
+              <object class="GtkMenu" id="Edit Menu">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkImageMenuItem" id="Cut">
+                    <property name="label">gtk-cut</property>
+                    <property name="visible">True</property>
+                    <property name="use_underline">True</property>
+                    <property name="use_stock">True</property>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkImageMenuItem" id="Copy">
+                    <property name="label">gtk-copy</property>
+                    <property name="visible">True</property>
+                    <property name="use_underline">True</property>
+                    <property name="use_stock">True</property>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkImageMenuItem" id="Paste">
+                    <property name="label">gtk-paste</property>
+                    <property name="visible">True</property>
+                    <property name="use_underline">True</property>
+                    <property name="use_stock">True</property>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkImageMenuItem" id="Delete">
+                    <property name="label">gtk-delete</property>
+                    <property name="visible">True</property>
+                    <property name="use_underline">True</property>
+                    <property name="use_stock">True</property>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+        </child>
+        <child>
+          <object class="GtkMenuItem" id="Insert">
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">_Insert</property>
+            <property name="use_underline">True</property>
+            <child type="submenu">
+              <object class="GtkMenu" id="menu2">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkMenuItem" id="Insert Image">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">_Image</property>
+                    <property name="use_underline">True</property>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkMenuItem" id="menuitem3">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">_Video</property>
+                    <property name="use_underline">True</property>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+        </child>
+        <child>
+          <object class="GtkMenuItem" id="View Item">
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">_View</property>
+            <property name="use_underline">True</property>
+          </object>
+        </child>
+        <child>
+          <object class="GtkMenuItem" id="Help Item">
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">_Help</property>
+            <property name="use_underline">True</property>
+            <child type="submenu">
+              <object class="GtkMenu" id="Help Menu">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkImageMenuItem" id="About">
+                    <property name="label">gtk-about</property>
+                    <property name="visible">True</property>
+                    <property name="use_underline">True</property>
+                    <property name="use_stock">True</property>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkToolbar" id="Main Toolbar">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkToolButton" id="Add Slide">
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">Add Slide</property>
+            <property name="use_underline">True</property>
+            <property name="stock_id">gtk-add</property>
+            <signal name="clicked" handler="ease_editor_window_new_slide_handler"/>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToolButton" id="Remove Slide">
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">Remove Slide</property>
+            <property name="use_underline">True</property>
+            <property name="stock_id">gtk-remove</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkSeparatorToolItem" id="toolbutton1">
+            <property name="visible">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToolButton" id="Play">
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">Present</property>
+            <property name="use_underline">True</property>
+            <property name="stock_id">gtk-media-play</property>
+            <signal name="clicked" handler="ease_editor_window_play_handler"/>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkSeparatorToolItem" id="toolbutton4">
+            <property name="visible">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToolButton" id="Save2">
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">Save</property>
+            <property name="use_underline">True</property>
+            <property name="stock_id">gtk-save</property>
+            <signal name="clicked" handler="ease_editor_window_save_document"/>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkSeparatorToolItem" id="toolbutton2">
+            <property name="visible">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToolButton" id="Undo">
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">Undo</property>
+            <property name="use_underline">True</property>
+            <property name="stock_id">gtk-undo</property>
+            <signal name="clicked" handler="ease_editor_window_undo_handler"/>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToolButton" id="Redo">
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">Redo</property>
+            <property name="use_underline">True</property>
+            <property name="stock_id">gtk-redo</property>
+            <signal name="clicked" handler="ease_editor_window_redo_handler"/>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkSeparatorToolItem" id="toolbutton3">
+            <property name="visible">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToolButton" id="Show Inspector">
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">Inspector</property>
+            <property name="use_underline">True</property>
+            <property name="stock_id">gtk-info</property>
+            <signal name="clicked" handler="ease_editor_window_inspector_clicked_handler"/>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkSeparatorToolItem" id="toolbutton5">
+            <property name="visible">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToolButton" id="Show Colors">
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">Colors</property>
+            <property name="use_underline">True</property>
+            <property name="stock_id">gtk-select-color</property>
+            <signal name="clicked" handler="ease_editor_window_show_color_dialog"/>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToolButton" id="Show Fonts">
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">Fonts</property>
+            <property name="use_underline">True</property>
+            <property name="stock_id">gtk-select-font</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkSeparatorToolItem" id="Expand Separator">
+            <property name="visible">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToolItem" id="Zoom Slider Item">
+            <property name="visible">True</property>
+            <child>
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="position">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkHBox" id="HBox">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkAlignment" id="Slides Align">
+            <property name="visible">True</property>
+            <child>
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkAlignment" id="Embed Align">
+            <property name="visible">True</property>
+            <child>
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkAlignment" id="Inspector Align">
+            <property name="visible">True</property>
+            <child>
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="position">2</property>
+      </packing>
+    </child>
+  </object>
+  <object class="GtkImage" id="image1">
+    <property name="visible">True</property>
+    <property name="yalign">0.49000000953674316</property>
+    <property name="stock">gtk-copy</property>
+  </object>
+</interface>
diff --git a/src/ease-editor-window.vala b/src/ease-editor-window.vala
index 9307759..76d0ce1 100644
--- a/src/ease-editor-window.vala
+++ b/src/ease-editor-window.vala
@@ -31,11 +31,6 @@ public class Ease.EditorWindow : Gtk.Window
 	public EditorEmbed embed;
 	
 	/**
-	 * The { link MainToolbar} of this EditorWindow.
-	 */
-	public MainToolbar main_toolbar;
-	
-	/**
 	 * The { link SlideButtonPanel} of this EditorWindow.
 	 */
 	public SlideButtonPanel slide_button_panel;
@@ -72,9 +67,14 @@ public class Ease.EditorWindow : Gtk.Window
 	private UndoController undo;
 	
 	/**
-	 * If the { link Inspector} is visible.
+	 * The undo button.
 	 */
-	public bool inspector_shown { get; set; }
+	private Gtk.ToolButton undo_button;
+	
+	/**
+	 * The redo button.
+	 */
+	private Gtk.ToolButton redo_button;
 	
 	/**
 	 * If the { link SlideButtonPanel} is visible.
@@ -90,7 +90,6 @@ public class Ease.EditorWindow : Gtk.Window
 	 * The color selection dialog's widget.
 	 */
 	private Gtk.ColorSelection color_selection;
-	 
 	
 	/**
 	 * The time the document was last saved.
@@ -102,6 +101,8 @@ public class Ease.EditorWindow : Gtk.Window
 	 */
 	private int[] ZOOM_LEVELS = {10, 25, 33, 50, 66, 75, 100, 125, 150,
 	                             200, 250, 300, 400};
+	
+	private const string UI_FILE_PATH = "editor-window.ui";
 
 	/**
 	 * Creates a new EditorWindow.
@@ -119,42 +120,46 @@ public class Ease.EditorWindow : Gtk.Window
 		
 		document = doc;
 		
+		var builder = new Gtk.Builder();
+		try
+		{
+			builder.add_from_file(data_path(Path.build_filename(Temp.TEMP_DIR,
+				                                                Temp.UI_DIR,
+				                                                UI_FILE_PATH)));
+		}
+		catch (Error e) { error("Error loading UI: %s", e.message); }
+		
+		builder.connect_signals(this);
+		add(builder.get_object("Editor Widget") as Gtk.VBox);
+				
 		// slide display
 		slide_button_panel = new SlideButtonPanel(document, this);
+		(builder.get_object("Slides Align") as Gtk.Alignment).
+			add(slide_button_panel);
 		
 		// undo controller
 		undo = new UndoController();
+		undo_button = builder.get_object("Undo") as Gtk.ToolButton;
+		redo_button = builder.get_object("Redo") as Gtk.ToolButton;
 		
 		// the inspector
 		inspector = new Inspector();
+		(builder.get_object("Inspector Align") as Gtk.Alignment).add(inspector);
 		
 		// main editor
 		embed = new EditorEmbed(document, this);
+		(builder.get_object("Embed Align") as Gtk.Alignment).add(embed);
 		
-		// assemble middle contents			
-		var hbox = new Gtk.HBox(false, 0);
-		hbox.pack_start(slide_button_panel, false, false, 0);
-		hbox.pack_start(embed, true, true, 0);
-		hbox.pack_start(inspector, false, false, 0);
-		
-		// assemble window contents
-		var vbox = new Gtk.VBox(false, 0);
-		vbox.pack_start(create_menu_bar(), false, false, 0);
-		main_toolbar = new MainToolbar();
-		vbox.pack_start(main_toolbar, false, false, 0);
-		vbox.pack_start(hbox, true, true, 0);
-		vbox.pack_end(create_bottom_bar(), false, false, 0);
+		// zoom slider
+		(builder.get_object("Zoom Slider Item") as Gtk.ToolItem).
+			add(create_zoom_slider());
 		
 		// final window setup
-		add(vbox);
 		show_all();
 		embed.show();
 		inspector.hide();
-		inspector_shown = false;
 		slides_shown = true;
 		
-		// USER INTERFACE SIGNALS
-		
 		// close the window
 		delete_event.connect((sender, event) => {
 			if (last_saved == 0) return false;
@@ -171,97 +176,7 @@ public class Ease.EditorWindow : Gtk.Window
 			if (response == Gtk.ResponseType.NO) return false;
 			
 			// otherwise, save and quit
-			return !save_document();
-		});
-		
-		// toolbar
-		
-		// create new slides
-		main_toolbar.new_slide.clicked.connect(() => {
-			var master = document.theme.slide_by_title(slide.title);
-			
-			var slide = new Slide.from_master(master, document,
-			                                  document.width,
-			                                  document.height, true);
-			
-			var index = document.index_of(slide) + 1;
-			
-			document.add_slide(index, slide);
-			slide_button_panel.add_slide(index, slide);
-		});
-		
-		// show and hide inspector
-		main_toolbar.inspector.clicked.connect(() => {
-			if (inspector_shown)
-			{
-				inspector.hide();
-			}
-			else
-			{
-				inspector.show();
-			}
-			inspector_shown = !inspector_shown;
-		});
-		
-		// show and hide slides
-		main_toolbar.slides.clicked.connect(() => {
-			if (slides_shown)
-			{
-				slide_button_panel.hide();
-			}
-			else
-			{
-				slide_button_panel.show();
-			}
-			slides_shown = !slides_shown;
-		});
-
-		// make a new presentation
-		main_toolbar.new_presentation.clicked.connect(Main.show_welcome);
-
-		// open a file
-		main_toolbar.open.clicked.connect(() => OpenDialog.run());
-		
-		// save file
-		main_toolbar.save.clicked.connect(() => {
-			save_document();
-		});
-		
-		// play presentation
-		main_toolbar.play.clicked.connect(() => {
-			player = new Player(document);
-		});
-		
-		// undo and redo
-		main_toolbar.undo.clicked.connect(() => {
-			undo.undo();
-			update_undo();
-			embed.slide_actor.relayout();
-			embed.reposition_group();
-		});
-		
-		main_toolbar.redo.clicked.connect(() => {
-			undo.redo();
-			update_undo();
-			embed.slide_actor.relayout();
-			embed.reposition_group();
-		});
-		
-		// TODO: export HTML in a proper place
-		main_toolbar.fonts.clicked.connect(() => {
-			document.export_to_html(this);
-		});
-		
-		// color selection
-		main_toolbar.colors.clicked.connect(show_color_dialog);
-		
-		main_toolbar.pdf.clicked.connect(() => {
-			PDFExporter.export(document, this);
-		});
-		
-		// change the embed's zoom when the zoom slider is moved
-		zoom_slider.value_changed.connect(() => {
-			embed.zoom = (float)zoom_slider.get_value() / 100f;
+			return !save_document(null);
 		});
 
 		hide.connect(() => Main.remove_window(this));
@@ -308,12 +223,52 @@ public class Ease.EditorWindow : Gtk.Window
 	 */
 	private void update_undo()
 	{
-		main_toolbar.undo.sensitive = undo.can_undo();
-		main_toolbar.redo.sensitive = undo.can_redo();
+		undo_button.sensitive = undo.can_undo();
+		redo_button.sensitive = undo.can_redo();
 	}
 	
 	// signal handlers
-	private bool save_document()
+	[CCode (instance_pos = -1)]
+	public void new_slide_handler(Gtk.Widget? sender)
+	{
+		var master = document.theme.slide_by_title(slide.title);
+		
+		var slide = new Slide.from_master(master, document,
+		                                  document.width,
+		                                  document.height, true);
+		
+		var index = document.index_of(slide) + 1;
+		
+		document.add_slide(index, slide);
+		slide_button_panel.add_slide(index, slide);
+	}
+	
+	[CCode (instance_pos = -1)]
+	public void play_handler(Gtk.Widget sender)
+	{
+		player = new Player(document);
+	}
+	
+	[CCode (instance_pos = -1)]
+	public void undo_handler(Gtk.Widget sender)
+	{
+		undo.undo();
+		update_undo();
+		embed.slide_actor.relayout();
+		embed.reposition_group();
+	}
+	
+	[CCode (instance_pos = -1)]
+	public void redo_handler(Gtk.Widget sender)
+	{
+		undo.redo();
+		update_undo();
+		embed.slide_actor.relayout();
+		embed.reposition_group();
+	}
+	
+	[CCode (instance_pos = -1)]
+	public bool save_document(Gtk.Widget? sender)
 	{
 		if (document.filename == null)
 		{
@@ -355,7 +310,33 @@ public class Ease.EditorWindow : Gtk.Window
 		return true;
 	}
 	
-	private void show_color_dialog()
+	[CCode (instance_pos = -1)]
+	public void export_to_pdf(Gtk.Widget sender)
+	{
+		PDFExporter.export(document, this);
+	}
+	
+	[CCode (instance_pos = -1)]
+	public void inspector_clicked_handler(Gtk.Widget? sender)
+	{	
+		if (inspector.visible)
+		{
+			inspector.hide();
+		}
+		else
+		{
+			inspector.show();
+		}
+	}
+	
+	[CCode (instance_pos = -1)]
+	public void export_to_html(Gtk.Widget sender)
+	{
+		document.export_to_html(this);
+	}
+	
+	[CCode (instance_pos = -1)]
+	public void show_color_dialog(Gtk.Widget sender)
 	{
 		if (embed.selected == null) return;
 		if (color_dialog != null)
@@ -410,72 +391,8 @@ public class Ease.EditorWindow : Gtk.Window
 			Transformations.clutter_color_to_gdk_color(color);
 	}
 	
-	// menu bar creation
-	private Gtk.MenuBar create_menu_bar()
+	private ZoomSlider create_zoom_slider()
 	{
-		var menubar = new Gtk.MenuBar();
-		
-		menubar.append(create_file_menu());
-		menubar.append(create_help_menu());
-		
-		return menubar;
-	}
-	
-	private Gtk.MenuItem create_file_menu()
-	{
-		/* TODO : use mnemonics */
-		var menu_item = new Gtk.MenuItem.with_label(_("File"));
-		var menu = new Gtk.Menu();
-		
-		var new_item = new Gtk.MenuItem.with_label(_("New"));
-		var new_menu = new Gtk.Menu();
-		var new_pres = new Gtk.MenuItem.with_label(_("Presentation"));
-		new_pres.activate.connect(Main.show_welcome);
-		var new_theme = new Gtk.MenuItem.with_label(_("Theme"));
-		var quit = new Gtk.MenuItem.with_label(_("Quit"));
-		quit.activate.connect(Gtk.main_quit);
-
-		new_menu.append(new_pres);
-		new_menu.append(new_theme);
-		new_item.set_submenu(new_menu);
-		menu.append(new_item);
-		
-		var open_item = new Gtk.MenuItem.with_label(_("Open"));
-		open_item.activate.connect(() => OpenDialog.run());
-		open_item.set_accel_path("<-Document>/File/Open");
-		Gtk.AccelMap.add_entry("<-Document>/File/Open",
-		                       Gdk.keyval_from_name("o"),
-		                       Gdk.ModifierType.CONTROL_MASK);
-		menu.append(open_item);
-		menu.append(quit);
-		menu_item.set_submenu(menu);
-		
-		return menu_item;
-	}
-	
-	private Gtk.MenuItem create_help_menu()
-	{
-		var menu_item = new Gtk.MenuItem.with_label(_("Help"));
-		var menu = new Gtk.Menu();
-		
-		var about = new Gtk.MenuItem.with_label(_("About Ease"));
-		about.activate.connect(() => {
-			var dialog = new AboutDialog();
-			dialog.run();
-			dialog.destroy();
-		});
-
-		menu.append(about);
-		
-		menu_item.set_submenu(menu);
-		
-		return menu_item;
-	}
-	
-	private Gtk.Alignment create_bottom_bar()
-	{
-		var hbox = new Gtk.HBox(false, 5);
-		
 		// create zoom slider
 		zoom_slider = new ZoomSlider(new Gtk.Adjustment(100, 10, 400, 10,
 		                                                50, 50), ZOOM_LEVELS);
@@ -483,15 +400,11 @@ public class Ease.EditorWindow : Gtk.Window
 		zoom_slider.value_pos = Gtk.PositionType.RIGHT;
 		zoom_slider.digits = 0;
 		
-		// put it all together
-		hbox.pack_start(zoom_slider, false, false, 0);
-		
-		var vbox = new Gtk.VBox(false, 0);
-		vbox.pack_start(hbox, true, true, 2);
+		zoom_slider.value_changed.connect(() => {
+			embed.zoom = (float)zoom_slider.get_value() / 100f;
+		});
 		
-		var align = new Gtk.Alignment(1, 1, 1, 1);
-		align.add(vbox);
-		return align;
+		return zoom_slider;
 	}
 }
 
diff --git a/src/ease-temp.vala b/src/ease-temp.vala
index d3ed0db..b79386b 100644
--- a/src/ease-temp.vala
+++ b/src/ease-temp.vala
@@ -35,6 +35,7 @@ public static class Ease.Temp : Object
 	public const string TEMP_DIR = "ease";
 	public const string THEME_DIR = "themes";
 	public const string IMG_DIR = "svg";
+	public const string UI_DIR = "ui";
 	
 	/**
 	 * Requests a temporary directory.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]