[passepartout] added menu items for page navigation
- From: Sven Herzberg <herzi src gnome org>
- To: svn-commits-list gnome org
- Subject: [passepartout] added menu items for page navigation
- Date: Sat, 2 May 2009 09:34:13 -0400 (EDT)
commit cf277106d710db4f92faeb8945972bc60fcea8c1
Author: Sven Herzberg <herzi lanedo com>
Date: Sat May 2 15:27:13 2009 +0200
added menu items for page navigation
* src/pptout/windowmenus.cc: added menu items for page navigation; properly
update their sensitivity
---
src/pptout/windowmenus.cc | 78 +++++++++++++++++++++++++++++++++++++++++---
1 files changed, 72 insertions(+), 6 deletions(-)
diff --git a/src/pptout/windowmenus.cc b/src/pptout/windowmenus.cc
index 83269f6..7638d69 100644
--- a/src/pptout/windowmenus.cc
+++ b/src/pptout/windowmenus.cc
@@ -85,7 +85,46 @@ namespace {
void rearrange_selected(DocumentView *view, RearrangeTarget target) {
nonull(view->get_page())->rearrange_selected(target);
}
-
+
+ void
+ page_changed (DocumentView * view,
+ Glib::RefPtr<Gtk::ActionGroup> group)
+ {
+ DocRef document = view->get_document ();
+
+ bool sensitive = document && view->get_current_page_num () > document->get_first_page_num ();
+ group->get_action ("PageFirst")->set_sensitive (sensitive);
+ group->get_action ("PagePrevious")->set_sensitive (sensitive);
+
+ sensitive = document && view->get_current_page_num () < (document->get_first_page_num () + document->get_num_of_pages () - 1);
+ group->get_action ("PageLast")->set_sensitive (sensitive);
+ group->get_action ("PageNext")->set_sensitive (sensitive);
+ }
+
+ void
+ page_first (DocumentView* view)
+ {
+ view->set_current_page_num (view->get_document ()->get_first_page_num ());
+ }
+
+ void
+ page_last (DocumentView* view)
+ {
+ view->set_current_page_num (view->get_document ()->get_first_page_num () + view->get_document ()->get_num_of_pages () - 1);
+ }
+
+ void
+ page_next (DocumentView* view)
+ {
+ view->set_current_page_num (view->get_current_page_num () + 1);
+ }
+
+ void
+ page_previous (DocumentView* view)
+ {
+ view->set_current_page_num (view->get_current_page_num () - 1);
+ }
+
void insert_page(Gtk::Window *parent, DocumentView *view, bool after) {
DocRef document = nonull(view->get_document());
int page_num =
@@ -279,11 +318,33 @@ FrameWindow::create_menus (Gtk::RecentFilter& f)
// *** page menu ***
main_group->add(Action::create("PageMenu", _("_Page")));
-
- page_group->add(Action::create("PageDelete", _("_Delete")),
- AccelKey("<Ctrl>Delete"),
- mem_fun(document_view, &DocumentView::delete_page));
-
+
+ page_group->add (Action::create ("PageFirst", Stock::GOTO_FIRST, _("_First Page")),
+ AccelKey ("<Alt>Home"),
+ bind<DocumentView*> (sigc::ptr_fun (&page_first), &this->document_view));
+ page_group->add (Action::create ("PagePrevious", Stock::GO_BACK, _("_Previous Page")),
+ AccelKey ("<Alt>Page_Up"),
+ bind<DocumentView*> (sigc::ptr_fun (&page_previous), &this->document_view));
+ page_group->add (Action::create ("PageNext", Stock::GO_FORWARD, _("_Next Page")),
+ AccelKey ("<Alt>Page_Down"),
+ bind<DocumentView*> (sigc::ptr_fun (&page_next), &this->document_view));
+ page_group->add (Action::create ("PageLast", Stock::GOTO_LAST, _("_Last Page")),
+ AccelKey ("<Alt>End"),
+ bind<DocumentView*> (sigc::ptr_fun (&page_last), &this->document_view));
+ sigc::slot< void, DocumentView*, Glib::RefPtr< Gtk::ActionGroup > > one (sigc::ptr_fun (&page_changed));
+ sigc::slot< void, DocumentView* > two (sigc::bind (one, page_group));
+ sigc::slot< void > three (sigc::bind (two, &this->document_view));
+ document_view.current_page_num_changed_signal.connect (three);
+ document_view.document_changed_signal.connect (three);
+ page_changed (&this->document_view, page_group);
+
+ page_group->add (Action::create ("PageDelete", Stock::DELETE, _("_Delete")),
+ AccelKey ("<Ctrl>Delete"),
+ mem_fun (document_view, &DocumentView::delete_page));
+
+ /* FIXME: as we display a dialog anyway, we can ask the user for the page's location there
+ * => drop one of these two
+ */
doc_group->add(Action::create("PageInsertBefore", _("Insert _Before ...")),
bind(sigc::ptr_fun(&insert_page),
this, &document_view, false /* not after */));
@@ -412,6 +473,11 @@ FrameWindow::create_menus (Gtk::RecentFilter& f)
" </menu>"
" <menu action='PageMenu'>"
+ " <menuitem action='PageFirst'/>"
+ " <menuitem action='PagePrevious'/>"
+ " <menuitem action='PageNext'/>"
+ " <menuitem action='PageLast'/>"
+ " <separator/>"
" <menuitem action='PageDelete'/>"
" <separator/>"
" <menuitem action='PageInsertBefore'/>"
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]