Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
天驴滚滚
Tagdox
提交
53de0164
T
Tagdox
项目概览
天驴滚滚
/
Tagdox
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Tagdox
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
53de0164
编写于
9月 05, 2021
作者:
H
horsesword
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修复文件夹刷新后的定位异常。
上级
5f31b473
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
131 addition
and
61 deletion
+131
-61
标签文库.py
标签文库.py
+131
-61
未找到文件。
标签文库.py
浏览文件 @
53de0164
...
@@ -38,10 +38,14 @@ URL_HELP = 'https://gitee.com/horse_sword/my-local-library' # 帮助的超链
...
@@ -38,10 +38,14 @@ URL_HELP = 'https://gitee.com/horse_sword/my-local-library' # 帮助的超链
URL_ADV
=
'https://gitee.com/horse_sword/my-local-library/issues'
# 提建议的位置
URL_ADV
=
'https://gitee.com/horse_sword/my-local-library/issues'
# 提建议的位置
URL_CHK_UPDATE
=
'https://gitee.com/horse_sword/my-local-library/releases'
# 检查更新的位置
URL_CHK_UPDATE
=
'https://gitee.com/horse_sword/my-local-library/releases'
# 检查更新的位置
TAR
=
'Tagdox / 标签文库'
# 程序名称
TAR
=
'Tagdox / 标签文库'
# 程序名称
VER
=
'v0.19.0.
1
'
# 版本号
VER
=
'v0.19.0.
3
'
# 版本号
'''
'''
## 近期更新说明
## 近期更新说明
#### v0.19.0.3 2021年9月5日
修复文件夹刷新后的定位异常。
#### v0.19.0.2 2021年9月4日
修复文件拖拽到分组的异常。
#### v0.19.0.1 2021年9月4日
#### v0.19.0.1 2021年9月4日
优化文件夹分组,增加置顶分组功能。
优化文件夹分组,增加置顶分组功能。
#### v0.19.0.0 2021年9月4日
#### v0.19.0.0 2021年9月4日
...
@@ -296,6 +300,8 @@ def exec_safe_copy(old_name, new_name, opt_type='copy'):
...
@@ -296,6 +300,8 @@ def exec_safe_copy(old_name, new_name, opt_type='copy'):
# os.rename(old_name,tmp_new_full_name)
# os.rename(old_name,tmp_new_full_name)
return
(
tmp_new_full_name
)
return
(
tmp_new_full_name
)
except
:
except
:
tk
.
messagebox
.
showerror
(
title
=
'错误'
,
message
=
'文件复制失败。'
)
print
(
'对以下文件复制失败!'
)
print
(
'对以下文件复制失败!'
)
print
(
old_name
)
print
(
old_name
)
return
(
old_name
)
return
(
old_name
)
...
@@ -308,6 +314,8 @@ def exec_safe_copy(old_name, new_name, opt_type='copy'):
...
@@ -308,6 +314,8 @@ def exec_safe_copy(old_name, new_name, opt_type='copy'):
# os.rename(old_name,tmp_new_full_name)
# os.rename(old_name,tmp_new_full_name)
return
(
tmp_new_full_name
)
return
(
tmp_new_full_name
)
except
:
except
:
tk
.
messagebox
.
showerror
(
title
=
'错误'
,
message
=
'文件移动失败。'
)
print
(
'对以下文件移动失败!'
)
print
(
'对以下文件移动失败!'
)
print
(
old_name
)
print
(
old_name
)
return
(
old_name
)
return
(
old_name
)
...
@@ -1355,45 +1363,71 @@ def update_folder_list(event=None,need_select=True):
...
@@ -1355,45 +1363,71 @@ def update_folder_list(event=None,need_select=True):
# if DEFAULT_GROUP_NAME in lst_root_text: # 默认文件夹分组永远在前
# if DEFAULT_GROUP_NAME in lst_root_text: # 默认文件夹分组永远在前
# lst_root_text.remove(DEFAULT_GROUP_NAME)
# lst_root_text.remove(DEFAULT_GROUP_NAME)
# lst_root_text = [DEFAULT_GROUP_NAME] + lst_root_text
# lst_root_text = [DEFAULT_GROUP_NAME] + lst_root_text
#
lst_root_text
=
get_folder_group_list
()
lst_root_text
=
get_folder_group_list
()
lst_my_path_short
=
exec_list_sort
(
lst_my_path_short
)
lst_my_path_short
=
exec_list_sort
(
lst_my_path_short
)
def
find_node_pos_by_text
(
node
,
text
):
'''
返回对应的位置编号
'''
find_succ
=
0
pos
=
0
if
node
is
None
:
items
=
tree_lst_folder
.
get_children
()
else
:
items
=
tree_lst_folder
.
get_children
(
node
)
for
i
in
items
:
if
tree_lst_folder
.
item
(
i
,
'text'
)
==
text
:
find_succ
=
1
break
pos
+=
1
if
find_succ
:
return
pos
else
:
return
-
1
#
#
# 保存当前的根文件夹
的
顺位
# 保存当前的根文件夹
(分组)的名称、
顺位
try
:
try
:
tmp_root
=
get_folder_root_node
()
tmp_group
=
get_folder_root_node
()
tmp_node_text
=
tree_lst_folder
.
item
(
tmp_root
,
'text'
)
tmp_group_text
=
tree_lst_folder
.
item
(
tmp_group
,
'text'
)
root_pos
=
lst_root_text
.
index
(
tmp_node_text
)
group_pos
=
find_node_pos_by_text
(
None
,
tmp_group_text
)
#
tmp_folder1
=
get_folder_root_node
(
1
)
tmp_folder1_text
=
tree_lst_folder
.
item
(
tmp_folder1
,
'text'
)
# folder1_pos=0
# for i in tree_lst_folder.get_children(tmp_group):
# if tree_lst_folder.item(i,'text') == tmp_folder1_text:
# break
# folder1_pos+=1
except
:
except
:
root_pos
=
0
group_pos
=
0
folder1_pos
=
0
#
#
# 保存现在选中的主文件夹;
# 保存现在选中的主文件夹;
v_method
=
2
v_method
=
2
tmp_lst_open
=
[]
tmp_lst_open
=
[]
# 保存一路上来的文件夹名称
if
flag_inited
:
if
flag_inited
:
(
b1
,
b2
)
=
app
.
bar_folder_v
.
get
()
(
b1
,
b2
)
=
app
.
bar_folder_v
.
get
()
try
:
try
:
tmp_folder1
=
0
tmp_folder1
=
0
tmp_n
=
0
tmp_n
=
0
tmp_root
=
tree_lst_folder
.
get_children
()[
0
]
tmp_root
=
tmp_group
for
tmp_s
in
tree_lst_folder
.
selection
():
pass
#
for
_
in
range
(
1000
):
# 不可能有1000层的文件夹吧
tmp_lst_open
.
append
(
tree_lst_folder
.
item
(
tmp_s
,
"text"
))
tmp_p
=
tree_lst_folder
.
parent
(
tmp_s
)
need_debug
=
tree_lst_folder
.
item
(
tmp_p
,
"values"
)
if
int
(
tree_lst_folder
.
item
(
tmp_p
,
"values"
)[
1
])
<=
1
:
break
else
:
tmp_s
=
tmp_p
if
v_method
==
1
:
for
i
in
tree_lst_folder
.
get_children
(
tmp_root
):
if
tree_lst_folder
.
item
(
i
,
"open"
):
tmp_folder1
=
tmp_n
break
else
:
tmp_n
+=
1
#
else
:
for
tmp_s
in
tree_lst_folder
.
selection
():
#
tmp_lst_open
.
append
(
tree_lst_folder
.
item
(
tmp_s
,
"values"
)[
-
1
])
tmp_p
=
tree_lst_folder
.
parent
(
tmp_s
)
if
tree_lst_folder
.
item
(
tmp_p
,
"values"
)[
1
]
==
0
:
break
else
:
tmp_s
=
tmp_p
except
Exception
as
e
:
except
Exception
as
e
:
print
(
e
)
print
(
e
)
tmp_folder1
=
0
tmp_folder1
=
0
...
@@ -1469,35 +1503,44 @@ def update_folder_list(event=None,need_select=True):
...
@@ -1469,35 +1503,44 @@ def update_folder_list(event=None,need_select=True):
# 刷新后,选中第几个项目:
# 刷新后,选中第几个项目:
#
#
if
v_method
==
2
and
flag_inited
:
if
v_method
==
2
and
flag_inited
:
print
(
"tmp_lst_open="
,
tmp_lst_open
)
# print("\n\n\ntmp_lst_open=",tmp_lst_open,'\n\n\n')
tmp_lst_open
.
reverse
()
#
#
root
=
tree_lst_folder
.
get_children
()[
root_pos
]
# 判断位置
tree_lst_folder
.
item
(
root
,
open
=
True
)
group_pos
=
find_node_pos_by_text
(
None
,
tmp_group_text
)
tree_lst_folder
.
selection_set
(
root
)
if
group_pos
<
0
:
tmp_i
=
root
group_pos
=
0
item_group
=
tree_lst_folder
.
get_children
()[
group_pos
]
# 分组结点(0级目录)
#
folder1_pos
=
find_node_pos_by_text
(
item_group
,
tmp_folder1_text
)
if
folder1_pos
<
0
:
folder1_pos
=
0
item_folder1
=
tree_lst_folder
.
get_children
(
item_group
)[
folder1_pos
]
# 根结点(1级目录)
tree_lst_folder
.
item
(
item_folder1
,
open
=
True
)
# 展开1级节点
tree_lst_folder
.
selection_set
(
item_folder1
)
# 选中
tmp_i
=
item_folder1
try
:
try
:
for
tmp_
n
in
range
(
len
(
tmp_lst_open
))
:
for
tmp_
text
in
tmp_lst_open
:
tmp_p
=
tmp_lst_open
[
-
1
-
tmp_n
]
print
(
'tmp_
p='
,
tmp_p
)
print
(
'tmp_
text='
,
tmp_text
)
#
#
res_find
=
0
folder2_pos
=
find_node_pos_by_text
(
tmp_i
,
tmp_text
)
for
i
in
tree_lst_folder
.
get_children
(
tmp_i
):
if
folder2_pos
<
0
:
if
tree_lst_folder
.
item
(
i
,
"values"
)[
-
1
]
==
tmp_p
:
print
(
'
\n
没有找到:'
,
tmp_text
,
', 退出'
)
tree_lst_folder
.
item
(
i
,
open
=
True
)
tree_lst_folder
.
selection_set
(
i
)
# 选中
tmp_i
=
i
res_find
=
1
break
if
res_find
==
0
:
break
break
tmp_i
=
tree_lst_folder
.
get_children
(
tmp_i
)[
folder2_pos
]
# 根结点(1级目录)
tree_lst_folder
.
item
(
tmp_i
,
open
=
True
)
# 展开节点
tree_lst_folder
.
selection_set
(
tmp_i
)
# 选中
try
:
try
:
tree_lst_folder
.
update
()
tree_lst_folder
.
update
()
tree_lst_folder
.
yview_moveto
(
b1
)
tree_lst_folder
.
yview_moveto
(
b1
)
except
:
except
:
pass
pass
exec_after_folder_choose
()
exec_after_folder_choose
()
#
except
Exception
as
e
:
except
Exception
as
e
:
print
(
1416
,
e
)
print
(
e
)
pass
pass
else
:
# 如果没有 flag_inited 的话,默认选中第一个文件夹
else
:
# 如果没有 flag_inited 的话,默认选中第一个文件夹
...
@@ -1505,8 +1548,8 @@ def update_folder_list(event=None,need_select=True):
...
@@ -1505,8 +1548,8 @@ def update_folder_list(event=None,need_select=True):
print
(
'刷新文件夹:选中的文件夹是:'
,
tmp_folder1
)
print
(
'刷新文件夹:选中的文件夹是:'
,
tmp_folder1
)
if
need_select
:
if
need_select
:
try
:
try
:
root
=
tree_lst_folder
.
get_children
()[
0
]
item_group
=
tree_lst_folder
.
get_children
()[
group_pos
]
to_selct
=
tree_lst_folder
.
get_children
(
root
)[
tmp_folder1
]
to_selct
=
tree_lst_folder
.
get_children
(
item_group
)[
tmp_folder1
]
tree_lst_folder
.
selection_set
(
to_selct
)
# 选中第一个文件夹
tree_lst_folder
.
selection_set
(
to_selct
)
# 选中第一个文件夹
#
#
exec_after_folder_choose
()
# 右边也重载一次
exec_after_folder_choose
()
# 右边也重载一次
...
@@ -2130,13 +2173,14 @@ def get_folder_long():
...
@@ -2130,13 +2173,14 @@ def get_folder_long():
return
res
return
res
def
get_folder_root_node
():
def
get_folder_root_node
(
depth
=
0
):
'''
'''
获取选中项的根节点 item
获取选中项的根节点 item(文件夹分组)
输入参数为数字,可以获取指定深度的结点。
'''
'''
itm
=
tree_lst_folder
.
selection
()[
0
]
itm
=
tree_lst_folder
.
selection
()[
0
]
the_item
=
itm
the_item
=
itm
while
get_folder_depth
(
the_item
)
>
0
:
while
get_folder_depth
(
the_item
)
>
depth
:
the_item
=
tree_lst_folder
.
parent
(
the_item
)
the_item
=
tree_lst_folder
.
parent
(
the_item
)
#
#
return
(
the_item
)
return
(
the_item
)
...
@@ -2157,7 +2201,7 @@ def get_folder_group():
...
@@ -2157,7 +2201,7 @@ def get_folder_group():
def
get_folder_group_list
():
def
get_folder_group_list
():
'''
'''
获取排序后的文件夹分组列表
获取排序后的文件夹分组列表
。这里已经排序完成。
'''
'''
# 根目录的名称列表
# 根目录的名称列表
lst_root_text
=
list
(
set
(
dict_folder_groups
.
values
()))
lst_root_text
=
list
(
set
(
dict_folder_groups
.
values
()))
...
@@ -3459,6 +3503,7 @@ def exec_tree_drag_enter(files,drag_type=None):
...
@@ -3459,6 +3503,7 @@ def exec_tree_drag_enter(files,drag_type=None):
'''
'''
global
flag_file_changed
global
flag_file_changed
global
FILE_DRAG_MOVE
global
FILE_DRAG_MOVE
v_method
=
2
# 树形架构下,采用方案2
#
#
print
(
'files='
,
files
)
print
(
'files='
,
files
)
#
#
...
@@ -3475,20 +3520,45 @@ def exec_tree_drag_enter(files,drag_type=None):
...
@@ -3475,20 +3520,45 @@ def exec_tree_drag_enter(files,drag_type=None):
drag_type
=
'copy'
drag_type
=
'copy'
# 确定目录(目标)
# 确定目录(目标)
short_name
=
get_folder_short
()
if
len
(
tree_lst_folder
.
selection
())
==
0
:
print
(
short_name
)
tk
.
messagebox
.
showerror
(
title
=
'错误'
,
if
short_name
==
''
:
message
=
'必须在左侧选定文件夹后,才能执行拖拽操作。'
)
# print('未指定目标目录,取消复制')
# 如果没有任何文件夹被选中
str_btm
.
set
(
'未指定目标目录,取消复制'
)
return
return
else
:
if
len
(
get_sub_folder_selected
())
>
0
:
# 【注意】这个处理不太好
if
v_method
==
1
:
long_name
=
lst_my_path_long_selected
[
0
]
+
'/'
+
get_sub_folder_selected
()
short_name
=
get_folder_short
()
print
(
short_name
)
if
short_name
==
''
:
# print('未指定目标目录,取消复制')
str_btm
.
set
(
'未指定目标目录,取消复制'
)
return
else
:
else
:
long_name
=
lst_my_path_long_selected
[
0
]
if
len
(
get_sub_folder_selected
())
>
0
:
# 【注意】这个处理不太好
# long_name=get_folder_s2l(short_name) #将文件夹的显示值转换为实际值
long_name
=
lst_my_path_long_selected
[
0
]
+
'/'
+
get_sub_folder_selected
()
print
(
'long_name='
)
else
:
print
(
long_name
)
long_name
=
lst_my_path_long_selected
[
0
]
# long_name=get_folder_s2l(short_name) #将文件夹的显示值转换为实际值
print
(
'long_name='
)
print
(
long_name
)
#
elif
v_method
==
2
:
if
get_folder_depth
()
==
0
:
# 选中的是文件夹分组。而不是文件夹
if
tk
.
messagebox
.
askokcancel
(
"注意"
,
"当前选中的是文件夹分组(而不是文件夹),因此拖拽目标默认为当前分组第一个文件夹。是否继续?"
):
try
:
tmp_root_node
=
tree_lst_folder
.
selection
()[
0
]
tmp_f1_node
=
tree_lst_folder
.
get_children
(
tmp_root_node
)[
0
]
long_name
=
tree_lst_folder
.
item
(
tmp_f1_node
,
"values"
)[
-
1
]
# 默认存到第一个子文件夹中;
except
:
tk
.
messagebox
.
showerror
(
title
=
'错误'
,
message
=
'拖拽操作执行不成功。请检查文件夹访问是否正常。'
)
return
else
:
return
elif
get_folder_depth
()
>=
1
:
long_name
=
get_folder_long_v2
()
pass
#
#
# 获取对象(k已经没什么用)
# 获取对象(k已经没什么用)
k
=
len
(
tree
.
get_children
())
k
=
len
(
tree
.
get_children
())
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录