Guest User

cyberpython

a guest
May 23rd, 2009
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.26 KB | None | 0 0
  1. # -*- coding: UTF8 -*-
  2. import gtk
  3. import gtksourceview
  4. import pango
  5.  
  6. class EditorTest:
  7.  
  8.     def delete_event(self, widget, event, data=None):          
  9.         return False
  10.  
  11.     def destroy(self, widget, data=None):
  12.         gtk.main_quit()
  13.        
  14.        
  15.     def open_file(self, widget, data=None):
  16.    
  17.         dialog = gtk.FileChooserDialog("Άνοιγμα...", None, gtk.FILE_CHOOSER_ACTION_OPEN, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK))
  18.         dialog.set_default_response(gtk.RESPONSE_OK)
  19.  
  20.         filter = gtk.FileFilter()
  21.         filter.set_name("Αρχεία πηγαίου κώδικα Python")
  22.         filter.add_mime_type("text/python")
  23.         filter.add_pattern("*.py")
  24.         dialog.add_filter(filter)
  25.  
  26.  
  27.         response = dialog.run()
  28.         if response == gtk.RESPONSE_OK:
  29.             fname = dialog.get_filename()        
  30.             f = open(fname, 'r')
  31.             self.view.get_buffer().set_text(f.read())
  32.        
  33.         dialog.destroy()
  34.        
  35.     def save_file(self, widget, data=None):
  36.    
  37.         dialog = gtk.FileChooserDialog("Αποθήκευση ως..", None, gtk.FILE_CHOOSER_ACTION_SAVE, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK))
  38.         dialog.set_default_response(gtk.RESPONSE_OK)
  39.  
  40.         filter = gtk.FileFilter()
  41.         filter.set_name("Αρχεία πηγαίου κώδικα Python")
  42.         filter.add_mime_type("text/python")
  43.         filter.add_pattern("*.py")
  44.         dialog.add_filter(filter)
  45.  
  46.         response = dialog.run()
  47.         if response == gtk.RESPONSE_OK:      
  48.             fname = dialog.get_filename()        
  49.             f = open(fname, 'w')
  50.             textbuf = self.view.get_buffer()
  51.             f.write(textbuf.get_text(textbuf.get_start_iter(), textbuf.get_end_iter(), False))
  52.        
  53.         dialog.destroy()
  54.  
  55.        
  56.  
  57.  
  58.     def __init__(self):
  59.  
  60.         self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)      
  61.         win = self.window
  62.        
  63.         win.connect("delete_event", self.delete_event)
  64.         win.connect("destroy", self.destroy)
  65.        
  66.         vbox = gtk.VBox(False, 0)
  67.         hbox = gtk.HBox(False, 5)
  68.        
  69.         open_button = gtk.Button("Open")
  70.         open_button.connect("clicked", self.open_file, None)
  71.        
  72.         save_button = gtk.Button("Save as...")
  73.         save_button.connect("clicked", self.save_file, None)
  74.        
  75.         hbox.pack_start(open_button, False, False, 10)
  76.         hbox.pack_start(save_button, False, False, 0)
  77.    
  78.  
  79.        
  80.         scrolled_window = gtk.ScrolledWindow()
  81.         scrolled_window.set_border_width(10)
  82.         scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS)
  83.         scrolled_window.show()
  84.  
  85.        
  86.          
  87.         bufferS = gtksourceview.SourceBuffer()
  88.         manager = gtksourceview.SourceLanguagesManager()
  89.         language = manager.get_language_from_mime_type("text/x-python")
  90.        
  91.         bufferS.set_language(language)
  92.         bufferS.set_highlight(True)
  93.         self.view = gtksourceview.SourceView(bufferS)
  94.         self.view.set_show_line_numbers(True)
  95.         self.view.modify_font(pango.FontDescription("monospace 10"))
  96.         win.resize(400,400)
  97.         scrolled_window.add_with_viewport(self.view)
  98.        
  99.         vbox.pack_start(hbox, False, False, 5)
  100.         vbox.pack_start(scrolled_window, True, True, 0)
  101.        
  102.        
  103.         win.add(vbox)        
  104.         win.show_all()     
  105.        
  106.     def main(self):    
  107.         gtk.main()
  108.  
  109. if __name__ == "__main__":
  110.     editor = EditorTest()
  111.     editor.main()
  112.  
Advertisement
Add Comment
Please, Sign In to add comment