diff -r 39f777341db4 -r 3a41b351b122 pgconsole/editor.py --- a/pgconsole/editor.py Thu Mar 07 18:26:52 2013 +0100 +++ b/pgconsole/editor.py Sun Mar 10 16:14:53 2013 +0100 @@ -1,88 +1,90 @@ -import gtk, pango -import gtksourceview2 as gtksourceview +from gi.repository import Gtk +from gi.repository import Pango +from gi.repository import GtkSource + from lxml import etree -from panedext import HPanedExt -from config import cfg +from pgconsole.panedext import HPanedExt +from pgconsole.config import cfg class Editor(HPanedExt): def __init__(self): super(Editor, self).__init__() - self.view = gtksourceview.View() + self.view = GtkSource.View() self.view.connect('toggle-overwrite', self.on_toggle_overwrite) - vbox = gtk.VBox() + vbox = Gtk.VBox() self.vbox1 = vbox self.add1(vbox) - sw = gtk.ScrolledWindow() - sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) - sw.set_shadow_type(gtk.SHADOW_IN) - vbox.pack_start(sw) - tree = gtk.TreeView() + sw = Gtk.ScrolledWindow() + sw.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC) + sw.set_shadow_type(Gtk.ShadowType.IN) + vbox.pack_start(sw, expand=True, fill=True, padding=0) + tree = Gtk.TreeView() tree.set_headers_visible(False) - tree.get_selection().set_mode(gtk.SELECTION_BROWSE) + tree.get_selection().set_mode(Gtk.SelectionMode.BROWSE) sw.add(tree) - model = gtk.ListStore(str, str, object, bool) # title, filename, buffer, modified + model = Gtk.ListStore(str, str, object, bool) # title, filename, buffer, modified tree.set_model(model) - cell = gtk.CellRendererPixbuf() - cell.set_property('stock-id', gtk.STOCK_SAVE) - column = gtk.TreeViewColumn("File", cell, visible=3) + cell = Gtk.CellRendererPixbuf() + cell.set_property('stock-id', Gtk.STOCK_SAVE) + column = Gtk.TreeViewColumn("File", cell, visible=3) tree.append_column(column) - column = gtk.TreeViewColumn("File", gtk.CellRendererText(), text=0) + column = Gtk.TreeViewColumn("File", Gtk.CellRendererText(), text=0) tree.append_column(column) tree.get_selection().connect('changed', self.item_change) tree.set_property('can-focus', False) self.filelist = tree - hbox = gtk.HBox() + hbox = Gtk.HBox() - img = gtk.Image() - img.set_from_stock(gtk.STOCK_NEW, gtk.ICON_SIZE_SMALL_TOOLBAR) - btn = gtk.Button() - btn.set_relief(gtk.RELIEF_NONE) + img = Gtk.Image() + img.set_from_stock(Gtk.STOCK_NEW, Gtk.IconSize.SMALL_TOOLBAR) + btn = Gtk.Button() + btn.set_relief(Gtk.ReliefStyle.NONE) btn.set_focus_on_click(False) btn.set_image(img) btn.connect('clicked', self.item_new) - hbox.pack_start(btn, expand=False) + hbox.pack_start(btn, expand=False, fill=True, padding=0) - img = gtk.Image() - img.set_from_stock(gtk.STOCK_OPEN, gtk.ICON_SIZE_SMALL_TOOLBAR) - btn = gtk.Button() - btn.set_relief(gtk.RELIEF_NONE) + img = Gtk.Image() + img.set_from_stock(Gtk.STOCK_OPEN, Gtk.IconSize.SMALL_TOOLBAR) + btn = Gtk.Button() + btn.set_relief(Gtk.ReliefStyle.NONE) btn.set_focus_on_click(False) btn.set_image(img) btn.connect('clicked', self.item_open) - hbox.pack_start(btn, expand=False) + hbox.pack_start(btn, expand=False, fill=True, padding=0) - img = gtk.Image() - img.set_from_stock(gtk.STOCK_CLOSE, gtk.ICON_SIZE_SMALL_TOOLBAR) - btn = gtk.Button() - btn.set_relief(gtk.RELIEF_NONE) + img = Gtk.Image() + img.set_from_stock(Gtk.STOCK_CLOSE, Gtk.IconSize.SMALL_TOOLBAR) + btn = Gtk.Button() + btn.set_relief(Gtk.ReliefStyle.NONE) btn.set_focus_on_click(False) btn.set_image(img) btn.connect('clicked', self.item_close) - hbox.pack_start(btn, expand=False) - hbox.connect('size-request', self.leftbuttons_size_request) + hbox.pack_start(btn, expand=False, fill=True, padding=0) + hbox.connect('size-allocate', self.leftbuttons_size_request) - vbox.pack_start(hbox, expand=False) + vbox.pack_start(hbox, expand=False, fill=True, padding=0) - vbox = gtk.VBox() + vbox = Gtk.VBox() vbox.set_property("width-request", 200) self.add2(vbox) self.child_set_property(vbox, 'shrink', False) # scroll - sw = gtk.ScrolledWindow() - sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) - sw.set_shadow_type(gtk.SHADOW_ETCHED_IN) + sw = Gtk.ScrolledWindow() + sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) + sw.set_shadow_type(Gtk.ShadowType.ETCHED_IN) sw.add(self.view) - vbox.pack_start(sw) + vbox.pack_start(sw, expand=True, fill=True, padding=0) self.view.set_show_line_numbers(True) @@ -92,76 +94,76 @@ self.view.set_auto_indent(True) # font - font_desc = pango.FontDescription('monospace') + font_desc = Pango.FontDescription('monospace') if font_desc: self.view.modify_font(font_desc) # status bar - hbox = gtk.HBox() + hbox = Gtk.HBox() self.st_file, fr1 = self.construct_status('SQL snippet') - self.st_file.set_ellipsize(pango.ELLIPSIZE_START) + self.st_file.set_ellipsize(Pango.EllipsizeMode.START) self.st_insovr, fr2 = self.construct_status('INS') self.st_linecol, fr3 = self.construct_status('Line: 0 Col: 0') - img = gtk.Image() - img.set_from_stock(gtk.STOCK_SAVE, gtk.ICON_SIZE_SMALL_TOOLBAR) + img = Gtk.Image() + img.set_from_stock(Gtk.STOCK_SAVE, Gtk.IconSize.SMALL_TOOLBAR) #save = img - save = gtk.Button() - save.set_relief(gtk.RELIEF_NONE) + save = Gtk.Button() + save.set_relief(Gtk.ReliefStyle.NONE) save.set_focus_on_click(False) save.set_image(img) save.connect('clicked', self.item_save) - hbox.pack_start(save, expand=False) + hbox.pack_start(save, expand=False, fill=True, padding=0) - hbox.pack_start(fr1, expand=True) - hbox.pack_start(fr2, expand=False) - hbox.pack_start(fr3, expand=False) + hbox.pack_start(fr1, expand=True, fill=True, padding=0) + hbox.pack_start(fr2, expand=False, fill=True, padding=0) + hbox.pack_start(fr3, expand=False, fill=True, padding=0) - #sep = gtk.HSeparator() + #sep = Gtk.HSeparator() #vbox.pack_start(sep, expand=False, fill=False, padding=0) - #align = gtk.Alignment() + #align = Gtk.Alignment() #align.set_property("bottom-padding", 3) #align.set_property("xscale", 1.0) #align.add(hbox) - #frame = gtk.Frame() + #frame = Gtk.Frame() #frame.add(hbox) - #frame.set_shadow_type(gtk.SHADOW_ETCHED_IN) - vbox.pack_start(hbox, expand=False, padding=0) + #frame.set_shadow_type(Gtk.SHADOW_ETCHED_IN) + vbox.pack_start(hbox, expand=False, fill=True, padding=0) self.load_nodes() self.build_context_menu() def build_context_menu(self): - menu = gtk.Menu() - item = gtk.ImageMenuItem(gtk.STOCK_SAVE, "Save") + menu = Gtk.Menu() + item = Gtk.ImageMenuItem(use_stock=True, label=Gtk.STOCK_SAVE) item.connect("activate", self.item_save) item.show() menu.append(item) - item = gtk.ImageMenuItem(gtk.STOCK_SAVE_AS, "Save as") + item = Gtk.ImageMenuItem(use_stock=True, label=Gtk.STOCK_SAVE_AS) item.connect("activate", self.item_save_as) item.show() menu.append(item) - item = gtk.ImageMenuItem(gtk.STOCK_CLOSE, "Close") + item = Gtk.ImageMenuItem(use_stock=True, label=Gtk.STOCK_CLOSE) item.connect("activate", self.item_close) item.show() menu.append(item) - item = gtk.SeparatorMenuItem() + item = Gtk.SeparatorMenuItem() item.show() menu.append(item) - item = gtk.ImageMenuItem(gtk.STOCK_GO_UP, "Move up") + item = Gtk.ImageMenuItem(use_stock=True, label=Gtk.STOCK_GO_UP) item.show() menu.append(item) - item = gtk.ImageMenuItem(gtk.STOCK_GO_DOWN, "Move down") + item = Gtk.ImageMenuItem(use_stock=True, label=Gtk.STOCK_GO_DOWN) item.show() menu.append(item) @@ -179,24 +181,24 @@ path, col, cellx, celly = pathinfo self.filelist.grab_focus() self.filelist.set_cursor(path, col, 0) - self.filelist_menu.popup(None, None, None, event.button, event.time) + self.filelist_menu.popup(None, None, None, None, event.button, event.time) return True def make_buffer(self): - buffer = gtksourceview.Buffer() + buffer = GtkSource.Buffer() buffer.connect('mark-set', self.buffer_mark_set) buffer.connect('changed', self.buffer_changed) # style - mgr = gtksourceview.style_scheme_manager_get_default() + mgr = GtkSource.StyleSchemeManager.get_default() style_scheme = mgr.get_scheme('kate') if style_scheme: buffer.set_style_scheme(style_scheme) # syntax - lngman = gtksourceview.language_manager_get_default() + lngman = GtkSource.LanguageManager.get_default() langsql = lngman.get_language('sql') buffer.set_language(langsql) buffer.set_highlight_syntax(True) @@ -216,7 +218,10 @@ buffer.set_text(node.text) if type == 'file': filename = node.text - content = open(filename).read() + try: + content = open(filename).read() + except IOError: + content = '' buffer.set_text(content) iter = model.append([name, filename, buffer, False]) if sel == name: @@ -240,12 +245,12 @@ def construct_status(self, text): - st = gtk.Label(text) + st = Gtk.Label(text) st.set_property("single-line-mode", True) st.set_property("xpad", 3) st.set_alignment(0.0, 0.5) - fr = gtk.Frame() - fr.set_shadow_type(gtk.SHADOW_ETCHED_OUT) + fr = Gtk.Frame() + fr.set_shadow_type(Gtk.ShadowType.ETCHED_OUT) fr.add(st) return st, fr @@ -319,23 +324,23 @@ def item_open(self, w): - dialog = gtk.FileChooserDialog(title='Open file', action=gtk.FILE_CHOOSER_ACTION_OPEN, - buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_OPEN,gtk.RESPONSE_OK)) - dialog.set_default_response(gtk.RESPONSE_OK) + dialog = Gtk.FileChooserDialog(title='Open file', action=Gtk.FileChooserAction.OPEN, + buttons=(Gtk.STOCK_CANCEL,Gtk.ResponseType.CANCEL,Gtk.STOCK_OPEN,Gtk.ResponseType.OK)) + dialog.set_default_response(Gtk.ResponseType.OK) dialog.set_select_multiple(True) - filter = gtk.FileFilter() + filter = Gtk.FileFilter() filter.set_name("SQL files") filter.add_pattern("*.sql") dialog.add_filter(filter) - filter = gtk.FileFilter() + filter = Gtk.FileFilter() filter.set_name("All files") filter.add_pattern("*") dialog.add_filter(filter) response = dialog.run() - if response == gtk.RESPONSE_OK: + if response == Gtk.ResponseType.OK: filenames = dialog.get_filenames() for fname in filenames: self.open_file(fname) @@ -393,24 +398,24 @@ path, file = filename.rsplit('/',1) - dialog = gtk.FileChooserDialog(title='Save as', action=gtk.FILE_CHOOSER_ACTION_SAVE, - buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_SAVE,gtk.RESPONSE_OK)) - dialog.set_default_response(gtk.RESPONSE_OK) + dialog = Gtk.FileChooserDialog(title='Save as', action=Gtk.FileChooserAction.SAVE, + buttons=(Gtk.STOCK_CANCEL,Gtk.ResponseType.CANCEL,Gtk.STOCK_SAVE,Gtk.ResponseType.OK)) + dialog.set_default_response(Gtk.ResponseType.OK) dialog.set_current_folder(path) dialog.set_current_name(file) - filter = gtk.FileFilter() + filter = Gtk.FileFilter() filter.set_name("SQL files") filter.add_pattern("*.sql") dialog.add_filter(filter) - filter = gtk.FileFilter() + filter = Gtk.FileFilter() filter.set_name("All files") filter.add_pattern("*") dialog.add_filter(filter) response = dialog.run() - if response == gtk.RESPONSE_OK: + if response == Gtk.ResponseType.OK: filename = dialog.get_filename() data = buffer.get_text(*buffer.get_bounds()) open(filename, 'w').write(data) @@ -430,8 +435,8 @@ return iter = model.get_iter(sel[0]) newiter = model.iter_next(iter) - if newiter is None and sel[0][0] > 0: - newiter = model.get_iter((sel[0][0]-1,)) + if newiter is None and sel[0].get_indices()[0] > 0: + newiter = model.get_iter((sel[0].get_indices()[0]-1,)) title, buffer = model.get(iter, 0, 2) #buffer.destroy() @@ -450,6 +455,6 @@ def leftbuttons_size_request(self, w, request): - self.set_snap1(request[0]) + self.set_snap1(request.width) return True