]> git.donarmstrong.com Git - xournal.git/commitdiff
Add a hand tool (+ other misc updates)
authorauroux <auroux>
Wed, 20 Sep 2006 03:18:45 +0000 (03:18 +0000)
committerauroux <auroux>
Wed, 20 Sep 2006 03:18:45 +0000 (03:18 +0000)
12 files changed:
ChangeLog
configure.in
html-doc/manual.html
src/TODO
src/xo-callbacks.c
src/xo-callbacks.h
src/xo-interface.c
src/xo-misc.c
src/xo-paint.c
src/xo-paint.h
src/xournal.h
xournal.glade

index 909fb3775a6494cd38c732fa5a1ba83210eaf3d0..058262183a9f1c39ca34a97731a7182bd2ab9b0c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,10 @@
 Version ?:
   - minor UI changes (patch contributed by Eduardo de Barros Lima)
+  - hand tool (partially contributed by Vincenzo Ciancia)
 
 Version 0.3.1 (Aug 3, 2006):
   - fixed a file format bug on systems with non-standard numeric locale
+    (bug reported by Gert Renckens)
 
 Version 0.3 (Jul 23, 2006):
   - new PDF rendering engine: export to PDF generates optimized files
index a898e9882261bde448cd0001aea68acc9d8b56b0..fc25bacd06caf2d426d14c53055a86a8c9a5b640 100644 (file)
@@ -1,7 +1,7 @@
 dnl Process this file with autoconf to produce a configure script.
 
 AC_INIT(configure.in)
-AM_INIT_AUTOMAKE(xournal, 0.3.1)
+AM_INIT_AUTOMAKE(xournal, 0.3.1-CVS)
 AM_CONFIG_HEADER(config.h)
 AM_MAINTAINER_MODE
 
index be75dea015668eb7605e5a7181e92acff986d1b9..fd272309a320a72435815ca825aa5bacfbb86541 100644 (file)
@@ -501,7 +501,9 @@ Bug reports and suggestions can also be submitted on Xournal's
 <p>
 Version 0.3.1 (August 3, 2006):
 <ul>
- <li>fixed a file format bug on systems with non-standard numeric locale</li>
+ <li>fixed a file format bug on systems with non-standard numeric locale
+     (bug reported by Gert Renckens)</li>
+</ul>
 </p>
 <p>
 Version 0.3 (July 23, 2006):
index 87329bdc418fc25d95a8d1c1378a72d764c98fea..c41a6a4e483faf551cfae6dd631e8f8115e0fc18 100644 (file)
--- a/src/TODO
+++ b/src/TODO
@@ -1,6 +1,7 @@
 List of features to be implemented (not in any particular order)
 ----------------------------------------------------------------
 
+- de-map space key from button bar
 - lasso selection tool
 - prefs file, save prefs
 - flatten (incl undo/redo...) - enabled only if nlayers>1
@@ -18,3 +19,5 @@ List of features to be implemented (not in any particular order)
 - recalibration upon screen resize / compensation for miscalibration
 - find a better behavior for vertical space tool across page boundaries ?
 - key mappings (pgup/dn for full page, up/dn for scroll)
+- zoom increments more flexible (1% instead of 5% ?)
+- copy/paste of an entire page (beware if PDF bg is not compatible!)
index 96683b393c6002284521bc6d8274eb9a1fecf8bb..4980035cd66b4ffd21e227d1a478aac8d036d307 100644 (file)
@@ -2156,7 +2156,11 @@ on_canvas_button_press_event           (GtkWidget       *widget,
 
   // process the event
   
-  if (ui.toolno[mapping] == TOOL_PEN || ui.toolno[mapping] == TOOL_HIGHLIGHTER ||
+  if (ui.toolno[mapping] == TOOL_HAND) {
+    ui.cur_item_type = ITEM_HAND;
+    get_pointer_coords((GdkEvent *)event, ui.hand_refpt);
+  } 
+  else if (ui.toolno[mapping] == TOOL_PEN || ui.toolno[mapping] == TOOL_HIGHLIGHTER ||
         (ui.toolno[mapping] == TOOL_ERASER && ui.cur_brush->tool_options == TOOLOPT_ERASER_WHITEOUT)) {
     create_new_stroke((GdkEvent *)event);
   } 
@@ -2202,6 +2206,9 @@ on_canvas_button_release_event         (GtkWidget       *widget,
   else if (ui.cur_item_type == ITEM_MOVESEL || ui.cur_item_type == ITEM_MOVESEL_VERT) {
     finalize_movesel();
   }
+  else if (ui.cur_item_type == ITEM_HAND) {
+    ui.cur_item_type = ITEM_NONE;
+  }
 
   switch_mapping(0);
   return FALSE;
@@ -2290,6 +2297,9 @@ on_canvas_motion_notify_event          (GtkWidget       *widget,
   else if (ui.cur_item_type == ITEM_MOVESEL || ui.cur_item_type == ITEM_MOVESEL_VERT) {
     continue_movesel((GdkEvent *)event);
   }
+  else if (ui.cur_item_type == ITEM_HAND) {
+    do_hand((GdkEvent *)event);
+  }
   
   return FALSE;
 }
@@ -2919,3 +2929,45 @@ on_radioZoomHeight_toggled             (GtkToggleButton *togglebutton,
         G_OBJECT(zoom_dialog), "spinZoom")), zoom_percent);
 }
 
+
+void
+on_toolsHand_activate                  (GtkMenuItem     *menuitem,
+                                        gpointer         user_data)
+{
+  if (GTK_OBJECT_TYPE(menuitem) == GTK_TYPE_RADIO_MENU_ITEM) {
+    if (!gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM (menuitem)))
+      return;
+  } else {
+    if (!gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON (menuitem)))
+      return;
+  }
+
+  if (ui.cur_mapping != 0) return;
+  if (ui.toolno[0] == TOOL_HAND) return;
+
+  reset_selection();
+  ui.toolno[0] = TOOL_HAND;
+  ui.ruler[0] = FALSE;
+  update_mapping_linkings(-1);
+  update_tool_buttons();
+  update_tool_menu();
+  update_color_menu();
+  update_cursor();
+}
+
+
+void
+on_button2Hand_activate                (GtkMenuItem     *menuitem,
+                                        gpointer         user_data)
+{
+  process_mapping_activate(menuitem, 1, TOOL_HAND);
+}
+
+
+void
+on_button3Hand_activate                (GtkMenuItem     *menuitem,
+                                        gpointer         user_data)
+{
+  process_mapping_activate(menuitem, 2, TOOL_HAND);
+}
+
index 5a0ccc6105ad7e3d042ba559f50b7bc9bf7bcbe2..8513ec8d33d89739821ba0d990e89ac9e1f9e006 100644 (file)
@@ -580,3 +580,15 @@ on_radioZoomWidth_toggled              (GtkToggleButton *togglebutton,
 void
 on_radioZoomHeight_toggled             (GtkToggleButton *togglebutton,
                                         gpointer         user_data);
+
+void
+on_toolsHand_activate                  (GtkMenuItem     *menuitem,
+                                        gpointer         user_data);
+
+void
+on_button2Hand_activate                (GtkMenuItem     *menuitem,
+                                        gpointer         user_data);
+
+void
+on_button3Hand_activate                (GtkMenuItem     *menuitem,
+                                        gpointer         user_data);
index df0049ea1c84a4cd09cee6a8ca02c2c2108594da..286894974623d40ae3ccf9a0cb62d74d9bf70207 100644 (file)
@@ -36,7 +36,7 @@ create_winMain (void)
   GtkWidget *menuFile_menu;
   GtkWidget *fileNew;
   GtkWidget *fileNewBackground;
-  GtkWidget *image599;
+  GtkWidget *image623;
   GtkWidget *fileOpen;
   GtkWidget *fileSave;
   GtkWidget *fileSaveAs;
@@ -53,7 +53,7 @@ create_winMain (void)
   GtkWidget *mru7;
   GtkWidget *separator22;
   GtkWidget *filePrintOptions;
-  GtkWidget *image600;
+  GtkWidget *image624;
   GtkWidget *filePrint;
   GtkWidget *filePrintPDF;
   GtkWidget *separator2;
@@ -81,22 +81,22 @@ create_winMain (void)
   GtkWidget *viewZoomOut;
   GtkWidget *viewNormalSize;
   GtkWidget *viewPageWidth;
-  GtkWidget *image601;
+  GtkWidget *image625;
   GtkWidget *viewSetZoom;
   GtkWidget *separator5;
   GtkWidget *viewFirstPage;
-  GtkWidget *image602;
+  GtkWidget *image626;
   GtkWidget *viewPreviousPage;
-  GtkWidget *image603;
+  GtkWidget *image627;
   GtkWidget *viewNextPage;
-  GtkWidget *image604;
+  GtkWidget *image628;
   GtkWidget *viewLastPage;
-  GtkWidget *image605;
+  GtkWidget *image629;
   GtkWidget *separator6;
   GtkWidget *viewShowLayer;
-  GtkWidget *image606;
+  GtkWidget *image630;
   GtkWidget *viewHideLayer;
-  GtkWidget *image607;
+  GtkWidget *image631;
   GtkWidget *menuJournal;
   GtkWidget *menuJournal_menu;
   GtkWidget *journalNewPageBefore;
@@ -131,7 +131,7 @@ create_winMain (void)
   GtkWidget *journalApplyAllPages;
   GtkWidget *separator23;
   GtkWidget *journalLoadBackground;
-  GtkWidget *image608;
+  GtkWidget *image632;
   GtkWidget *journalScreenshot;
   GtkWidget *separator19;
   GtkWidget *journalDefaultBackground;
@@ -147,9 +147,10 @@ create_winMain (void)
   GtkWidget *toolsSelectRegion;
   GtkWidget *toolsSelectRectangle;
   GtkWidget *toolsVerticalSpace;
+  GtkWidget *toolsHand;
   GtkWidget *separator16;
   GtkWidget *toolsColor;
-  GtkWidget *image609;
+  GtkWidget *image633;
   GtkWidget *toolsColor_menu;
   GSList *colorBlack_group = NULL;
   GtkWidget *colorBlack;
@@ -192,7 +193,7 @@ create_winMain (void)
   GtkWidget *highlighterMedium;
   GtkWidget *highlighterThick;
   GtkWidget *toolsTextFont;
-  GtkWidget *image610;
+  GtkWidget *image634;
   GtkWidget *separator10;
   GtkWidget *toolsDefaultPen;
   GtkWidget *toolsDefaultEraser;
@@ -215,6 +216,7 @@ create_winMain (void)
   GtkWidget *button2SelectRegion;
   GtkWidget *button2SelectRectangle;
   GtkWidget *button2VerticalSpace;
+  GtkWidget *button2Hand;
   GtkWidget *separator24;
   GSList *button2LinkBrush_group = NULL;
   GtkWidget *button2LinkBrush;
@@ -230,6 +232,7 @@ create_winMain (void)
   GtkWidget *button3SelectRegion;
   GtkWidget *button3SelectRectangle;
   GtkWidget *button3VerticalSpace;
+  GtkWidget *button3Hand;
   GtkWidget *separator25;
   GSList *button3LinkBrush_group = NULL;
   GtkWidget *button3LinkBrush;
@@ -245,10 +248,10 @@ create_winMain (void)
   GtkWidget *helpIndex;
   GtkWidget *helpAbout;
   GtkWidget *toolbarMain;
-  GtkWidget *newButton;
-  GtkWidget *openButton;
   GtkIconSize tmp_toolbar_icon_size;
   GtkWidget *saveButton;
+  GtkWidget *newButton;
+  GtkWidget *openButton;
   GtkWidget *toolitem11;
   GtkWidget *vseparator1;
   GtkWidget *buttonCut;
@@ -285,6 +288,7 @@ create_winMain (void)
   GtkWidget *buttonSelectRegion;
   GtkWidget *buttonSelectRectangle;
   GtkWidget *buttonVerticalSpace;
+  GtkWidget *buttonHand;
   GtkWidget *toolitem16;
   GtkWidget *vseparator6;
   GtkWidget *buttonToolDefault;
@@ -354,9 +358,9 @@ create_winMain (void)
   gtk_widget_show (fileNewBackground);
   gtk_container_add (GTK_CONTAINER (menuFile_menu), fileNewBackground);
 
-  image599 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image599);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (fileNewBackground), image599);
+  image623 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU);
+  gtk_widget_show (image623);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (fileNewBackground), image623);
 
   fileOpen = gtk_image_menu_item_new_from_stock ("gtk-open", accel_group);
   gtk_widget_show (fileOpen);
@@ -423,9 +427,9 @@ create_winMain (void)
   gtk_widget_show (filePrintOptions);
   gtk_container_add (GTK_CONTAINER (menuFile_menu), filePrintOptions);
 
-  image600 = gtk_image_new_from_stock ("gtk-preferences", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image600);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (filePrintOptions), image600);
+  image624 = gtk_image_new_from_stock ("gtk-preferences", GTK_ICON_SIZE_MENU);
+  gtk_widget_show (image624);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (filePrintOptions), image624);
 
   filePrint = gtk_image_menu_item_new_from_stock ("gtk-print", accel_group);
   gtk_widget_show (filePrint);
