Revision: 1088 http://svn.sourceforge.net/geany/?rev=1088&view=rev Author: eht16 Date: 2006-12-12 16:46:14 -0800 (Tue, 12 Dec 2006)
Log Message: ----------- New files tools.c and tools.h. Added a dialog to insert HTML special characters.
Modified Paths: -------------- trunk/ChangeLog trunk/geany.glade trunk/po/POTFILES.in trunk/src/Makefile.am trunk/src/callbacks.c trunk/src/callbacks.h trunk/src/interface.c trunk/src/keybindings.c trunk/src/keybindings.h trunk/src/makefile.win32
Added Paths: ----------- trunk/src/tools.c trunk/src/tools.h
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2006-12-12 21:52:48 UTC (rev 1087) +++ trunk/ChangeLog 2006-12-13 00:46:14 UTC (rev 1088) @@ -3,6 +3,11 @@ * src/document.c, src/geany.h, src/keyfile.c, src/sciwrappers.c, src/sciwrappers.h: Added option to toggle usage of Tab button for indentation. + * geany.glade, po/POTFILES.in, src/callbacks.c, src/callbacks.h, + src/interface.c, src/keybindings.c, src/keybindings.h, + src/Makefile.am, src/makefile.win32, src/tools.c, src/tools.h: + New files tools.c and tools.h. + Added a dialog to insert HTML special characters.
2006-12-12 Nick Treleaven nick.treleaven@btinternet.com
Modified: trunk/geany.glade =================================================================== --- trunk/geany.glade 2006-12-12 21:52:48 UTC (rev 1087) +++ trunk/geany.glade 2006-12-13 00:46:14 UTC (rev 1088) @@ -57,7 +57,7 @@ <property name="use_underline">True</property>
<child internal-child="image"> - <widget class="GtkImage" id="image1295"> + <widget class="GtkImage" id="image1319"> <property name="visible">True</property> <property name="stock">gtk-new</property> <property name="icon_size">1</property> @@ -138,7 +138,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="image1296"> + <widget class="GtkImage" id="image1320"> <property name="visible">True</property> <property name="stock">gtk-save</property> <property name="icon_size">1</property> @@ -159,7 +159,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="image1297"> + <widget class="GtkImage" id="image1321"> <property name="visible">True</property> <property name="stock">gtk-revert-to-saved</property> <property name="icon_size">1</property> @@ -179,7 +179,7 @@ <property name="use_underline">True</property>
<child internal-child="image"> - <widget class="GtkImage" id="image1298"> + <widget class="GtkImage" id="image1322"> <property name="visible">True</property> <property name="stock">gtk-revert-to-saved</property> <property name="icon_size">1</property> @@ -259,7 +259,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="image1299"> + <widget class="GtkImage" id="image1323"> <property name="visible">True</property> <property name="stock">gtk-close</property> <property name="icon_size">1</property> @@ -467,7 +467,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="image1300"> + <widget class="GtkImage" id="image1324"> <property name="visible">True</property> <property name="stock">gtk-indent</property> <property name="icon_size">1</property> @@ -488,7 +488,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="image1301"> + <widget class="GtkImage" id="image1325"> <property name="visible">True</property> <property name="stock">gtk-unindent</property> <property name="icon_size">1</property> @@ -518,7 +518,7 @@ <property name="use_underline">True</property>
<child internal-child="image"> - <widget class="GtkImage" id="image1302"> + <widget class="GtkImage" id="image1326"> <property name="visible">True</property> <property name="stock">gtk-add</property> <property name="icon_size">1</property> @@ -550,7 +550,7 @@ <property name="use_underline">True</property>
<child internal-child="image"> - <widget class="GtkImage" id="image1303"> + <widget class="GtkImage" id="image1327"> <property name="visible">True</property> <property name="stock">gtk-add</property> <property name="icon_size">1</property> @@ -710,7 +710,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="image1304"> + <widget class="GtkImage" id="image1328"> <property name="visible">True</property> <property name="stock">gtk-find-and-replace</property> <property name="icon_size">1</property> @@ -752,7 +752,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="image1305"> + <widget class="GtkImage" id="image1329"> <property name="visible">True</property> <property name="stock">gtk-jump-to</property> <property name="icon_size">1</property> @@ -787,7 +787,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="image1306"> + <widget class="GtkImage" id="image1330"> <property name="visible">True</property> <property name="stock">gtk-select-font</property> <property name="icon_size">1</property> @@ -1018,7 +1018,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">False</property> + <property name="active">True</property> <signal name="activate" handler="on_crlf_activate" last_modification_time="Thu, 28 Apr 2005 16:27:24 GMT"/> </widget> </child> @@ -1028,7 +1028,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">False</property> + <property name="active">True</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> @@ -1137,7 +1137,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="image1307"> + <widget class="GtkImage" id="image1331"> <property name="visible">True</property> <property name="stock">gtk-select-color</property> <property name="icon_size">1</property> @@ -1159,6 +1159,15 @@ <signal name="activate" handler="on_count_words1_activate" last_modification_time="Mon, 06 Jun 2005 11:49:24 GMT"/> </widget> </child> + + <child> + <widget class="GtkMenuItem" id="menu_insert_special_chars1"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Insert Special HTML Characters</property> + <property name="use_underline">True</property> + <signal name="activate" handler="on_menu_insert_special_chars1_activate" last_modification_time="Tue, 12 Dec 2006 22:03:01 GMT"/> + </widget> + </child> </widget> </child> </widget>
Modified: trunk/po/POTFILES.in =================================================================== --- trunk/po/POTFILES.in 2006-12-12 21:52:48 UTC (rev 1087) +++ trunk/po/POTFILES.in 2006-12-13 00:46:14 UTC (rev 1088) @@ -28,3 +28,4 @@ src/search.c src/notebook.c src/symbols.c +src/tools.c
Modified: trunk/src/Makefile.am =================================================================== --- trunk/src/Makefile.am 2006-12-12 21:52:48 UTC (rev 1087) +++ trunk/src/Makefile.am 2006-12-13 00:46:14 UTC (rev 1088) @@ -27,6 +27,7 @@ sciwrappers.c sciwrappers.h \ document.c document.h \ socket.c socket.h \ + tools.c tools.h \ utils.c utils.h \ ui_utils.c ui_utils.h \ support.c support.h \
Modified: trunk/src/callbacks.c =================================================================== --- trunk/src/callbacks.c 2006-12-12 21:52:48 UTC (rev 1087) +++ trunk/src/callbacks.c 2006-12-13 00:46:14 UTC (rev 1088) @@ -51,6 +51,7 @@ #include "search.h" #include "main.h" #include "symbols.h" +#include "tools.h"
#ifdef HAVE_VTE # include "vte.h" @@ -1998,3 +1999,12 @@ msgwin_goto_messages_file_line)) ui_set_statusbar(_("No more message items.")); } + + +void +on_menu_insert_special_chars1_activate (GtkMenuItem *menuitem, + gpointer user_data) +{ + tools_show_dialog_insert_special_chars(); +} +
Modified: trunk/src/callbacks.h =================================================================== --- trunk/src/callbacks.h 2006-12-12 21:52:48 UTC (rev 1087) +++ trunk/src/callbacks.h 2006-12-13 00:46:14 UTC (rev 1088) @@ -542,3 +542,7 @@ on_next_message1_activate (GtkMenuItem *menuitem, gpointer user_data);
+ +void +on_menu_insert_special_chars1_activate (GtkMenuItem *menuitem, + gpointer user_data);
Modified: trunk/src/interface.c =================================================================== --- trunk/src/interface.c 2006-12-12 21:52:48 UTC (rev 1087) +++ trunk/src/interface.c 2006-12-13 00:46:14 UTC (rev 1088) @@ -37,7 +37,7 @@ GtkWidget *menuitem1_menu; GtkWidget *menu_new1; GtkWidget *menu_new_with_template1; - GtkWidget *image1295; + GtkWidget *image1319; GtkWidget *menu_new_with_template1_menu; GtkWidget *invisible2; GtkWidget *separator12; @@ -47,11 +47,11 @@ GtkWidget *menu_save1; GtkWidget *menu_save_as1; GtkWidget *menu_save_all1; - GtkWidget *image1296; + GtkWidget *image1320; GtkWidget *menu_reload1; - GtkWidget *image1297; + GtkWidget *image1321; GtkWidget *menu_reload_as1; - GtkWidget *image1298; + GtkWidget *image1322; GtkWidget *menu_reload_as1_menu; GtkWidget *invisible7; GtkWidget *separator21; @@ -61,7 +61,7 @@ GtkWidget *separator14; GtkWidget *menu_close1; GtkWidget *menu_close_all1; - GtkWidget *image1299; + GtkWidget *image1323; GtkWidget *menu_separatormenuitem1; GtkWidget *menu_quit1; GtkWidget *edit1; @@ -87,16 +87,16 @@ GtkWidget *menu_duplicate_line1; GtkWidget *separator29; GtkWidget *menu_increase_indent1; - GtkWidget *image1300; + GtkWidget *image1324; GtkWidget *menu_decrease_indent1; - GtkWidget *image1301; + GtkWidget *image1325; GtkWidget *separator18; GtkWidget *insert_include2; - GtkWidget *image1302; + GtkWidget *image1326; GtkWidget *insert_include2_menu; GtkWidget *invisible4; GtkWidget *add_comments1; - GtkWidget *image1303; + GtkWidget *image1327; GtkWidget *add_comments1_menu; GtkWidget *menu_add_changelog_entry1; GtkWidget *insert_file_header1; @@ -115,16 +115,16 @@ GtkWidget *find_previous1; GtkWidget *find_in_files1; GtkWidget *replace1; - GtkWidget *image1304; + GtkWidget *image1328; GtkWidget *separator33; GtkWidget *next_message1; GtkWidget *separator32; GtkWidget *go_to_line1; - GtkWidget *image1305; + GtkWidget *image1329; GtkWidget *menuitem3; GtkWidget *menuitem3_menu; GtkWidget *menu_change_font1; - GtkWidget *image1306; + GtkWidget *image1330; GtkWidget *menu_separator4; GtkWidget *menu_fullscreen1; GtkWidget *menu_show_messages_window1; @@ -166,8 +166,9 @@ GtkWidget *tools1; GtkWidget *tools1_menu; GtkWidget *menu_choose_color1; - GtkWidget *image1307; + GtkWidget *image1331; GtkWidget *menu_count_words1; + GtkWidget *menu_insert_special_chars1; GtkWidget *menu_item5; GtkWidget *menu_item5_menu; GtkWidget *help1; @@ -266,9 +267,9 @@ gtk_widget_show (menu_new_with_template1); gtk_container_add (GTK_CONTAINER (menuitem1_menu), menu_new_with_template1);
- image1295 = gtk_image_new_from_stock ("gtk-new", GTK_ICON_SIZE_MENU); - gtk_widget_show (image1295); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_new_with_template1), image1295); + image1319 = gtk_image_new_from_stock ("gtk-new", GTK_ICON_SIZE_MENU); + gtk_widget_show (image1319); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_new_with_template1), image1319);
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); @@ -307,25 +308,25 @@ gtk_container_add (GTK_CONTAINER (menuitem1_menu), menu_save_all1); gtk_tooltips_set_tip (tooltips, menu_save_all1, _("Saves all open files"), NULL);
- image1296 = gtk_image_new_from_stock ("gtk-save", GTK_ICON_SIZE_MENU); - gtk_widget_show (image1296); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_save_all1), image1296); + image1320 = gtk_image_new_from_stock ("gtk-save", GTK_ICON_SIZE_MENU); + gtk_widget_show (image1320); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_save_all1), image1320);
menu_reload1 = gtk_image_menu_item_new_with_mnemonic (_("_Reload")); gtk_widget_show (menu_reload1); gtk_container_add (GTK_CONTAINER (menuitem1_menu), menu_reload1);
- image1297 = gtk_image_new_from_stock ("gtk-revert-to-saved", GTK_ICON_SIZE_MENU); - gtk_widget_show (image1297); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_reload1), image1297); + image1321 = gtk_image_new_from_stock ("gtk-revert-to-saved", GTK_ICON_SIZE_MENU); + gtk_widget_show (image1321); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_reload1), image1321);
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);
- image1298 = gtk_image_new_from_stock ("gtk-revert-to-saved", GTK_ICON_SIZE_MENU); - gtk_widget_show (image1298); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_reload_as1), image1298); + image1322 = gtk_image_new_from_stock ("gtk-revert-to-saved", GTK_ICON_SIZE_MENU); + gtk_widget_show (image1322); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_reload_as1), image1322);
menu_reload_as1_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_reload_as1), menu_reload_as1_menu); @@ -366,9 +367,9 @@ gtk_container_add (GTK_CONTAINER (menuitem1_menu), menu_close_all1); gtk_tooltips_set_tip (tooltips, menu_close_all1, _("Closes all open files"), NULL);
- image1299 = gtk_image_new_from_stock ("gtk-close", GTK_ICON_SIZE_MENU); - gtk_widget_show (image1299); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_close_all1), image1299); + image1323 = gtk_image_new_from_stock ("gtk-close", GTK_ICON_SIZE_MENU); + gtk_widget_show (image1323); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_close_all1), image1323);
menu_separatormenuitem1 = gtk_separator_menu_item_new (); gtk_widget_show (menu_separatormenuitem1); @@ -476,17 +477,17 @@ gtk_widget_show (menu_increase_indent1); gtk_container_add (GTK_CONTAINER (menu_format1_menu), menu_increase_indent1);
- image1300 = gtk_image_new_from_stock ("gtk-indent", GTK_ICON_SIZE_MENU); - gtk_widget_show (image1300); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_increase_indent1), image1300); + image1324 = gtk_image_new_from_stock ("gtk-indent", GTK_ICON_SIZE_MENU); + gtk_widget_show (image1324); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_increase_indent1), image1324);
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);
- image1301 = gtk_image_new_from_stock ("gtk-unindent", GTK_ICON_SIZE_MENU); - gtk_widget_show (image1301); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_decrease_indent1), image1301); + image1325 = gtk_image_new_from_stock ("gtk-unindent", GTK_ICON_SIZE_MENU); + gtk_widget_show (image1325); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_decrease_indent1), image1325);
separator18 = gtk_separator_menu_item_new (); gtk_widget_show (separator18); @@ -497,9 +498,9 @@ gtk_widget_show (insert_include2); gtk_container_add (GTK_CONTAINER (edit1_menu), insert_include2);
- image1302 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU); - gtk_widget_show (image1302); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (insert_include2), image1302); + image1326 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU); + gtk_widget_show (image1326); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (insert_include2), image1326);
insert_include2_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (insert_include2), insert_include2_menu); @@ -511,9 +512,9 @@ gtk_widget_show (add_comments1); gtk_container_add (GTK_CONTAINER (edit1_menu), add_comments1);
- image1303 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU); - gtk_widget_show (image1303); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (add_comments1), image1303); + image1327 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU); + gtk_widget_show (image1327); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (add_comments1), image1327);
add_comments1_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (add_comments1), add_comments1_menu); @@ -589,9 +590,9 @@ gtk_widget_show (replace1); gtk_container_add (GTK_CONTAINER (search1_menu), replace1);
- image1304 = gtk_image_new_from_stock ("gtk-find-and-replace", GTK_ICON_SIZE_MENU); - gtk_widget_show (image1304); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (replace1), image1304); + image1328 = gtk_image_new_from_stock ("gtk-find-and-replace", GTK_ICON_SIZE_MENU); + gtk_widget_show (image1328); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (replace1), image1328);
separator33 = gtk_separator_menu_item_new (); gtk_widget_show (separator33); @@ -611,9 +612,9 @@ gtk_widget_show (go_to_line1); gtk_container_add (GTK_CONTAINER (search1_menu), go_to_line1);
- image1305 = gtk_image_new_from_stock ("gtk-jump-to", GTK_ICON_SIZE_MENU); - gtk_widget_show (image1305); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (go_to_line1), image1305); + image1329 = gtk_image_new_from_stock ("gtk-jump-to", GTK_ICON_SIZE_MENU); + gtk_widget_show (image1329); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (go_to_line1), image1329);
menuitem3 = gtk_menu_item_new_with_mnemonic (_("_View")); gtk_widget_show (menuitem3); @@ -627,9 +628,9 @@ gtk_container_add (GTK_CONTAINER (menuitem3_menu), menu_change_font1); gtk_tooltips_set_tip (tooltips, menu_change_font1, _("Change the default font"), NULL);
- image1306 = gtk_image_new_from_stock ("gtk-select-font", GTK_ICON_SIZE_MENU); - gtk_widget_show (image1306); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_change_font1), image1306); + image1330 = gtk_image_new_from_stock ("gtk-select-font", GTK_ICON_SIZE_MENU); + gtk_widget_show (image1330); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_change_font1), image1330);
menu_separator4 = gtk_separator_menu_item_new (); gtk_widget_show (menu_separator4); @@ -749,11 +750,13 @@ 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)); @@ -812,15 +815,19 @@ 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);
- image1307 = gtk_image_new_from_stock ("gtk-select-color", GTK_ICON_SIZE_MENU); - gtk_widget_show (image1307); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_choose_color1), image1307); + image1331 = gtk_image_new_from_stock ("gtk-select-color", GTK_ICON_SIZE_MENU); + gtk_widget_show (image1331); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_choose_color1), image1331);
menu_count_words1 = gtk_menu_item_new_with_mnemonic (_("_Word Count")); gtk_widget_show (menu_count_words1); gtk_container_add (GTK_CONTAINER (tools1_menu), menu_count_words1); gtk_tooltips_set_tip (tooltips, menu_count_words1, _("Counts the words and characters in the current selection or the whole document"), NULL);
+ menu_insert_special_chars1 = gtk_menu_item_new_with_mnemonic (_("_Insert Special HTML Characters")); + gtk_widget_show (menu_insert_special_chars1); + gtk_container_add (GTK_CONTAINER (tools1_menu), menu_insert_special_chars1); + menu_item5 = gtk_menu_item_new_with_mnemonic (_("_Help")); gtk_widget_show (menu_item5); gtk_container_add (GTK_CONTAINER (menubar1), menu_item5); @@ -1310,6 +1317,9 @@ g_signal_connect ((gpointer) menu_count_words1, "activate", G_CALLBACK (on_count_words1_activate), NULL); + g_signal_connect ((gpointer) menu_insert_special_chars1, "activate", + G_CALLBACK (on_menu_insert_special_chars1_activate), + NULL); g_signal_connect ((gpointer) help1, "activate", G_CALLBACK (on_help1_activate), NULL); @@ -1401,7 +1411,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, image1295, "image1295"); + GLADE_HOOKUP_OBJECT (window1, image1319, "image1319"); 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"); @@ -1411,11 +1421,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, image1296, "image1296"); + GLADE_HOOKUP_OBJECT (window1, image1320, "image1320"); GLADE_HOOKUP_OBJECT (window1, menu_reload1, "menu_reload1"); - GLADE_HOOKUP_OBJECT (window1, image1297, "image1297"); + GLADE_HOOKUP_OBJECT (window1, image1321, "image1321"); GLADE_HOOKUP_OBJECT (window1, menu_reload_as1, "menu_reload_as1"); - GLADE_HOOKUP_OBJECT (window1, image1298, "image1298"); + GLADE_HOOKUP_OBJECT (window1, image1322, "image1322"); GLADE_HOOKUP_OBJECT (window1, menu_reload_as1_menu, "menu_reload_as1_menu"); GLADE_HOOKUP_OBJECT (window1, invisible7, "invisible7"); GLADE_HOOKUP_OBJECT (window1, separator21, "separator21"); @@ -1425,7 +1435,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, image1299, "image1299"); + GLADE_HOOKUP_OBJECT (window1, image1323, "image1323"); GLADE_HOOKUP_OBJECT (window1, menu_separatormenuitem1, "menu_separatormenuitem1"); GLADE_HOOKUP_OBJECT (window1, menu_quit1, "menu_quit1"); GLADE_HOOKUP_OBJECT (window1, edit1, "edit1"); @@ -1451,16 +1461,16 @@ 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, image1300, "image1300"); + GLADE_HOOKUP_OBJECT (window1, image1324, "image1324"); GLADE_HOOKUP_OBJECT (window1, menu_decrease_indent1, "menu_decrease_indent1"); - GLADE_HOOKUP_OBJECT (window1, image1301, "image1301"); + GLADE_HOOKUP_OBJECT (window1, image1325, "image1325"); GLADE_HOOKUP_OBJECT (window1, separator18, "separator18"); GLADE_HOOKUP_OBJECT (window1, insert_include2, "insert_include2"); - GLADE_HOOKUP_OBJECT (window1, image1302, "image1302"); + GLADE_HOOKUP_OBJECT (window1, image1326, "image1326"); 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, image1303, "image1303"); + GLADE_HOOKUP_OBJECT (window1, image1327, "image1327"); 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"); @@ -1479,16 +1489,16 @@ 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, image1304, "image1304"); + GLADE_HOOKUP_OBJECT (window1, image1328, "image1328"); GLADE_HOOKUP_OBJECT (window1, separator33, "separator33"); 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, image1305, "image1305"); + GLADE_HOOKUP_OBJECT (window1, image1329, "image1329"); 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, image1306, "image1306"); + GLADE_HOOKUP_OBJECT (window1, image1330, "image1330"); 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"); @@ -1529,8 +1539,9 @@ 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, image1307, "image1307"); + GLADE_HOOKUP_OBJECT (window1, image1331, "image1331"); 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"); GLADE_HOOKUP_OBJECT (window1, menu_item5_menu, "menu_item5_menu"); GLADE_HOOKUP_OBJECT (window1, help1, "help1");
Modified: trunk/src/keybindings.c =================================================================== --- trunk/src/keybindings.c 2006-12-12 21:52:48 UTC (rev 1087) +++ trunk/src/keybindings.c 2006-12-13 00:46:14 UTC (rev 1088) @@ -75,6 +75,7 @@ static void cb_func_menu_replacetabs(guint key_id); static void cb_func_menu_foldall(guint key_id); static void cb_func_menu_unfoldall(guint key_id); +static void cb_func_menu_insert_specialchars(guint key_id); static void cb_func_build_action(guint key_id); static void cb_func_reloadtaglist(guint key_id); static void cb_func_switch_editor(guint key_id); @@ -159,6 +160,8 @@ 0, 0, "menu_foldall", _("Fold all")); keys[GEANY_KEYS_MENU_UNFOLDALL] = fill(cb_func_menu_unfoldall, 0, 0, "menu_unfoldall", _("Unfold all")); + keys[GEANY_KEYS_MENU_INSERTSPECIALCHARS] = fill(cb_func_menu_insert_specialchars, + 0, 0, "menu_insert_specialchars", _("Insert Special HTML Characters")); keys[GEANY_KEYS_BUILD_COMPILE] = fill(cb_func_build_action, GDK_F8, 0, "build_compile", _("Compile")); keys[GEANY_KEYS_BUILD_LINK] = fill(cb_func_build_action, @@ -298,6 +301,7 @@ GEANY_ADD_ACCEL(GEANY_KEYS_MENU_REPLACETABS, menu_replace_tabs); GEANY_ADD_ACCEL(GEANY_KEYS_MENU_FOLDALL, menu_fold_all1); GEANY_ADD_ACCEL(GEANY_KEYS_MENU_UNFOLDALL, menu_unfold_all1); + GEANY_ADD_ACCEL(GEANY_KEYS_MENU_INSERTSPECIALCHARS, menu_insert_special_chars1); GEANY_ADD_ACCEL(GEANY_KEYS_EDIT_TOLOWERCASE, menu_to_lower_case2); GEANY_ADD_ACCEL(GEANY_KEYS_EDIT_TOUPPERCASE, menu_to_upper_case2); GEANY_ADD_ACCEL(GEANY_KEYS_EDIT_COMMENTLINE, menu_comment_line1); @@ -819,3 +823,8 @@ { gtk_menu_item_activate(GTK_MENU_ITEM(lookup_widget(app->popup_menu, "insert_date_custom2"))); } + +static void cb_func_menu_insert_specialchars(G_GNUC_UNUSED guint key_id) +{ + on_menu_insert_special_chars1_activate(NULL, NULL); +}
Modified: trunk/src/keybindings.h =================================================================== --- trunk/src/keybindings.h 2006-12-12 21:52:48 UTC (rev 1087) +++ trunk/src/keybindings.h 2006-12-13 00:46:14 UTC (rev 1088) @@ -71,6 +71,7 @@ GEANY_KEYS_MENU_REPLACETABS, GEANY_KEYS_MENU_FOLDALL, GEANY_KEYS_MENU_UNFOLDALL, + GEANY_KEYS_MENU_INSERTSPECIALCHARS, GEANY_KEYS_BUILD_COMPILE, GEANY_KEYS_BUILD_LINK, GEANY_KEYS_BUILD_MAKE,
Modified: trunk/src/makefile.win32 =================================================================== --- trunk/src/makefile.win32 2006-12-12 21:52:48 UTC (rev 1087) +++ trunk/src/makefile.win32 2006-12-13 00:46:14 UTC (rev 1088) @@ -47,7 +47,7 @@ OBJS = treeviews.o templates.o encodings.o about.o prefs.o win32.o build.o msgwindow.o dialogs.o \ filetypes.o interface.o main.o support.o callbacks.o utils.o ui_utils.o socket.o \ highlighting.o sci_cb.o document.o sciwrappers.o keyfile.o keybindings.o search.o notebook.o \ - symbols.o + symbols.o tools.o
.c.o: $(CC) $(CCFLAGS) -c $<
Added: trunk/src/tools.c =================================================================== --- trunk/src/tools.c (rev 0) +++ trunk/src/tools.c 2006-12-13 00:46:14 UTC (rev 1088) @@ -0,0 +1,321 @@ +/* + * tools.c - this file is part of Geany, a fast and lightweight IDE + * + * Copyright 2006 Enrico Troeger enrico.troeger@uvena.de + * Copyright 2006 Nick Treleaven nick.treleaven@btinternet.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * $Id$ + */ + +#include "geany.h" + +#include "support.h" +#include "document.h" +#include "sciwrappers.h" +#include "ui_utils.h" + +enum +{ + COLUMN_CHARACTER, + COLUMN_HTML_NAME, + N_COLUMNS +}; + +static GtkWidget *special_characters_dialog = NULL; +static GtkTreeStore *special_characters_store = NULL; +static GtkTreeView *special_characters_tree = NULL; + +static void on_tools_show_dialog_insert_special_chars_response + (GtkDialog *dialog, gint response, gpointer user_data); +static void on_special_characters_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); + + + +void tools_show_dialog_insert_special_chars() +{ + if (special_characters_dialog == NULL) + { + gint height; + GtkCellRenderer *renderer; + GtkTreeViewColumn *column; + GtkWidget *swin, *vbox, *label; + + special_characters_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)); + 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); + + 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()); + //g_object_set(tree, "vertical-separator", 6, NULL); + + 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)); + + 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); + + 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); + + 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_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) special_characters_dialog, "response", + G_CALLBACK(on_tools_show_dialog_insert_special_chars_response), NULL); + + special_characters_fill_store(special_characters_store); + + gtk_tree_view_expand_all(special_characters_tree); + } + gtk_widget_show_all(special_characters_dialog); +} + + +// fill the tree model with data +static void special_characters_fill_store(GtkTreeStore *store) +{ + GtkTreeIter iter; + GtkTreeIter *parent_iter = NULL; + guint i; + + gchar *chars[][2] = + { + { N_("HTML characters"), NULL }, + { """, """ }, + { "&", "&" }, + { "<", "<" }, + { ">", ">" }, + + { N_("ISO 8859-1 characters"), NULL }, + { " ", " " }, + { "¡", "¡" }, + { "¢", "¢" }, + { "£", "£" }, + { "¤", "¤" }, + { "¥", "¥" }, + { "¦", "¦" }, + { "§", "§" }, + { "¨", "¨" }, + { "©", "©" }, + { "®", "®" }, + { "«", "«" }, + { "»", "»" }, + { "¬", "¬" }, + { " ", "­" }, + { "¯", "¯" }, + { "°", "°" }, + { "±", "±" }, + { "¹", "¹" }, + { "²", "²" }, + { "³", "³" }, + { "¼", "¼" }, + { "½", "½" }, + { "¾", "¾" }, + { "×", "×" }, + { "÷", "÷" }, + { "´", "´" }, + { "µ", "µ" }, + { "¶", "¶" }, + { "·", "·" }, + { "¸", "¸" }, + { "ª", "ª" }, + { "º", "º" }, + { "¿", "¿" }, + { "À", "À" }, + { "Á", "Á" }, + { "Â", "Â" }, + { "Ã", "Ã" }, + { "Ä", "Ä" }, + { "Å", "Å" }, + { "Æ", "Æ" }, + { "Ç", "Ç" }, + { "È", "È" }, + { "É", "É" }, + { "Ê", "Ê" }, + { "Ë", "Ë" }, + { "Ì", "Ì" }, + { "Í", "Í" }, + { "Î", "Î" }, + { "Ï", "Ï" }, + { "Ð", "Ð" }, + { "Ñ", "Ñ" }, + { "Ò", "Ò" }, + { "Ó", "Ó" }, + { "Ô", "Ô" }, + { "Õ", "Õ" }, + { "Ö", "Ö" }, + { "Ø", "Ø" }, + { "Ù", "Ù" }, + { "Ú", "Ú" }, + { "Û", "Û" }, + { "Ü", "Ü" }, + { "Ý", "Ý" }, + { "Þ", "Þ" }, + { "ß", "ß" }, + { "à", "à" }, + { "á", "á" }, + { "â", "â" }, + { "ã", "ã" }, + { "ä", "ä" }, + { "å", "å" }, + { "æ", "æ" }, + { "ç", "ç" }, + { "è", "è" }, + { "é", "é" }, + { "ê", "ê" }, + { "ë", "ë" }, + { "ì", "ì" }, + { "í", "í" }, + { "î", "î" }, + { "ï", "ï" }, + { "ð", "ð" }, + { "ñ", "ñ" }, + { "ò", "ò" }, + { "ó", "ó" }, + { "ô", "ô" }, + { "õ", "õ" }, + { "ö", "ö" }, + { "ø", "ø" }, + { "ù", "ù" }, + { "ú", "ú" }, + { "û", "û" }, + { "ü", "ü" }, + { "ý", "ý" }, + { "þ", "þ" }, + { "ÿ", "ÿ" }, + /// TODO add the symbols from http://de.selfhtml.org/html/referenz/zeichen.htm + { N_("Greek characters"), NULL }, + { N_("Mathematical characters"), NULL }, + { N_("Technical characters"), NULL }, + { N_("Arrow characters"), NULL }, + { N_("Punctuation characters"), NULL }, + { N_("Miscellaneous characters"), NULL } + }; + + for (i = 0; i < G_N_ELEMENTS(chars); i++) + { + if (chars[i][1] == NULL) + { // add a category + gtk_tree_store_append(store, &iter, NULL); + gtk_tree_store_set(store, &iter, COLUMN_CHARACTER, chars[i][0], -1); + if (parent_iter != NULL) gtk_tree_iter_free(parent_iter); + parent_iter = gtk_tree_iter_copy(&iter); + } + else + { // add child to parent_iter + gtk_tree_store_append(store, &iter, parent_iter); + gtk_tree_store_set(store, &iter, COLUMN_CHARACTER, chars[i][0], + COLUMN_HTML_NAME, chars[i][1], -1); + } + } +} + + +/* 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) +{ + gint idx = document_get_cur_idx(); + gboolean result = FALSE; + + if (DOC_IDX_VALID(idx)) + { + gchar *str; + gint pos = sci_get_current_position(doc_list[idx].sci); + + gtk_tree_model_get(model, iter, COLUMN_HTML_NAME, &str, -1); + if (str && *str) + { + sci_insert_text(doc_list[idx].sci, pos, str); + g_free(str); + result = TRUE; + } + } + return result; +} + + +static void on_tools_show_dialog_insert_special_chars_response(GtkDialog *dialog, gint response, + gpointer user_data) +{ + if (response == GTK_RESPONSE_OK) + { + GtkTreeSelection *selection; + GtkTreeModel *model; + GtkTreeIter iter; + + selection = gtk_tree_view_get_selection(special_characters_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)) + gtk_widget_hide(GTK_WIDGET(dialog)); + } + } + else + gtk_widget_hide(GTK_WIDGET(dialog)); +} + + +static void on_special_characters_tree_row_activated(GtkTreeView *treeview, GtkTreePath *path, + GtkTreeViewColumn *col, gpointer user_data) +{ + GtkTreeIter iter; + GtkTreeModel *model = GTK_TREE_MODEL(special_characters_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); + else + { // double click on a category to toggle the expand or collapse it + /// TODO + } + + } +}
Added: trunk/src/tools.h =================================================================== --- trunk/src/tools.h (rev 0) +++ trunk/src/tools.h 2006-12-13 00:46:14 UTC (rev 1088) @@ -0,0 +1,30 @@ +/* + * tools.h - this file is part of Geany, a fast and lightweight IDE + * + * Copyright 2006 Enrico Troeger enrico.troeger@uvena.de + * Copyright 2006 Nick Treleaven nick.treleaven@btinternet.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id$ + */ + + +#ifndef GEANY_TOOLS_H +#define GEANY_TOOLS_H 1 + +void tools_show_dialog_insert_special_chars(); + +#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.