Use of gtksourview to get syntax colored default tip
author"German Poo-Caaman~o <gpoo@gnome.org>"
Fri, 05 Jan 2007 16:04:44 -0300
changeset 26 c7a07408dd62
parent 25 df6f67f71534
Use of gtksourview to get syntax colored
blogic/app.py
blogic/editor.py
dialogs/blogic.glade
--- a/blogic/app.py	Thu Jan 04 01:05:39 2007 -0300
+++ b/blogic/app.py	Fri Jan 05 16:04:44 2007 -0300
@@ -26,6 +26,7 @@
 import os
 import cPickle
 import gtkspell
+import gtksourceview
 from gettext import bindtextdomain, textdomain
 from gettext import gettext as _
 from categories import CategoryDialog
@@ -89,6 +90,16 @@
 		
 		return scrollwindow
 
+	def create_custom_editor(self, str1, str2, int1, int2):
+		""" Create the widget to edit html in colors """
+		self.editor = Editor()
+		self.editor.connect("modified-changed", self.on_modified_changed)
+		self.textview = gtksourceview.SourceView(self.editor)
+		self.textview.set_show_margin(True)
+		self.textview.set_wrap_mode(gtk.WRAP_WORD)
+
+		return self.textview
+
 	def __init__(self):
 		self.blogs = {}
 		self.categories = {}
@@ -112,7 +123,6 @@
 	
 		self.main_window = self.gxml.get_widget('main_window')
 		
-		self.textview = self.gxml.get_widget('textview')
 		self.statusbar = self.gxml.get_widget('statusbar')
 		self.keywords = self.gxml.get_widget('keywords')
 		self.trackback = self.gxml.get_widget('trackback')
@@ -124,11 +134,6 @@
 		# Categories of Blogs
 		self.label_categories = self.gxml.get_widget('label_categories')
 
-		# Editor
-		self.editor = Editor()
-		self.editor.connect("modified-changed", self.on_modified_changed)
-		self.textview.set_buffer(self.editor)
-
 		self.home_dir = os.path.expanduser(HOME_DIR)
 		if not os.path.isdir(self.home_dir):
 			os.makedirs(self.home_dir)
--- a/blogic/editor.py	Thu Jan 04 01:05:39 2007 -0300
+++ b/blogic/editor.py	Fri Jan 05 16:04:44 2007 -0300
@@ -23,10 +23,11 @@
 import gtk
 import gobject
 import gtkspell
+import gtksourceview
 from gettext import bindtextdomain, textdomain
 from gettext import gettext as _
 
-class Editor(gtk.TextBuffer):
+class Editor(gtksourceview.SourceBuffer):
 	__gsignals__ = {
 		'title-changed' : (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
 		                   (str,str,)),
@@ -49,7 +50,16 @@
 		}
 
 	def __init__(self, *args):
-		gtk.TextBuffer.__init__(self)
+		gtksourceview.SourceBuffer.__init__(self)
+
+		lm = gtksourceview.SourceLanguagesManager()
+		self.set_data('languages-manager', lm)
+
+		language = lm.get_language_from_mime_type('text/html')
+		if language:
+			self.set_highlight(True)
+			self.set_language(language)
+
 		self._create_tags()
 
 		self.connect("modified-changed", self._on_modified_changed)
@@ -172,7 +182,7 @@
 		buffer = Editor()
 		buffer.connect('title-changed', title_changed, window)
 		buffer.connect('body-changed', body_changed, window)
-		view = gtk.TextView(buffer)
+		view = gtksourceview.SourceView(buffer)
 
 		window.connect('delete-event', gtk.main_quit, None)
 
--- a/dialogs/blogic.glade	Thu Jan 04 01:05:39 2007 -0300
+++ b/dialogs/blogic.glade	Fri Jan 05 16:04:44 2007 -0300
@@ -62,63 +62,24 @@
 		  <child>
 		    <widget class="GtkImageMenuItem" id="open_menu">
 		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">_Open Saved Post...</property>
-		      <property name="use_underline">True</property>
+		      <property name="stock_item">GNOMEUIINFO_MENU_OPEN_ITEM</property>
 		      <signal name="activate" handler="on_open_activate" last_modification_time="Mon, 12 Jul 2004 14:28:30 GMT"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image966">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-open</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>
 		    </widget>
 		  </child>
 
 		  <child>
 		    <widget class="GtkImageMenuItem" id="save_menu">
 		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">_Save Post</property>
