Skip to content

Commit cdd09ea

Browse files
committed
add fix_non_seq menu, support non sequential page number by default #41
1 parent d1b0468 commit cdd09ea

File tree

5 files changed

+54
-16
lines changed

5 files changed

+54
-16
lines changed

src/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
class Config(object):
2121
APP_NAME = 'PDFDir'
22-
VERSION = 'v0.3.0-beta26'
22+
VERSION = 'v0.3.0-beta28'
2323
WINDOW_ICON = 'pdf.ico'
2424
HOME_PAGE_URL = 'https://github.com/chroming/pdfdir'
2525
HELP_PAGE_URL = 'https://github.com/chroming/pdfdir/blob/master/readme.md'

src/convert.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,8 @@ def _convert_dir_text(dir_text,
101101
level4=None,
102102
level5=None,
103103
other=0,
104-
level_by_space=False):
104+
level_by_space=False,
105+
fix_non_seq=False):
105106
l0, l1, pagenum, index_dict = 0, 0, -float("inf"), {}
106107
l2, l3, l4 = 0, 0, 0
107108
dir_list = text_to_list(dir_text)
@@ -111,7 +112,7 @@ def _convert_dir_text(dir_text,
111112
for di in dir_list:
112113
di = di.rstrip()
113114
title, num = split_page_num(di)
114-
if num > pagenum:
115+
if num > pagenum or not fix_non_seq:
115116
pagenum = num
116117
index_dict[i] = {'title': title, 'real_num': pagenum + offset, 'num': pagenum}
117118
level = check_level(title, level0, level1, level2, level3, level4, level5, other=other)
@@ -145,7 +146,8 @@ def convert_dir_text(dir_text,
145146
level4=None,
146147
level5=None,
147148
other=0,
148-
level_by_space=False):
149+
level_by_space=False,
150+
fix_non_seq=False):
149151
"""
150152
convert directory text to dict.
151153
@@ -162,4 +164,6 @@ def convert_dir_text(dir_text,
162164
:return: the dict of directory, like {0:{'title':'A', 'pagenum':1}, 1:{'title':'B', pagenum:2, parent: 0} ......}
163165
164166
"""
165-
return _convert_dir_text(dir_text, offset, level0, level1, level2, level3, level4, level5, other=other, level_by_space=level_by_space)
167+
return _convert_dir_text(dir_text, offset, level0, level1, level2, level3, level4, level5, other=other,
168+
level_by_space=level_by_space,
169+
fix_non_seq=fix_non_seq)

src/gui/main.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ def _set_connect(self):
7979
self.level4_edit.textChanged,
8080
self.level5_edit.textChanged,
8181
self.unknown_level_box.currentIndexChanged,
82-
self.space_level_box.stateChanged
82+
self.space_level_box.stateChanged,
83+
self.fix_non_seq_action.changed,
8384
):
8485
act.connect(self.make_dir_tree)
8586

@@ -213,6 +214,10 @@ def other_level_index(self):
213214
def level_by_space(self):
214215
return self.space_level_box.isChecked()
215216

217+
@property
218+
def fix_non_seq(self):
219+
return self.fix_non_seq_action.isChecked()
220+
216221
def open_file_dialog(self):
217222
filename, _ = QtWidgets.QFileDialog.getOpenFileName(self, u'select PDF', filter="PDF (*.pdf)")
218223
self.pdf_path_edit.setText(filename)
@@ -235,7 +240,8 @@ def make_dir_tree(self):
235240
self.level4_text,
236241
self.level5_text,
237242
other=self.other_level_index,
238-
level_by_space=self.level_by_space)
243+
level_by_space=self.level_by_space,
244+
fix_non_seq=self.fix_non_seq)
239245
top_idx = 0
240246
inserted_items = {}
241247
children = {}

src/gui/main_ui.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
# Form implementation generated from reading ui file './src/gui/main_ui.ui'
44
#
5-
# Created by: PyQt5 UI code generator 5.15.9
5+
# Created by: PyQt5 UI code generator 5.15.10
66
#
77
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
88
# run again. Do not edit this file unless you know what you are doing.
@@ -201,8 +201,10 @@ def setupUi(self, PDFdir):
201201
self.menuBar.setObjectName("menuBar")
202202
self.help_menu = QtWidgets.QMenu(self.menuBar)
203203
self.help_menu.setObjectName("help_menu")
204-
self.menu = QtWidgets.QMenu(self.menuBar)
205-
self.menu.setObjectName("menu")
204+
self.language_menu = QtWidgets.QMenu(self.menuBar)
205+
self.language_menu.setObjectName("language_menu")
206+
self.options_menu = QtWidgets.QMenu(self.menuBar)
207+
self.options_menu.setObjectName("options_menu")
206208
PDFdir.setMenuBar(self.menuBar)
207209
self.home_page_action = QtWidgets.QAction(PDFdir)
208210
self.home_page_action.setObjectName("home_page_action")
@@ -214,13 +216,18 @@ def setupUi(self, PDFdir):
214216
self.english_action.setObjectName("english_action")
215217
self.chinese_action = QtWidgets.QAction(PDFdir)
216218
self.chinese_action.setObjectName("chinese_action")
219+
self.fix_non_seq_action = QtWidgets.QAction(PDFdir)
220+
self.fix_non_seq_action.setCheckable(True)
221+
self.fix_non_seq_action.setObjectName("fix_non_seq_action")
217222
self.help_menu.addAction(self.home_page_action)
218223
self.help_menu.addAction(self.help_action)
219224
self.help_menu.addAction(self.update_action)
220-
self.menu.addAction(self.english_action)
221-
self.menu.addAction(self.chinese_action)
225+
self.language_menu.addAction(self.english_action)
226+
self.language_menu.addAction(self.chinese_action)
227+
self.options_menu.addAction(self.fix_non_seq_action)
228+
self.menuBar.addAction(self.options_menu.menuAction())
222229
self.menuBar.addAction(self.help_menu.menuAction())
223-
self.menuBar.addAction(self.menu.menuAction())
230+
self.menuBar.addAction(self.language_menu.menuAction())
224231

225232
self.retranslateUi(PDFdir)
226233
QtCore.QMetaObject.connectSlotsByName(PDFdir)
@@ -266,9 +273,12 @@ def retranslateUi(self, PDFdir):
266273
self.dir_tree_widget.headerItem().setText(2, _translate("PDFdir", "实际页数"))
267274
self.export_button.setText(_translate("PDFdir", "写入"))
268275
self.help_menu.setTitle(_translate("PDFdir", "帮助"))
269-
self.menu.setTitle(_translate("PDFdir", "语言"))
276+
self.language_menu.setTitle(_translate("PDFdir", "语言"))
277+
self.options_menu.setTitle(_translate("PDFdir", "选项"))
270278
self.home_page_action.setText(_translate("PDFdir", "主页"))
271279
self.help_action.setText(_translate("PDFdir", "帮助手册"))
272280
self.update_action.setText(_translate("PDFdir", "检查更新"))
273281
self.english_action.setText(_translate("PDFdir", "English"))
274282
self.chinese_action.setText(_translate("PDFdir", "中文"))
283+
self.fix_non_seq_action.setText(_translate("PDFdir", "修复乱序页码"))
284+
self.fix_non_seq_action.setIconText(_translate("PDFdir", "修复乱序页码"))

src/gui/main_ui.ui

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -490,15 +490,22 @@ p, li { white-space: pre-wrap; }
490490
<addaction name="help_action"/>
491491
<addaction name="update_action"/>
492492
</widget>
493-
<widget class="QMenu" name="menu">
493+
<widget class="QMenu" name="language_menu">
494494
<property name="title">
495495
<string>语言</string>
496496
</property>
497497
<addaction name="english_action"/>
498498
<addaction name="chinese_action"/>
499499
</widget>
500+
<widget class="QMenu" name="options_menu">
501+
<property name="title">
502+
<string>选项</string>
503+
</property>
504+
<addaction name="fix_non_seq_action"/>
505+
</widget>
506+
<addaction name="options_menu"/>
500507
<addaction name="help_menu"/>
501-
<addaction name="menu"/>
508+
<addaction name="language_menu"/>
502509
</widget>
503510
<action name="home_page_action">
504511
<property name="text">
@@ -525,6 +532,17 @@ p, li { white-space: pre-wrap; }
525532
<string>中文</string>
526533
</property>
527534
</action>
535+
<action name="fix_non_seq_action">
536+
<property name="checkable">
537+
<bool>true</bool>
538+
</property>
539+
<property name="text">
540+
<string>修复乱序页码</string>
541+
</property>
542+
<property name="iconText">
543+
<string>修复乱序页码</string>
544+
</property>
545+
</action>
528546
</widget>
529547
<resources/>
530548
<connections/>

0 commit comments

Comments
 (0)