Advertisement
Guest User

Untitled

a guest
Jul 7th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.51 KB | None | 0 0
  1. import gedit
  2. import gtk
  3. import os
  4.  
  5. class FTPPluginWindowHelper:
  6.     def __init__(self, plugin, window):
  7.         self._window = window
  8.         self._plugin = plugin
  9.         self._ui = None
  10.  
  11.         self.create_ui()
  12.  
  13.     def deactivate(self):
  14.         self._window.get_side_panel().remove_item(self._ui)
  15.  
  16.     def update_ui(self):
  17.         pass
  18.  
  19.     def create_ui(self):
  20.         container = gtk.VBox()
  21.  
  22.         host = gtk.Entry()
  23.         port = gtk.Entry()
  24.         username = gtk.Entry()
  25.         password = gtk.Entry()
  26.        
  27.         local_address = gtk.TreeView()
  28.         local_address_scrolled_window = gtk.ScrolledWindow()
  29.         local_address_model = gtk.TreeStore(str)
  30.         local_address_column = gtk.TreeViewColumn('Local files')
  31.         local_address_cell = gtk.CellRendererText()
  32.        
  33.         remote_address = gtk.TreeView()
  34.         remote_address_model = gtk.TreeStore(str)
  35.  
  36.         password.set_visibility(False)
  37.        
  38.         for file_name in self.get_system_files():
  39.             local_address_model.append(None, [file_name])
  40.        
  41.         local_address_scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
  42.         local_address.set_model(local_address_model)
  43.         local_address.append_column(local_address_column)
  44.         local_address_column.pack_start(local_address_cell, True)
  45.         local_address_column.add_attribute(local_address_cell, 'text', 0)
  46.        
  47.         local_address.connect("row-activated", self.on_local_address_row_click)
  48.        
  49.         local_address_scrolled_window.add(local_address)
  50.        
  51.         container.pack_start(host)
  52.         container.pack_start(port)
  53.         container.pack_start(username)
  54.         container.pack_start(password)
  55.         container.pack_start(local_address_scrolled_window)
  56.         container.pack_start(remote_address)
  57.        
  58.         host.show()
  59.         username.show()
  60.         password.show()
  61.         local_address.show()
  62.         local_address_scrolled_window.show()
  63.         remote_address.show()
  64.        
  65.         side_panel = self._window.get_side_panel()
  66.         side_panel.add_item(container, "FTP Client", gtk.Image())
  67.         self._ui = container
  68.  
  69.     def on_local_address_row_click(self, treeview, path, column):
  70.         selected_row = treeview.get_selection()
  71.         model, iter = selected_row.get_selected()
  72.         iter_parent = None
  73.         complete_path = ''
  74.  
  75.         if not model.iter_has_child(iter):
  76.             iter_parent = model.iter_parent(iter)
  77.  
  78.             while iter_parent != None:
  79.                 complete_path += model.get_value(iter_parent, 0)
  80.                 iter_parent = model.iter_parent(iter_parent)
  81.  
  82.             value = model.get_value(iter, 0)
  83.             for local_file in self.get_system_files(value):
  84.                 model.append(iter, [complete_path + local_file])
  85.  
  86.             print 'Complete Path: ' + complete_path
  87.  
  88.         treeview.collapse_row(path) if treeview.row_expanded(path) else treeview.expand_row(path, False)
  89.  
  90.     def get_system_files(self, path = None):
  91.             return os.listdir(path) if path else '/' # just unix ?
  92.  
  93. class FTPPlugin(gedit.Plugin):
  94.     def __init__(self):
  95.         gedit.Plugin.__init__(self)
  96.         self._instances = {}
  97.  
  98.     def activate(self, window):
  99.         self._instances[window] = FTPPluginWindowHelper(self, window)
  100.  
  101.     def deactivate(self, window):
  102.         self._instances[window].deactivate()
  103.         del self._instances[window]
  104.  
  105.     def update_ui(self, window):
  106.         self._instances[window].update_ui()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement