Advertisement
Guest User

Untitled

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