Viewing file: gtk-view.py (4.36 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# # Small example of the new GtkUIManager # # Johan Dahlin <johan@gnome.org>, 2004 # # Modified to add recent files and gnomevfs # Gustavo Carneiro <gjc@gnome.org>, 2004 #
import pygtk pygtk.require('2.0')
import gtk import egg.recent import gnomevfs
ui_string = """<ui> <menubar name='Menubar'> <menu action='FileMenu'> <menuitem action='New'/> <menuitem action='Open'/> <separator/> <menuitem action='Close'/> <menuitem action='Quit'/> </menu> <menu action='HelpMenu'> <menuitem action='About'/> </menu> </menubar> <toolbar name='Toolbar'> <toolitem action='New'/> <toolitem action='Open'/> <separator/> <toolitem action='Quit'/> </toolbar> </ui>"""
class Window(gtk.Window): def __init__(self): gtk.Window.__init__(self) self.set_position(gtk.WIN_POS_CENTER) self.set_title('GtkUIManager/RecentViewGtk test app') self.connect('delete-event', self.delete_event_cb) self.set_size_request(400, 200) vbox = gtk.VBox() self.add(vbox)
self.create_ui() vbox.pack_start(self.ui.get_widget('/Menubar'), expand=False) vbox.pack_start(self.ui.get_widget('/Toolbar'), expand=False)
sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) vbox.pack_start(sw)
textview = gtk.TextView() self.buffer = textview.get_buffer() sw.add(textview) status = gtk.Statusbar() vbox.pack_end(status, expand=False)
## Now the important stuff: add recent files model = egg.recent.RecentModel(egg.recent.RECENT_MODEL_SORT_MRU) open = self.ui.get_widget("/ui/Menubar/FileMenu/Open") self.recent = egg.recent.RecentViewGtk(open.parent, open) self.recent.set_model(model)
self.recent.connect("activate", self.recent_activate_cb)
def recent_activate_cb(self, rview, item): self.load_uri(item.get_uri())
def create_ui(self): ag = gtk.ActionGroup('WindowActions') actions = [ ('FileMenu', None, '_File'), ('New', gtk.STOCK_NEW, '_New', '<control>N', 'Create a new file', self.file_new_cb), ('Open', gtk.STOCK_OPEN, '_Open', '<control>O', 'Open a file', self.file_open_cb), ('Close', gtk.STOCK_CLOSE, '_Close', '<control>W', 'Close the current window', self.file_close_cb), ('Quit', gtk.STOCK_QUIT, '_Quit', '<control>Q', 'Quit application', self.file_quit_cb), ('HelpMenu', None, '_Help'), ('About', None, '_About', None, 'About application', self.help_about_cb), ] ag.add_actions(actions) self.ui = gtk.UIManager() self.ui.insert_action_group(ag, 0) self.ui.add_ui_from_string(ui_string) self.add_accel_group(self.ui.get_accel_group())
def file_new_cb(self, action): w = Window() w.show_all() gtk.main() def file_open_cb(self, action): dialog = gtk.FileChooserDialog("Open..", self, gtk.FILE_CHOOSER_ACTION_OPEN, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK)) dialog.set_default_response(gtk.RESPONSE_OK) dialog.set_local_only(False) filter = gtk.FileFilter() filter.set_name("All files") filter.add_pattern("*") dialog.add_filter(filter)
dialog.hide()
if dialog.run() == gtk.RESPONSE_OK: self.load_uri(dialog.get_uri())
dialog.destroy()
def load_uri(self, uri): self.buffer.set_text(gnomevfs.read_entire_file(uri)) self.recent.get_model().add(uri)
def file_close_cb(self, action): self.hide() gtk.main_quit()
def file_quit_cb(self, action): raise SystemExit
def help_about_cb(self, action): dialog = gtk.MessageDialog(self, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, "Small example of the new GtkUIManger") dialog.run() dialog.destroy()
def delete_event_cb(self, window, event): gtk.main_quit()
if __name__ == '__main__': w = Window() w.show_all() gtk.main()
|