All pastes #521145 Raw Edit

Untitled

public text v1 · immutable
#521145 ·published 2007-05-30 03:34 UTC
rendered paste body
import	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'))"""