Updated Makefile.am files after make -f git.mk
[anjuta.git] / plugins / document-manager / action-callbacks.c
blobad5002bc4899c23adafcfc430c881e651d374900
1 /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
2 /*
3 * action-callbacks.c
4 * Copyright (C) 2003 Naba Kumar
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 #include <config.h>
21 #include <libanjuta/anjuta-ui.h>
22 #include <libanjuta/anjuta-utils.h>
24 #include <libanjuta/interfaces/ianjuta-markable.h>
25 #include <libanjuta/interfaces/ianjuta-editor.h>
26 #include <libanjuta/interfaces/ianjuta-editor-selection.h>
27 #include <libanjuta/interfaces/ianjuta-editor-convert.h>
28 #include <libanjuta/interfaces/ianjuta-editor-line-mode.h>
29 #include <libanjuta/interfaces/ianjuta-editor-view.h>
30 #include <libanjuta/interfaces/ianjuta-editor-folds.h>
31 #include <libanjuta/interfaces/ianjuta-file.h>
32 #include <libanjuta/interfaces/ianjuta-file-savable.h>
33 #include <libanjuta/interfaces/ianjuta-print.h>
34 #include <libanjuta/interfaces/ianjuta-editor-comment.h>
35 #include <libanjuta/interfaces/ianjuta-editor-zoom.h>
36 #include <libanjuta/interfaces/ianjuta-editor-goto.h>
37 #include <libanjuta/interfaces/ianjuta-editor-language.h>
38 #include <libanjuta/interfaces/ianjuta-editor-assist.h>
40 #include <sys/wait.h>
41 #include <sys/stat.h>
43 #include "anjuta-docman.h"
44 #include "action-callbacks.h"
45 #include "plugin.h"
46 #include "file_history.h"
47 #include "search-box.h"
48 #include "search-files.h"
49 #include "anjuta-bookmarks.h"
51 static IAnjutaDocument *
52 get_current_document (gpointer user_data)
54 AnjutaDocman *docman;
55 DocmanPlugin *plugin;
56 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
57 docman = ANJUTA_DOCMAN (plugin->docman);
59 return anjuta_docman_get_current_document (docman);
62 static GtkWidget *
63 get_current_focus_widget (gpointer user_data)
65 AnjutaDocman *docman;
66 DocmanPlugin *plugin;
67 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
68 docman = ANJUTA_DOCMAN (plugin->docman);
70 return anjuta_docman_get_current_focus_widget (docman);
73 static gboolean
74 get_current_popup_active (gpointer user_data)
76 GtkWidget *widget;
77 AnjutaDocman *docman;
78 DocmanPlugin *plugin;
79 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
80 docman = ANJUTA_DOCMAN (plugin->docman);
82 widget = anjuta_docman_get_current_popup (docman);
83 if (widget)
85 widget = gtk_widget_get_toplevel (widget);
86 if (gtk_widget_is_toplevel (widget))
87 return gtk_window_has_toplevel_focus (GTK_WINDOW (widget));
89 return FALSE;
92 void
93 on_open_activate (GtkAction *action, gpointer user_data)
95 AnjutaDocman *docman;
96 DocmanPlugin *plugin;
97 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
98 docman = ANJUTA_DOCMAN (plugin->docman);
99 anjuta_docman_open_file (docman);
102 void
103 on_save_activate (GtkAction *action, gpointer user_data)
105 IAnjutaDocument *doc;
106 AnjutaDocman *docman;
107 DocmanPlugin *plugin;
108 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
109 docman = ANJUTA_DOCMAN (plugin->docman);
111 doc = anjuta_docman_get_current_document (docman);
112 if (doc)
113 anjuta_docman_save_document (docman, doc, NULL);
116 void
117 on_save_as_activate (GtkAction *action, gpointer user_data)
119 IAnjutaDocument *doc;
120 AnjutaDocman *docman;
121 DocmanPlugin *plugin;
123 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
124 docman = ANJUTA_DOCMAN (plugin->docman);
126 doc = anjuta_docman_get_current_document (docman);
127 if (doc)
128 anjuta_docman_save_document_as (docman, doc, NULL);
131 void
132 on_save_all_activate (GtkAction *action, gpointer user_data)
134 GList *buffers, *node;
135 AnjutaDocman *docman;
136 DocmanPlugin *plugin;
137 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
138 docman = ANJUTA_DOCMAN (plugin->docman);
140 buffers = anjuta_docman_get_all_doc_widgets (docman);
141 if (buffers)
143 for (node = buffers; node != NULL; node = g_list_next (node))
145 IAnjutaDocument *doc;
146 doc = IANJUTA_DOCUMENT (node->data);
147 if (doc)
149 /* known-uri test occurs downstream */
150 /* CHECKME test here and perform save-as when appropriate ? */
151 if (ianjuta_file_savable_is_dirty (IANJUTA_FILE_SAVABLE (doc), NULL))
153 ianjuta_file_savable_save (IANJUTA_FILE_SAVABLE (doc), NULL);
157 g_list_free (buffers);
161 static gboolean
162 on_save_prompt_save_editor (AnjutaSavePrompt *save_prompt,
163 gpointer item, gpointer user_data)
165 AnjutaDocman *docman;
167 docman = ANJUTA_DOCMAN (user_data);
168 return anjuta_docman_save_document (docman, IANJUTA_DOCUMENT (item),
169 GTK_WIDGET (save_prompt));
172 void
173 on_close_file_activate (GtkAction *action, gpointer user_data)
175 IAnjutaDocument *doc;
176 AnjutaDocman *docman;
177 DocmanPlugin *plugin;
179 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
180 docman = ANJUTA_DOCMAN (plugin->docman);
181 doc = anjuta_docman_get_current_document (docman);
182 if (doc == NULL)
183 return;
185 if (ianjuta_file_savable_is_dirty(IANJUTA_FILE_SAVABLE (doc), NULL))
187 GtkWidget *parent;
188 gchar *uri;
189 GFile* file;
190 AnjutaSavePrompt *save_prompt;
192 parent = gtk_widget_get_toplevel (GTK_WIDGET (doc));
193 /* Prompt for unsaved data */
194 save_prompt = anjuta_save_prompt_new (GTK_WINDOW (parent));
195 file = ianjuta_file_get_file (IANJUTA_FILE (doc), NULL);
196 if (file)
198 uri = g_file_get_uri (file);
199 g_object_unref (file);
201 else
202 uri = NULL;
203 /* NULL uri ok */
204 anjuta_save_prompt_add_item (save_prompt,
205 ianjuta_document_get_filename (doc, NULL),
206 uri, doc, on_save_prompt_save_editor,
207 docman);
208 g_free (uri);
210 switch (gtk_dialog_run (GTK_DIALOG (save_prompt)))
212 case ANJUTA_SAVE_PROMPT_RESPONSE_CANCEL:
213 /* Do not close */
214 break;
215 case ANJUTA_SAVE_PROMPT_RESPONSE_DISCARD:
216 case ANJUTA_SAVE_PROMPT_RESPONSE_SAVE_CLOSE:
217 /* Close it */
218 anjuta_docman_remove_document (docman, doc);
219 break;
221 gtk_widget_destroy (GTK_WIDGET (save_prompt));
223 else
224 anjuta_docman_remove_document (docman, doc);
227 void
228 on_close_all_file_activate (GtkAction *action, gpointer user_data)
230 GList *buffers;
231 AnjutaDocman *docman;
232 DocmanPlugin *plugin;
233 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
234 docman = ANJUTA_DOCMAN (plugin->docman);
236 /* Close all 'saved' files */
237 buffers = anjuta_docman_get_all_doc_widgets (docman);
238 if (buffers)
240 GList *node;
241 node = buffers;
242 while (node)
244 IAnjutaDocument *doc;
245 GList* next;
246 doc = IANJUTA_DOCUMENT (node->data);
247 next = g_list_next (node); /* grab it now, as we may change it. */
248 if (doc)
250 if (!ianjuta_file_savable_is_dirty (IANJUTA_FILE_SAVABLE (doc), NULL))
252 anjuta_docman_remove_document (docman, doc);
255 node = next;
257 g_list_free (buffers);
261 void
262 on_close_other_file_activate (GtkAction *action, gpointer user_data)
264 GList *buffers;
265 AnjutaDocman *docman;
266 IAnjutaDocument *curr_doc;
267 DocmanPlugin *plugin;
268 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
269 docman = ANJUTA_DOCMAN (plugin->docman);
271 /* Close all 'saved' files */
272 buffers = anjuta_docman_get_all_doc_widgets (docman);
273 if (buffers)
275 GList *node;
276 node = buffers;
278 curr_doc = anjuta_docman_get_current_document (docman);
279 while (node)
281 IAnjutaDocument *doc;
282 GList* next;
283 doc = IANJUTA_DOCUMENT (node->data);
284 next = g_list_next (node); /* grab it now, as we may change it. */
285 if (doc && doc != curr_doc)
287 if (!ianjuta_file_savable_is_dirty (IANJUTA_FILE_SAVABLE (doc), NULL))
289 anjuta_docman_remove_document (docman, doc);
292 node = next;
294 g_list_free (buffers);
298 void
299 on_reload_file_activate (GtkAction *action, gpointer user_data)
301 IAnjutaDocument *doc;
302 gchar *msg;
303 GtkWidget *dialog;
304 GtkWidget *parent;
305 gint reply = GTK_RESPONSE_YES;
307 doc = get_current_document (user_data);
308 if (doc == NULL)
309 return;
311 parent = gtk_widget_get_toplevel (GTK_WIDGET (doc));
312 if (IANJUTA_IS_FILE_SAVABLE (doc) && ianjuta_file_savable_is_dirty (IANJUTA_FILE_SAVABLE (doc), NULL))
314 msg = g_strdup_printf (
315 _("Are you sure you want to reload '%s'?\nAny unsaved changes will be lost."),
316 ianjuta_document_get_filename (doc, NULL));
318 dialog = gtk_message_dialog_new (GTK_WINDOW (parent),
319 GTK_DIALOG_DESTROY_WITH_PARENT,
320 GTK_MESSAGE_QUESTION,
321 GTK_BUTTONS_NONE, "%s", msg);
322 gtk_dialog_add_button (GTK_DIALOG (dialog),
323 GTK_STOCK_CANCEL, GTK_RESPONSE_NO);
324 anjuta_util_dialog_add_button (GTK_DIALOG (dialog), _("_Reload"),
325 GTK_STOCK_REVERT_TO_SAVED,
326 GTK_RESPONSE_YES);
327 gtk_dialog_set_default_response (GTK_DIALOG (dialog),
328 GTK_RESPONSE_NO);
329 reply = gtk_dialog_run (GTK_DIALOG (dialog));
330 gtk_widget_destroy (dialog);
331 g_free (msg);
334 if (reply == GTK_RESPONSE_YES)
336 GFile* file;
337 file = ianjuta_file_get_file (IANJUTA_FILE (doc), NULL);
338 if (file)
340 ianjuta_file_open (IANJUTA_FILE (doc), file, NULL);
341 g_object_unref(file);
346 void
347 on_print_activate (GtkAction *action, gpointer user_data)
349 IAnjutaDocument *doc;
351 doc = get_current_document (user_data);
352 if (doc)
353 ianjuta_print_print (IANJUTA_PRINT (doc), NULL);
356 void
357 on_print_preview_activate (GtkAction *action, gpointer user_data)
359 IAnjutaDocument *doc;
361 doc = get_current_document (user_data);
362 if (doc)
363 ianjuta_print_print_preview (IANJUTA_PRINT (doc), NULL);
366 void
367 on_editor_command_upper_case_activate (GtkAction *action, gpointer user_data)
369 IAnjutaDocument *doc;
371 doc = get_current_document (user_data);
372 if (doc)
374 if (ianjuta_editor_selection_has_selection (IANJUTA_EDITOR_SELECTION (doc),
375 NULL))
377 IAnjutaIterable *start, *end;
378 start = ianjuta_editor_selection_get_start (IANJUTA_EDITOR_SELECTION (doc),
379 NULL);
380 end = ianjuta_editor_selection_get_end (IANJUTA_EDITOR_SELECTION (doc), NULL);
381 ianjuta_editor_convert_to_upper (IANJUTA_EDITOR_CONVERT (doc),
382 start, end, NULL);
383 g_object_unref (start);
384 g_object_unref (end);
389 void
390 on_editor_command_lower_case_activate (GtkAction *action, gpointer user_data)
392 IAnjutaDocument *doc;
394 doc = get_current_document (user_data);
395 if (doc)
397 if (ianjuta_editor_selection_has_selection (IANJUTA_EDITOR_SELECTION (doc), NULL))
399 IAnjutaIterable *start, *end;
400 start = ianjuta_editor_selection_get_start (IANJUTA_EDITOR_SELECTION (doc), NULL);
401 end = ianjuta_editor_selection_get_end (IANJUTA_EDITOR_SELECTION (doc), NULL);
402 ianjuta_editor_convert_to_lower (IANJUTA_EDITOR_CONVERT (doc),
403 start, end, NULL);
404 g_object_unref (start);
405 g_object_unref (end);
410 void
411 on_editor_command_eol_crlf_activate (GtkAction *action, gpointer user_data)
413 IAnjutaDocument *doc;
415 doc = get_current_document (user_data);
416 if (doc)
417 ianjuta_editor_line_mode_convert (IANJUTA_EDITOR_LINE_MODE (doc),
418 IANJUTA_EDITOR_LINE_MODE_CRLF, NULL);
421 void
422 on_editor_command_eol_lf_activate (GtkAction *action, gpointer user_data)
424 IAnjutaDocument *doc;
426 doc = get_current_document (user_data);
427 if (doc)
428 ianjuta_editor_line_mode_convert (IANJUTA_EDITOR_LINE_MODE (doc),
429 IANJUTA_EDITOR_LINE_MODE_LF, NULL);
432 void
433 on_editor_command_eol_cr_activate (GtkAction *action, gpointer user_data)
435 IAnjutaDocument *doc;
437 doc = get_current_document (user_data);
438 if (doc)
439 ianjuta_editor_line_mode_convert (IANJUTA_EDITOR_LINE_MODE (doc),
440 IANJUTA_EDITOR_LINE_MODE_CR, NULL);
443 void
444 on_editor_command_select_all_activate (GtkAction *action, gpointer user_data)
446 GtkWidget *widget;
448 widget = get_current_focus_widget (user_data);
450 if (widget && GTK_IS_EDITABLE (widget))
452 gtk_editable_select_region (GTK_EDITABLE (widget), 0, -1);
454 else
456 if (widget /* editor text is focused */
457 || get_current_popup_active (user_data))
459 IAnjutaDocument *doc;
461 doc = get_current_document (user_data);
462 if (doc)
463 ianjuta_editor_selection_select_all
464 (IANJUTA_EDITOR_SELECTION (doc), NULL);
469 void
470 on_editor_command_select_block_activate (GtkAction *action, gpointer user_data)
472 IAnjutaDocument *doc;
474 doc = get_current_document (user_data);
475 if (doc)
476 ianjuta_editor_selection_select_block (IANJUTA_EDITOR_SELECTION (doc), NULL);
479 void
480 on_editor_command_match_brace_activate (GtkAction *action, gpointer user_data)
482 IAnjutaDocument *doc;
484 doc = get_current_document (user_data);
485 if (doc)
486 ianjuta_editor_goto_matching_brace (IANJUTA_EDITOR_GOTO (doc), NULL);
489 void
490 on_editor_command_undo_activate (GtkAction *action, gpointer user_data)
492 IAnjutaDocument *doc;
494 doc = get_current_document (user_data);
495 if (doc)
496 ianjuta_document_undo (doc, NULL);
499 void
500 on_editor_command_redo_activate (GtkAction *action, gpointer user_data)
502 IAnjutaDocument *doc;
504 doc = get_current_document (user_data);
505 if (doc)
506 ianjuta_document_redo (doc, NULL);
509 void
510 on_editor_command_cut_activate (GtkAction *action, gpointer user_data)
512 GtkWidget *widget;
514 widget = get_current_focus_widget (user_data);
516 if (widget && GTK_IS_EDITABLE (widget))
518 gtk_editable_cut_clipboard (GTK_EDITABLE (widget));
520 else
522 if (widget /* editor text is focused */
523 || get_current_popup_active (user_data))
525 IAnjutaDocument *doc;
527 doc = get_current_document (user_data);
528 if (doc)
529 ianjuta_document_cut (doc, NULL);
534 void
535 on_editor_command_paste_activate (GtkAction *action, gpointer user_data)
537 GtkWidget *widget;
539 widget = get_current_focus_widget (user_data);
541 if (widget && GTK_IS_EDITABLE (widget))
543 gtk_editable_paste_clipboard (GTK_EDITABLE (widget));
545 else
547 if (widget /* editor text is focused */
548 || get_current_popup_active (user_data))
550 IAnjutaDocument *doc;
552 doc = get_current_document (user_data);
553 if (doc)
554 ianjuta_document_paste (doc, NULL);
559 void
560 on_editor_command_copy_activate (GtkAction *action, gpointer user_data)
562 GtkWidget *widget;
564 widget = get_current_focus_widget (user_data);
566 if (widget && GTK_IS_EDITABLE (widget))
568 gtk_editable_copy_clipboard (GTK_EDITABLE (widget));
570 else
572 if (widget /* editor text is focused */
573 || get_current_popup_active (user_data))
575 IAnjutaDocument *doc;
577 doc = get_current_document (user_data);
578 if (doc)
579 ianjuta_document_copy (doc, NULL);
584 void
585 on_editor_command_clear_activate (GtkAction *action, gpointer user_data)
587 GtkWidget *widget;
589 widget = get_current_focus_widget (user_data);
591 if (widget && GTK_IS_EDITABLE (widget))
593 gint start, end;
594 if (!gtk_editable_get_selection_bounds (GTK_EDITABLE (widget), &start, &end))
596 start = gtk_editable_get_position (GTK_EDITABLE (widget));
597 end = start + 1;
599 gtk_editable_delete_text (GTK_EDITABLE (widget), start, end);
601 else if (widget /* editor text is focused */
602 || get_current_popup_active (user_data))
604 IAnjutaDocument *doc;
606 doc = get_current_document (user_data);
607 if (doc)
608 ianjuta_document_clear (doc, NULL);
612 /* fold funcs are for scintilla only */
613 void
614 on_editor_command_close_folds_all_activate (GtkAction *action, gpointer user_data)
616 IAnjutaDocument *doc;
618 doc = get_current_document (user_data);
619 if (doc)
620 ianjuta_editor_folds_close_all (IANJUTA_EDITOR_FOLDS (doc), NULL);
623 void
624 on_editor_command_open_folds_all_activate (GtkAction *action, gpointer user_data)
626 IAnjutaDocument *doc;
628 doc = get_current_document (user_data);
629 if (doc)
630 ianjuta_editor_folds_open_all (IANJUTA_EDITOR_FOLDS (doc), NULL);
633 void
634 on_editor_command_toggle_fold_activate (GtkAction *action, gpointer user_data)
636 IAnjutaDocument *doc;
638 doc = get_current_document (user_data);
639 if (doc)
640 ianjuta_editor_folds_toggle_current (IANJUTA_EDITOR_FOLDS (doc), NULL);
643 void
644 on_transform_eolchars1_activate (GtkAction *action, gpointer user_data)
646 IAnjutaDocument *doc;
648 doc = get_current_document (user_data);
649 if (doc)
650 ianjuta_editor_line_mode_fix (IANJUTA_EDITOR_LINE_MODE (doc), NULL);
653 void
654 on_prev_history (GtkAction *action, gpointer user_data)
656 AnjutaDocman *docman;
657 DocmanPlugin *plugin;
658 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
659 docman = ANJUTA_DOCMAN (plugin->docman);
660 an_file_history_back (docman);
663 void
664 on_next_history (GtkAction *action, gpointer user_data)
666 AnjutaDocman *docman;
667 DocmanPlugin *plugin;
668 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
669 docman = ANJUTA_DOCMAN (plugin->docman);
670 an_file_history_forward (docman);
673 void
674 on_comment_block (GtkAction *action, gpointer user_data)
676 IAnjutaDocument *doc;
678 doc = get_current_document (user_data);
679 if (doc)
680 ianjuta_editor_comment_block (IANJUTA_EDITOR_COMMENT (doc), NULL);
683 void on_comment_box (GtkAction *action, gpointer user_data)
685 IAnjutaDocument *doc;
687 doc = get_current_document (user_data);
688 if (doc)
689 ianjuta_editor_comment_box (IANJUTA_EDITOR_COMMENT (doc), NULL);
692 void on_comment_stream (GtkAction *action, gpointer user_data)
694 IAnjutaDocument *doc;
696 doc = get_current_document (user_data);
697 if (doc)
698 ianjuta_editor_comment_stream (IANJUTA_EDITOR_COMMENT (doc), NULL);
701 void
702 on_goto_line_no1_activate (GtkAction *action, gpointer user_data)
704 DocmanPlugin *plugin;
706 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
708 gtk_widget_show (plugin->search_box);
709 search_box_grab_line_focus (SEARCH_BOX (plugin->search_box));
712 void
713 on_goto_block_start1_activate (GtkAction *action, gpointer user_data)
715 IAnjutaDocument *doc;
717 doc = get_current_document (user_data);
718 if (doc)
719 ianjuta_editor_goto_start_block (IANJUTA_EDITOR_GOTO (doc), NULL);
722 void
723 on_goto_block_end1_activate (GtkAction *action, gpointer user_data)
725 IAnjutaDocument *doc;
727 doc = get_current_document (user_data);
728 if (doc)
729 ianjuta_editor_goto_end_block (IANJUTA_EDITOR_GOTO (doc), NULL);
732 void
733 on_zoom_in_text_activate (GtkAction *action, gpointer user_data)
735 IAnjutaDocument *doc;
737 doc = get_current_document (user_data);
738 if (doc)
739 ianjuta_editor_zoom_in (IANJUTA_EDITOR_ZOOM (doc), NULL);
742 void
743 on_zoom_out_text_activate (GtkAction *action, gpointer user_data)
745 IAnjutaDocument *doc;
747 doc = get_current_document (user_data);
748 if (doc)
749 ianjuta_editor_zoom_out (IANJUTA_EDITOR_ZOOM (doc), NULL);
752 void
753 on_force_hilite_activate (GtkWidget *menuitem, gpointer user_data)
755 IAnjutaDocument *doc;
757 doc = get_current_document (user_data);
758 if (doc)
760 const gchar *language_code;
761 language_code = g_object_get_data (G_OBJECT (menuitem), "language_code");
762 if (language_code && IANJUTA_IS_EDITOR_LANGUAGE (doc))
763 ianjuta_editor_language_set_language (IANJUTA_EDITOR_LANGUAGE (doc),
764 language_code, NULL);
768 void
769 on_show_search (GtkAction *action, gpointer user_data)
771 DocmanPlugin *plugin;
772 GtkWidget *search_box;
774 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
776 search_box = plugin->search_box;
778 search_box_fill_search_focus (SEARCH_BOX (search_box), FALSE);
779 gtk_widget_show (search_box);
782 void
783 on_repeat_quicksearch (GtkAction *action, gpointer user_data)
785 DocmanPlugin *plugin;
786 GtkWidget *search_box;
788 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
790 search_box = plugin->search_box;
792 gtk_widget_show (search_box);
793 search_box_incremental_search (SEARCH_BOX (search_box), TRUE, TRUE, TRUE);
796 void
797 on_search_previous (GtkAction *action, gpointer user_data)
799 DocmanPlugin *plugin;
800 GtkWidget *search_box;
802 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
804 search_box = plugin->search_box;
806 gtk_widget_show (search_box);
807 search_box_incremental_search (SEARCH_BOX (search_box), FALSE, TRUE, TRUE);
810 void
811 on_search_and_replace (GtkAction *action, gpointer user_data)
813 DocmanPlugin *plugin;
814 GtkWidget *search_box;
816 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
818 search_box = plugin->search_box;
820 search_box_fill_search_focus (SEARCH_BOX (search_box), TRUE);
821 gtk_widget_show (search_box);
824 void
825 on_search_popup_case_sensitive_toggle (GtkAction *action, gpointer user_data)
827 DocmanPlugin *plugin;
828 GtkWidget *search_box;
830 gboolean case_sensitive_status =
831 gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
832 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
834 search_box = plugin->search_box;
836 gtk_widget_show (search_box);
837 search_box_toggle_case_sensitive (SEARCH_BOX (search_box), case_sensitive_status);
840 void
841 on_search_popup_highlight_toggle (GtkAction *action, gpointer user_data)
843 DocmanPlugin *plugin;
844 GtkWidget *search_box;
846 gboolean highlight_status = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
847 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
849 search_box = plugin->search_box;
851 gtk_widget_show (search_box);
852 search_box_toggle_highlight (SEARCH_BOX (search_box), highlight_status);
855 void
856 on_search_popup_clear_highlight (GtkAction *action, gpointer user_data)
858 DocmanPlugin *plugin;
859 GtkWidget *search_box;
861 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
863 search_box = plugin->search_box;
865 gtk_widget_show (search_box);
866 search_box_clear_highlight (SEARCH_BOX (search_box));
869 void
870 on_search_popup_regex_search (GtkAction *action, gpointer user_data)
872 DocmanPlugin *plugin;
873 GtkWidget *search_box;
875 gboolean regex_active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
876 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
878 search_box = plugin->search_box;
880 gtk_widget_show (search_box);
881 search_box_toggle_regex (SEARCH_BOX (search_box), regex_active);
884 void
885 on_search_find_in_files (GtkAction *action, gpointer user_data)
887 DocmanPlugin *plugin;
888 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
890 if (!plugin->search_files)
892 plugin->search_files = G_OBJECT (search_files_new (ANJUTA_DOCMAN (plugin->docman),
893 SEARCH_BOX(plugin->search_box)));
895 search_files_present (SEARCH_FILES(plugin->search_files));
898 void
899 on_editor_add_view_activate (GtkAction *action, gpointer user_data)
901 IAnjutaDocument *doc;
902 doc = get_current_document (user_data);
903 if (doc)
904 ianjuta_editor_view_create (IANJUTA_EDITOR_VIEW (doc), NULL);
907 void
908 on_editor_remove_view_activate (GtkAction *action, gpointer user_data)
910 IAnjutaDocument *doc;
911 doc = get_current_document (user_data);
912 if (doc)
913 ianjuta_editor_view_remove_current (IANJUTA_EDITOR_VIEW (doc), NULL);
916 void
917 on_next_document (GtkAction *action, gpointer user_data)
919 AnjutaDocman *docman;
920 DocmanPlugin *plugin;
921 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
922 docman = ANJUTA_DOCMAN (plugin->docman);
924 anjuta_docman_next_page (docman);
927 void
928 on_previous_document (GtkAction *action, gpointer user_data)
930 AnjutaDocman *docman;
931 DocmanPlugin *plugin;
932 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
933 docman = ANJUTA_DOCMAN (plugin->docman);
935 anjuta_docman_previous_page (docman);
938 void
939 on_bookmark_toggle_activate (GtkAction *action, gpointer user_data)
941 IAnjutaDocument *doc;
942 DocmanPlugin *plugin;
943 doc = get_current_document (user_data);
944 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
945 if (doc && IANJUTA_IS_EDITOR(doc))
947 IAnjutaEditor* editor = IANJUTA_EDITOR(doc);
948 anjuta_bookmarks_toggle (ANJUTA_BOOKMARKS (plugin->bookmarks), editor,
949 ianjuta_editor_get_lineno (editor, NULL));
953 void
954 on_bookmark_next_activate (GtkAction *action, gpointer user_data)
956 IAnjutaDocument *doc;
957 DocmanPlugin *plugin;
958 doc = get_current_document (user_data);
959 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
960 if (doc && IANJUTA_IS_EDITOR(doc))
962 IAnjutaEditor* editor = IANJUTA_EDITOR(doc);
963 anjuta_bookmarks_next (ANJUTA_BOOKMARKS (plugin->bookmarks), editor,
964 ianjuta_editor_get_lineno (editor, NULL));
968 void
969 on_bookmark_prev_activate (GtkAction *action, gpointer user_data)
971 IAnjutaDocument *doc;
972 DocmanPlugin *plugin;
973 doc = get_current_document (user_data);
974 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
975 if (doc && IANJUTA_IS_EDITOR(doc))
977 IAnjutaEditor* editor = IANJUTA_EDITOR(doc);
978 anjuta_bookmarks_prev (ANJUTA_BOOKMARKS (plugin->bookmarks), editor,
979 ianjuta_editor_get_lineno (editor, NULL));
983 void
984 on_bookmarks_clear_activate (GtkAction *action, gpointer user_data)
986 DocmanPlugin *plugin;
987 plugin = ANJUTA_PLUGIN_DOCMAN (user_data);
988 anjuta_bookmarks_clear (ANJUTA_BOOKMARKS(plugin->bookmarks));
991 void
992 on_autocomplete_activate (GtkAction *action, gpointer user_data)
994 IAnjutaDocument *doc;
995 doc = get_current_document (user_data);
996 if (doc && IANJUTA_IS_EDITOR_ASSIST(doc))
998 IAnjutaEditorAssist* assist = IANJUTA_EDITOR_ASSIST (doc);
999 ianjuta_editor_assist_invoke (assist, NULL, NULL);