@@ -519,7 +523,7 @@ create_winMain (void)
 
   menuViewZoom_menu = gtk_menu_new ();
   gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuViewZoom), menuViewZoom_menu);
-  
+
   viewZoomIn = gtk_image_menu_item_new_from_stock ("gtk-zoom-in", accel_group);
   gtk_widget_show (viewZoomIn);
   gtk_container_add (GTK_CONTAINER (menuViewZoom_menu), viewZoomIn);
@@ -536,9 +540,9 @@ create_winMain (void)
   gtk_widget_show (viewPageWidth);
   gtk_container_add (GTK_CONTAINER (menuViewZoom_menu), viewPageWidth);
 
-  image601 = gtk_image_new_from_stock ("gtk-zoom-fit", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image601);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (viewPageWidth), image601);
+  image625 = gtk_image_new_from_stock ("gtk-zoom-fit", GTK_ICON_SIZE_MENU);
+  gtk_widget_show (image625);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (viewPageWidth), image625);
 
   viewSetZoom = gtk_menu_item_new_with_mnemonic ("Set Zoom");
   gtk_widget_show (viewSetZoom);
@@ -553,33 +557,33 @@ create_winMain (void)
   gtk_widget_show (viewFirstPage);
   gtk_container_add (GTK_CONTAINER (menuView_menu), viewFirstPage);
 
-  image602 = gtk_image_new_from_stock ("gtk-goto-first", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image602);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (viewFirstPage), image602);
+  image626 = gtk_image_new_from_stock ("gtk-goto-first", GTK_ICON_SIZE_MENU);
+  gtk_widget_show (image626);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (viewFirstPage), image626);
 
   viewPreviousPage = gtk_image_menu_item_new_with_mnemonic ("Previous Page");
   gtk_widget_show (viewPreviousPage);
   gtk_container_add (GTK_CONTAINER (menuView_menu), viewPreviousPage);
 
-  image603 = gtk_image_new_from_stock ("gtk-go-back", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image603);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (viewPreviousPage), image603);
+  image627 = gtk_image_new_from_stock ("gtk-go-back", GTK_ICON_SIZE_MENU);
+  gtk_widget_show (image627);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (viewPreviousPage), image627);
 
   viewNextPage = gtk_image_menu_item_new_with_mnemonic ("Next Page");
   gtk_widget_show (viewNextPage);
   gtk_container_add (GTK_CONTAINER (menuView_menu), viewNextPage);
 
-  image604 = gtk_image_new_from_stock ("gtk-go-forward", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image604);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (viewNextPage), image604);
+  image628 = gtk_image_new_from_stock ("gtk-go-forward", GTK_ICON_SIZE_MENU);
+  gtk_widget_show (image628);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (viewNextPage), image628);
 
   viewLastPage = gtk_image_menu_item_new_with_mnemonic ("Last Page");
   gtk_widget_show (viewLastPage);
   gtk_container_add (GTK_CONTAINER (menuView_menu), viewLastPage);
 
-  image605 = gtk_image_new_from_stock ("gtk-goto-last", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image605);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (viewLastPage), image605);
+  image629 = gtk_image_new_from_stock ("gtk-goto-last", GTK_ICON_SIZE_MENU);
+  gtk_widget_show (image629);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (viewLastPage), image629);
 
   separator6 = gtk_separator_menu_item_new ();
   gtk_widget_show (separator6);
@@ -590,17 +594,17 @@ create_winMain (void)
   gtk_widget_show (viewShowLayer);
   gtk_container_add (GTK_CONTAINER (menuView_menu), viewShowLayer);
 
-  image606 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image606);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (viewShowLayer), image606);
+  image630 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
+  gtk_widget_show (image630);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (viewShowLayer), image630);
 
   viewHideLayer = gtk_image_menu_item_new_with_mnemonic ("Hide Layer");
   gtk_widget_show (viewHideLayer);
   gtk_container_add (GTK_CONTAINER (menuView_menu), viewHideLayer);
 
-  image607 = gtk_image_new_from_stock ("gtk-remove", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image607);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (viewHideLayer), image607);
+  image631 = gtk_image_new_from_stock ("gtk-remove", GTK_ICON_SIZE_MENU);
+  gtk_widget_show (image631);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (viewHideLayer), image631);
 
   menuJournal = gtk_menu_item_new_with_mnemonic ("_Journal");
   gtk_widget_show (menuJournal);
@@ -754,9 +758,9 @@ create_winMain (void)
   gtk_widget_show (journalLoadBackground);
   gtk_container_add (GTK_CONTAINER (menuJournal_menu), journalLoadBackground);
 
-  image608 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image608);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (journalLoadBackground), image608);
+  image632 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU);
+  gtk_widget_show (image632);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (journalLoadBackground), image632);
 
   journalScreenshot = gtk_menu_item_new_with_mnemonic ("Background Screenshot");
   gtk_widget_show (journalScreenshot);
@@ -829,6 +833,11 @@ create_winMain (void)
   gtk_container_add (GTK_CONTAINER (menuTools_menu), toolsVerticalSpace);
   gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (toolsVerticalSpace), TRUE);
 
+  toolsHand = gtk_radio_menu_item_new_with_mnemonic (toolsPen_group, "Hand Tool");
+  toolsPen_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (toolsHand));
+  gtk_widget_show (toolsHand);
+  gtk_container_add (GTK_CONTAINER (menuTools_menu), toolsHand);
+
   separator16 = gtk_separator_menu_item_new ();
   gtk_widget_show (separator16);
   gtk_container_add (GTK_CONTAINER (menuTools_menu), separator16);
@@ -838,9 +847,9 @@ create_winMain (void)
   gtk_widget_show (toolsColor);
   gtk_container_add (GTK_CONTAINER (menuTools_menu), toolsColor);
 
-  image609 = gtk_image_new_from_stock ("gtk-select-color", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image609);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (toolsColor), image609);
+  image633 = gtk_image_new_from_stock ("gtk-select-color", GTK_ICON_SIZE_MENU);
+  gtk_widget_show (image633);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (toolsColor), image633);
 
   toolsColor_menu = gtk_menu_new ();
   gtk_menu_item_set_submenu (GTK_MENU_ITEM (toolsColor), toolsColor_menu);
@@ -1041,9 +1050,9 @@ create_winMain (void)
   gtk_widget_show (toolsTextFont);
   gtk_container_add (GTK_CONTAINER (menuTools_menu), toolsTextFont);
 
-  image610 = gtk_image_new_from_stock ("gtk-select-font", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image610);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (toolsTextFont), image610);
+  image634 = gtk_image_new_from_stock ("gtk-select-font", GTK_ICON_SIZE_MENU);
+  gtk_widget_show (image634);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (toolsTextFont), image634);
 
   separator10 = gtk_separator_menu_item_new ();
   gtk_widget_show (separator10);
@@ -1143,6 +1152,11 @@ create_winMain (void)
   gtk_container_add (GTK_CONTAINER (button2_mapping_menu), button2VerticalSpace);
   gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (button2VerticalSpace), TRUE);
 
+  button2Hand = gtk_radio_menu_item_new_with_mnemonic (button2Pen_group, "Hand Tool");
+  button2Pen_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (button2Hand));
+  gtk_widget_show (button2Hand);
+  gtk_container_add (GTK_CONTAINER (button2_mapping_menu), button2Hand);
+
   separator24 = gtk_separator_menu_item_new ();
   gtk_widget_show (separator24);
   gtk_container_add (GTK_CONTAINER (button2_mapping_menu), separator24);
@@ -1214,6 +1228,11 @@ create_winMain (void)
   gtk_container_add (GTK_CONTAINER (button3_mapping_menu), button3VerticalSpace);
   gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (button3VerticalSpace), TRUE);
 
+  button3Hand = gtk_radio_menu_item_new_with_mnemonic (button3Pen_group, "Hand Tool");
+  button3Pen_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (button3Hand));
+  gtk_widget_show (button3Hand);
+  gtk_container_add (GTK_CONTAINER (button3_mapping_menu), button3Hand);
+
   separator25 = gtk_separator_menu_item_new ();
   gtk_widget_show (separator25);
   gtk_container_add (GTK_CONTAINER (button3_mapping_menu), separator25);
@@ -1279,21 +1298,21 @@ create_winMain (void)
   gtk_toolbar_set_style (GTK_TOOLBAR (toolbarMain), GTK_TOOLBAR_ICONS);
   tmp_toolbar_icon_size = gtk_toolbar_get_icon_size (GTK_TOOLBAR (toolbarMain));
 
-  newButton  = (GtkWidget*) gtk_tool_button_new_from_stock ("gtk-new");
+  saveButton = (GtkWidget*) gtk_tool_button_new_from_stock ("gtk-save");
+  gtk_widget_show (saveButton);
+  gtk_container_add (GTK_CONTAINER (toolbarMain), saveButton);
+  gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (saveButton), tooltips, "Save", NULL);
+
+  newButton = (GtkWidget*) gtk_tool_button_new_from_stock ("gtk-new");
   gtk_widget_show (newButton);
   gtk_container_add (GTK_CONTAINER (toolbarMain), newButton);
   gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (newButton), tooltips, "New", NULL);
-  
+
   openButton = (GtkWidget*) gtk_tool_button_new_from_stock ("gtk-open");
   gtk_widget_show (openButton);
   gtk_container_add (GTK_CONTAINER (toolbarMain), openButton);
   gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (openButton), tooltips, "Open", NULL);
 
-  saveButton = (GtkWidget*) gtk_tool_button_new_from_stock ("gtk-save");
-  gtk_widget_show (saveButton);
-  gtk_container_add (GTK_CONTAINER (toolbarMain), saveButton);
-  gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (saveButton), tooltips, "Save", NULL);
-
   toolitem11 = (GtkWidget*) gtk_tool_item_new ();
   gtk_widget_show (toolitem11);
   gtk_container_add (GTK_CONTAINER (toolbarMain), toolitem11);
@@ -1506,6 +1525,16 @@ create_winMain (void)
   gtk_radio_tool_button_set_group (GTK_RADIO_TOOL_BUTTON (buttonVerticalSpace), buttonPen_group);
   buttonPen_group = gtk_radio_tool_button_get_group (GTK_RADIO_TOOL_BUTTON (buttonVerticalSpace));
 
+  buttonHand = (GtkWidget*) gtk_radio_tool_button_new (NULL);
+  gtk_tool_button_set_label (GTK_TOOL_BUTTON (buttonHand), "Hand Tool");
+  tmp_image = create_pixmap (winMain, "hand.png");
+  gtk_widget_show (tmp_image);
+  gtk_tool_button_set_icon_widget (GTK_TOOL_BUTTON (buttonHand), tmp_image);
+  gtk_widget_show (buttonHand);
+  gtk_container_add (GTK_CONTAINER (toolbarPen), buttonHand);
+  gtk_radio_tool_button_set_group (GTK_RADIO_TOOL_BUTTON (buttonHand), buttonPen_group);
+  buttonPen_group = gtk_radio_tool_button_get_group (GTK_RADIO_TOOL_BUTTON (buttonHand));
+
   toolitem16 = (GtkWidget*) gtk_tool_item_new ();
   gtk_widget_show (toolitem16);
   gtk_container_add (GTK_CONTAINER (toolbarPen), toolitem16);
@@ -1976,6 +2005,9 @@ create_winMain (void)
   g_signal_connect ((gpointer) toolsVerticalSpace, "toggled",
                     G_CALLBACK (on_toolsVerticalSpace_activate),
                     NULL);
+  g_signal_connect ((gpointer) toolsHand, "activate",
+                    G_CALLBACK (on_toolsHand_activate),
+                    NULL);
   g_signal_connect ((gpointer) colorBlack, "toggled",
                     G_CALLBACK (on_colorBlack_activate),
                     NULL);
@@ -2102,6 +2134,9 @@ create_winMain (void)
   g_signal_connect ((gpointer) button2VerticalSpace, "activate",
                     G_CALLBACK (on_button2VerticalSpace_activate),
                     NULL);
+  g_signal_connect ((gpointer) button2Hand, "activate",
+                    G_CALLBACK (on_button2Hand_activate),
+                    NULL);
   g_signal_connect ((gpointer) button2LinkBrush, "activate",
                     G_CALLBACK (on_button2LinkBrush_activate),
                     NULL);
@@ -2129,6 +2164,9 @@ create_winMain (void)
   g_signal_connect ((gpointer) button3VerticalSpace, "activate",
                     G_CALLBACK (on_button3VerticalSpace_activate),
                     NULL);
+  g_signal_connect ((gpointer) button3Hand, "activate",
+                    G_CALLBACK (on_button3Hand_activate),
+                    NULL);
   g_signal_connect ((gpointer) button3LinkBrush, "activate",
                     G_CALLBACK (on_button3LinkBrush_activate),
                     NULL);
@@ -2150,15 +2188,15 @@ create_winMain (void)
   g_signal_connect ((gpointer) helpAbout, "activate",
                     G_CALLBACK (on_helpAbout_activate),
                     NULL);
+  g_signal_connect ((gpointer) saveButton, "clicked",
+                    G_CALLBACK (on_fileSave_activate),
+                    NULL);
   g_signal_connect ((gpointer) newButton, "clicked",
                     G_CALLBACK (on_fileNew_activate),
                     NULL);
   g_signal_connect ((gpointer) openButton, "clicked",
                     G_CALLBACK (on_fileOpen_activate),
                     NULL);
-  g_signal_connect ((gpointer) saveButton, "clicked",
-                    G_CALLBACK (on_fileSave_activate),
-                    NULL);
   g_signal_connect ((gpointer) buttonCut, "clicked",
                     G_CALLBACK (on_editCut_activate),
                     NULL);
@@ -2228,6 +2266,9 @@ create_winMain (void)
   g_signal_connect ((gpointer) buttonVerticalSpace, "toggled",
                     G_CALLBACK (on_toolsVerticalSpace_activate),
                     NULL);
+  g_signal_connect ((gpointer) buttonHand, "toggled",
+                    G_CALLBACK (on_toolsHand_activate),
+                    NULL);
   g_signal_connect ((gpointer) buttonToolDefault, "clicked",
                     G_CALLBACK (on_buttonToolDefault_clicked),
                     NULL);
@@ -2291,7 +2332,7 @@ create_winMain (void)
   GLADE_HOOKUP_OBJECT (winMain, menuFile_menu, "menuFile_menu");
   GLADE_HOOKUP_OBJECT (winMain, fileNew, "fileNew");
   GLADE_HOOKUP_OBJECT (winMain, fileNewBackground, "fileNewBackground");
-  GLADE_HOOKUP_OBJECT (winMain, image599, "image599");
+  GLADE_HOOKUP_OBJECT (winMain, image623, "image623");
   GLADE_HOOKUP_OBJECT (winMain, fileOpen, "fileOpen");
   GLADE_HOOKUP_OBJECT (winMain, fileSave, "fileSave");
   GLADE_HOOKUP_OBJECT (winMain, fileSaveAs, "fileSaveAs");
@@ -2308,7 +2349,7 @@ create_winMain (void)
   GLADE_HOOKUP_OBJECT (winMain, mru7, "mru7");
   GLADE_HOOKUP_OBJECT (winMain, separator22, "separator22");
   GLADE_HOOKUP_OBJECT (winMain, filePrintOptions, "filePrintOptions");
-  GLADE_HOOKUP_OBJECT (winMain, image600, "image600");
+  GLADE_HOOKUP_OBJECT (winMain, image624, "image624");
   GLADE_HOOKUP_OBJECT (winMain, filePrint, "filePrint");
   GLADE_HOOKUP_OBJECT (winMain, filePrintPDF, "filePrintPDF");
   GLADE_HOOKUP_OBJECT (winMain, separator2, "separator2");
@@ -2329,26 +2370,28 @@ create_winMain (void)
   GLADE_HOOKUP_OBJECT (winMain, separator20, "separator20");
   GLADE_HOOKUP_OBJECT (winMain, viewFullscreen, "viewFullscreen");
   GLADE_HOOKUP_OBJECT (winMain, separator4, "separator4");
+  GLADE_HOOKUP_OBJECT (winMain, menuViewZoom, "menuViewZoom");
+  GLADE_HOOKUP_OBJECT (winMain, menuViewZoom_menu, "menuViewZoom_menu");
   GLADE_HOOKUP_OBJECT (winMain, viewZoomIn, "viewZoomIn");
   GLADE_HOOKUP_OBJECT (winMain, viewZoomOut, "viewZoomOut");
   GLADE_HOOKUP_OBJECT (winMain, viewNormalSize, "viewNormalSize");
   GLADE_HOOKUP_OBJECT (winMain, viewPageWidth, "viewPageWidth");
-  GLADE_HOOKUP_OBJECT (winMain, image601, "image601");
+  GLADE_HOOKUP_OBJECT (winMain, image625, "image625");
   GLADE_HOOKUP_OBJECT (winMain, viewSetZoom, "viewSetZoom");
   GLADE_HOOKUP_OBJECT (winMain, separator5, "separator5");
   GLADE_HOOKUP_OBJECT (winMain, viewFirstPage, "viewFirstPage");
-  GLADE_HOOKUP_OBJECT (winMain, image602, "image602");
+  GLADE_HOOKUP_OBJECT (winMain, image626, "image626");
   GLADE_HOOKUP_OBJECT (winMain, viewPreviousPage, "viewPreviousPage");
-  GLADE_HOOKUP_OBJECT (winMain, image603, "image603");
+  GLADE_HOOKUP_OBJECT (winMain, image627, "image627");
   GLADE_HOOKUP_OBJECT (winMain, viewNextPage, "viewNextPage");
-  GLADE_HOOKUP_OBJECT (winMain, image604, "image604");
+  GLADE_HOOKUP_OBJECT (winMain, image628, "image628");
   GLADE_HOOKUP_OBJECT (winMain, viewLastPage, "viewLastPage");
-  GLADE_HOOKUP_OBJECT (winMain, image605, "image605");
+  GLADE_HOOKUP_OBJECT (winMain, image629, "image629");
   GLADE_HOOKUP_OBJECT (winMain, separator6, "separator6");
   GLADE_HOOKUP_OBJECT (winMain, viewShowLayer, "viewShowLayer");
-  GLADE_HOOKUP_OBJECT (winMain, image606, "image606");
+  GLADE_HOOKUP_OBJECT (winMain, image630, "image630");
   GLADE_HOOKUP_OBJECT (winMain, viewHideLayer, "viewHideLayer");
-  GLADE_HOOKUP_OBJECT (winMain, image607, "image607");
+  GLADE_HOOKUP_OBJECT (winMain, image631, "image631");
   GLADE_HOOKUP_OBJECT (winMain, menuJournal, "menuJournal");
   GLADE_HOOKUP_OBJECT (winMain, menuJournal_menu, "menuJournal_menu");
   GLADE_HOOKUP_OBJECT (winMain, journalNewPageBefore, "journalNewPageBefore");
@@ -2381,7 +2424,7 @@ create_winMain (void)
   GLADE_HOOKUP_OBJECT (winMain, journalApplyAllPages, "journalApplyAllPages");
   GLADE_HOOKUP_OBJECT (winMain, separator23, "separator23");
   GLADE_HOOKUP_OBJECT (winMain, journalLoadBackground, "journalLoadBackground");
-  GLADE_HOOKUP_OBJECT (winMain, image608, "image608");
+  GLADE_HOOKUP_OBJECT (winMain, image632, "image632");
   GLADE_HOOKUP_OBJECT (winMain, journalScreenshot, "journalScreenshot");
   GLADE_HOOKUP_OBJECT (winMain, separator19, "separator19");
   GLADE_HOOKUP_OBJECT (winMain, journalDefaultBackground, "journalDefaultBackground");
@@ -2396,9 +2439,10 @@ create_winMain (void)
   GLADE_HOOKUP_OBJECT (winMain, toolsSelectRegion, "toolsSelectRegion");
   GLADE_HOOKUP_OBJECT (winMain, toolsSelectRectangle, "toolsSelectRectangle");
   GLADE_HOOKUP_OBJECT (winMain, toolsVerticalSpace, "toolsVerticalSpace");
+  GLADE_HOOKUP_OBJECT (winMain, toolsHand, "toolsHand");
   GLADE_HOOKUP_OBJECT (winMain, separator16, "separator16");
   GLADE_HOOKUP_OBJECT (winMain, toolsColor, "toolsColor");
-  GLADE_HOOKUP_OBJECT (winMain, image609, "image609");
+  GLADE_HOOKUP_OBJECT (winMain, image633, "image633");
   GLADE_HOOKUP_OBJECT (winMain, toolsColor_menu, "toolsColor_menu");
   GLADE_HOOKUP_OBJECT (winMain, colorBlack, "colorBlack");
   GLADE_HOOKUP_OBJECT (winMain, colorBlue, "colorBlue");
@@ -2436,7 +2480,7 @@ create_winMain (void)
   GLADE_HOOKUP_OBJECT (winMain, highlighterMedium, "highlighterMedium");
   GLADE_HOOKUP_OBJECT (winMain, highlighterThick, "highlighterThick");
   GLADE_HOOKUP_OBJECT (winMain, toolsTextFont, "toolsTextFont");
-  GLADE_HOOKUP_OBJECT (winMain, image610, "image610");
+  GLADE_HOOKUP_OBJECT (winMain, image634, "image634");
   GLADE_HOOKUP_OBJECT (winMain, separator10, "separator10");
   GLADE_HOOKUP_OBJECT (winMain, toolsDefaultPen, "toolsDefaultPen");
   GLADE_HOOKUP_OBJECT (winMain, toolsDefaultEraser, "toolsDefaultEraser");
@@ -2458,6 +2502,7 @@ create_winMain (void)
   GLADE_HOOKUP_OBJECT (winMain, button2SelectRegion, "button2SelectRegion");
   GLADE_HOOKUP_OBJECT (winMain, button2SelectRectangle, "button2SelectRectangle");
   GLADE_HOOKUP_OBJECT (winMain, button2VerticalSpace, "button2VerticalSpace");
+  GLADE_HOOKUP_OBJECT (winMain, button2Hand, "button2Hand");
   GLADE_HOOKUP_OBJECT (winMain, separator24, "separator24");
   GLADE_HOOKUP_OBJECT (winMain, button2LinkBrush, "button2LinkBrush");
   GLADE_HOOKUP_OBJECT (winMain, button2CopyBrush, "button2CopyBrush");
@@ -2471,6 +2516,7 @@ create_winMain (void)
   GLADE_HOOKUP_OBJECT (winMain, button3SelectRegion, "button3SelectRegion");
   GLADE_HOOKUP_OBJECT (winMain, button3SelectRectangle, "button3SelectRectangle");
   GLADE_HOOKUP_OBJECT (winMain, button3VerticalSpace, "button3VerticalSpace");
+  GLADE_HOOKUP_OBJECT (winMain, button3Hand, "button3Hand");
   GLADE_HOOKUP_OBJECT (winMain, separator25, "separator25");
   GLADE_HOOKUP_OBJECT (winMain, button3LinkBrush, "button3LinkBrush");
   GLADE_HOOKUP_OBJECT (winMain, button3CopyBrush, "button3CopyBrush");
@@ -2485,9 +2531,9 @@ create_winMain (void)
   GLADE_HOOKUP_OBJECT (winMain, helpIndex, "helpIndex");
   GLADE_HOOKUP_OBJECT (winMain, helpAbout, "helpAbout");
   GLADE_HOOKUP_OBJECT (winMain, toolbarMain, "toolbarMain");
+  GLADE_HOOKUP_OBJECT (winMain, saveButton, "saveButton");
   GLADE_HOOKUP_OBJECT (winMain, newButton, "newButton");
   GLADE_HOOKUP_OBJECT (winMain, openButton, "openButton");
-  GLADE_HOOKUP_OBJECT (winMain, saveButton, "saveButton");
   GLADE_HOOKUP_OBJECT (winMain, toolitem11, "toolitem11");
   GLADE_HOOKUP_OBJECT (winMain, vseparator1, "vseparator1");
   GLADE_HOOKUP_OBJECT (winMain, buttonCut, "buttonCut");
@@ -2522,6 +2568,7 @@ create_winMain (void)
   GLADE_HOOKUP_OBJECT (winMain, buttonSelectRegion, "buttonSelectRegion");
   GLADE_HOOKUP_OBJECT (winMain, buttonSelectRectangle, "buttonSelectRectangle");
   GLADE_HOOKUP_OBJECT (winMain, buttonVerticalSpace, "buttonVerticalSpace");
+  GLADE_HOOKUP_OBJECT (winMain, buttonHand, "buttonHand");
   GLADE_HOOKUP_OBJECT (winMain, toolitem16, "toolitem16");
   GLADE_HOOKUP_OBJECT (winMain, vseparator6, "vseparator6");
   GLADE_HOOKUP_OBJECT (winMain, buttonToolDefault, "buttonToolDefault");
index f6dab78589c88d60ee752eb336c6a5a27a3a1e79..d1e546ecabea7a5b5f8edca3d955ad7792bb6dca 100644 (file)
@@ -713,6 +713,10 @@ void update_tool_buttons(void)
       gtk_toggle_tool_button_set_active(
         GTK_TOGGLE_TOOL_BUTTON(GET_COMPONENT("buttonVerticalSpace")), TRUE);
       break;
+    case TOOL_HAND:
+      gtk_toggle_tool_button_set_active(
+        GTK_TOGGLE_TOOL_BUTTON(GET_COMPONENT("buttonHand")), TRUE);
+      break;
   }
     
   gtk_toggle_tool_button_set_active(
@@ -752,6 +756,10 @@ void update_tool_menu(void)
       gtk_check_menu_item_set_active(
         GTK_CHECK_MENU_ITEM(GET_COMPONENT("toolsVerticalSpace")), TRUE);
       break;
+    case TOOL_HAND:
+      gtk_check_menu_item_set_active(
+        GTK_CHECK_MENU_ITEM(GET_COMPONENT("toolsHand")), TRUE);
+      break;
   }
 
   gtk_check_menu_item_set_active(
index 798643c49fa3100e1f3e70eaea481e36e321ca59..f52f1240173e4c6143cd05481781dfd71e5b94b6 100644 (file)
@@ -93,6 +93,9 @@ void update_cursor(void)
   else if (ui.cur_item_type == ITEM_SELECTRECT) {
     ui.cursor = gdk_cursor_new(GDK_TCROSS);
   }
+  else if (ui.toolno[ui.cur_mapping] == TOOL_HAND) {
+    ui.cursor = gdk_cursor_new(GDK_HAND1);
+  }
   
   gdk_window_set_cursor(GTK_WIDGET(canvas)->window, ui.cursor);
 }
@@ -895,3 +898,15 @@ void rethicken_selection(int val)
          "width-units", item->brush.thickness, NULL);
   }
 }
+
+void do_hand(GdkEvent *event)
+{
+  double pt[2], val;
+  int cx, cy;
+  
+  get_pointer_coords(event, pt);
+  gnome_canvas_get_scroll_offsets(canvas, &cx, &cy);
+  cx -= (pt[0]-ui.hand_refpt[0])*ui.zoom;
+  cy -= (pt[1]-ui.hand_refpt[1])*ui.zoom;
+  gnome_canvas_scroll_to(canvas, cx, cy);
+}
index 4d3a43cc2e2f3973ce1b8faa120a9385077e5c0f..d01cee294b1ef36432f0c9d5d6c770ddcffccff4 100644 (file)
@@ -7,6 +7,8 @@ void finalize_stroke(void);
 
 void do_eraser(GdkEvent *event, double radius, gboolean whole_strokes);
 
+void do_hand(GdkEvent *event);
+
 void start_selectrect(GdkEvent *event);
 void finalize_selectrect(void);
 gboolean start_movesel(GdkEvent *event);
index 644fbd800a8737bc3ded719d0f809ea25b698682..6ed265a2759a19ce5bd0fde5693ebdefa89fa884 100644 (file)
@@ -97,6 +97,7 @@ extern guint predef_bgcolors_rgba[COLOR_MAX];
 #define TOOL_SELECTREGION 4
 #define TOOL_SELECTRECT   5
 #define TOOL_VERTSPACE    6
+#define TOOL_HAND         7
 #define NUM_STROKE_TOOLS  3
 #define NUM_BUTTONS       3
 
@@ -142,6 +143,7 @@ typedef struct Item {
 #define ITEM_DELETE_PAGE 14
 #define ITEM_REPAINTSEL 15
 #define ITEM_MOVESEL_VERT 16
+#define ITEM_HAND 17
 
 typedef struct Layer {
   GList *items; // the items on the layer, from bottom to top
@@ -200,6 +202,7 @@ typedef struct UIData {
   gboolean use_xinput; // use input devices instead of core pointer
   gboolean allow_xinput; // allow use of xinput ?
   int screen_width, screen_height; // initial screen size, for XInput events
+  double hand_refpt[2];
   char *filename;
   gboolean view_continuous, fullscreen;
   gboolean in_update_page_stuff; // semaphore to avoid scrollbar retroaction
index 45b5d67e95bdb2db69ac8e367e924e36c38c90b5..ebfef27141dc04de4ffbd9e3a8ee80014123f9a4 100644 (file)
@@ -55,7 +55,7 @@
                      <signal name="activate" handler="on_fileNewBackground_activate" last_modification_time="Wed, 30 Nov 2005 18:39:59 GMT"/>
 
                      <child internal-child="image">
-                       <widget class="GtkImage" id="image599">
+                       <widget class="GtkImage" id="image623">
                          <property name="visible">True</property>
                          <property name="stock">gtk-open</property>
                          <property name="icon_size">1</property>
                      <signal name="activate" handler="on_filePrintOptions_activate" last_modification_time="Wed, 30 Nov 2005 18:44:18 GMT"/>
 
                      <child internal-child="image">
-                       <widget class="GtkImage" id="image600">
+                       <widget class="GtkImage" id="image624">
                          <property name="visible">True</property>
                          <property name="stock">gtk-preferences</property>
                          <property name="icon_size">1</property>
                              <signal name="activate" handler="on_viewPageWidth_activate" last_modification_time="Wed, 30 Nov 2005 19:31:48 GMT"/>
 
                              <child internal-child="image">
-                               <widget class="GtkImage" id="image612">
+                               <widget class="GtkImage" id="image625">
                                  <property name="visible">True</property>
                                  <property name="stock">gtk-zoom-fit</property>
                                  <property name="icon_size">1</property>
                      <signal name="activate" handler="on_viewFirstPage_activate" last_modification_time="Wed, 30 Nov 2005 19:33:03 GMT"/>
 
                      <child internal-child="image">
-                       <widget class="GtkImage" id="image602">
+                       <widget class="GtkImage" id="image626">
                          <property name="visible">True</property>
                          <property name="stock">gtk-goto-first</property>
                          <property name="icon_size">1</property>
                      <signal name="activate" handler="on_viewPreviousPage_activate" last_modification_time="Wed, 30 Nov 2005 19:35:41 GMT"/>
 
                      <child internal-child="image">
-                       <widget class="GtkImage" id="image603">
+                       <widget class="GtkImage" id="image627">
                          <property name="visible">True</property>
                          <property name="stock">gtk-go-back</property>
                          <property name="icon_size">1</property>
                      <signal name="activate" handler="on_viewNextPage_activate" last_modification_time="Wed, 30 Nov 2005 19:35:41 GMT"/>
 
                      <child internal-child="image">
-                       <widget class="GtkImage" id="image604">
+                       <widget class="GtkImage" id="image628">
                          <property name="visible">True</property>
                          <property name="stock">gtk-go-forward</property>
                          <property name="icon_size">1</property>
                      <signal name="activate" handler="on_viewLastPage_activate" last_modification_time="Wed, 30 Nov 2005 19:35:41 GMT"/>
 
                      <child internal-child="image">
-                       <widget class="GtkImage" id="image605">
+                       <widget class="GtkImage" id="image629">
                          <property name="visible">True</property>
                          <property name="stock">gtk-goto-last</property>
                          <property name="icon_size">1</property>
                      <signal name="activate" handler="on_viewShowLayer_activate" last_modification_time="Wed, 30 Nov 2005 19:40:23 GMT"/>
 
                      <child internal-child="image">
-                       <widget class="GtkImage" id="image606">
+                       <widget class="GtkImage" id="image630">
                          <property name="visible">True</property>
                          <property name="stock">gtk-add</property>
                          <property name="icon_size">1</property>
                      <signal name="activate" handler="on_viewHideLayer_activate" last_modification_time="Wed, 30 Nov 2005 19:40:23 GMT"/>
 
                      <child internal-child="image">
-                       <widget class="GtkImage" id="image607">
+                       <widget class="GtkImage" id="image631">
                          <property name="visible">True</property>
                          <property name="stock">gtk-remove</property>
                          <property name="icon_size">1</property>
                      <signal name="activate" handler="on_journalLoadBackground_activate" last_modification_time="Wed, 30 Nov 2005 20:06:31 GMT"/>
 
                      <child internal-child="image">
-                       <widget class="GtkImage" id="image608">
+                       <widget class="GtkImage" id="image632">
                          <property name="visible">True</property>
                          <property name="stock">gtk-open</property>
                          <property name="icon_size">1</property>
                    </widget>
                  </child>
 
+                 <child>
+                   <widget class="GtkRadioMenuItem" id="toolsHand">
+                     <property name="visible">True</property>
+                     <property name="label" translatable="yes">Hand Tool</property>
+                     <property name="use_underline">True</property>
+                     <property name="active">False</property>
+                     <property name="group">toolsPen</property>
+                     <signal name="activate" handler="on_toolsHand_activate" last_modification_time="Wed, 20 Sep 2006 02:20:48 GMT"/>
+                   </widget>
+                 </child>
+
                  <child>
                    <widget class="GtkSeparatorMenuItem" id="separator16">
                      <property name="visible">True</property>
                      <property name="use_underline">True</property>
 
                      <child internal-child="image">
-                       <widget class="GtkImage" id="image609">
+                       <widget class="GtkImage" id="image633">
                          <property name="visible">True</property>
                          <property name="stock">gtk-select-color</property>
                          <property name="icon_size">1</property>
                      <signal name="activate" handler="on_toolsTextFont_activate" last_modification_time="Thu, 01 Dec 2005 20:54:08 GMT"/>
 
                      <child internal-child="image">
-                       <widget class="GtkImage" id="image610">
+                       <widget class="GtkImage" id="image634">
                          <property name="visible">True</property>
                          <property name="stock">gtk-select-font</property>
                          <property name="icon_size">1</property>
                            </widget>
                          </child>
 
+                         <child>
+                           <widget class="GtkRadioMenuItem" id="button2Hand">
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">Hand Tool</property>
+                             <property name="use_underline">True</property>
+                             <property name="active">False</property>
+                             <property name="group">button2Pen</property>
+                             <signal name="activate" handler="on_button2Hand_activate" last_modification_time="Wed, 20 Sep 2006 02:20:48 GMT"/>
+                           </widget>
+                         </child>
+
                          <child>
                            <widget class="GtkSeparatorMenuItem" id="separator24">
                              <property name="visible">True</property>
                            </widget>
                          </child>
 
+                         <child>
+                           <widget class="GtkRadioMenuItem" id="button3Hand">
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">Hand Tool</property>
+                             <property name="use_underline">True</property>
+                             <property name="active">False</property>
+                             <property name="group">button3Pen</property>
+                             <signal name="activate" handler="on_button3Hand_activate" last_modification_time="Wed, 20 Sep 2006 02:20:48 GMT"/>
+                           </widget>
+                         </child>
+
                          <child>
                            <widget class="GtkSeparatorMenuItem" id="separator25">
                              <property name="visible">True</property>
          <property name="show_arrow">True</property>
 
          <child>
-           <widget class="GtkToolButton" id="newButton">
+           <widget class="GtkToolButton" id="saveButton">
              <property name="visible">True</property>
-             <property name="tooltip" translatable="yes">New</property>
-             <property name="stock_id">gtk-new</property>
+             <property name="tooltip" translatable="yes">Save</property>
+             <property name="stock_id">gtk-save</property>
              <property name="visible_horizontal">True</property>
              <property name="visible_vertical">True</property>
              <property name="is_important">False</property>
-             <signal name="clicked" handler="on_fileNew_activate" last_modification_time="Thu, 10 Aug 2006 15:14:10 GMT"/>
+             <signal name="clicked" handler="on_fileSave_activate" last_modification_time="Fri, 02 Dec 2005 02:19:52 GMT"/>
            </widget>
            <packing>
              <property name="expand">False</property>
          </child>
 
          <child>
-           <widget class="GtkToolButton" id="openButton">
+           <widget class="GtkToolButton" id="newButton">
              <property name="visible">True</property>
-             <property name="tooltip" translatable="yes">Open</property>
-             <property name="stock_id">gtk-open</property>
+             <property name="tooltip" translatable="yes">New</property>
+             <property name="stock_id">gtk-new</property>
              <property name="visible_horizontal">True</property>
              <property name="visible_vertical">True</property>
              <property name="is_important">False</property>
-             <signal name="clicked" handler="on_fileOpen_activate" last_modification_time="Thu, 10 Aug 2006 15:14:42 GMT"/>
+             <signal name="clicked" handler="on_fileNew_activate" last_modification_time="Thu, 10 Aug 2006 15:14:10 GMT"/>
            </widget>
            <packing>
              <property name="expand">False</property>
          </child>
 
          <child>
-           <widget class="GtkToolButton" id="saveButton">
+           <widget class="GtkToolButton" id="openButton">
              <property name="visible">True</property>
-             <property name="tooltip" translatable="yes">Save</property>
-             <property name="stock_id">gtk-save</property>
+             <property name="tooltip" translatable="yes">Open</property>
+             <property name="stock_id">gtk-open</property>
              <property name="visible_horizontal">True</property>
              <property name="visible_vertical">True</property>
              <property name="is_important">False</property>
-             <signal name="clicked" handler="on_fileSave_activate" last_modification_time="Fri, 02 Dec 2005 02:19:52 GMT"/>
+             <signal name="clicked" handler="on_fileOpen_activate" last_modification_time="Thu, 10 Aug 2006 15:14:42 GMT"/>
            </widget>
            <packing>
              <property name="expand">False</property>
            </packing>
          </child>
 
+         <child>
+           <widget class="GtkRadioToolButton" id="buttonHand">
+             <property name="visible">True</property>
+             <property name="label" translatable="yes">Hand Tool</property>
+             <property name="use_underline">True</property>
+             <property name="icon">hand.png</property>
+             <property name="visible_horizontal">True</property>
+             <property name="visible_vertical">True</property>
+             <property name="is_important">False</property>
+             <property name="active">False</property>
+             <property name="group">buttonPen</property>
+             <signal name="toggled" handler="on_toolsHand_activate" last_modification_time="Wed, 20 Sep 2006 02:21:25 GMT"/>
+           </widget>
+           <packing>
+             <property name="expand">False</property>
+             <property name="homogeneous">True</property>
+           </packing>
+         </child>
+
          <child>
            <widget class="GtkToolItem" id="toolitem16">
              <property name="visible">True</property>