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

📄 local_view.py

📁 CoralFTP是一款用Python语言编写的工作在GTK2环境下的FTP客户端软件
💻 PY
📖 第 1 页 / 共 3 页
字号:
    def on_updir_action_update(self, obj):        obj.set_property('sensitive', self.__current_path != '/')        return    def on_updir_action_execute(self, obj, *args):        """Enter the parent directory of the current directory. If current        directory is root, do nothing."""        pos = self.__current_path.rindex(u'/')        if pos == 0:            pos = 1        self.set_path(self.__current_path[:pos])        return    def on_queue_action_execute(self, obj, *args):        self.__list.get_selection().selected_foreach(self.add_to_queue, None)        return    def on_transfer_queue_action_update(self, obj, *args):        if self.__selected_count > 0:            another_view = self.__main_window.get_another_view(self)            obj.set_property('sensitive', another_view.is_ready())        else:            obj.set_property('sensitive', FALSE)        return        def on_transfer_action_execute(self, obj, *args):        self.on_queue_action_execute(obj, *args)        self.__main_window.transfer_view.start_transfer(obj, *args)        return    def on_transfer_queue_as_action_update(self, obj, *args):        if self.__selected_count == 1:            another_view = self.__main_window.get_another_view(self)            obj.set_property('sensitive', another_view.is_ready())        else:            obj.set_property('sensitive', FALSE)        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, LocalView.COL_INFO)        d = GeneralInputDialog(_("Transfer As"), _("Name"), info.name)        d.connect('response', on_dialog_response)        resp = d.run()        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, LocalView.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, *args):        obj.set_property('sensitive', self.__selected_count > 0)        return        def on_delete_action_execute(self, obj, *args):        def on_dialog_response(dlg, resp, *args):            def delete_each(treemodel, path, iter):                name = self.__model.get_value(iter, LocalView.COL_FILENAME)                top = os.path.join(self.__current_path, name)                if os.path.isdir(top):                    for root, dirs, files in os.walk(top, topdown=False):                        for name in files:                            os.remove(os.path.join(root, name))                        for name in dirs:                            os.rmdir(os.path.join(root, name))                    os.rmdir(top)                else:                    os.remove(top)                return            dlg.destroy()            if resp == RESPONSE_YES:               self.__list.get_selection().selected_foreach(delete_each)               self.refresh()            return        dlg = MessageDialog(flags=DIALOG_MODAL,                            type=MESSAGE_QUESTION,                            buttons=BUTTONS_YES_NO,                            message_format='Are you sure?')        dlg.connect('response', on_dialog_response)        dlg.show()        dlg.set_modal(TRUE)        return    def on_rename_action_update(self, obj, *args):        obj.set_property('sensitive', self.__selected_count == 1)        return    def on_rename_action_execute(self, obj, *args):        def on_dialog_response(dlg, resp, *args):            v = string.strip(dlg.value)            dlg.destroy()            if resp == RESPONSE_OK and v != filename:                src = os.path.join(self.__current_path, filename)                dst = os.path.join(self.__current_path, utf8_to_unicode(v))                try:                    os.rename(src, dst)                    if os.path.dirname(src) == os.path.dirname(dst):                        self.__model.set_value(iter, LocalView.COL_FILENAME, v)                    else:                        self.__model.remove(iter)                except OSError, (errno, errmsg):                    show_error_message(errmsg)            return        if len(self.__selections) != 1:            return                iter = self.__selections[0]        filename = self.__model.get_value(iter, LocalView.COL_FILENAME)                from general_input import GeneralInputDialog        dlg = GeneralInputDialog(_("Rename"),                                 _("Please input new name:"), filename)        dlg.connect('response', on_dialog_response)        dlg.run()        return    def on_refresh_action_execute(self, obj, *args):        self.refresh()    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 len(v) > 0:                path = os.path.join(self.__current_path, v)                try:                    os.mkdir(path)                    self.refresh()                except OSError, (errno, errmsg):                    show_error_message(errmsg)            return        from general_input import GeneralInputDialog        dlg = GeneralInputDialog(_("Make Folder"),                                 _("Please input folder name:"), '')        dlg.connect('response', on_dialog_response)        resp = dlg.run()        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()            if resp == RESPONSE_OK and len(v) > 0:                orig = self.__current_path                try:                    self.set_path(v)                except OSError, (errno, errmsg):                    show_error_message(errmsg)                    self.set_path(orig)        from general_input import GeneralInputDialog        dlg = GeneralInputDialog(_("Change Folder"),                                 _("Please input folder name:"),                                 self.__current_path)        dlg.connect('response', on_dialog_response)        resp = dlg.run()        return    def on_sort_action_execute(self, action, widget, *args):        if self.__change_sort_menu_item:            self.__change_sort_menu_item = False            column, order = self.__model.get_sort_column_id()            widget_name = widget.get_name()            if widget_name == 'mi_local_arr_by_name':                column = LocalView.COL_FILENAME            elif widget_name == 'mi_local_arr_by_type':                column = LocalView.COL_FILETYPE            elif widget_name == 'mi_local_arr_by_size':                column = LocalView.COL_FILESIZE            elif widget_name == 'mi_local_arr_by_date':                column = LocalView.COL_FILEMTIME            elif widget_name == 'mi_local_arr_ascending':                order = SORT_ASCENDING            elif widget_name == 'mi_local_arr_descending':                order = SORT_DESCENDING            else:                raise ValueError, widget_name            self.__model.set_sort_column_id(column, order)                        self.__change_sort_menu_item = True        return    def on_list_sort_column_changed(self, obj, *args):        if self.__change_sort_menu_item:            self.__change_sort_menu_item = False                        column, order = obj.get_sort_column_id()            if column == LocalView.COL_FILENAME:                widget_name = 'mi_local_arr_by_name'            elif column == LocalView.COL_FILETYPE:                widget_name = 'mi_local_arr_by_type'            elif column == LocalView.COL_FILESIZE:                widget_name = 'mi_local_arr_by_size'            elif column == LocalView.COL_FILEMTIME:                widget_name = 'mi_local_arr_by_date'            widget = self.__menu_xml.get_widget(widget_name)            widget.set_active(TRUE)            if order == SORT_ASCENDING:                widget_name = 'mi_local_arr_ascending'            elif order == SORT_DESCENDING:                widget_name = 'mi_local_arr_descending'            widget = self.__menu_xml.get_widget(widget_name)            widget.set_active(TRUE)                        self.__change_sort_menu_item = True                    return    def on_open_action_update(self, obj, *args):        obj.set_property('sensitive', self.__selected_count == 1)        return    def on_open_action_execute(self, obj, *args):        if len(self.__selections) != 1:            return        iter = self.__selections[0]        info = self.__model.get_value(iter, LocalView.COL_INFO)        if info.is_dir():            return        fullpath = os.path.join(self.__current_path, info.name)        mime_type = vfs.get_mime_type(fullpath)        try:            vfs.mime_get_description(mime_type)        except ValueError:            return        app = vfs.mime_get_default_application(mime_type)        try:            (id, name, command, can_open_multiple_files, expects_uris,             supported_uri_schemes, requires_terminal) = app        except TypeError:            return        if expects_uris:            fullpath = 'file://' + fullpath        if not requires_terminal:            os.spawnlp(os.P_NOWAIT, command, command, fullpath)        else:            terminal = 'gnome_terminal.wrapper'            os.spawnlp(os.P_NOWAIT, terminal, terminal, '-e',                       command, fullpath)        return        def on_local_dir_entry_activate(self, obj, *args):        new_path = self.__cmb_dir.child.get_text()        if os.path.isdir(new_path):            self.set_path(new_path)        else:            dlg = MessageDialog(flags=DIALOG_MODAL,                                type=MESSAGE_ERROR,                                buttons=BUTTONS_OK,                                message_format=_("Directory %s not found.") % new_path)            dlg.connect('response', lambda obj, *args: obj.destroy())            dlg.show()            dlg.set_modal(TRUE)        return        def is_ready(self):        return True    def on_auto_size_file_list_columns_change(self, config, id, entry, *args):        for column in self.__list.get_columns():            if entry.value.get_bool():                column.set_sizing(TREE_VIEW_COLUMN_AUTOSIZE)            else:                column.set_sizing(TREE_VIEW_COLUMN_GROW_ONLY)        return    def on_use_custom_file_listing_font_change(self, config, id, entry, *args):        self.__use_custom_file_listing_font = entry.value.get_bool()        self.__change_font()        return    def on_file_listing_font_change(self, config, id, entry, *args):        self.__file_listing_font = entry.value.get_string()        self.__change_font()        return    def __change_font(self):        for renderer in self.__text_renderers:            if self.__use_custom_file_listing_font:                renderer.set_property('font', self.__file_listing_font)            else:                renderer.set_property('font', None)        return

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -