📄 remote_view.py
字号:
return self.__ftp_engine elif name == 'main_window': return self.__main_window elif name == 'status1': return self.__status1 elif name == 'status2': return self.__status2 elif name == 'current_path': return self.__cmb_dir.child.get_text() elif name == 'site_info': return self.__site_info elif name == 'cmb_dir': return self.__cmb_dir elif name == 'selected_count': return self.__selected_count elif name == 'list_updater': return ListUpdater(self) elif name == 'pwd_updater': return PwdUpdater(self) elif name == 'config': return self.__config elif name == 'current_url': url = 'ftp://' if self.site_info['username'] != '': url = url + self.site_info['username'] + '@' url = url + self.site_info['server_addr'] if self.site_info['server_port'] != '21': url = '%s:%d' % (url, int(self.site_info['server_port'])) url = url + self.current_path return url else: raise AttributeError, name def is_ready(self): return self.__ftp_engine != None and self.__ftp_engine.status == STATUS_IDLE def on_destroy(self, obj): if self.__ftp_engine: self.__ftp_engine.quit() return def update_status1(self): if not self.__ftp_engine or self.__ftp_engine.status <= STATUS_CONNECTING: return display_file_size_as = config_value(self.__config, 'display', 'display_file_size_as') if self.folder_count > 1: text = _("%d Folders") % self.folder_count else: text = _("%d Folder") % self.folder_count if self.file_count > 1: text = _("%s, %d Files") % (text, self.file_count) else: text = _("%s, %d File") % (text, self.file_count) total = self.folder_count + self.file_count text = _("%s, %d Total") % (text, total) if self.__selected_count != 0: size = 0 for iter in self.__selections: info = self.__model.get_value(iter, RemoteView.COL_INFO) if not info.isdir(): size = size + info.size size = format_size(display_file_size_as, size) if size[-1] != 'B': size = size + _(" bytes") text = text + _(", %d Selected(%s)") % (self.__selected_count, size) else: iter = self.__model.get_iter_first() size = 0 while iter: info = self.__model.get_value(iter, RemoteView.COL_INFO) if not info.isdir(): size = size + info.size iter = self.__model.iter_next(iter) size = format_size(display_file_size_as, size) text = text + '(%s)' % (size) self.__status1.set_text(text) return def connect_site(self, s = None): if s: self.__site_info = s self.ftp_open() return def on_connect_action_update(self, obj): obj.set_property('sensitive', self.__ftp_engine == None) return def on_connect_action_execute(self, action, widget, *args): button_window = widget.get_parent_window() x, y = button_window.get_origin() w, h = button_window.get_size() # Create menu widget menu = Menu() # Add reconnect item if self.__site_info: item = MenuItem(_("Reconnect %s") % self.__site_info['site_name']) item.connect('activate', lambda *args: self.connect_site()) menu.append(item) menu.append(SeparatorMenuItem()) # Add quick connect item item = MenuItem(_("Quick Connect")) item.connect('activate', self.on_quick_connect_action_execute) menu.append(item) menu.append(SeparatorMenuItem()) # Add items in site manager sm = self.__main_window.coralftp.get_site_manager() folder = sm.find_folder_by_path('/Sites') q = [] q.append((menu, folder)) while len(q) > 0: m, f = q.pop() for name, item in f.items(): menuitem = MenuItem(name) m.append(menuitem) if isinstance(item, SiteFolder): nm = Menu() menuitem.set_submenu(nm) q.insert(0, (nm, item)) elif isinstance(item, SiteInfo): menuitem.connect('activate', lambda mi, i: self.connect_site(i), item) # Show menu menu.show_all() menu.popup(None, None, lambda menu: (x, y + h, True), 0, 0) return def on_quick_connect_action_execute(self, widget, *args): def on_dialog_response(dlg, resp, *args): if resp == 0: s = dlg.site_info dlg.destroy() if resp == 0: self.connect_site(s) return qconn = QuickConnect(self) qconn.connect('response', on_dialog_response) resp = qconn.run() return def on_disconnect_action_update(self, obj): obj.set_property('sensitive', self.__ftp_engine != None) return def on_disconnect_action_execute(self, obj, *args): self.ftp_close() return def on_refresh_action_update(self, obj): obj.set_property('sensitive', self.__ftp_engine != None and self.__ftp_engine.is_idle) return def on_refresh_action_execute(self, obj, *args): self.ftp_refresh(True) return def on_abort_action_execute(self, obj, *args): if self.__ftp_engine: self.__ftp_engine.abort() return def on_transfer_queue_action_update(self, obj): obj.set_property('sensitive', self.__ftp_engine != None and self.__selected_count > 0) return def on_transfer_queue_as_action_update(self, obj): obj.set_property('sensitive', self.__ftp_engine != None and self.__ftp_engine.is_idle and self.__selected_count == 1) return def on_transfer_action_execute(self, obj, *args): self.on_queue_action_execute(obj, *args) self.__main_window.transfer_view.start_transfer(obj, None) return def on_transfer_as_action_execute(self, obj, *args): def on_dialog_response(dlg, resp, *args): v = utf8_to_unicode(string.strip(dlg.value)) dlg.destroy() if resp == RESPONSE_OK and v != '': self.__list.get_selection().selected_foreach( self.add_to_queue, v) self.__main_window.transfer_view.start_transfer(obj, None) return if len(self.__selections) != 1: return iter = self.__selections[0] info = self.__model.get_value(iter, RemoteView.COL_INFO) d = GeneralInputDialog(_("Transfer As"), _("Name"), info.name) d.connect('response', on_dialog_response) resp = d.run() return def on_queue_action_execute(self, obj, *args): self.__list.get_selection().selected_foreach(self.add_to_queue, None) return def on_queue_as_action_execute(self, obj, *args): def on_dialog_response(dlg, resp, *args): v = utf8_to_unicode(string.strip(dlg.value)) dlg.destroy() if resp == RESPONSE_OK and v != '': self.__list.get_selection().selected_foreach( self.add_to_queue, v) return if len(self.__selections) != 1: return iter = self.__selections[0] info = self.__model.get_value(iter, RemoteView.COL_INFO) d = GeneralInputDialog(_("Queue As"), _("Name"), info.name) d.connect('response', on_dialog_response) resp = d.run() return def on_delete_action_update(self, obj): obj.set_property( 'sensitive', self.__ftp_engine != None and self.__ftp_engine.is_idle \ and self.__selected_count > 0) return def on_delete_action_execute(self, obj, *args): def on_dialog_response(dlg, resp, *args): dlg.destroy() if resp == RESPONSE_YES: idle_add(self.ftp_delete_selected) return dlg = MessageDialog(flags=DIALOG_MODAL, type=MESSAGE_QUESTION, buttons=BUTTONS_YES_NO, message_format=_("Delete selected object(s), are you sure?")) dlg.connect('response', on_dialog_response) dlg.show() dlg.set_modal(True) return def on_move_action_update(self, obj): obj.set_property( 'sensitive', self.__ftp_engine != None and \ self.__ftp_engine.is_idle and self.__selected_count > 0) return def on_move_action_execute(self, obj, *args): def on_dialog_response(dlg, resp, *args): v = utf8_to_unicode(string.strip(dlg.value)) d.destroy() if resp == RESPONSE_OK and v != '': if v[-1] != '/': v = v + '/' if v != self.current_path + '/': self.__list.get_selection().selected_foreach( self.ftp_move_each, v) self.ftp_refresh(1) return d = GeneralInputDialog(_("Move Selected Object(s)?"), _("To"), u'%s/' % self.current_path) d.connect('response', on_dialog_response) resp = d.run() return def on_rename_action_update(self, obj): obj.set_property('sensitive', self.__ftp_engine != None and self.__ftp_engine.is_idle and self.__selected_count == 1) return def on_rename_action_execute(self, obj, *args): def on_dialog_response(dlg, resp, *args): v = utf8_to_unicode(string.strip(dlg.value)) dlg.destroy() if resp == RESPONSE_OK and v != '': # rename the file(mv) self.ftp_rename(info.name, v) self.ftp_refresh(1) return if self.__selected_count != 1: return # show a input dialog info = self.__model.get_value(self.__selections[0], RemoteView.COL_INFO) d = GeneralInputDialog(_("Rename file"), _("Please input new name of the file:"), info.name) d.connect('response', on_dialog_response) resp = d.run() return def on_copyurl_action_update(self, obj): obj.set_property('sensitive', self.__ftp_engine != None and self.__ftp_engine.is_idle and self.selected_count > 0) return def on_copyurl_action_execute(self, obj, *args): if self.__clipboard == None: display = gtk.gdk.display_get_default() self.__clipboard = Clipboard(display, 'CLIPBOARD') info = self.__model.get_value(self.__selections[0], RemoteView.COL_INFO) url = self.current_url if url[-1] != '/': url = url + '/' + info.name else: url = url + info.name if info.isdir(): url = url + '/' self.__clipboard.set_text(unicode_to_utf8(url)) return def on_mkdir_action_update(self, obj): obj.set_property('sensitive', self.__ftp_engine != None and self.__ftp_engine.is_idle) return def on_mkdir_action_execute(self, obj, *args): def on_dialog_response(dlg, resp, *args): v = utf8_to_unicode(string.strip(dlg.value)) dlg.destroy() if resp == RESPONSE_OK and v != '': self.ftp_mkdir(v) self.ftp_refresh(1) return # show a input dialog d = GeneralInputDialog(_("New Folder"), _("Name of Folder"), '') d.connect('response', on_dialog_response) d.run() return def on_chdir_action_update(self, obj): obj.set_property('sensitive', self.__ftp_engine != None and self.__ftp_engine.is_idle) return def on_chdir_action_execute(self, obj, *args): def on_dialog_response(dlg, resp, *args): v = utf8_to_unicode(string.strip(dlg.value)) dlg.destroy()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -