SF.net SVN: geany: [1088] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Wed Dec 13 00:46:14 UTC 2006


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 at 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 at uvena.de>
+ *      Copyright 2006 Nick Treleaven <nick.treleaven at 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 },
+			{ " ", " " },
+			{ "¡", "¡" },
+			{ "¢", "¢" },
+			{ "£", "£" },
+			{ "¤", "¤" },
+			{ "¥", "¥" },
+			{ "¦", "¦" },
+			{ "§", "§" },
+			{ "¨", "¨" },
+			{ "©", "©" },
+			{ "®", "®" },
+			{ "«", "«" },
+			{ "»", "»" },
+			{ "¬", "¬" },
+			{ " ", "­" },
+			{ "¯", "¯" },
+			{ "°", "°" },
+			{ "±", "±" },
+			{ "¹", "&sup1;" },
+			{ "²", "&sup2;" },
+			{ "³", "&sup3;" },
+			{ "¼", "&frac14;" },
+			{ "½", "&frac12;" },
+			{ "¾", "&frac34;" },
+			{ "×", "×" },
+			{ "÷", "÷" },
+			{ "´", "´" },
+			{ "µ", "µ" },
+			{ "¶", "¶" },
+			{ "·", "·" },
+			{ "¸", "¸" },
+			{ "ª", "ª" },
+			{ "º", "º" },
+			{ "¿", "¿" },
+			{ "À", "À" },
+			{ "Á", "Á" },
+			{ "Â", "Â" },
+			{ "Ã", "Ã" },
+			{ "Ä", "Ä" },
+			{ "Å", "Å" },
+			{ "Æ", "Æ" },
+			{ "Ç", "Ç" },
+			{ "È", "È" },
+			{ "É", "É" },
+			{ "Ê", "Ê" },
+			{ "Ë", "Ë" },
+			{ "Ì", "Ì" },
+			{ "Í", "Í" },
+			{ "Î", "Î" },
+			{ "Ï", "Ï" },
+			{ "Ð", "Ð" },
+			{ "Ñ", "Ñ" },
+			{ "Ò", "Ò" },
+			{ "Ó", "Ó" },
+			{ "Ô", "Ô" },
+			{ "Õ", "Õ" },
+			{ "Ö", "Ö" },
+			{ "Ø", "Ø" },
+			{ "Ù", "Ù" },
+			{ "Ú", "Ú" },
+			{ "Û", "Û" },
+			{ "Ü", "Ü" },
+			{ "Ý", "Ý" },
+			{ "Þ", "Þ" },
+			{ "ß", "ß" },
+			{ "à", "à" },
+			{ "á", "á" },
+			{ "â", "â" },
+			{ "ã", "ã" },
+			{ "ä", "ä" },
+			{ "å", "å" },
+			{ "æ", "æ" },
+			{ "ç", "ç" },
+			{ "è", "è" },
+			{ "é", "é" },
+			{ "ê", "ê" },
+			{ "ë", "ë" },
+			{ "ì", "ì" },
+			{ "í", "í" },
+			{ "î", "î" },
+			{ "ï", "ï" },
+			{ "ð", "ð" },
+			{ "ñ", "ñ" },
+			{ "ò", "ò" },
+			{ "ó", "ó" },
+			{ "ô", "ô" },
+			{ "õ", "õ" },
+			{ "ö", "ö" },
+			{ "ø", "ø" },
+			{ "ù", "ù" },
+			{ "ú", "ú" },
+			{ "û", "û" },
+			{ "ü", "ü" },
+			{ "ý", "ý" },
+			{ "þ", "þ" },
+			{ "ÿ", "ÿ" },
+			/// 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 at uvena.de>
+ *      Copyright 2006 Nick Treleaven <nick.treleaven at 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.



More information about the Commits mailing list