rendered paste bodyimport gtk;import gtksourceview;import mimetypes;import sys;class editor : def __init__ ( self ) : self.window = gtk.Window ( gtk.WINDOW_TOPLEVEL ); self.window.connect("delete_event", self.delete_window ); self.window.set_title ( 'Simple Editor' ); self.window.resize ( 400, 400 ); self.vbox = gtk.VBox ( False, 1 ); self.vbox.set_border_width ( 0 ); self.window.add ( self.vbox ); self.vbox.show() ui_string = """ <ui> <menubar name="MenuBar"> <menu action="File"> <menuitem action="New"/> <menuitem action="Open"/> <menuitem action="Save"/> <menuitem action="Save As"/> <separator/> <menuitem action="Close"/> <menuitem action="Quit"/> </menu> <menu action="Edit"> <menuitem action="Undo"/> <menuitem action="Redo"/> <separator/> <menuitem action="Cut"/> <menuitem action="Copy"/> <menuitem action="Paste"/> <menuitem action="Delete"/> <separator/> <menuitem action="Select All"/> </menu> <menu action="Help"> <menuitem action="About"/> </menu> </menubar> <toolbar name="ToolBar"> <toolitem action="New"/> <toolitem action="Open"/> <toolitem action="Save"/> <toolitem action="Save As"/> <separator/> <toolitem action="Save Session"/> </toolbar> </ui> """ action_group = gtk.ActionGroup ( 'simpleeditor' ); action_group.add_actions ( [ ('File', None, '_File'), ('New', gtk.STOCK_NEW, '_New', None, 'Create a new file!', self.new_file), ('Open', gtk.STOCK_OPEN, '_Open', None, 'Open a file!', self.open_file), ('Save', gtk.STOCK_SAVE, '_Save', None, 'Save file!', self.poo), ('Save As', gtk.STOCK_SAVE_AS, 'Save As', None, 'Save file as...', self.poo), ('Execute', gtk.STOCK_EXECUTE, 'Execute', None, 'Execute', self.poo), ('Close', gtk.STOCK_CLOSE, '_Close', None, 'Close a tab!', self.poo), ('Quit', gtk.STOCK_QUIT, '_Quit', None, 'Quit!', self.poo), ('Save Session', gtk.STOCK_PASTE, 'Save Session', None, 'Save Session!', self.poo), ('Edit', None, '_Edit'), ('Undo', gtk.STOCK_UNDO, '_Undo', None, 'Undo', None), ('Redo', gtk.STOCK_REDO, '_Redo', None, 'Redo', None), ('Cut', gtk.STOCK_CUT, 'Cu_t', None, 'Cut', self.poo), ('Copy', gtk.STOCK_COPY, '_Copy', None, 'Copy', self.poo), ('Paste', gtk.STOCK_PASTE, '_Paste', None, 'Paste', self.poo), ('Delete', gtk.STOCK_DELETE, '_Delete', None, 'Delete', self.poo), ('Select All', None, 'Select _All', None, 'Select All', None), ('Help', None, '_Help'), ('About', gtk.STOCK_ABOUT, '_About', None, 'About', self.poo) ] ); uimanager = gtk.UIManager ( ); uimanager.insert_action_group ( action_group, 0 ); uimanager.add_ui_from_string ( ui_string ); accel_group = uimanager.get_accel_group ( ); self.window.add_accel_group ( accel_group ); self.menubar = uimanager.get_widget ( '/MenuBar' ); self.toolbar = uimanager.get_widget ( '/ToolBar' ); self.vbox.pack_start ( self.menubar, False ); self.vbox.pack_start ( self.toolbar, False ); self.notebook = gtk.Notebook ( ); self.notebook.set_tab_pos ( gtk.POS_TOP ); self.notebook.show ( ); source_buffer = self.create_buffer ( ); self.view = gtksourceview.SourceView ( source_buffer ); self.view.set_show_line_numbers ( True ); self.view.set_tabs_width ( 8 ); self.view.grab_focus ( ); scrolled_window = gtk.ScrolledWindow ( ); scrolled_window.set_policy ( gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC ); scrolled_window.add ( self.view ); scrolled_window.show ( ); self.frame = gtk.Frame ( ); self.frame.set_border_width ( 10 ); self.frame.set_size_request ( 100, 75 ); self.frame.add ( scrolled_window ); self.frame.show ( ); label = gtk.Label( 'Untitled 1' ); tabeventbox = gtk.EventBox ( ); tabeventbox.connect ( 'button-press-event', self.poo ); tabeventbox.set_visible_window ( False ); tabhbox = gtk.HBox ( False, 2 ); tabtooltip = gtk.Tooltips ( ); tabtooltip.set_tip ( tabeventbox, 'Untitled 1' ); tabtooltip.enable ( ); tabbutton = gtk.Button ( ); tabbutton.set_relief ( gtk.RELIEF_NONE ); tabbutton.connect ( 'clicked', self.close_tab ); tabbutton.set_use_underline ( False ); image = gtk.Image ( ); image.set_from_stock ( gtk.STOCK_CLOSE, gtk.ICON_SIZE_MENU ); tabbutton.set_image ( image ); tabbutton.set_focus_on_click ( True ); tabhbox.pack_start ( label, False ); tabhbox.pack_end ( tabbutton, False, False ); tabhbox.show_all ( ); tabeventbox.add ( tabhbox ); self.notebook.append_page ( self.frame, tabeventbox ); self.vbox.pack_end ( self.notebook, True, True, 0 ); self.window.show_all ( ); def delete_window ( self, widget, event = None ): gtk.main_quit ( ); return gtk.False; def open_file ( self, event = None ) : dialog = gtk.FileChooserDialog ( "Open File ...", None, 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_select_multiple ( True ); response = dialog.run ( ); if ( response == gtk.RESPONSE_OK ) : for i in dialog.get_filenames ( ) : mime = mimetypes.guess_type ( i )[ 0 ]; self.add_tab ( mime, i ); elif ( response == gtk.RESPONSE_CANCEL ) : dialog.destroy ( ); dialog.destroy ( ); def new_file ( self, name = None, widget = None, event = None ) : self.add_tab ( 'text/plain', '' ); def poo ( self, name = None, widget = None, event = None ) : print 1; def get_currentbuffer ( self ) : current_buffer = self.notebook.get_nth_page ( self.notebook.get_current_page ( ) ).get_child ( ); return current_buffer.get_child ( ); def create_buffer ( self, language = 'text/x-python' ) : source_languages_manager = gtksourceview.SourceLanguagesManager ( ); source_buffer = gtksourceview.SourceBuffer ( ); source_buffer.set_language ( source_languages_manager.get_language_from_mime_type ( language ) ); source_buffer.set_highlight ( True ); return source_buffer; def close_tab ( self, name = None, widget = None, event = None ) : self.notebook.remove_page ( self.notebook.get_current_page ( ) ); def add_tab ( self, mime, filename ) : source_buffer = self.create_buffer ( mime ); view = gtksourceview.SourceView ( source_buffer ); view.set_show_line_numbers ( True ); view.set_tabs_width ( 8 ); view.grab_focus ( ); view.show ( ); scrolled_window = gtk.ScrolledWindow ( ); scrolled_window.set_policy ( gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC ); scrolled_window.add ( view ); scrolled_window.show ( ); frame = gtk.Frame ( ); frame.set_border_width ( 10 ); frame.set_size_request ( 100, 75 ); frame.add ( scrolled_window ); frame.show ( ); try : file_name = filename.split ( '/' ); file_name = file_name[ len ( file_name ) - 1 ]; except : file_name = 'Untitled'; label = gtk.Label( file_name ); tabeventbox = gtk.EventBox ( ); tabeventbox.connect ( 'button-press-event', self.poo ); tabeventbox.set_visible_window ( False ); tabhbox = gtk.HBox ( False, 2 ); tabtooltip = gtk.Tooltips ( ); tabtooltip.set_tip ( tabeventbox, file_name ); tabtooltip.enable ( ); tabbutton = gtk.Button ( ); tabbutton.set_relief ( gtk.RELIEF_NONE ); tabbutton.connect ( 'clicked', self.close_tab ); tabbutton.set_use_underline ( False ); image = gtk.Image ( ); image.set_from_stock ( gtk.STOCK_CLOSE, gtk.ICON_SIZE_MENU ); tabbutton.set_image ( image ); tabbutton.set_focus_on_click ( True ); tabhbox.pack_start ( label, False ); tabhbox.pack_end ( tabbutton, False, False ); tabhbox.show_all ( ); tabeventbox.add ( tabhbox ); try : source_buffer.insert ( source_buffer.get_start_iter(), open ( filename ).read ( ) ); except : source_buffer.insert ( source_buffer.get_start_iter(), '' ); self.current_page = self.notebook.append_page ( frame, tabeventbox ); self.notebook.set_current_page ( self.current_page );def main ( ) : app = editor ( ); gtk.main ( );if ( __name__ == '__main__' ) : main ( );"""print view.get_buffer ( );GET TEXT fd = open(filepath, 'w') fd.write(self.buffer.get_text( self.buffer.get_start_iter(), self.buffer.get_end_iter(), False)) fd.close()SET MODIFIED self.buffer.set_modified(False)FONT source_view.modify_font(pango.FontDescription('Monospace'))"""