SF.net SVN: geany: [1334] trunk
eht16 at users.sourceforge.net
eht16 at xxxxx
Sun Feb 25 14:26:56 UTC 2007
Revision: 1334
http://svn.sourceforge.net/geany/?rev=1334&view=rev
Author: eht16
Date: 2007-02-25 06:26:55 -0800 (Sun, 25 Feb 2007)
Log Message:
-----------
Added custom commands to send selected text through some definable commands and replace the selection with the output.
Modified Paths:
--------------
trunk/ChangeLog
trunk/doc/geany.docbook
trunk/geany.glade
trunk/src/callbacks.c
trunk/src/geany.h
trunk/src/interface.c
trunk/src/keybindings.c
trunk/src/keybindings.h
trunk/src/keyfile.c
trunk/src/main.c
trunk/src/tools.c
trunk/src/tools.h
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2007-02-25 13:08:01 UTC (rev 1333)
+++ trunk/ChangeLog 2007-02-25 14:26:55 UTC (rev 1334)
@@ -1,3 +1,12 @@
+2007-02-25 Enrico Tröger <enrico.troeger at uvena.de>
+
+ * geany.glade, doc/geany.docbook, src/geany.h, src/interface.c,
+ src/keybindings.c, src/keybindings.h, src/keyfile.c, src/main.c,
+ src/tools.c, src/tools.h:
+ Added custom commands to send selected text through some definable
+ commands and replace the selection with the output.
+
+
2007-02-25 Nick Treleaven <nick.treleaven at btinternet.com>
* src/build.c:
@@ -6,7 +15,7 @@
Should close #1668017.
-2007-02-24 Enrico Troeger <enrico.troeger at uvena.de>
+2007-02-24 Enrico Tröger <enrico.troeger at uvena.de>
* configure.in, Makefile.am, README.I18N, po/intl_stats.sh, po/LINGUAS:
Moved list of available translations to new file po/LINGUAS.
@@ -36,9 +45,9 @@
Don't include filetype.none in the new file template menus.
-2007-02-20 Enrico Troeger <enrico.troeger at uvena.de>
+2007-02-20 Enrico Tröger <enrico.troeger at uvena.de>
- * src/sci_cb.c, src/sci_cb.c:
+ * src/sci_cb.c, src/sci_cb.h:
Made auto_close_bracket() static and auto close brackets only when
auto completion of constructs is enabled (closes #1665015).
* doc/geany.1.in: Fixed typo.
Modified: trunk/doc/geany.docbook
===================================================================
--- trunk/doc/geany.docbook 2007-02-25 13:08:01 UTC (rev 1333)
+++ trunk/doc/geany.docbook 2007-02-25 14:26:55 UTC (rev 1334)
@@ -421,6 +421,28 @@
</para>
</note>
</section>
+ <section id="general_cc">
+ <title>Send text through definable commands</title>
+ <para>
+ You can define several custom commands in <application>Geany</application> and
+ send the current selection to one of these commands. The output of the command
+ will be used to replace the current selection. So, it is possible to use text
+ formatting tools with Geany in a general way.
+ The selected text will be sent to the standard input of the executed command,
+ so the command should be able to read from it and it should print all results
+ to its standard output which will be read by <application>Geany</application>.
+ To help finding errors in executing the command, the output of the program's
+ standard error will be printed on <application>Geany</application>'s standard
+ output.
+ </para>
+ <para>
+ To add a custom command, just go to the Set Custom Commands dialog in the
+ Format sub menu of the Edit and Popup menu. Then click on Add to get a new
+ text entry and type the command. You can also specify some command line options.
+ To delete a command, just clear the text entry and press Ok. It will be deleted
+ automatically.
+ </para>
+ </section>
</section>
<section id="charset">
<title>Character sets and Unicode Byte-Order-Mark (BOM)</title>
Modified: trunk/geany.glade
===================================================================
--- trunk/geany.glade 2007-02-25 13:08:01 UTC (rev 1333)
+++ trunk/geany.glade 2007-02-25 14:26:55 UTC (rev 1334)
@@ -57,7 +57,7 @@
<property name="use_underline">True</property>
<child internal-child="image">
- <widget class="GtkImage" id="image1537">
+ <widget class="GtkImage" id="image1676">
<property name="visible">True</property>
<property name="stock">gtk-new</property>
<property name="icon_size">1</property>
@@ -147,7 +147,7 @@
<signal name="activate" handler="on_save_all1_activate" last_modification_time="Thu, 02 Jun 2005 14:15:30 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1538">
+ <widget class="GtkImage" id="image1677">
<property name="visible">True</property>
<property name="stock">gtk-save</property>
<property name="icon_size">1</property>
@@ -168,7 +168,7 @@
<signal name="activate" handler="on_toolbutton23_clicked" last_modification_time="Mon, 24 Jul 2006 19:26:04 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1539">
+ <widget class="GtkImage" id="image1678">
<property name="visible">True</property>
<property name="stock">gtk-revert-to-saved</property>
<property name="icon_size">1</property>
@@ -188,7 +188,7 @@
<property name="use_underline">True</property>
<child internal-child="image">
- <widget class="GtkImage" id="image1540">
+ <widget class="GtkImage" id="image1679">
<property name="visible">True</property>
<property name="stock">gtk-revert-to-saved</property>
<property name="icon_size">1</property>
@@ -268,7 +268,7 @@
<signal name="activate" handler="on_close_all1_activate" last_modification_time="Thu, 02 Jun 2005 14:15:30 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1541">
+ <widget class="GtkImage" id="image1680">
<property name="visible">True</property>
<property name="stock">gtk-close</property>
<property name="icon_size">1</property>
@@ -476,7 +476,7 @@
<signal name="activate" handler="on_menu_increase_indent1_activate" last_modification_time="Tue, 01 Aug 2006 10:28:54 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1542">
+ <widget class="GtkImage" id="image1681">
<property name="visible">True</property>
<property name="stock">gtk-indent</property>
<property name="icon_size">1</property>
@@ -497,7 +497,7 @@
<signal name="activate" handler="on_menu_decrease_indent1_activate" last_modification_time="Tue, 01 Aug 2006 10:28:54 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1543">
+ <widget class="GtkImage" id="image1682">
<property name="visible">True</property>
<property name="stock">gtk-unindent</property>
<property name="icon_size">1</property>
@@ -509,6 +509,32 @@
</child>
</widget>
</child>
+
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="separator37">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkMenuItem" id="send_selection_to2">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Send Selection to</property>
+ <property name="use_underline">True</property>
+
+ <child>
+ <widget class="GtkMenu" id="send_selection_to2_menu">
+
+ <child>
+ <widget class="GtkMenuItem" id="invisible13">
+ <property name="label" translatable="yes">invisible</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
</widget>
</child>
</widget>
@@ -527,7 +553,7 @@
<property name="use_underline">True</property>
<child internal-child="image">
- <widget class="GtkImage" id="image1544">
+ <widget class="GtkImage" id="image1683">
<property name="visible">True</property>
<property name="stock">gtk-add</property>
<property name="icon_size">1</property>
@@ -559,7 +585,7 @@
<property name="use_underline">True</property>
<child internal-child="image">
- <widget class="GtkImage" id="image1545">
+ <widget class="GtkImage" id="image1684">
<property name="visible">True</property>
<property name="stock">gtk-add</property>
<property name="icon_size">1</property>
@@ -638,11 +664,23 @@
</child>
<child>
- <widget class="GtkMenuItem" id="insert_date1">
+ <widget class="GtkImageMenuItem" id="insert_date1">
<property name="visible">True</property>
<property name="label" translatable="yes">Insert Dat_e</property>
<property name="use_underline">True</property>
+ <child internal-child="image">
+ <widget class="GtkImage" id="image1685">
+ <property name="visible">True</property>
+ <property name="stock">gtk-add</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+
<child>
<widget class="GtkMenu" id="insert_date1_menu">
@@ -729,7 +767,7 @@
<signal name="activate" handler="on_replace1_activate" last_modification_time="Sun, 23 Oct 2005 13:22:36 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1546">
+ <widget class="GtkImage" id="image1686">
<property name="visible">True</property>
<property name="stock">gtk-find-and-replace</property>
<property name="icon_size">1</property>
@@ -795,7 +833,7 @@
<signal name="activate" handler="on_go_to_line1_activate" last_modification_time="Tue, 23 May 2006 17:10:49 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1547">
+ <widget class="GtkImage" id="image1687">
<property name="visible">True</property>
<property name="stock">gtk-jump-to</property>
<property name="icon_size">1</property>
@@ -830,7 +868,7 @@
<signal name="activate" handler="on_change_font1_activate" last_modification_time="Fri, 22 Apr 2005 18:58:45 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1548">
+ <widget class="GtkImage" id="image1688">
<property name="visible">True</property>
<property name="stock">gtk-select-font</property>
<property name="icon_size">1</property>
@@ -1061,7 +1099,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">Convert and Set to _CR/LF (Win)</property>
<property name="use_underline">True</property>
- <property name="active">True</property>
+ <property name="active">False</property>
<signal name="activate" handler="on_crlf_activate" last_modification_time="Thu, 28 Apr 2005 16:27:24 GMT"/>
</widget>
</child>
@@ -1071,7 +1109,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">Convert and Set to _LF (Unix)</property>
<property name="use_underline">True</property>
- <property name="active">True</property>
+ <property name="active">False</property>
<property name="group">crlf</property>
<signal name="activate" handler="on_lf_activate" last_modification_time="Thu, 28 Apr 2005 16:27:24 GMT"/>
</widget>
@@ -1181,7 +1219,7 @@
<signal name="activate" handler="on_project_new1_activate" last_modification_time="Thu, 18 Jan 2007 22:16:24 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1549">
+ <widget class="GtkImage" id="image1689">
<property name="visible">True</property>
<property name="stock">gtk-new</property>
<property name="icon_size">1</property>
@@ -1202,7 +1240,7 @@
<signal name="activate" handler="on_project_open1_activate" last_modification_time="Mon, 15 Jan 2007 17:34:17 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1550">
+ <widget class="GtkImage" id="image1690">
<property name="visible">True</property>
<property name="stock">gtk-open</property>
<property name="icon_size">1</property>
@@ -1223,7 +1261,7 @@
<signal name="activate" handler="on_project_close1_activate" last_modification_time="Mon, 15 Jan 2007 17:34:17 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1551">
+ <widget class="GtkImage" id="image1691">
<property name="visible">True</property>
<property name="stock">gtk-close</property>
<property name="icon_size">1</property>
@@ -1281,7 +1319,7 @@
<signal name="activate" handler="on_show_color_chooser1_activate" last_modification_time="Wed, 22 Jun 2005 18:10:21 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1552">
+ <widget class="GtkImage" id="image1692">
<property name="visible">True</property>
<property name="stock">gtk-select-color</property>
<property name="icon_size">1</property>
@@ -2531,7 +2569,7 @@
<signal name="activate" handler="on_menu_increase_indent1_activate" last_modification_time="Tue, 01 Aug 2006 10:31:38 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1516">
+ <widget class="GtkImage" id="image1669">
<property name="visible">True</property>
<property name="stock">gtk-indent</property>
<property name="icon_size">1</property>
@@ -2552,7 +2590,7 @@
<signal name="activate" handler="on_menu_decrease_indent1_activate" last_modification_time="Tue, 01 Aug 2006 10:31:38 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1517">
+ <widget class="GtkImage" id="image1670">
<property name="visible">True</property>
<property name="stock">gtk-unindent</property>
<property name="icon_size">1</property>
@@ -2564,6 +2602,32 @@
</child>
</widget>
</child>
+
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="separator38">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkMenuItem" id="send_selection_to1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Send Selection to</property>
+ <property name="use_underline">True</property>
+
+ <child>
+ <widget class="GtkMenu" id="send_selection_to1_menu">
+
+ <child>
+ <widget class="GtkMenuItem" id="invisible12">
+ <property name="label" translatable="yes">invisible</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
</widget>
</child>
</widget>
@@ -2582,7 +2646,7 @@
<property name="use_underline">True</property>
<child internal-child="image">
- <widget class="GtkImage" id="image1518">
+ <widget class="GtkImage" id="image1671">
<property name="visible">True</property>
<property name="stock">gtk-add</property>
<property name="icon_size">1</property>
@@ -2614,7 +2678,7 @@
<property name="use_underline">True</property>
<child internal-child="image">
- <widget class="GtkImage" id="image1519">
+ <widget class="GtkImage" id="image1672">
<property name="visible">True</property>
<property name="stock">gtk-add</property>
<property name="icon_size">1</property>
@@ -2693,11 +2757,23 @@
</child>
<child>
- <widget class="GtkMenuItem" id="insert_date2">
+ <widget class="GtkImageMenuItem" id="insert_date2">
<property name="visible">True</property>
<property name="label" translatable="yes">Insert Dat_e</property>
<property name="use_underline">True</property>
+ <child internal-child="image">
+ <widget class="GtkImage" id="image1673">
+ <property name="visible">True</property>
+ <property name="stock">gtk-add</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+
<child>
<widget class="GtkMenu" id="insert_date2_menu">
@@ -2726,7 +2802,7 @@
<signal name="activate" handler="on_find_usage1_activate" last_modification_time="Fri, 27 May 2005 21:55:12 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1520">
+ <widget class="GtkImage" id="image1674">
<property name="visible">True</property>
<property name="stock">gtk-find</property>
<property name="icon_size">1</property>
@@ -2772,7 +2848,7 @@
<signal name="activate" handler="on_go_to_line_activate" last_modification_time="Sat, 16 Jul 2005 11:20:32 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1521">
+ <widget class="GtkImage" id="image1675">
<property name="visible">True</property>
<property name="stock">gtk-jump-to</property>
<property name="icon_size">1</property>
Modified: trunk/src/callbacks.c
===================================================================
--- trunk/src/callbacks.c 2007-02-25 13:08:01 UTC (rev 1333)
+++ trunk/src/callbacks.c 2007-02-25 14:26:55 UTC (rev 1334)
@@ -2086,8 +2086,6 @@
}
-
-
void
on_project_new1_activate (GtkMenuItem *menuitem,
gpointer user_data)
Modified: trunk/src/geany.h
===================================================================
--- trunk/src/geany.h 2007-02-25 13:08:01 UTC (rev 1333)
+++ trunk/src/geany.h 2007-02-25 14:26:55 UTC (rev 1334)
@@ -154,6 +154,7 @@
gchar *datadir;
gchar *docdir;
gchar *custom_date_format;
+ gchar **custom_commands;
gchar *tools_browser_cmd;
gchar *tools_make_cmd;
gchar *tools_term_cmd;
Modified: trunk/src/interface.c
===================================================================
--- trunk/src/interface.c 2007-02-25 13:08:01 UTC (rev 1333)
+++ trunk/src/interface.c 2007-02-25 14:26:55 UTC (rev 1334)
@@ -37,7 +37,7 @@
GtkWidget *menuitem1_menu;
GtkWidget *menu_new1;
GtkWidget *menu_new_with_template1;
- GtkWidget *image1537;
+ GtkWidget *image1676;
GtkWidget *menu_new_with_template1_menu;
GtkWidget *invisible2;
GtkWidget *separator12;
@@ -48,11 +48,11 @@
GtkWidget *menu_save1;
GtkWidget *menu_save_as1;
GtkWidget *menu_save_all1;
- GtkWidget *image1538;
+ GtkWidget *image1677;
GtkWidget *menu_reload1;
- GtkWidget *image1539;
+ GtkWidget *image1678;
GtkWidget *menu_reload_as1;
- GtkWidget *image1540;
+ GtkWidget *image1679;
GtkWidget *menu_reload_as1_menu;
GtkWidget *invisible7;
GtkWidget *separator21;
@@ -62,7 +62,7 @@
GtkWidget *separator14;
GtkWidget *menu_close1;
GtkWidget *menu_close_all1;
- GtkWidget *image1541;
+ GtkWidget *image1680;
GtkWidget *menu_separatormenuitem1;
GtkWidget *menu_quit1;
GtkWidget *edit1;
@@ -88,16 +88,20 @@
GtkWidget *menu_duplicate_line1;
GtkWidget *separator29;
GtkWidget *menu_increase_indent1;
- GtkWidget *image1542;
+ GtkWidget *image1681;
GtkWidget *menu_decrease_indent1;
- GtkWidget *image1543;
+ GtkWidget *image1682;
+ GtkWidget *separator37;
+ GtkWidget *send_selection_to2;
+ GtkWidget *send_selection_to2_menu;
+ GtkWidget *invisible13;
GtkWidget *separator18;
GtkWidget *insert_include2;
- GtkWidget *image1544;
+ GtkWidget *image1683;
GtkWidget *insert_include2_menu;
GtkWidget *invisible4;
GtkWidget *add_comments1;
- GtkWidget *image1545;
+ GtkWidget *image1684;
GtkWidget *add_comments1_menu;
GtkWidget *menu_add_changelog_entry1;
GtkWidget *insert_file_header1;
@@ -106,6 +110,7 @@
GtkWidget *insert_gpl_notice2;
GtkWidget *insert_bsd_license_notice2;
GtkWidget *insert_date1;
+ GtkWidget *image1685;
GtkWidget *insert_date1_menu;
GtkWidget *invisible8;
GtkWidget *separator9;
@@ -117,7 +122,7 @@
GtkWidget *find_previous1;
GtkWidget *find_in_files1;
GtkWidget *replace1;
- GtkWidget *image1546;
+ GtkWidget *image1686;
GtkWidget *separator33;
GtkWidget *find_nextsel1;
GtkWidget *find_prevsel1;
@@ -125,11 +130,11 @@
GtkWidget *next_message1;
GtkWidget *separator32;
GtkWidget *go_to_line1;
- GtkWidget *image1547;
+ GtkWidget *image1687;
GtkWidget *menuitem3;
GtkWidget *menuitem3_menu;
GtkWidget *menu_change_font1;
- GtkWidget *image1548;
+ GtkWidget *image1688;
GtkWidget *menu_separator4;
GtkWidget *menu_fullscreen1;
GtkWidget *menu_show_messages_window1;
@@ -171,18 +176,18 @@
GtkWidget *menu_project1;
GtkWidget *menu_project1_menu;
GtkWidget *project_new1;
- GtkWidget *image1549;
+ GtkWidget *image1689;
GtkWidget *project_open1;
- GtkWidget *image1550;
+ GtkWidget *image1690;
GtkWidget *project_close1;
- GtkWidget *image1551;
+ GtkWidget *image1691;
GtkWidget *separator34;
GtkWidget *project_properties1;
GtkWidget *menu_build1;
GtkWidget *tools1;
GtkWidget *tools1_menu;
GtkWidget *menu_choose_color1;
- GtkWidget *image1552;
+ GtkWidget *image1692;
GtkWidget *menu_count_words1;
GtkWidget *menu_insert_special_chars1;
GtkWidget *menu_item5;
@@ -283,9 +288,9 @@
gtk_widget_show (menu_new_with_template1);
gtk_container_add (GTK_CONTAINER (menuitem1_menu), menu_new_with_template1);
- image1537 = gtk_image_new_from_stock ("gtk-new", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image1537);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_new_with_template1), image1537);
+ image1676 = gtk_image_new_from_stock ("gtk-new", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1676);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_new_with_template1), image1676);
menu_new_with_template1_menu = gtk_menu_new ();
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_new_with_template1), menu_new_with_template1_menu);
@@ -328,25 +333,25 @@
gtk_container_add (GTK_CONTAINER (menuitem1_menu), menu_save_all1);
gtk_tooltips_set_tip (tooltips, menu_save_all1, _("Saves all open files"), NULL);
- image1538 = gtk_image_new_from_stock ("gtk-save", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image1538);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_save_all1), image1538);
+ image1677 = gtk_image_new_from_stock ("gtk-save", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1677);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_save_all1), image1677);
menu_reload1 = gtk_image_menu_item_new_with_mnemonic (_("_Reload"));
gtk_widget_show (menu_reload1);
gtk_container_add (GTK_CONTAINER (menuitem1_menu), menu_reload1);
- image1539 = gtk_image_new_from_stock ("gtk-revert-to-saved", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image1539);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_reload1), image1539);
+ image1678 = gtk_image_new_from_stock ("gtk-revert-to-saved", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1678);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_reload1), image1678);
menu_reload_as1 = gtk_image_menu_item_new_with_mnemonic (_("R_eload As"));
gtk_widget_show (menu_reload_as1);
gtk_container_add (GTK_CONTAINER (menuitem1_menu), menu_reload_as1);
- image1540 = gtk_image_new_from_stock ("gtk-revert-to-saved", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image1540);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_reload_as1), image1540);
+ image1679 = gtk_image_new_from_stock ("gtk-revert-to-saved", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1679);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_reload_as1), image1679);
menu_reload_as1_menu = gtk_menu_new ();
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_reload_as1), menu_reload_as1_menu);
@@ -387,9 +392,9 @@
gtk_container_add (GTK_CONTAINER (menuitem1_menu), menu_close_all1);
gtk_tooltips_set_tip (tooltips, menu_close_all1, _("Closes all open files"), NULL);
- image1541 = gtk_image_new_from_stock ("gtk-close", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image1541);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_close_all1), image1541);
+ image1680 = gtk_image_new_from_stock ("gtk-close", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1680);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_close_all1), image1680);
menu_separatormenuitem1 = gtk_separator_menu_item_new ();
gtk_widget_show (menu_separatormenuitem1);
@@ -497,18 +502,33 @@
gtk_widget_show (menu_increase_indent1);
gtk_container_add (GTK_CONTAINER (menu_format1_menu), menu_increase_indent1);
- image1542 = gtk_image_new_from_stock ("gtk-indent", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image1542);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_increase_indent1), image1542);
+ image1681 = gtk_image_new_from_stock ("gtk-indent", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1681);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_increase_indent1), image1681);
menu_decrease_indent1 = gtk_image_menu_item_new_with_mnemonic (_("_Decrease Indent"));
gtk_widget_show (menu_decrease_indent1);
gtk_container_add (GTK_CONTAINER (menu_format1_menu), menu_decrease_indent1);
- image1543 = gtk_image_new_from_stock ("gtk-unindent", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image1543);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_decrease_indent1), image1543);
+ image1682 = gtk_image_new_from_stock ("gtk-unindent", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1682);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_decrease_indent1), image1682);
+ separator37 = gtk_separator_menu_item_new ();
+ gtk_widget_show (separator37);
+ gtk_container_add (GTK_CONTAINER (menu_format1_menu), separator37);
+ gtk_widget_set_sensitive (separator37, FALSE);
+
+ send_selection_to2 = gtk_menu_item_new_with_mnemonic (_("_Send Selection to"));
+ gtk_widget_show (send_selection_to2);
+ gtk_container_add (GTK_CONTAINER (menu_format1_menu), send_selection_to2);
+
+ send_selection_to2_menu = gtk_menu_new ();
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (send_selection_to2), send_selection_to2_menu);
+
+ invisible13 = gtk_menu_item_new_with_mnemonic (_("invisible"));
+ gtk_container_add (GTK_CONTAINER (send_selection_to2_menu), invisible13);
+
separator18 = gtk_separator_menu_item_new ();
gtk_widget_show (separator18);
gtk_container_add (GTK_CONTAINER (edit1_menu), separator18);
@@ -518,9 +538,9 @@
gtk_widget_show (insert_include2);
gtk_container_add (GTK_CONTAINER (edit1_menu), insert_include2);
- image1544 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image1544);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (insert_include2), image1544);
+ image1683 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1683);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (insert_include2), image1683);
insert_include2_menu = gtk_menu_new ();
gtk_menu_item_set_submenu (GTK_MENU_ITEM (insert_include2), insert_include2_menu);
@@ -532,9 +552,9 @@
gtk_widget_show (add_comments1);
gtk_container_add (GTK_CONTAINER (edit1_menu), add_comments1);
- image1545 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image1545);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (add_comments1), image1545);
+ image1684 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1684);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (add_comments1), image1684);
add_comments1_menu = gtk_menu_new ();
gtk_menu_item_set_submenu (GTK_MENU_ITEM (add_comments1), add_comments1_menu);
@@ -569,10 +589,14 @@
gtk_container_add (GTK_CONTAINER (add_comments1_menu), insert_bsd_license_notice2);
gtk_tooltips_set_tip (tooltips, insert_bsd_license_notice2, _("Inserts a BSD licence notice (should be done at the beginning of the file)"), NULL);
- insert_date1 = gtk_menu_item_new_with_mnemonic (_("Insert Dat_e"));
+ insert_date1 = gtk_image_menu_item_new_with_mnemonic (_("Insert Dat_e"));
gtk_widget_show (insert_date1);
gtk_container_add (GTK_CONTAINER (edit1_menu), insert_date1);
+ image1685 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1685);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (insert_date1), image1685);
+
insert_date1_menu = gtk_menu_new ();
gtk_menu_item_set_submenu (GTK_MENU_ITEM (insert_date1), insert_date1_menu);
@@ -615,9 +639,9 @@
gtk_widget_show (replace1);
gtk_container_add (GTK_CONTAINER (search1_menu), replace1);
- image1546 = gtk_image_new_from_stock ("gtk-find-and-replace", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image1546);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (replace1), image1546);
+ image1686 = gtk_image_new_from_stock ("gtk-find-and-replace", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1686);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (replace1), image1686);
separator33 = gtk_separator_menu_item_new ();
gtk_widget_show (separator33);
@@ -650,9 +674,9 @@
gtk_widget_show (go_to_line1);
gtk_container_add (GTK_CONTAINER (search1_menu), go_to_line1);
- image1547 = gtk_image_new_from_stock ("gtk-jump-to", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image1547);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (go_to_line1), image1547);
+ image1687 = gtk_image_new_from_stock ("gtk-jump-to", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1687);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (go_to_line1), image1687);
menuitem3 = gtk_menu_item_new_with_mnemonic (_("_View"));
gtk_widget_show (menuitem3);
@@ -666,9 +690,9 @@
gtk_container_add (GTK_CONTAINER (menuitem3_menu), menu_change_font1);
gtk_tooltips_set_tip (tooltips, menu_change_font1, _("Change the default font"), NULL);
- image1548 = gtk_image_new_from_stock ("gtk-select-font", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image1548);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_change_font1), image1548);
+ image1688 = gtk_image_new_from_stock ("gtk-select-font", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1688);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_change_font1), image1688);
menu_separator4 = gtk_separator_menu_item_new ();
gtk_widget_show (menu_separator4);
@@ -788,13 +812,11 @@
crlf_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (crlf));
gtk_widget_show (crlf);
gtk_container_add (GTK_CONTAINER (menu_line_endings1_menu), crlf);
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (crlf), TRUE);
lf = gtk_radio_menu_item_new_with_mnemonic (crlf_group, _("Convert and Set to _LF (Unix)"));
crlf_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (lf));
gtk_widget_show (lf);
gtk_container_add (GTK_CONTAINER (menu_line_endings1_menu), lf);
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (lf), TRUE);
cr = gtk_radio_menu_item_new_with_mnemonic (crlf_group, _("Convert and Set to CR (_Mac)"));
crlf_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (cr));
@@ -852,25 +874,25 @@
gtk_widget_show (project_new1);
gtk_container_add (GTK_CONTAINER (menu_project1_menu), project_new1);
- image1549 = gtk_image_new_from_stock ("gtk-new", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image1549);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (project_new1), image1549);
+ image1689 = gtk_image_new_from_stock ("gtk-new", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1689);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (project_new1), image1689);
project_open1 = gtk_image_menu_item_new_with_mnemonic (_("_Open"));
gtk_widget_show (project_open1);
gtk_container_add (GTK_CONTAINER (menu_project1_menu), project_open1);
- image1550 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image1550);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (project_open1), image1550);
+ image1690 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1690);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (project_open1), image1690);
project_close1 = gtk_image_menu_item_new_with_mnemonic (_("_Close"));
gtk_widget_show (project_close1);
gtk_container_add (GTK_CONTAINER (menu_project1_menu), project_close1);
- image1551 = gtk_image_new_from_stock ("gtk-close", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image1551);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (project_close1), image1551);
+ image1691 = gtk_image_new_from_stock ("gtk-close", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1691);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (project_close1), image1691);
separator34 = gtk_separator_menu_item_new ();
gtk_widget_show (separator34);
@@ -897,9 +919,9 @@
gtk_container_add (GTK_CONTAINER (tools1_menu), menu_choose_color1);
gtk_tooltips_set_tip (tooltips, menu_choose_color1, _("Open a color chooser dialog, to interactively pick colors from a palette."), NULL);
- image1552 = gtk_image_new_from_stock ("gtk-select-color", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image1552);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_choose_color1), image1552);
+ image1692 = gtk_image_new_from_stock ("gtk-select-color", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1692);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_choose_color1), image1692);
menu_count_words1 = gtk_menu_item_new_with_mnemonic (_("_Word Count"));
gtk_widget_show (menu_count_words1);
@@ -1524,7 +1546,7 @@
GLADE_HOOKUP_OBJECT (window1, menuitem1_menu, "menuitem1_menu");
GLADE_HOOKUP_OBJECT (window1, menu_new1, "menu_new1");
GLADE_HOOKUP_OBJECT (window1, menu_new_with_template1, "menu_new_with_template1");
- GLADE_HOOKUP_OBJECT (window1, image1537, "image1537");
+ GLADE_HOOKUP_OBJECT (window1, image1676, "image1676");
GLADE_HOOKUP_OBJECT (window1, menu_new_with_template1_menu, "menu_new_with_template1_menu");
GLADE_HOOKUP_OBJECT (window1, invisible2, "invisible2");
GLADE_HOOKUP_OBJECT (window1, separator12, "separator12");
@@ -1535,11 +1557,11 @@
GLADE_HOOKUP_OBJECT (window1, menu_save1, "menu_save1");
GLADE_HOOKUP_OBJECT (window1, menu_save_as1, "menu_save_as1");
GLADE_HOOKUP_OBJECT (window1, menu_save_all1, "menu_save_all1");
- GLADE_HOOKUP_OBJECT (window1, image1538, "image1538");
+ GLADE_HOOKUP_OBJECT (window1, image1677, "image1677");
GLADE_HOOKUP_OBJECT (window1, menu_reload1, "menu_reload1");
- GLADE_HOOKUP_OBJECT (window1, image1539, "image1539");
+ GLADE_HOOKUP_OBJECT (window1, image1678, "image1678");
GLADE_HOOKUP_OBJECT (window1, menu_reload_as1, "menu_reload_as1");
- GLADE_HOOKUP_OBJECT (window1, image1540, "image1540");
+ GLADE_HOOKUP_OBJECT (window1, image1679, "image1679");
GLADE_HOOKUP_OBJECT (window1, menu_reload_as1_menu, "menu_reload_as1_menu");
GLADE_HOOKUP_OBJECT (window1, invisible7, "invisible7");
GLADE_HOOKUP_OBJECT (window1, separator21, "separator21");
@@ -1549,7 +1571,7 @@
GLADE_HOOKUP_OBJECT (window1, separator14, "separator14");
GLADE_HOOKUP_OBJECT (window1, menu_close1, "menu_close1");
GLADE_HOOKUP_OBJECT (window1, menu_close_all1, "menu_close_all1");
- GLADE_HOOKUP_OBJECT (window1, image1541, "image1541");
+ GLADE_HOOKUP_OBJECT (window1, image1680, "image1680");
GLADE_HOOKUP_OBJECT (window1, menu_separatormenuitem1, "menu_separatormenuitem1");
GLADE_HOOKUP_OBJECT (window1, menu_quit1, "menu_quit1");
GLADE_HOOKUP_OBJECT (window1, edit1, "edit1");
@@ -1575,16 +1597,20 @@
GLADE_HOOKUP_OBJECT (window1, menu_duplicate_line1, "menu_duplicate_line1");
GLADE_HOOKUP_OBJECT (window1, separator29, "separator29");
GLADE_HOOKUP_OBJECT (window1, menu_increase_indent1, "menu_increase_indent1");
- GLADE_HOOKUP_OBJECT (window1, image1542, "image1542");
+ GLADE_HOOKUP_OBJECT (window1, image1681, "image1681");
GLADE_HOOKUP_OBJECT (window1, menu_decrease_indent1, "menu_decrease_indent1");
- GLADE_HOOKUP_OBJECT (window1, image1543, "image1543");
+ GLADE_HOOKUP_OBJECT (window1, image1682, "image1682");
+ GLADE_HOOKUP_OBJECT (window1, separator37, "separator37");
+ GLADE_HOOKUP_OBJECT (window1, send_selection_to2, "send_selection_to2");
+ GLADE_HOOKUP_OBJECT (window1, send_selection_to2_menu, "send_selection_to2_menu");
+ GLADE_HOOKUP_OBJECT (window1, invisible13, "invisible13");
GLADE_HOOKUP_OBJECT (window1, separator18, "separator18");
GLADE_HOOKUP_OBJECT (window1, insert_include2, "insert_include2");
- GLADE_HOOKUP_OBJECT (window1, image1544, "image1544");
+ GLADE_HOOKUP_OBJECT (window1, image1683, "image1683");
GLADE_HOOKUP_OBJECT (window1, insert_include2_menu, "insert_include2_menu");
GLADE_HOOKUP_OBJECT (window1, invisible4, "invisible4");
GLADE_HOOKUP_OBJECT (window1, add_comments1, "add_comments1");
- GLADE_HOOKUP_OBJECT (window1, image1545, "image1545");
+ GLADE_HOOKUP_OBJECT (window1, image1684, "image1684");
GLADE_HOOKUP_OBJECT (window1, add_comments1_menu, "add_comments1_menu");
GLADE_HOOKUP_OBJECT (window1, menu_add_changelog_entry1, "menu_add_changelog_entry1");
GLADE_HOOKUP_OBJECT (window1, insert_file_header1, "insert_file_header1");
@@ -1593,6 +1619,7 @@
GLADE_HOOKUP_OBJECT (window1, insert_gpl_notice2, "insert_gpl_notice2");
GLADE_HOOKUP_OBJECT (window1, insert_bsd_license_notice2, "insert_bsd_license_notice2");
GLADE_HOOKUP_OBJECT (window1, insert_date1, "insert_date1");
+ GLADE_HOOKUP_OBJECT (window1, image1685, "image1685");
GLADE_HOOKUP_OBJECT (window1, insert_date1_menu, "insert_date1_menu");
GLADE_HOOKUP_OBJECT (window1, invisible8, "invisible8");
GLADE_HOOKUP_OBJECT (window1, separator9, "separator9");
@@ -1604,7 +1631,7 @@
GLADE_HOOKUP_OBJECT (window1, find_previous1, "find_previous1");
GLADE_HOOKUP_OBJECT (window1, find_in_files1, "find_in_files1");
GLADE_HOOKUP_OBJECT (window1, replace1, "replace1");
- GLADE_HOOKUP_OBJECT (window1, image1546, "image1546");
+ GLADE_HOOKUP_OBJECT (window1, image1686, "image1686");
GLADE_HOOKUP_OBJECT (window1, separator33, "separator33");
GLADE_HOOKUP_OBJECT (window1, find_nextsel1, "find_nextsel1");
GLADE_HOOKUP_OBJECT (window1, find_prevsel1, "find_prevsel1");
@@ -1612,11 +1639,11 @@
GLADE_HOOKUP_OBJECT (window1, next_message1, "next_message1");
GLADE_HOOKUP_OBJECT (window1, separator32, "separator32");
GLADE_HOOKUP_OBJECT (window1, go_to_line1, "go_to_line1");
- GLADE_HOOKUP_OBJECT (window1, image1547, "image1547");
+ GLADE_HOOKUP_OBJECT (window1, image1687, "image1687");
GLADE_HOOKUP_OBJECT (window1, menuitem3, "menuitem3");
GLADE_HOOKUP_OBJECT (window1, menuitem3_menu, "menuitem3_menu");
GLADE_HOOKUP_OBJECT (window1, menu_change_font1, "menu_change_font1");
- GLADE_HOOKUP_OBJECT (window1, image1548, "image1548");
+ GLADE_HOOKUP_OBJECT (window1, image1688, "image1688");
GLADE_HOOKUP_OBJECT (window1, menu_separator4, "menu_separator4");
GLADE_HOOKUP_OBJECT (window1, menu_fullscreen1, "menu_fullscreen1");
GLADE_HOOKUP_OBJECT (window1, menu_show_messages_window1, "menu_show_messages_window1");
@@ -1657,18 +1684,18 @@
GLADE_HOOKUP_OBJECT (window1, menu_project1, "menu_project1");
GLADE_HOOKUP_OBJECT (window1, menu_project1_menu, "menu_project1_menu");
GLADE_HOOKUP_OBJECT (window1, project_new1, "project_new1");
- GLADE_HOOKUP_OBJECT (window1, image1549, "image1549");
+ GLADE_HOOKUP_OBJECT (window1, image1689, "image1689");
GLADE_HOOKUP_OBJECT (window1, project_open1, "project_open1");
- GLADE_HOOKUP_OBJECT (window1, image1550, "image1550");
+ GLADE_HOOKUP_OBJECT (window1, image1690, "image1690");
GLADE_HOOKUP_OBJECT (window1, project_close1, "project_close1");
- GLADE_HOOKUP_OBJECT (window1, image1551, "image1551");
+ GLADE_HOOKUP_OBJECT (window1, image1691, "image1691");
GLADE_HOOKUP_OBJECT (window1, separator34, "separator34");
GLADE_HOOKUP_OBJECT (window1, project_properties1, "project_properties1");
GLADE_HOOKUP_OBJECT (window1, menu_build1, "menu_build1");
GLADE_HOOKUP_OBJECT (window1, tools1, "tools1");
GLADE_HOOKUP_OBJECT (window1, tools1_menu, "tools1_menu");
GLADE_HOOKUP_OBJECT (window1, menu_choose_color1, "menu_choose_color1");
- GLADE_HOOKUP_OBJECT (window1, image1552, "image1552");
+ GLADE_HOOKUP_OBJECT (window1, image1692, "image1692");
GLADE_HOOKUP_OBJECT (window1, menu_count_words1, "menu_count_words1");
GLADE_HOOKUP_OBJECT (window1, menu_insert_special_chars1, "menu_insert_special_chars1");
GLADE_HOOKUP_OBJECT (window1, menu_item5, "menu_item5");
@@ -1866,16 +1893,20 @@
GtkWidget *menu_duplicate_line2;
GtkWidget *separator31;
GtkWidget *menu_increase_indent2;
- GtkWidget *image1516;
+ GtkWidget *image1669;
GtkWidget *menu_decrease_indent2;
- GtkWidget *image1517;
+ GtkWidget *image1670;
+ GtkWidget *separator38;
+ GtkWidget *send_selection_to1;
+ GtkWidget *send_selection_to1_menu;
+ GtkWidget *invisible12;
GtkWidget *separator17;
GtkWidget *insert_include1;
- GtkWidget *image1518;
+ GtkWidget *image1671;
GtkWidget *insert_include1_menu;
GtkWidget *invisible3;
GtkWidget *comments;
- GtkWidget *image1519;
+ GtkWidget *image1672;
GtkWidget *comments_menu;
GtkWidget *add_changelog_entry2;
GtkWidget *insert_file_header2;
@@ -1884,16 +1915,17 @@
GtkWidget *insert_gpl_notice1;
GtkWidget *insert_bsd_license_notice1;
GtkWidget *insert_date2;
+ GtkWidget *image1673;
GtkWidget *insert_date2_menu;
GtkWidget *invisible10;
GtkWidget *separator7;
GtkWidget *find_usage1;
- GtkWidget *image1520;
+ GtkWidget *image1674;
GtkWidget *goto_tag_definition1;
GtkWidget *goto_tag_declaration1;
GtkWidget *separator15;
GtkWidget *go_to_line;
- GtkWidget *image1521;
+ GtkWidget *image1675;
GtkAccelGroup *accel_group;
GtkTooltips *tooltips;
@@ -2000,18 +2032,33 @@
gtk_widget_show (menu_increase_indent2);
gtk_container_add (GTK_CONTAINER (menu_format2_menu), menu_increase_indent2);
- image1516 = gtk_image_new_from_stock ("gtk-indent", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image1516);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_increase_indent2), image1516);
+ image1669 = gtk_image_new_from_stock ("gtk-indent", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1669);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_increase_indent2), image1669);
menu_decrease_indent2 = gtk_image_menu_item_new_with_mnemonic (_("_Decrease Indent"));
gtk_widget_show (menu_decrease_indent2);
gtk_container_add (GTK_CONTAINER (menu_format2_menu), menu_decrease_indent2);
- image1517 = gtk_image_new_from_stock ("gtk-unindent", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image1517);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_decrease_indent2), image1517);
+ image1670 = gtk_image_new_from_stock ("gtk-unindent", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1670);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_decrease_indent2), image1670);
+ separator38 = gtk_separator_menu_item_new ();
+ gtk_widget_show (separator38);
+ gtk_container_add (GTK_CONTAINER (menu_format2_menu), separator38);
+ gtk_widget_set_sensitive (separator38, FALSE);
+
+ send_selection_to1 = gtk_menu_item_new_with_mnemonic (_("_Send Selection to"));
+ gtk_widget_show (send_selection_to1);
+ gtk_container_add (GTK_CONTAINER (menu_format2_menu), send_selection_to1);
+
+ send_selection_to1_menu = gtk_menu_new ();
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (send_selection_to1), send_selection_to1_menu);
+
+ invisible12 = gtk_menu_item_new_with_mnemonic (_("invisible"));
+ gtk_container_add (GTK_CONTAINER (send_selection_to1_menu), invisible12);
+
separator17 = gtk_separator_menu_item_new ();
gtk_widget_show (separator17);
gtk_container_add (GTK_CONTAINER (edit_menu1), separator17);
@@ -2021,9 +2068,9 @@
gtk_widget_show (insert_include1);
gtk_container_add (GTK_CONTAINER (edit_menu1), insert_include1);
- image1518 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image1518);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (insert_include1), image1518);
+ image1671 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1671);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (insert_include1), image1671);
insert_include1_menu = gtk_menu_new ();
gtk_menu_item_set_submenu (GTK_MENU_ITEM (insert_include1), insert_include1_menu);
@@ -2035,9 +2082,9 @@
gtk_widget_show (comments);
gtk_container_add (GTK_CONTAINER (edit_menu1), comments);
- image1519 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image1519);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (comments), image1519);
+ image1672 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1672);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (comments), image1672);
comments_menu = gtk_menu_new ();
gtk_menu_item_set_submenu (GTK_MENU_ITEM (comments), comments_menu);
@@ -2072,10 +2119,14 @@
gtk_container_add (GTK_CONTAINER (comments_menu), insert_bsd_license_notice1);
gtk_tooltips_set_tip (tooltips, insert_bsd_license_notice1, _("Inserts a BSD licence notice (should be done at the beginning of the file)"), NULL);
- insert_date2 = gtk_menu_item_new_with_mnemonic (_("Insert Dat_e"));
+ insert_date2 = gtk_image_menu_item_new_with_mnemonic (_("Insert Dat_e"));
gtk_widget_show (insert_date2);
gtk_container_add (GTK_CONTAINER (edit_menu1), insert_date2);
+ image1673 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1673);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (insert_date2), image1673);
+
insert_date2_menu = gtk_menu_new ();
gtk_menu_item_set_submenu (GTK_MENU_ITEM (insert_date2), insert_date2_menu);
@@ -2091,9 +2142,9 @@
gtk_widget_show (find_usage1);
gtk_container_add (GTK_CONTAINER (edit_menu1), find_usage1);
- image1520 = gtk_image_new_from_stock ("gtk-find", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image1520);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (find_usage1), image1520);
+ image1674 = gtk_image_new_from_stock ("gtk-find", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1674);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (find_usage1), image1674);
goto_tag_definition1 = gtk_menu_item_new_with_mnemonic (_("Go to Tag Definition"));
gtk_widget_show (goto_tag_definition1);
@@ -2113,9 +2164,9 @@
gtk_container_add (GTK_CONTAINER (edit_menu1), go_to_line);
gtk_tooltips_set_tip (tooltips, go_to_line, _("Goto to the entered line"), NULL);
- image1521 = gtk_image_new_from_stock ("gtk-jump-to", GTK_ICON_SIZE_MENU);
- gtk_widget_show (image1521);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (go_to_line), image1521);
+ image1675 = gtk_image_new_from_stock ("gtk-jump-to", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (image1675);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (go_to_line), image1675);
g_signal_connect ((gpointer) undo1, "activate",
G_CALLBACK (on_undo1_activate),
@@ -2221,16 +2272,20 @@
GLADE_HOOKUP_OBJECT (edit_menu1, menu_duplicate_line2, "menu_duplicate_line2");
GLADE_HOOKUP_OBJECT (edit_menu1, separator31, "separator31");
GLADE_HOOKUP_OBJECT (edit_menu1, menu_increase_indent2, "menu_increase_indent2");
- GLADE_HOOKUP_OBJECT (edit_menu1, image1516, "image1516");
+ GLADE_HOOKUP_OBJECT (edit_menu1, image1669, "image1669");
GLADE_HOOKUP_OBJECT (edit_menu1, menu_decrease_indent2, "menu_decrease_indent2");
- GLADE_HOOKUP_OBJECT (edit_menu1, image1517, "image1517");
+ GLADE_HOOKUP_OBJECT (edit_menu1, image1670, "image1670");
+ GLADE_HOOKUP_OBJECT (edit_menu1, separator38, "separator38");
+ GLADE_HOOKUP_OBJECT (edit_menu1, send_selection_to1, "send_selection_to1");
+ GLADE_HOOKUP_OBJECT (edit_menu1, send_selection_to1_menu, "send_selection_to1_menu");
+ GLADE_HOOKUP_OBJECT (edit_menu1, invisible12, "invisible12");
GLADE_HOOKUP_OBJECT (edit_menu1, separator17, "separator17");
GLADE_HOOKUP_OBJECT (edit_menu1, insert_include1, "insert_include1");
- GLADE_HOOKUP_OBJECT (edit_menu1, image1518, "image1518");
+ GLADE_HOOKUP_OBJECT (edit_menu1, image1671, "image1671");
GLADE_HOOKUP_OBJECT (edit_menu1, insert_include1_menu, "insert_include1_menu");
GLADE_HOOKUP_OBJECT (edit_menu1, invisible3, "invisible3");
GLADE_HOOKUP_OBJECT (edit_menu1, comments, "comments");
- GLADE_HOOKUP_OBJECT (edit_menu1, image1519, "image1519");
+ GLADE_HOOKUP_OBJECT (edit_menu1, image1672, "image1672");
GLADE_HOOKUP_OBJECT (edit_menu1, comments_menu, "comments_menu");
GLADE_HOOKUP_OBJECT (edit_menu1, add_changelog_entry2, "add_changelog_entry2");
GLADE_HOOKUP_OBJECT (edit_menu1, insert_file_header2, "insert_file_header2");
@@ -2239,16 +2294,17 @@
GLADE_HOOKUP_OBJECT (edit_menu1, insert_gpl_notice1, "insert_gpl_notice1");
GLADE_HOOKUP_OBJECT (edit_menu1, insert_bsd_license_notice1, "insert_bsd_license_notice1");
GLADE_HOOKUP_OBJECT (edit_menu1, insert_date2, "insert_date2");
+ GLADE_HOOKUP_OBJECT (edit_menu1, image1673, "image1673");
GLADE_HOOKUP_OBJECT (edit_menu1, insert_date2_menu, "insert_date2_menu");
GLADE_HOOKUP_OBJECT (edit_menu1, invisible10, "invisible10");
GLADE_HOOKUP_OBJECT (edit_menu1, separator7, "separator7");
GLADE_HOOKUP_OBJECT (edit_menu1, find_usage1, "find_usage1");
- GLADE_HOOKUP_OBJECT (edit_menu1, image1520, "image1520");
+ GLADE_HOOKUP_OBJECT (edit_menu1, image1674, "image1674");
GLADE_HOOKUP_OBJECT (edit_menu1, goto_tag_definition1, "goto_tag_definition1");
GLADE_HOOKUP_OBJECT (edit_menu1, goto_tag_declaration1, "goto_tag_declaration1");
GLADE_HOOKUP_OBJECT (edit_menu1, separator15, "separator15");
GLADE_HOOKUP_OBJECT (edit_menu1, go_to_line, "go_to_line");
- GLADE_HOOKUP_OBJECT (edit_menu1, image1521, "image1521");
+ GLADE_HOOKUP_OBJECT (edit_menu1, image1675, "image1675");
GLADE_HOOKUP_OBJECT_NO_REF (edit_menu1, tooltips, "tooltips");
gtk_menu_set_accel_group (GTK_MENU (edit_menu1), accel_group);
Modified: trunk/src/keybindings.c
===================================================================
--- trunk/src/keybindings.c 2007-02-25 13:08:01 UTC (rev 1333)
+++ trunk/src/keybindings.c 2007-02-25 14:26:55 UTC (rev 1334)
@@ -39,6 +39,7 @@
#include "sci_cb.h"
#include "sciwrappers.h"
#include "build.h"
+#include "tools.h"
// include vte.h on non-Win32 systems, else define fake vte_init
#ifdef HAVE_VTE
# include "vte.h"
@@ -226,6 +227,12 @@
GDK_i, GDK_CONTROL_MASK, "edit_increaseindent", _("Increase indent"));
keys[GEANY_KEYS_EDIT_DECREASEINDENT] = fill(cb_func_edit,
GDK_i, GDK_SHIFT_MASK | GDK_CONTROL_MASK, "edit_decreaseindent", _("Decrease indent"));
+ keys[GEANY_KEYS_EDIT_SENDTOCMD1] = fill(cb_func_edit,
+ GDK_1, GDK_CONTROL_MASK, "edit_sendtocmd1", _("Send Selection to custom command 1"));
+ keys[GEANY_KEYS_EDIT_SENDTOCMD2] = fill(cb_func_edit,
+ GDK_2, GDK_CONTROL_MASK, "edit_sendtocmd2", _("Send Selection to custom command 2"));
+ keys[GEANY_KEYS_EDIT_SENDTOCMD3] = fill(cb_func_edit,
+ GDK_3, GDK_CONTROL_MASK, "edit_sendtocmd3", _("Send Selection to custom command 3"));
keys[GEANY_KEYS_EDIT_GOTOMATCHINGBRACE] = fill(cb_func_edit,
GDK_less, GDK_SHIFT_MASK | GDK_CONTROL_MASK, "edit_gotomatchingbrace",
_("Goto matching brace"));
@@ -846,6 +853,18 @@
case GEANY_KEYS_EDIT_TOUPPERCASE:
on_to_upper_case1_activate(NULL, NULL);
break;
+ case GEANY_KEYS_EDIT_SENDTOCMD1:
+ if (g_strv_length(app->custom_commands) > 0)
+ tools_execute_custom_command(idx, app->custom_commands[0]);
+ break;
+ case GEANY_KEYS_EDIT_SENDTOCMD2:
+ if (g_strv_length(app->custom_commands) > 1)
+ tools_execute_custom_command(idx, app->custom_commands[1]);
+ break;
+ case GEANY_KEYS_EDIT_SENDTOCMD3:
+ if (g_strv_length(app->custom_commands) > 2)
+ tools_execute_custom_command(idx, app->custom_commands[2]);
+ break;
}
}
Modified: trunk/src/keybindings.h
===================================================================
--- trunk/src/keybindings.h 2007-02-25 13:08:01 UTC (rev 1333)
+++ trunk/src/keybindings.h 2007-02-25 14:26:55 UTC (rev 1334)
@@ -100,6 +100,9 @@
GEANY_KEYS_EDIT_UNCOMMENTLINE,
GEANY_KEYS_EDIT_INCREASEINDENT,
GEANY_KEYS_EDIT_DECREASEINDENT,
+ GEANY_KEYS_EDIT_SENDTOCMD1,
+ GEANY_KEYS_EDIT_SENDTOCMD2,
+ GEANY_KEYS_EDIT_SENDTOCMD3,
GEANY_KEYS_EDIT_GOTOMATCHINGBRACE,
GEANY_KEYS_EDIT_AUTOCOMPLETE,
GEANY_KEYS_EDIT_CALLTIP,
Modified: trunk/src/keyfile.c
===================================================================
--- trunk/src/keyfile.c 2007-02-25 13:08:01 UTC (rev 1333)
+++ trunk/src/keyfile.c 2007-02-25 14:26:55 UTC (rev 1334)
@@ -150,6 +150,12 @@
}
#endif
g_key_file_set_string(config, PACKAGE, "custom_date_format", app->custom_date_format);
+ if (app->custom_commands != NULL)
+ {
+ g_key_file_set_string_list(config, PACKAGE, "custom_commands",
+ (const gchar**) app->custom_commands, g_strv_length(app->custom_commands));
+ }
+
g_key_file_set_string(config, PACKAGE, "editor_font", app->editor_font);
g_key_file_set_string(config, PACKAGE, "tagbar_font", app->tagbar_font);
g_key_file_set_string(config, PACKAGE, "msgwin_font", app->msgwin_font);
@@ -335,6 +341,7 @@
app->brace_match_ltgt = utils_get_setting_boolean(config, PACKAGE, "brace_match_ltgt", FALSE);
app->switch_msgwin_pages = utils_get_setting_boolean(config, PACKAGE, "switch_msgwin_pages", FALSE);
app->custom_date_format = utils_get_setting_string(config, PACKAGE, "custom_date_format", "");
+ app->custom_commands = g_key_file_get_string_list(config, PACKAGE, "custom_commands", NULL, NULL);
app->editor_font = utils_get_setting_string(config, PACKAGE, "editor_font", GEANY_DEFAULT_FONT_EDITOR);
app->tagbar_font = utils_get_setting_string(config, PACKAGE, "tagbar_font", GEANY_DEFAULT_FONT_SYMBOL_LIST);
app->msgwin_font = utils_get_setting_string(config, PACKAGE, "msgwin_font", GEANY_DEFAULT_FONT_MSG_WINDOW);
Modified: trunk/src/main.c
===================================================================
--- trunk/src/main.c 2007-02-25 13:08:01 UTC (rev 1333)
+++ trunk/src/main.c 2007-02-25 14:26:55 UTC (rev 1334)
@@ -58,6 +58,7 @@
#include "highlighting.h"
#include "symbols.h"
#include "project.h"
+#include "tools.h"
#ifdef HAVE_SOCKET
# include "socket.h"
@@ -602,6 +603,7 @@
ui_create_insert_menu_items();
ui_create_insert_date_menu_items();
keybindings_init();
+ tools_create_insert_custom_command_menu_items();
notebook_init();
filetypes_init_types();
#ifdef GEANY_DEBUG
@@ -745,6 +747,7 @@
g_free(app->tools_browser_cmd);
g_free(app->tools_print_cmd);
g_free(app->tools_grep_cmd);
+ g_strfreev(app->custom_commands);
while (! g_queue_is_empty(app->recent_queue))
{
g_free(g_queue_pop_tail(app->recent_queue));
Modified: trunk/src/tools.c
===================================================================
--- trunk/src/tools.c 2007-02-25 13:08:01 UTC (rev 1333)
+++ trunk/src/tools.c 2007-02-25 14:26:55 UTC (rev 1334)
@@ -27,10 +27,25 @@
#include "geany.h"
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+
+#ifdef G_OS_UNIX
+# include <sys/types.h>
+# include <sys/wait.h>
+# include <signal.h>
+#endif
+
+#include "tools.h"
#include "support.h"
#include "document.h"
#include "sciwrappers.h"
+#include "utils.h"
#include "ui_utils.h"
+#include "callbacks.h"
+#include "msgwindow.h"
+#include "keybindings.h"
enum
@@ -40,88 +55,88 @@
N_COLUMNS
};
-static GtkWidget *special_characters_dialog = NULL;
-static GtkTreeStore *special_characters_store = NULL;
-static GtkTreeView *special_characters_tree = NULL;
+static GtkWidget *sc_dialog = NULL;
+static GtkTreeStore *sc_store = NULL;
+static GtkTreeView *sc_tree = NULL;
-static void on_tools_show_dialog_insert_special_chars_response
+static void sc_on_tools_show_dialog_insert_special_chars_response
(GtkDialog *dialog, gint response, gpointer user_data);
-static void on_special_characters_tree_row_activated
+static void sc_on_tree_row_activated
(GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *col, gpointer user_data);
-static void special_characters_fill_store(GtkTreeStore *store);
-static gboolean special_characters_insert(GtkTreeModel *model, GtkTreeIter *iter);
+static void sc_fill_store(GtkTreeStore *store);
+static gboolean sc_insert(GtkTreeModel *model, GtkTreeIter *iter);
void tools_show_dialog_insert_special_chars()
{
- if (special_characters_dialog == NULL)
+ if (sc_dialog == NULL)
{
gint height;
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
GtkWidget *swin, *vbox, *label;
- special_characters_dialog = gtk_dialog_new_with_buttons(
+ sc_dialog = gtk_dialog_new_with_buttons(
_("Special characters"), GTK_WINDOW(app->window),
GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
_("_Insert"), GTK_RESPONSE_OK, NULL);
- vbox = ui_dialog_vbox_new(GTK_DIALOG(special_characters_dialog));
+ vbox = ui_dialog_vbox_new(GTK_DIALOG(sc_dialog));
gtk_box_set_spacing(GTK_BOX(vbox), 6);
height = GEANY_WINDOW_MINIMAL_HEIGHT;
- gtk_window_set_default_size(GTK_WINDOW(special_characters_dialog), height * 0.8, height);
- gtk_dialog_set_default_response(GTK_DIALOG(special_characters_dialog), GTK_RESPONSE_CANCEL);
+ gtk_window_set_default_size(GTK_WINDOW(sc_dialog), height * 0.8, height);
+ gtk_dialog_set_default_response(GTK_DIALOG(sc_dialog), GTK_RESPONSE_CANCEL);
label = gtk_label_new(_("Choose a special character from the list below and double click on it or use the button to insert it at the current cursor position."));
gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
- special_characters_tree = GTK_TREE_VIEW(gtk_tree_view_new());
+ sc_tree = GTK_TREE_VIEW(gtk_tree_view_new());
- special_characters_store = gtk_tree_store_new(N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING);
- gtk_tree_view_set_model(GTK_TREE_VIEW(special_characters_tree),
- GTK_TREE_MODEL(special_characters_store));
+ sc_store = gtk_tree_store_new(N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING);
+ gtk_tree_view_set_model(GTK_TREE_VIEW(sc_tree),
+ GTK_TREE_MODEL(sc_store));
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(
_("Character"), renderer, "text", COLUMN_CHARACTER, NULL);
gtk_tree_view_column_set_resizable(column, TRUE);
- gtk_tree_view_append_column(GTK_TREE_VIEW(special_characters_tree), column);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(sc_tree), column);
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(
_("HTML (name)"), renderer, "text", COLUMN_HTML_NAME, NULL);
gtk_tree_view_column_set_resizable(column, TRUE);
- gtk_tree_view_append_column(GTK_TREE_VIEW(special_characters_tree), column);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(sc_tree), column);
swin = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swin), GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_add_with_viewport(
- GTK_SCROLLED_WINDOW(swin), GTK_WIDGET(special_characters_tree));
+ GTK_SCROLLED_WINDOW(swin), GTK_WIDGET(sc_tree));
gtk_box_pack_start(GTK_BOX(vbox), swin, TRUE, TRUE, 0);
- g_signal_connect((gpointer) special_characters_tree, "row-activated",
- G_CALLBACK(on_special_characters_tree_row_activated), NULL);
+ g_signal_connect((gpointer) sc_tree, "row-activated",
+ G_CALLBACK(sc_on_tree_row_activated), NULL);
- g_signal_connect((gpointer) special_characters_dialog, "response",
- G_CALLBACK(on_tools_show_dialog_insert_special_chars_response), NULL);
+ g_signal_connect((gpointer) sc_dialog, "response",
+ G_CALLBACK(sc_on_tools_show_dialog_insert_special_chars_response), NULL);
- special_characters_fill_store(special_characters_store);
+ sc_fill_store(sc_store);
//gtk_tree_view_expand_all(special_characters_tree);
- gtk_tree_view_set_search_column(special_characters_tree, COLUMN_HTML_NAME);
+ gtk_tree_view_set_search_column(sc_tree, COLUMN_HTML_NAME);
}
- gtk_widget_show_all(special_characters_dialog);
+ gtk_widget_show_all(sc_dialog);
}
// fill the tree model with data
/// TODO move this in a file and make it extendable for more data types
-static void special_characters_fill_store(GtkTreeStore *store)
+static void sc_fill_store(GtkTreeStore *store)
{
GtkTreeIter iter;
GtkTreeIter *parent_iter = NULL;
@@ -411,7 +426,7 @@
/* just inserts the HTML_NAME coloumn of the selected row at current position
* returns only TRUE if a valid selection(i.e. no category) could be found */
-static gboolean special_characters_insert(GtkTreeModel *model, GtkTreeIter *iter)
+static gboolean sc_insert(GtkTreeModel *model, GtkTreeIter *iter)
{
gint idx = document_get_cur_idx();
gboolean result = FALSE;
@@ -433,7 +448,7 @@
}
-static void on_tools_show_dialog_insert_special_chars_response(GtkDialog *dialog, gint response,
+static void sc_on_tools_show_dialog_insert_special_chars_response(GtkDialog *dialog, gint response,
gpointer user_data)
{
if (response == GTK_RESPONSE_OK)
@@ -442,12 +457,12 @@
GtkTreeModel *model;
GtkTreeIter iter;
- selection = gtk_tree_view_get_selection(special_characters_tree);
+ selection = gtk_tree_view_get_selection(sc_tree);
if (gtk_tree_selection_get_selected(selection, &model, &iter))
{
// only hide dialog if selection was not a category
- if (special_characters_insert(model, &iter))
+ if (sc_insert(model, &iter))
gtk_widget_hide(GTK_WIDGET(dialog));
}
}
@@ -456,23 +471,404 @@
}
-static void on_special_characters_tree_row_activated(GtkTreeView *treeview, GtkTreePath *path,
+static void sc_on_tree_row_activated(GtkTreeView *treeview, GtkTreePath *path,
GtkTreeViewColumn *col, gpointer user_data)
{
GtkTreeIter iter;
- GtkTreeModel *model = GTK_TREE_MODEL(special_characters_store);
+ GtkTreeModel *model = GTK_TREE_MODEL(sc_store);
if (gtk_tree_model_get_iter(model, &iter, path))
{
// only hide dialog if selection was not a category
- if (special_characters_insert(model, &iter))
- gtk_widget_hide(special_characters_dialog);
+ if (sc_insert(model, &iter))
+ gtk_widget_hide(sc_dialog);
else
{ // double click on a category to toggle the expand or collapse it
- if (gtk_tree_view_row_expanded(special_characters_tree, path))
- gtk_tree_view_collapse_row(special_characters_tree, path);
+ if (gtk_tree_view_row_expanded(sc_tree, path))
+ gtk_tree_view_collapse_row(sc_tree, path);
else
- gtk_tree_view_expand_row(special_characters_tree, path, FALSE);
+ gtk_tree_view_expand_row(sc_tree, path, FALSE);
}
}
}
+
+
+/* custom commands code*/
+struct cc_dialog
+{
+ gint count;
+ GtkWidget *box;
+};
+
+
+static void cc_add_command(struct cc_dialog *cc, gint index)
+{
+ GtkWidget *label, *entry, *hbox;
+ gchar str[6];
+
+ hbox = gtk_hbox_new(FALSE, 5);
+ g_snprintf(str, 5, "%d:", cc->count);
+ label = gtk_label_new(str);
+
+ entry = gtk_entry_new();
+ if (index >= 0)
+ gtk_entry_set_text(GTK_ENTRY(entry), app->custom_commands[index]);
+ gtk_entry_set_max_length(GTK_ENTRY(entry), 255);
+ gtk_entry_set_width_chars(GTK_ENTRY(entry), 30);
+ gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0);
+ gtk_widget_show_all(hbox);
+ gtk_container_add(GTK_CONTAINER(cc->box), hbox);
+ cc->count++;
+}
+
+
+static void cc_on_custom_commands_dlg_add_clicked(GtkToolButton *toolbutton, struct cc_dialog *cc)
+{
+ cc_add_command(cc, -1);
+}
+
+
+static gboolean cc_iofunc(GIOChannel *ioc, GIOCondition cond, gpointer data)
+{
+ if (cond & (G_IO_IN | G_IO_PRI))
+ {
+ gint idx = GPOINTER_TO_INT(data);
+ gchar *msg = NULL;
+ GString *str = g_string_sized_new(256);
+
+ while (g_io_channel_read_line(ioc, &msg, NULL, NULL, NULL) && msg != NULL)
+ {
+ g_string_append(str, msg);
+ g_free(msg);
+ }
+ /// without the following if we replace the selection several hundred times with "" because
+ /// we get to often in this callback but I don't know why
+ if (str->len > 0)
+ {
+ sci_replace_sel(doc_list[idx].sci, str->str);
+ }
+ g_string_free(str, TRUE);
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+static gboolean cc_iofunc_err(GIOChannel *ioc, GIOCondition cond, gpointer data)
+{
+ if (cond & (G_IO_IN | G_IO_PRI))
+ {
+ gchar *msg = NULL;
+
+ while (g_io_channel_read_line(ioc, &msg, NULL, NULL, NULL) && msg != NULL)
+ {
+ g_warning("%s: %s", (const gchar*) data, g_strstrip(msg));
+ g_free(msg);
+ }
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+/* Executes command (which should include all necessary command line args) and passes the current
+ * selection through the standard input of command. The whole output of command replaces the
+ * current selection. */
+void tools_execute_custom_command(gint idx, const gchar *command)
+{
+ GError *error = NULL;
+ GPid pid;
+ gchar **argv;
+ gint stdin_fd;
+ gint stdout_fd;
+ gint stderr_fd;
+
+ g_return_if_fail(DOC_IDX_VALID(idx) && command != NULL);
+
+ if (! sci_can_copy(doc_list[idx].sci))
+ return;
+
+ argv = g_strsplit(command, " ", -1);
+ msgwin_status_add(_("Passing data and executing custom command: %s"), command);
+
+ if (g_spawn_async_with_pipes(NULL, argv, NULL, G_SPAWN_SEARCH_PATH,
+ NULL, NULL, &pid, &stdin_fd, &stdout_fd, &stderr_fd, &error))
+ {
+ gchar *sel;
+ gint len;
+
+ // use GIOChannel to monitor stdout
+ /// TODO there is something wrong with the whole channel code because the callback is
+ /// called about several hundred times
+ utils_set_up_io_channel(stdout_fd, G_IO_IN|G_IO_PRI|G_IO_ERR|G_IO_HUP|G_IO_NVAL,
+ cc_iofunc, GINT_TO_POINTER(idx));
+ // copy program's stderr to Geany's stdout to help error tracking
+ utils_set_up_io_channel(stderr_fd, G_IO_IN|G_IO_PRI|G_IO_ERR|G_IO_HUP|G_IO_NVAL,
+ cc_iofunc_err, (gpointer)command);
+
+ // get selection
+ len = sci_get_selected_text_length(doc_list[idx].sci);
+ sel = g_malloc0(len);
+ sci_get_selected_text(doc_list[idx].sci, sel);
+
+ // write data to the command
+ write(stdin_fd, sel, len - 1);
+ close(stdin_fd);
+ g_free(sel);
+ }
+ else
+ {
+ geany_debug("g_spawn_async_with_pipes() failed: %s", error->message);
+ g_error_free(error);
+ }
+
+ g_strfreev(argv);
+}
+
+
+static void cc_show_dialog_custom_commands()
+{
+ GtkWidget *dialog, *label, *vbox, *button;
+ gint i;
+ struct cc_dialog cc;
+
+ dialog = gtk_dialog_new_with_buttons(_("Set Custom Commands"), GTK_WINDOW(app->window),
+ GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL);
+ vbox = ui_dialog_vbox_new(GTK_DIALOG(dialog));
+ gtk_box_set_spacing(GTK_BOX(vbox), 6);
+
+ label = gtk_label_new(_("You can send the current selection to any of these commands and the output of the command replaces the current selection."));
+ gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
+ gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+ gtk_container_add(GTK_CONTAINER(vbox), label);
+
+ cc.count = 1;
+ cc.box = gtk_vbox_new(FALSE, 0);
+ gtk_container_add(GTK_CONTAINER(vbox), cc.box);
+
+ if (app->custom_commands == NULL || g_strv_length(app->custom_commands) == 0)
+ {
+ cc_add_command(&cc, -1);
+ }
+ else
+ {
+ for (i = 0; i < g_strv_length(app->custom_commands); i++)
+ {
+ if (app->custom_commands[i][0] == '\0')
+ continue; // skip empty fields
+
+ cc_add_command(&cc, i);
+ }
+ }
+
+ button = gtk_button_new_from_stock("gtk-add");
+ g_signal_connect((gpointer) button, "clicked",
+ G_CALLBACK(cc_on_custom_commands_dlg_add_clicked), &cc);
+ gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0);
+
+ gtk_widget_show_all(vbox);
+
+ if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
+ {
+ // get all hboxes which contain a label and an entry element
+ GList *children = gtk_container_get_children(GTK_CONTAINER(cc.box));
+ GList *tmp;
+ GSList *result_list = NULL;
+ gint i = 0;
+ gint len = 0;
+ gchar **result;
+ const gchar *text;
+
+ while (children != NULL)
+ {
+ // get the contents of each hbox
+ tmp = gtk_container_get_children(GTK_CONTAINER(children->data));
+
+ // first element of the list is the label, so skip it and get the entry element
+ tmp = tmp->next;
+
+ text = gtk_entry_get_text(GTK_ENTRY(tmp->data));
+
+ // if the content of the entry is non-empty, add it to the result array
+ if (text[0] != '\0')
+ {
+ result_list = g_slist_append(result_list, g_strdup(text));
+ len++;
+ }
+ children = children->next;
+ }
+ // create a new null-terminated array
+ result = g_new(gchar*, len + 1);
+ while (result_list != NULL)
+ {
+ result[i] = (gchar*) result_list->data;
+
+ result_list = result_list->next;
+ i++;
+ }
+ g_slist_free(result_list);
+ g_list_free(children);
+ result[len] = NULL; // null-terminate the array
+ g_strfreev(app->custom_commands);
+ app->custom_commands = result;
+ tools_create_insert_custom_command_menu_items();
+ }
+ gtk_widget_destroy(dialog);
+}
+
+
+/* enable or disable all custom command menu items when the sub menu is opened */
+static void cc_on_custom_command_menu_activate(GtkMenuItem *menuitem, gpointer user_data)
+{
+ gint idx = document_get_cur_idx();
+ gint i, len;
+ gboolean enable;
+ GList *children;
+
+ if (! DOC_IDX_VALID(idx)) return;
+
+ enable = sci_can_copy(doc_list[idx].sci);
+
+ children = gtk_container_get_children(GTK_CONTAINER(user_data));
+ len = g_list_length(children);
+ i = 0;
+ while (children != NULL)
+ {
+ if (i == (len - 2))
+ break; // stop before the last two elements (the seperator and the set entry)
+
+ gtk_widget_set_sensitive(GTK_WIDGET(children->data), enable);
+ children = children->next;
+ i++;
+ }
+}
+
+
+static void cc_on_custom_command_activate(GtkMenuItem *menuitem, gpointer user_data)
+{
+ gint idx = document_get_cur_idx();
+ gint command_idx;
+
+ if (! DOC_IDX_VALID(idx)) return;
+
+ command_idx = GPOINTER_TO_INT(user_data);
+
+ if (app->custom_commands == NULL ||
+ command_idx < 0 || command_idx > g_strv_length(app->custom_commands))
+ {
+ cc_show_dialog_custom_commands();
+ return;
+ }
+
+ // send it through the command and when the command returned the output the current selection
+ // will be replaced
+ tools_execute_custom_command(idx, app->custom_commands[command_idx]);
+}
+
+
+static void cc_insert_custom_command_items(GtkMenu *me, GtkMenu *mp, gchar *label, gint idx)
+{
+ GtkWidget *item;
+ gint key_idx = -1;
+
+ switch (idx)
+ {
+ case 0: key_idx = GEANY_KEYS_EDIT_SENDTOCMD1; break;
+ case 1: key_idx = GEANY_KEYS_EDIT_SENDTOCMD2; break;
+ case 2: key_idx = GEANY_KEYS_EDIT_SENDTOCMD3; break;
+ }
+
+ item = gtk_menu_item_new_with_label(label);
+ if (key_idx != -1)
+ gtk_widget_add_accelerator(item, "activate", gtk_accel_group_new(),
+ keys[key_idx]->key, keys[key_idx]->mods, GTK_ACCEL_VISIBLE);
+ gtk_container_add(GTK_CONTAINER(me), item);
+ gtk_widget_show(item);
+ g_signal_connect((gpointer) item, "activate", G_CALLBACK(cc_on_custom_command_activate),
+ GINT_TO_POINTER(idx));
+
+ item = gtk_menu_item_new_with_label(label);
+ if (key_idx != -1)
+ gtk_widget_add_accelerator(item, "activate", gtk_accel_group_new(),
+ keys[key_idx]->key, keys[key_idx]->mods, GTK_ACCEL_VISIBLE);
+ gtk_container_add(GTK_CONTAINER(mp), item);
+ gtk_widget_show(item);
+ g_signal_connect((gpointer) item, "activate", G_CALLBACK(cc_on_custom_command_activate),
+ GINT_TO_POINTER(idx));
+}
+
+
+void tools_create_insert_custom_command_menu_items()
+{
+ GtkMenu *menu_edit = GTK_MENU(lookup_widget(app->window, "send_selection_to2_menu"));
+ GtkMenu *menu_popup = GTK_MENU(lookup_widget(app->popup_menu, "send_selection_to1_menu"));
+ GtkWidget *item;
+ GList *me_children;
+ GList *mp_children;
+ static gboolean signal_set = FALSE;
+
+ // first clean the menus to be able to rebuild them
+ me_children = gtk_container_get_children(GTK_CONTAINER(menu_edit));
+ mp_children = gtk_container_get_children(GTK_CONTAINER(menu_popup));
+ while (me_children != NULL)
+ {
+ gtk_widget_destroy(GTK_WIDGET(me_children->data));
+ gtk_widget_destroy(GTK_WIDGET(mp_children->data));
+
+ me_children = me_children->next;
+ mp_children = mp_children->next;
+ }
+
+
+ if (app->custom_commands == NULL || g_strv_length(app->custom_commands) == 0)
+ {
+ item = gtk_menu_item_new_with_label(_("No custom commands defined."));
+ gtk_container_add(GTK_CONTAINER(menu_edit), item);
+ gtk_widget_set_sensitive(item, FALSE);
+ gtk_widget_show(item);
+ item = gtk_menu_item_new_with_label(_("No custom commands defined."));
+ gtk_container_add(GTK_CONTAINER(menu_popup), item);
+ gtk_widget_set_sensitive(item, FALSE);
+ gtk_widget_show(item);
+ }
+ else
+ {
+ gint i;
+ gint idx = 0;
+ for (i = 0; i < g_strv_length(app->custom_commands); i++)
+ {
+ if (app->custom_commands[i][0] != '\0') // skip empty fields
+ {
+ cc_insert_custom_command_items(menu_edit, menu_popup, app->custom_commands[i], idx);
+ idx++;
+ }
+ }
+ }
+
+ // separator and Set menu item
+ item = gtk_separator_menu_item_new();
+ gtk_container_add(GTK_CONTAINER(menu_edit), item);
+ gtk_widget_show(item);
+ item = gtk_separator_menu_item_new();
+ gtk_container_add(GTK_CONTAINER(menu_popup), item);
+ gtk_widget_show(item);
+
+ cc_insert_custom_command_items(menu_edit, menu_popup, _("Set Custom Commands"), -1);
+
+ if (! signal_set)
+ {
+ g_signal_connect((gpointer) lookup_widget(app->popup_menu, "send_selection_to1"),
+ "activate", G_CALLBACK(cc_on_custom_command_menu_activate), menu_popup);
+ g_signal_connect((gpointer) lookup_widget(app->window, "send_selection_to2"),
+ "activate", G_CALLBACK(cc_on_custom_command_menu_activate), menu_edit);
+ signal_set = TRUE;
+ }
+}
+
+
+
Modified: trunk/src/tools.h
===================================================================
--- trunk/src/tools.h 2007-02-25 13:08:01 UTC (rev 1333)
+++ trunk/src/tools.h 2007-02-25 14:26:55 UTC (rev 1334)
@@ -27,4 +27,8 @@
void tools_show_dialog_insert_special_chars();
+void tools_create_insert_custom_command_menu_items();
+
+void tools_execute_custom_command(gint idx, const gchar *command);
+
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list