Renamed Editor.py to editor.py
author"German Poo-Caaman~o <gpoo@gnome.org>"
Wed, 03 Jan 2007 18:06:01 -0300
changeset 22 d8bd72d64c59
parent 21 c0faaa069012
child 23 0be44651edf4
Renamed Editor.py to editor.py
blogic/Editor.py
blogic/app.py
blogic/editor.py
--- a/blogic/Editor.py	Wed Jan 03 17:18:48 2007 -0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,196 +0,0 @@
-#!/usr/bin/env python
-#
-# blogic - Tool for blog's messages publishing
-# Copyright (C) 2006  German Poo-Caaman~o <gpoo@ubiobio.cl>
-#
-# 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.
-
-import pygtk
-pygtk.require('2.0')
-
-import gtk
-import gobject
-import gtkspell
-from gettext import bindtextdomain, textdomain
-from gettext import gettext as _
-
-class Editor(gtk.TextBuffer):
-	__gsignals__ = {
-		'title-changed' : (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
-		                   (str,str,)),
-		'body-changed' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE,
-                      (str, gobject.TYPE_OBJECT,))
-	}
-
-	supported_tags = {
-			'para':   ['<p>', '</p>'],
-			'bold':   ['<b>', '</b>'],
-			'italic': ['<i>', '</i>'],
-			'right':  ['<div align="right">', '</div>'],
-			'left':   ['<div align="left">', '</div>'],
-			'center': ['<div align="center">', '</div>'],
-			'strike': ['<span style="text-decoration: line-through;">',
-					   '</span>'],
-			'underline':  ['<span style="text-decoration: underline;">',
-						 '</span>'],
-			'blockquote': ['<blockquote>', '</blockquote>'],
-		}
-
-	def __init__(self, *args):
-		gtk.TextBuffer.__init__(self)
-		self._create_tags()
-
-		self.connect("modified-changed", self._on_modified_changed)
-		self.connect('title-changed', self._on_title_changed)
-		self.connect('body-changed', self._on_body_changed)
-		self.title = ''
-		self.title_modified = False
-		self.body_modified = False
-
-	def insert_tag(self, widget, tag):
-		try:
-			tag_start, tag_end = self.supported_tags[tag]
-		except:
-			raise _('Unsupported tag %s') % tag
-
-		selection = self.get_selection_bound()
-		insertion = self.get_insert()
-	
-		self.begin_user_action()
-		try:
-			start, end = self.get_selection_bounds()
-			text = self.get_text(start, end)
-			new_text = tag_start + text + tag_end
-			self.delete(start, end)
-			self.insert(start, new_text, -1)
-		except:
-			self.insert_at_cursor(tag_start + tag_end, -1)
-			end = self.get_iter_at_mark(selection)
-			end.backward_chars(len(tag_end))
-		self.end_user_action()
-
-	def _on_title_changed(self, title, buffer, *args):
-		self.title_modified = False
-
-	def _on_body_changed(self, body, buffer, *args):
-		self.body_modified = False
-
-	def _on_modified_changed(self, buffer):
-		title = self.get_title()
-
-		if self.get_modified():
-			if title != self.title:
-				self.title_modified = True
-				self.title = title
-				self.emit('title-changed', title, buffer)
-			else:
-				self.body_modified = True
-				self.emit('body-changed', None, None)
-
-		self.set_modified(False)
-
-	def _create_tags(self):
-		import pango
-		self.create_tag('heading', weight=pango.WEIGHT_BOLD,
-		                size=10 * pango.SCALE,
-		                pixels_below_lines=8)
-
-	def clear(self):
-		start, end = self.get_bounds()
-		self.delete(start, end)
-		self.title_modified = False
-		self.body_modified = False
-		self.set_modified(False)
-
-	def set_title(self, title=''):
-		line_start = self.get_start_iter()
-		line_end = line_start.copy()
-		line_end.forward_to_line_end()
-
-		title = title + '\n'
-		self.begin_user_action()
-		self.delete(line_start, line_end)
-		self.insert_with_tags_by_name(line_start, title, 'heading')
-		self.end_user_action()
-
-	def get_title(self):
-		line_start = self.get_start_iter()
-		line_end = line_start.copy()
-		line_end.forward_to_line_end()
-
-		return self.get_text(line_start, line_end)
-
-	def set_body(self, body):
-		if self.get_line_count() > 1:
-			start = self.get_iter_at_line(1)
-			end = self.get_end_iter()
-			self.delete(start, end)
-		else:
-			start, end = self.get_bounds()
-			self.delete(start, end)
-			self.set_title(_('Untitled post\n') )
-			start = self.get_end_iter()
-
-		self.begin_user_action()
-		self.insert(start, body)
-		self.end_user_action()
-
-	def get_body(self):
-		if self.get_line_count() > 1:
-			start = self.get_iter_at_line(1)
-			end = self.get_end_iter()
-			body = self.get_text(start, end)
-		else:
-			body = ''
-		
-		return body
-
-if __name__ == "__main__":
-	def title_changed(view, text, buffer, window, *args):
-		window.set_title(view.get_title())
-
-	def body_changed(view, text, buffer, window, *args):
-		print view.get_body()
-
-	def create_window():
-		window = gtk.Window(gtk.WINDOW_TOPLEVEL)
-		window.set_border_width(0)
-		window.set_title('Test')
-
-		buffer = Editor()
-		buffer.connect('title-changed', title_changed, window)
-		buffer.connect('body-changed', body_changed, window)
-		view = gtk.TextView(buffer)
-
-		window.connect('delete-event', gtk.main_quit, None)
-
-		vbox = gtk.VBox(0, False)
-		scroll = gtk.ScrolledWindow()
-
-		window.add(vbox)
-		vbox.pack_start(scroll, True, True, 0)
-		scroll.add(view)
-
-		#view.set_title('This is a title')
-		buffer.set_body('This is a body\nline2\nline3\nline4')
-
-		return window
-
-	window = create_window()
-	window.set_default_size(500,500)
-	window.show_all()
-
-	gtk.main()
-
--- a/blogic/app.py	Wed Jan 03 17:18:48 2007 -0300
+++ b/blogic/app.py	Wed Jan 03 18:06:01 2007 -0300
@@ -41,7 +41,7 @@
                            HOME_DIR, NOTEBOOK_PREVIEW
 from HIG import HIGAlert
 from HtmlPreview import HtmlPreview
