[ease/builder] Ported the editor window to GtkBuilder.
- From: Nate Stedman <natesm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ease/builder] Ported the editor window to GtkBuilder.
- Date: Fri, 2 Jul 2010 04:17:16 +0000 (UTC)
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]