⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 remote_view.py

📁 CoralFTP是一款用Python语言编写的工作在GTK2环境下的FTP客户端软件
💻 PY
📖 第 1 页 / 共 4 页
字号:
            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 + -