From: auroux Date: Wed, 20 Sep 2006 03:18:45 +0000 (+0000) Subject: Add a hand tool (+ other misc updates) X-Git-Url: https://git.donarmstrong.com/?p=xournal.git;a=commitdiff_plain;h=0c9075b0b48fb9d2c36327bc70eb95dcc0942e3c Add a hand tool (+ other misc updates) --- diff --git a/ChangeLog b/ChangeLog index 909fb37..0582621 100644 --- 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 diff --git a/configure.in b/configure.in index a898e98..fc25bac 100644 --- a/configure.in +++ b/configure.in @@ -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 diff --git a/html-doc/manual.html b/html-doc/manual.html index be75dea..fd27230 100644 --- a/html-doc/manual.html +++ b/html-doc/manual.html @@ -501,7 +501,9 @@ Bug reports and suggestions can also be submitted on Xournal's

Version 0.3.1 (August 3, 2006):

Version 0.3 (July 23, 2006): diff --git a/src/TODO b/src/TODO index 87329bd..c41a6a4 100644 --- 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!) diff --git a/src/xo-callbacks.c b/src/xo-callbacks.c index 96683b3..4980035 100644 --- a/src/xo-callbacks.c +++ b/src/xo-callbacks.c @@ -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); +} + diff --git a/src/xo-callbacks.h b/src/xo-callbacks.h index 5a0ccc6..8513ec8 100644 --- a/src/xo-callbacks.h +++ b/src/xo-callbacks.h @@ -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); diff --git a/src/xo-interface.c b/src/xo-interface.c index df0049e..2868949 100644 --- a/src/xo-interface.c +++ b/src/xo-interface.c @@ -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"); diff --git a/src/xo-misc.c b/src/xo-misc.c index f6dab78..d1e546e 100644 --- a/src/xo-misc.c +++ b/src/xo-misc.c @@ -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( diff --git a/src/xo-paint.c b/src/xo-paint.c index 798643c..f52f124 100644 --- a/src/xo-paint.c +++ b/src/xo-paint.c @@ -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); +} diff --git a/src/xo-paint.h b/src/xo-paint.h index 4d3a43c..d01cee2 100644 --- a/src/xo-paint.h +++ b/src/xo-paint.h @@ -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); diff --git a/src/xournal.h b/src/xournal.h index 644fbd8..6ed265a 100644 --- a/src/xournal.h +++ b/src/xournal.h @@ -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 diff --git a/xournal.glade b/xournal.glade index 45b5d67..ebfef27 100644 --- a/xournal.glade +++ b/xournal.glade @@ -55,7 +55,7 @@ - + True gtk-open 1 @@ -200,7 +200,7 @@ - + True gtk-preferences 1 @@ -419,7 +419,7 @@ - + True gtk-zoom-fit 1 @@ -459,7 +459,7 @@ - + True gtk-goto-first 1 @@ -480,7 +480,7 @@ - + True gtk-go-back 1 @@ -501,7 +501,7 @@ - + True gtk-go-forward 1 @@ -522,7 +522,7 @@ - + True gtk-goto-last 1 @@ -549,7 +549,7 @@ - + True gtk-add 1 @@ -570,7 +570,7 @@ - + True gtk-remove 1 @@ -867,7 +867,7 @@ - + True gtk-open 1 @@ -1008,6 +1008,17 @@ + + + True + Hand Tool + True + False + toolsPen + + + + True @@ -1021,7 +1032,7 @@ True - + True gtk-select-color 1 @@ -1388,7 +1399,7 @@ - + True gtk-select-font 1 @@ -1586,6 +1597,17 @@ + + + True + Hand Tool + True + False + button2Pen + + + + True @@ -1711,6 +1733,17 @@ + + + True + Hand Tool + True + False + button3Pen + + + + True @@ -1843,14 +1876,14 @@ True - + True - New - gtk-new + Save + gtk-save True True False - + False @@ -1859,14 +1892,14 @@ - + True - Open - gtk-open + New + gtk-new True True False - + False @@ -1875,14 +1908,14 @@ - + True - Save - gtk-save + Open + gtk-open True True False - + False @@ -2401,6 +2434,25 @@ + + + True + Hand Tool + True + hand.png + True + True + False + False + buttonPen + + + + False + True + + + True