예제 #1
0
    def _on_cmd_login(self, usr, psw, act):
        try:
            get_ftp().login(usr, psw, act)

            root_dir = get_ftp().print_current_dir()
            root_fn = FileNode(name=root_dir, type=FILE_TYPE_DIR)
            get_directory_tree().set_root(root_fn)
        except Exception:
            return "Login failed"
예제 #2
0
    def _on_dt_add_node(self, widget, path):
        path = tree_dir_string_to_path(path)
        dir_tree = get_directory_tree()
        cur_node = dir_tree.get_cur_node()
        node = dir_tree.get_node(path)

        if dir_tree.is_under_current_dir(node):
            index = cur_node.index_child(node)
            self.get_model().insert(index, node.get_filenode().to_list())
예제 #3
0
def common_path_to_dir_path(cp):
    iter = get_directory_tree()._root
    dp = []
    for ind in cp:
        ch = iter.get_nth_child(ind)
        d_ind = index_dir_child(ch)
        dp.append(d_ind)

        iter = ch

    return tuple(dp)
예제 #4
0
def dir_path_to_common_path(dp):
    iter = get_directory_tree()._root
    cp = []
    for ind in dp:
        ch = get_nth_dir_child(iter, ind)
        c_ind = iter.index_child(ch)
        cp.append(c_ind)

        iter = ch

    return tuple(cp)
예제 #5
0
    def _on_dt_remove_node(self, widget, path):
        path = tree_dir_string_to_path(path)
        dir_tree = get_directory_tree()
        cur_node = dir_tree.get_cur_node()
        node = dir_tree.get_node(path)

        if dir_tree.is_under_current_dir(node):
            index = cur_node.index_child(node)
            model = self.get_model()
            model.remove(model.get_iter((index,)))
        elif dir_tree.is_on_current_dir_path(node):
            self.get_model().clear()
예제 #6
0
    def _on_dt_curnode_changed(self, widget, path):
        path = tree_dir_string_to_path(path)
        dir_tree = get_directory_tree()
        cur_node = dir_tree.get_node(path)

        file_type = cur_node.get_filenode().get_type()
        if file_type == FILE_TYPE_DIR:
            model = self.get_model()
            model.clear()

            for ind in range(0, cur_node.get_n_children()):
                fn = cur_node.get_nth_child(ind).get_filenode()
                model.append(fn.to_list())
        elif file_type == FILE_TYPE_FILE:
            pass
예제 #7
0
    def _on_dt_change_node(self, widget, path):
        path = tree_dir_string_to_path(path)
        dir_tree = get_directory_tree()
        cur_node = dir_tree.get_cur_node()
        node = dir_tree.get_node(path)

        if dir_tree.is_under_current_dir(node):
            index = cur_node.index_child(node)
            model = self.get_model()
            ch_iter = model.get_iter((index,))
            val_list = node.get_filenode().to_list()
            for ind in range(0, len(val_list)):
                model.set_value(ch_iter, ind, val_list[ind])
        elif dir_tree.is_on_current_dir_path(node):
            self.get_model().clear()
예제 #8
0
    def __init__(self):
        gtk.TreeView.__init__(self)

        self._set_up_columns()
        self.set_size_request(env.FILE_VIEW_WIDTH, env.FILE_VIEW_HEIGHT)
        self.set_rules_hint(True)
        self.show_all()

        dir_tree = get_directory_tree()
        dir_tree.connect("rf-directory-tree-add-node", self._on_dt_add_node)
        dir_tree.connect("rf-directory-tree-remove-node", self._on_dt_remove_node)
        dir_tree.connect("rf-directory-tree-change-node", self._on_dt_change_node)
        dir_tree.connect("rf-directory-tree-current-node-changed", self._on_dt_curnode_changed)

        self.connect("row-activated", self._on_row_activate)
예제 #9
0
    def __init__(self):
        gobject.GObject.__init__(self)
        self.ftp = get_ftp()

        self.win = get_window()
        self._load_up_menubar()
        self._load_up_file_view()
        self._load_up_directory_view()
        self._load_up_console_view()
        self._load_up_resp_bar()

        self._set_up_layout()

        self.dir_tree = get_directory_tree()

        # Connect signals
        self.win.connect("destroy", lambda w: self.exit())
        self.ftp.connect("rf-ftp-response", self._on_ftp_response)
        self.ftp.connect("rf-ftp-send-cmd", self._on_ftp_send_cmd)

        self.win.show()
예제 #10
0
 def _on_row_activate(self, widget, path, column):
     path = tuple(list(get_directory_tree().get_cur_node().get_path_tuple()) + list(path))
     node = get_directory_tree().get_node(path)
     if node.get_filenode().get_type() == FILE_TYPE_DIR:
         get_directory_tree().set_cur_node(node)
예제 #11
0
 def _on_cmd_cdup(self):
     try:
         get_directory_tree().change_into_parent()
     except exp.DirectoryTreeChangeIntoParentFailed as e:
         return str(e)
예제 #12
0
 def _on_cmd_cd(self, dir):
     try:
         get_directory_tree().change_into_child(dir)
     except exp.DirectoryTreeChangeIntoChildFailed as e:
         return str(e)