Guest User

gui.py

a guest
May 17th, 2015
516
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.05 KB | None | 0 0
  1. import gi
  2. gi.require_version('Gtk', '3.0')
  3. from gi.repository import Gtk, Gdk, Pango
  4.  
  5. import smtplib, mimetypes
  6.  
  7. class FileChooser():
  8.    
  9.     def __init__(self):
  10.    
  11.         self.path = None
  12.        
  13.         dia = Gtk.FileChooserDialog("Please choose a file", w,
  14.             Gtk.FileChooserAction.OPEN,
  15.             (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
  16.             Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
  17.        
  18.         self.add_filters(dia)
  19.        
  20.         response = dia.run()
  21.        
  22.         if response == Gtk.ResponseType.OK:
  23.             self.path = dia.get_filename()
  24.         elif response == Gtk.ResponseType.CANCEL:
  25.             path = None
  26.            
  27.         dia.destroy()
  28.        
  29.     def add_filters(self, dia):
  30.         filter_any = Gtk.FileFilter()
  31.         filter_any.set_name("All files")
  32.         filter_any.add_pattern("*")
  33.         dia.add_filter(filter_any)
  34.        
  35.         filter_py = Gtk.FileFilter()
  36.         filter_py.set_name("Python files")
  37.         filter_py.add_pattern("*.py")
  38.         filter_py.add_pattern("*.pyc")
  39.         filter_py.add_pattern("*.pyo")
  40.         dia.add_filter(filter_py)
  41.        
  42.         filter_img = Gtk.FileFilter()
  43.         filter_img.set_name('Image files')
  44.         with open('data/imglist', 'r') as imgList:
  45.             for img in imgList:
  46.                 img = img.strip('\n')
  47.                 pattern = '*.' + img
  48.                 filter_img.add_pattern(pattern)
  49.         dia.add_filter(filter_img)
  50.        
  51.         filter_docs = Gtk.FileFilter()
  52.         filter_docs.set_name("Document files")
  53.         with open('data/doclist', 'r') as docList:
  54.             for doc in docList:
  55.                 doc = doc.strip('\n')
  56.                 pattern = '*.' + doc
  57.                 filter_docs.add_pattern(pattern)
  58.         dia.add_filter(filter_docs)
  59.        
  60.         filter_spread = Gtk.FileFilter()
  61.         filter_spread.set_name("Spreadsheet files")
  62.         with open('data/spreadlist', 'r') as spreadList:
  63.             for spread in spreadList:
  64.                 spread = spread.strip('\n')
  65.                 pattern = '*.' + spread
  66.                 filter_spread.add_pattern(pattern)
  67.         dia.add_filter(filter_spread)
  68.        
  69.         filter_present = Gtk.FileFilter()
  70.         filter_present.set_name("Presentation files")
  71.         with open('data/presentlist', 'r') as presentList:
  72.             for present in presentList:
  73.                 present = present.strip('\n')
  74.                 pattern = '*.' + present
  75.                 filter_present.add_pattern(pattern)
  76.         dia.add_filter(filter_present)     
  77.  
  78. class Handler():
  79.    
  80.     def __init__(self):
  81.         self.state = 0
  82.    
  83.     def onDeleteWindow(self, *args):
  84.         Gtk.main_quit(*args)
  85.  
  86.     def onSendClicked(self, button):
  87.         self.to = entryTo.get_text()
  88.         self.cc = entryCC.get_text()
  89.         self.bcc = entryBCC.get_text()
  90.         self.subject = entrySubject.get_text()
  91.         start, end = textBodyBuffer.get_bounds()
  92.         self.content = textBodyBuffer.get_text(start, end, True)
  93.  
  94.         print (self.content)
  95.  
  96.     def bold(self, button):
  97.         global tags_on
  98.         if button.get_active(): # Button is "down"/enabled
  99.             tags_on.append('bold')
  100.         else:                   # Button is "up"/disabled
  101.             del tags_on[tags_on.index('bold')]
  102.            
  103.     def italic(self, button):
  104.         global tags_on
  105.         if button.get_active(): # Button is "down"/enabled
  106.             tags_on.append('italic')
  107.         else:                   # Button is "up"/disabled
  108.             del tags_on[tags_on.index('italic')]
  109.    
  110.     def underline(self, button):
  111.         global tags_on
  112.         if button.get_active(): # Button is "down"/enabled
  113.             tags_on.append('underline')
  114.         else:                   # Button is "up"/disabled
  115.             del tags_on[tags_on.index('underline')]
  116.    
  117.     def alignToggled(self, radiobutton):
  118.         if radiobutton.get_active():
  119.             if radiobutton.get_name() == 'alignLeft':
  120.                 print ('Left')
  121.             elif radiobutton.get_name() == 'alignCenter':
  122.                 print ('Center')
  123.             elif radiobutton.get_name() == 'alignRight':
  124.                 print ('Right')
  125.             elif radiobutton.get_name() == 'alignFill':
  126.                 print ('FillOff')
  127.         else:
  128.             if radiobutton.get_name() == 'alignLeft':
  129.                 print ('LeftOff')
  130.             elif radiobutton.get_name() == 'alignCenter':
  131.                 print ('CenterOff')
  132.             elif radiobutton.get_name() == 'alignRight':
  133.                 print ('RightOff')
  134.             elif radiobutton.get_name() == 'alignFill':
  135.                 print ('FillOff')
  136.    
  137.     def undo(self, button):
  138.         print ('Undo')
  139.         pass
  140.    
  141.     def redo(self, button):
  142.         print ('Redo')
  143.         pass
  144.    
  145.     def addAttach(self, button):
  146.         global attachment
  147.         setup_attachment()
  148.    
  149.     def keyHandler(self, widget, event):
  150.         print (Gdk.keyval_name(event.keyval))
  151.         if Gdk.ModifierType.CONTROL_MASK & event.state:
  152.             if Gdk.keyval_name(event.keyval) == 'q':    # Quit the program
  153.                 w.destroy()
  154.                 Gtk.main_quit()
  155.             elif Gdk.keyval_name(event.keyval) == 'Down':   # Attachment panel
  156.                 if self.state == 0:
  157.                     buttonAttach.show()
  158.                     labelAttachment.hide()
  159.                     self.state = 1
  160.                 else:
  161.                     buttonAttach.hide()
  162.                     labelAttachment.show()
  163.                     self.state = 0
  164. def get_iter_position(buffer):
  165.     return buffer.get_iter_at_mark(buffer.get_insert())
  166.  
  167. def text_inserted(buffer, iter, char, length):
  168.     if tags_on:
  169.         iter.backward_chars(length)
  170.         for tag in tags_on:
  171.             if tag == 'bold':
  172.                 buffer.apply_tag(tag_bold, get_iter_position(buffer), iter)
  173.             if tag == 'italic':
  174.                 buffer.apply_tag(tag_italic, get_iter_position(buffer), iter)
  175.             if tag == 'underline':
  176.                 buffer.apply_tag(tag_underline, get_iter_position(buffer), iter)
  177.                 w.queue_draw()
  178. if __name__ == '__main__':
  179.    
  180.     global text
  181.     # Gtk tag globals
  182.     global tag_bold, tag_italic, tag_underline, tags_on
  183.    
  184.     tags_on = []
  185.            
  186.     builder = Gtk.Builder()
  187.     builder.add_from_file('editor.glade')
  188.     builder.connect_signals(Handler())
  189.    
  190.     buttonAttach = builder.get_object('buttonAttach')
  191.     buttonSend = builder.get_object('buttonSend')
  192.    
  193.     entryTo = builder.get_object('entryTo')
  194.     entryCC = builder.get_object('entryCC')
  195.     entryBCC = builder.get_object('entryBCC')
  196.     entrySubject = builder.get_object('entrySubject')
  197.  
  198.     textBody = builder.get_object('textviewBody')
  199.     textBodyBuffer = textBody.get_buffer()
  200.    
  201.     textBodyBuffer.connect_after('insert-text', text_inserted)
  202.     tag_bold = textBodyBuffer.create_tag("bold", weight=Pango.Weight.BOLD)
  203.     tag_italic = textBodyBuffer.create_tag("italic", style=Pango.Style.ITALIC)
  204.     tag_underline = textBodyBuffer.create_tag("underline", underline=Pango.Underline.SINGLE)
  205.  
  206.     labelAttachment = builder.get_object('labelAttachmentBar')
  207.     labelCC = builder.get_object('labelCC')
  208.     labelFromVar = builder.get_object('labelFromVar')
  209.    
  210.     w = builder.get_object('window1')
  211.     w.show_all()
  212.    
  213.     buttonAttach.hide()
  214.    
  215.     Gtk.main()
Advertisement
Add Comment
Please, Sign In to add comment