-from Editor import Editor
+from editor import Editor
 
 import BlogEngine
 from BlogBase import BlogData
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/blogic/editor.py	Wed Jan 03 18:06:01 2007 -0300
@@ -0,0 +1,196 @@
+#!/usr/bin/env python
+#
+# blogic - Tool for blog's messages publishing
+# Copyright (C) 2006  German Poo-Caaman~o <gpoo@ubiobio.cl>
+#
+# 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.
+
+import pygtk
+pygtk.require('2.0')
+
+import gtk
+import gobject
+import gtkspell
+from gettext import bindtextdomain, textdomain
+from gettext import gettext as _
+
+class Editor(gtk.TextBuffer):
+	__gsignals__ = {
+		'title-changed' : (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
+		                   (str,str,)),
+		'body-changed' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE,
+                      (str, gobject.TYPE_OBJECT,))
+	}
+
+	supported_tags = {
+			'para':   ['<p>', '</p>'],
+			'bold':   ['<b>', '</b>'],
+			'italic': ['<i>', '</i>'],
+			'right':  ['<div align="right">', '</div>'],
+			'left':   ['<div align="left">', '</div>'],
+			'center': ['<div align="center">', '</div>'],
+			'strike': ['<span style="text-decoration: line-through;">',
+					   '</span>'],
+			'underline':  ['<span style="text-decoration: underline;">',
+						 '</span>'],
+			'blockquote': ['<blockquote>', '</blockquote>'],
+		}
+
+	def __init__(self, *args):
+		gtk.TextBuffer.__init__(self)
+		self._create_tags()
+
+		self.connect("modified-changed", self._on_modified_changed)
+		self.connect('title-changed', self._on_title_changed)
+		self.connect('body-changed', self._on_body_changed)
+		self.title = ''
+		self.title_modified = False
+		self.body_modified = False
+
+	def insert_tag(self, widget, tag):
+		try:
+			tag_start, tag_end = self.supported_tags[tag]
+		except:
+			raise _('Unsupported tag %s') % tag
+
+		selection = self.get_selection_bound()
+		insertion = self.get_insert()
+	
+		self.begin_user_action()
+		try:
+			start, end = self.get_selection_bounds()
+			text = self.get_text(start, end)
+			new_text = tag_start + text + tag_end
+			self.delete(start, end)
+			self.insert(start, new_text, -1)
+		except:
+			self.insert_at_cursor(tag_start + tag_end, -1)
+			end = self.get_iter_at_mark(selection)
+			end.backward_chars(len(tag_end))
+		self.end_user_action()
+
+	def _on_title_changed(self, title, buffer, *args):
+		self.title_modified = False
+
+	def _on_body_changed(self, body, buffer, *args):
+		self.body_modified = False
+
+	def _on_modified_changed(self, buffer):
+		title = self.get_title()
+
+		if self.get_modified():
+			if title != self.title:
+				self.title_modified = True
+				self.title = title
+				self.emit('title-changed', title, buffer)
+			else:
+				self.body_modified = True
+				self.emit('body-changed', None, None)
+
+		self.set_modified(False)
+
+	def _create_tags(self):
+		import pango
+		self.create_tag('heading', weight=pango.WEIGHT_BOLD,
+		                size=10 * pango.SCALE,
+		                pixels_below_lines=8)
+
+	def clear(self):
+		start, end = self.get_bounds()
+		self.delete(start, end)
+		self.title_modified = False
+		self.body_modified = False
+		self.set_modified(False)
+
+	def set_title(self, title=''):
+		line_start = self.get_start_iter()
+		line_end = line_start.copy()
+		line_end.forward_to_line_end()
+
+		title = title + '\n'
+		self.begin_user_action()
+		self.delete(line_start, line_end)
+		self.insert_with_tags_by_name(line_start, title, 'heading')
+		self.end_user_action()
+
+	def get_title(self):
+		line_start = self.get_start_iter()
+		line_end = line_start.copy()
+		line_end.forward_to_line_end()
+
+		return self.get_text(line_start, line_end)
+
+	def set_body(self, body):
+		if self.get_line_count() > 1:
+			start = self.get_iter_at_line(1)
+			end = self.get_end_iter()
+			self.delete(start, end)
+		else:
+			start, end = self.get_bounds()
+			self.delete(start, end)
+			self.set_title(_('Untitled post\n') )
+			start = self.get_end_iter()
+
+		self.begin_user_action()
+		self.insert(start, body)
+		self.end_user_action()
+
+	def get_body(self):
+		if self.get_line_count() > 1:
+			start = self.get_iter_at_line(1)
+			end = self.get_end_iter()
+			body = self.get_text(start, end)
+		else:
+			body = ''
+		
+		return body
+
+if __name__ == "__main__":
+	def title_changed(view, text, buffer, window, *args):
+		window.set_title(view.get_title())
+
+	def body_changed(view, text, buffer, window, *args):
+		print view.get_body()
+
+	def create_window():
+		window = gtk.Window(gtk.WINDOW_TOPLEVEL)
+		window.set_border_width(0)
+		window.set_title('Test')
+
+		buffer = Editor()
+		buffer.connect('title-changed', title_changed, window)
+		buffer.connect('body-changed', body_changed, window)
+		view = gtk.TextView(buffer)
+
+		window.connect('delete-event', gtk.main_quit, None)
+
+		vbox = gtk.VBox(0, False)
+		scroll = gtk.ScrolledWindow()
+
+		window.add(vbox)
+		vbox.pack_start(scroll, True, True, 0)
+		scroll.add(view)
+
+		#view.set_title('This is a title')
+		buffer.set_body('This is a body\nline2\nline3\nline4')
+
+		return window
+
+	window = create_window()
+	window.set_default_size(500,500)
+	window.show_all()
+
+	gtk.main()
+