-		      <property name="use_underline">True</property>
+		      <property name="stock_item">GNOMEUIINFO_MENU_SAVE_ITEM</property>
 		      <signal name="activate" handler="on_save_activate" last_modification_time="Mon, 12 Jul 2004 14:28:30 GMT"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image967">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-save</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>
 		    </widget>
 		  </child>
 
 		  <child>
 		    <widget class="GtkImageMenuItem" id="save_as_menu">
 		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">Save Post _As...</property>
-		      <property name="use_underline">True</property>
+		      <property name="stock_item">GNOMEUIINFO_MENU_SAVE_AS_ITEM</property>
 		      <signal name="activate" handler="on_save_as_activate" last_modification_time="Mon, 12 Jul 2004 14:28:30 GMT"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image968">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-save-as</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>
 		    </widget>
 		  </child>
 
@@ -200,7 +161,7 @@
 		      <signal name="activate" handler="on_insert_image_activate" last_modification_time="Thu, 15 Jun 2006 20:03:36 GMT"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image969">
+			<widget class="GtkImage" id="image993">
 			  <property name="visible">True</property>
 			  <property name="pixbuf">stock_insert-image.png</property>
 			  <property name="xalign">0.5</property>
@@ -220,7 +181,7 @@
 		      <signal name="activate" handler="on_insert_link_activate" last_modification_time="Thu, 15 Jun 2006 20:05:59 GMT"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image970">
+			<widget class="GtkImage" id="image994">
 			  <property name="visible">True</property>
 			  <property name="pixbuf">stock_link.png</property>
 			  <property name="xalign">0.5</property>
@@ -287,7 +248,7 @@
 		      <signal name="activate" handler="on_accounts_activate" last_modification_time="Fri, 26 Nov 2004 02:56:36 GMT"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image971">
+			<widget class="GtkImage" id="image995">
 			  <property name="visible">True</property>
 			  <property name="stock">gnome-stock-multiple-file</property>
 			  <property name="icon_size">1</property>
@@ -330,7 +291,7 @@
 		      <signal name="activate" handler="on_post_activate" last_modification_time="Wed, 04 Jan 2006 15:01:51 GMT"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image972">
+			<widget class="GtkImage" id="image996">
 			  <property name="visible">True</property>
 			  <property name="stock">gnome-stock-mail-fwd</property>
 			  <property name="icon_size">1</property>
@@ -351,7 +312,7 @@
 		      <signal name="activate" handler="on_post_draft_activate" last_modification_time="Wed, 04 Jan 2006 15:01:51 GMT"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image973">
+			<widget class="GtkImage" id="image997">
 			  <property name="visible">True</property>
 			  <property name="stock">gnome-stock-mail-new</property>
 			  <property name="icon_size">1</property>
@@ -430,7 +391,7 @@
 		      <signal name="activate" handler="on_bold_activate" last_modification_time="Thu, 15 Jun 2006 19:54:53 GMT"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image974">
+			<widget class="GtkImage" id="image998">
 			  <property name="visible">True</property>
 			  <property name="stock">gtk-bold</property>
 			  <property name="icon_size">1</property>
@@ -451,7 +412,7 @@
 		      <signal name="activate" handler="on_italic_activate" last_modification_time="Thu, 15 Jun 2006 19:54:53 GMT"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image975">
+			<widget class="GtkImage" id="image999">
 			  <property name="visible">True</property>
 			  <property name="stock">gtk-italic</property>
 			  <property name="icon_size">1</property>
@@ -472,7 +433,7 @@
 		      <signal name="activate" handler="on_underline_activate" last_modification_time="Thu, 15 Jun 2006 19:54:53 GMT"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image976">
+			<widget class="GtkImage" id="image1000">
 			  <property name="visible">True</property>
 			  <property name="stock">gtk-underline</property>
 			  <property name="icon_size">1</property>
@@ -493,7 +454,7 @@
 		      <signal name="activate" handler="on_strikethrough_activate" last_modification_time="Thu, 15 Jun 2006 20:00:41 GMT"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image977">
