]> git.donarmstrong.com Git - xournal.git/blobdiff - src/xo-callbacks.c
Add a hand tool
[xournal.git] / src / xo-callbacks.c
index 06e30e5646bea2ccb473280332bd04f8ac5e9318..4980035cd66b4ffd21e227d1a478aac8d036d307 100644 (file)
@@ -47,7 +47,7 @@ on_fileNewBackground_activate          (GtkMenuItem     *menuitem,
   
   dialog = gtk_file_chooser_dialog_new("Open PDF", GTK_WINDOW (winMain),
      GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
-     GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL);
+     GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL);
      
   filt_all = gtk_file_filter_new();
   gtk_file_filter_set_name(filt_all, "All files");
@@ -62,7 +62,7 @@ on_fileNewBackground_activate          (GtkMenuItem     *menuitem,
   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(attach_opt), FALSE);
   gtk_file_chooser_set_extra_widget(GTK_FILE_CHOOSER (dialog), attach_opt);
   
-  if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_ACCEPT) {
+  if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_OK) {
     gtk_widget_destroy(dialog);
     return;
   }
@@ -113,7 +113,7 @@ on_fileOpen_activate                   (GtkMenuItem     *menuitem,
   
   dialog = gtk_file_chooser_dialog_new("Open Journal", GTK_WINDOW (winMain),
      GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
-     GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL);
+     GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL);
      
   filt_all = gtk_file_filter_new();
   gtk_file_filter_set_name(filt_all, "All files");
@@ -124,7 +124,7 @@ on_fileOpen_activate                   (GtkMenuItem     *menuitem,
   gtk_file_chooser_add_filter(GTK_FILE_CHOOSER (dialog), filt_xoj);
   gtk_file_chooser_add_filter(GTK_FILE_CHOOSER (dialog), filt_all);
   
-  if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_ACCEPT) {
+  if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_OK) {
     gtk_widget_destroy(dialog);
     return;
   }
@@ -185,7 +185,7 @@ on_fileSaveAs_activate                 (GtkMenuItem     *menuitem,
   
   dialog = gtk_file_chooser_dialog_new("Save Journal", GTK_WINDOW (winMain),
      GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
-     GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL);
+     GTK_STOCK_SAVE, GTK_RESPONSE_OK, NULL);
      
   if (ui.filename!=NULL) {
     gtk_file_chooser_set_filename(GTK_FILE_CHOOSER (dialog), ui.filename);
@@ -215,10 +215,10 @@ on_fileSaveAs_activate                 (GtkMenuItem     *menuitem,
   gtk_file_chooser_add_filter(GTK_FILE_CHOOSER (dialog), filt_all);
   
   // somehow this doesn't seem to be set by default
-  gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT);
+  gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK);
 
   do {
-    if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_ACCEPT) {
+    if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_OK) {
       gtk_widget_destroy(dialog);
       return;
     }
@@ -365,7 +365,7 @@ on_filePrintPDF_activate               (GtkMenuItem     *menuitem,
   
   dialog = gtk_file_chooser_dialog_new("Export to PDF", GTK_WINDOW (winMain),
      GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
-     GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL);
+     GTK_STOCK_SAVE, GTK_RESPONSE_OK, NULL);
      
   if (ui.filename!=NULL) {
     if (g_str_has_suffix(ui.filename, ".xoj")) {
@@ -391,11 +391,11 @@ on_filePrintPDF_activate               (GtkMenuItem     *menuitem,
   gtk_file_filter_add_pattern(filt_pdf, "*.pdf");
   gtk_file_chooser_add_filter(GTK_FILE_CHOOSER (dialog), filt_pdf);
   gtk_file_chooser_add_filter(GTK_FILE_CHOOSER (dialog), filt_all);
-  gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT);
+  gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK);
   g_free(in_fn);
   
   do {
-    if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_ACCEPT) {
+    if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_OK) {
       gtk_widget_destroy(dialog);
       return;
     }
@@ -1343,7 +1343,7 @@ on_journalLoadBackground_activate      (GtkMenuItem     *menuitem,
   
   dialog = gtk_file_chooser_dialog_new("Open Background", GTK_WINDOW (winMain),
      GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
-     GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL);
+     GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL);
      
   filt_all = gtk_file_filter_new();
   gtk_file_filter_set_name(filt_all, "All files");
@@ -1371,7 +1371,7 @@ on_journalLoadBackground_activate      (GtkMenuItem     *menuitem,
   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(attach_opt), FALSE);
   gtk_file_chooser_set_extra_widget(GTK_FILE_CHOOSER (dialog), attach_opt);
   
-  if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_ACCEPT) {
+  if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_OK) {
     gtk_widget_destroy(dialog);
     return;
   }
@@ -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);
+}
+