+			<widget class="GtkImage" id="image1001">
 			  <property name="visible">True</property>
 			  <property name="stock">gtk-strikethrough</property>
 			  <property name="icon_size">1</property>
@@ -520,7 +481,7 @@
 		      <signal name="activate" handler="on_align_left_activate" last_modification_time="Thu, 15 Jun 2006 20:00:41 GMT"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image978">
+			<widget class="GtkImage" id="image1002">
 			  <property name="visible">True</property>
 			  <property name="stock">gtk-justify-left</property>
 			  <property name="icon_size">1</property>
@@ -541,7 +502,7 @@
 		      <signal name="activate" handler="on_align_center_activate" last_modification_time="Thu, 15 Jun 2006 20:00:41 GMT"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image979">
+			<widget class="GtkImage" id="image1003">
 			  <property name="visible">True</property>
 			  <property name="stock">gtk-justify-center</property>
 			  <property name="icon_size">1</property>
@@ -562,7 +523,7 @@
 		      <signal name="activate" handler="on_align_right_activate" last_modification_time="Thu, 15 Jun 2006 20:00:41 GMT"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image980">
+			<widget class="GtkImage" id="image1004">
 			  <property name="visible">True</property>
 			  <property name="stock">gtk-justify-right</property>
 			  <property name="icon_size">1</property>
@@ -589,7 +550,7 @@
 		      <signal name="activate" handler="on_quotation_activate" last_modification_time="Thu, 15 Jun 2006 20:02:41 GMT"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image981">
+			<widget class="GtkImage" id="image1005">
 			  <property name="visible">True</property>
 			  <property name="stock">gtk-indent</property>
 			  <property name="icon_size">1</property>
@@ -892,24 +853,6 @@
 	  </child>
 
 	  <child>
-	    <widget class="GtkToolButton" id="strikethrough_button">
-	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Strikethrough</property>
-	      <property name="label" translatable="yes">Strikethrough</property>
-	      <property name="use_underline">True</property>
-	      <property name="stock_id">gtk-strikethrough</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">False</property>
-	      <signal name="clicked" handler="on_strikethrough_activate" last_modification_time="Thu, 15 Jun 2006 20:25:07 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
 	    <widget class="GtkSeparatorToolItem" id="separatortoolitem3">
 	      <property name="visible">True</property>
 	      <property name="draw">True</property>
@@ -1025,23 +968,21 @@
 			  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
 
 			  <child>
-			    <widget class="GtkTextView" id="textview">
+			    <widget class="GtkViewport" id="viewport1">
 			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="has_focus">True</property>
-			      <property name="editable">True</property>
-			      <property name="overwrite">False</property>
-			      <property name="accepts_tab">True</property>
-			      <property name="justification">GTK_JUSTIFY_LEFT</property>
-			      <property name="wrap_mode">GTK_WRAP_WORD</property>
-			      <property name="cursor_visible">True</property>
-			      <property name="pixels_above_lines">0</property>
-			      <property name="pixels_below_lines">0</property>
-			      <property name="pixels_inside_wrap">0</property>
-			      <property name="left_margin">0</property>
-			      <property name="right_margin">0</property>
-			      <property name="indent">0</property>
-			      <property name="text" translatable="yes"></property>
+			      <property name="shadow_type">GTK_SHADOW_IN</property>
+
+			      <child>
+				<widget class="Custom" id="custom2">
+				  <property name="visible">True</property>
+				  <property name="can_focus">True</property>
+				  <property name="has_focus">True</property>
+				  <property name="creation_function">create_custom_editor</property>
+				  <property name="int1">0</property>
+				  <property name="int2">0</property>
+				  <property name="last_modification_time">Fri, 05 Jan 2007 13:28:26 GMT</property>
+				</widget>
+			      </child>
 			    </widget>
 			  </child>
 			</widget>
@@ -1085,7 +1026,7 @@
 		      <child>
 			<widget class="GtkLabel" id="label_categories">
 			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">...</property>
+			  <property name="label" translatable="yes">&lt;i&gt;None&lt;/i&gt;</property>
 			  <property name="use_underline">False</property>
 			  <property name="use_markup">True</property>
 			  <property name="justify">GTK_JUSTIFY_LEFT</property>