Skip to content

Commit

Permalink
version 2.3.0
Browse files Browse the repository at this point in the history
* now the application can remember its form size and position.
Augus1999 authored Dec 18, 2023
1 parent 0e3d7b4 commit c370afd
Showing 8 changed files with 60 additions and 108 deletions.
2 changes: 1 addition & 1 deletion pypdfeditor_core/__init__.py
Original file line number Diff line number Diff line change
@@ -16,7 +16,7 @@

__system__ = platform.system()
__author__ = "Nianze A. TAO (Omozawa SUENO)"
__version__ = "2.2.7"
__version__ = "2.3.0"
__all__ = ["main", "reset", "remove"]


6 changes: 3 additions & 3 deletions pypdfeditor_core/__main__.py
Original file line number Diff line number Diff line change
@@ -9,7 +9,7 @@


if __name__ == "__main__":
debug = False
DEBUG= False
parser = ArgumentParser(description="pyPDFeditor-GUI")
parser.add_argument(
"--reset",
@@ -32,5 +32,5 @@
remove()
sys.exit(0)
if args.debug:
debug = True
main(debug=debug)
DEBUG = True
main(debug=DEBUG)
28 changes: 11 additions & 17 deletions pypdfeditor_core/application.py
Original file line number Diff line number Diff line change
@@ -149,11 +149,18 @@ def __init__(self, system: str, version: str):
)
self.tab4.table.Index.connect(lambda par: self.show_index(par, self.tab4))
set_language(self)
self.settings = QtCore.QSettings("QtProject", "pyPDFEditor-GUI")
if not self.settings.value("geometry") == None:
self.restoreGeometry(self.settings.value("geometry"))
if not self.settings.value("windowState") == None:
self.restoreState(self.settings.value("windowState"))

def closeEvent(self, event) -> None:
"""
write settings to settings.json
"""
self.settings.setValue("geometry", self.saveGeometry())
self.settings.setValue("windowState", self.saveState())
_settings = {
"start dir": self.s_dir,
"save dir": self.o_dir,
@@ -165,23 +172,15 @@ def closeEvent(self, event) -> None:
os.makedirs(app_home)
if os.path.exists(os.path.join(app_home, "settings.json")):
with open(
os.path.join(app_home, "settings.json"),
mode="r",
encoding="utf-8",
os.path.join(app_home, "settings.json"), mode="r", encoding="utf-8"
) as c:
states = json.load(c)
if states == _settings:
return # if no new settings do not write
with open(
os.path.join(app_home, "settings.json"), mode="w", encoding="utf-8"
) as f: # write new settings
json.dump(
_settings,
f,
sort_keys=True,
indent=4,
separators=(",", ": "),
)
json.dump(_settings, f, sort_keys=True, indent=4, separators=(",", ": "))

def enable_preview(self) -> None:
"""
@@ -366,7 +365,7 @@ def _set(self) -> None:
self.SettingCD.show()
self.SettingCD.signal.connect(self.get_data)

def get_perm_para(self, par) -> None:
def get_perm_para(self, par: int) -> None:
"""
obtain permission code
"""
@@ -572,12 +571,7 @@ class Setting(SettingR):
setting window
"""

signal = QtCore.pyqtSignal(
str,
str,
bool,
str,
)
signal = QtCore.pyqtSignal(str, str, bool, str)

def __init__(self, set_dict: dict):
super().__init__()
71 changes: 15 additions & 56 deletions pypdfeditor_core/functions.py
Original file line number Diff line number Diff line change
@@ -25,14 +25,8 @@
from .icons import icon_path
from .language import MENU_L, MESSAGE

SUPPORT_IMG_FORMAT = (
".png",
".jpg",
".jpeg",
".bmp",
".tiff",
".svg",
) # list .svg at the end!
# list .svg at the end!
SUPPORT_IMG_FORMAT = (".png", ".jpg", ".jpeg", ".bmp", ".tiff", ".svg")
SUPPORT_FORMAT = (".pdf", ".epub", ".xps", ".fb2", ".cbz") + SUPPORT_IMG_FORMAT
SUPPORT_OUT_FORMAT = (".pdf",)

@@ -110,11 +104,7 @@ def render_pdf_page(page_data: Doc.load_page) -> QtGui.QPixmap:
:param page_data: page data
:return: a QPixmap
"""
page_pixmap = get_pixmap(
page_data,
matrix=Identity,
clip=True,
)
page_pixmap = get_pixmap(page_data, matrix=Identity, clip=True)
if page_pixmap.alpha:
image_format = QtGui.QImage.Format_RGBA8888
else:
@@ -171,16 +161,8 @@ def add_watermark(
x, y = position
x, y = int(x), int(y)
for page in doc:
r1 = Rect(
10 + x,
10 + y,
page.rect.width - 10 + x,
page.rect.height - 10 + y,
)
pos0 = Point(
page.rect.width // 2 + x,
page.rect.height // 2 + y,
)
r1 = Rect(10 + x, 10 + y, page.rect.width - 10 + x, page.rect.height - 10 + y)
pos0 = Point(page.rect.width // 2 + x, page.rect.height // 2 + y)
shape = Shape(page)
shape.insert_textbox(
r1,
@@ -208,11 +190,7 @@ def setting_warning(set_file_name: str, parent: QWidget) -> dict:
:return: a dict loaded from JSON file or default values
"""
try:
with open(
set_file_name,
"r",
encoding="utf-8",
) as f:
with open(set_file_name, "r", encoding="utf-8") as f:
content = json.load(f)
if "start dir" not in content:
content["start dir"] = ""
@@ -409,23 +387,19 @@ def generate_menu(pos, widget: QWidget, main: QWidget, select: int = 0) -> None:
if 0 <= index < len(widget.book_list):
menu = QtWidgets.QMenu()
item1 = menu.addAction(
QtGui.QIcon(os.path.join(icon_path, "delete.svg")),
MENU_L[main.language][0],
QtGui.QIcon(os.path.join(icon_path, "delete.svg")), MENU_L[main.language][0]
)
item2, item3, item4, item5, item6, item7, item8 = (None for _ in range(7))
if select in (0, 2):
item3 = menu.addAction(
QtGui.QIcon(str(icon_path / "view.svg")),
MENU_L[main.language][1],
QtGui.QIcon(str(icon_path / "view.svg")), MENU_L[main.language][1]
)
if select == 1:
item2 = menu.addAction(
QtGui.QIcon(str(icon_path / "down.svg")),
MENU_L[main.language][2],
QtGui.QIcon(str(icon_path / "down.svg")), MENU_L[main.language][2]
)
item4 = menu.addAction(
QtGui.QIcon(str(icon_path / "Photo.svg")),
MENU_L[main.language][3],
QtGui.QIcon(str(icon_path / "Photo.svg")), MENU_L[main.language][3]
)
item5 = menu.addAction(
QtGui.QIcon(str(icon_path / "rotate_clockwise.svg")),
@@ -437,13 +411,11 @@ def generate_menu(pos, widget: QWidget, main: QWidget, select: int = 0) -> None:
)
if select in (1, 2):
item7 = menu.addAction(
QtGui.QIcon(str(icon_path / "move_page.svg")),
MENU_L[main.language][6],
QtGui.QIcon(str(icon_path / "move_page.svg")), MENU_L[main.language][6]
)
if select == 0:
item8 = menu.addAction(
QtGui.QIcon(str(icon_path / "arrow_move.svg")),
MENU_L[main.language][7],
QtGui.QIcon(str(icon_path / "arrow_move.svg")), MENU_L[main.language][7]
)
action = menu.exec_(widget.table.mapToGlobal(pos))
if action == item1:
@@ -623,10 +595,7 @@ def rearrange_page(index: int, widget: QWidget, parent: QWidget) -> None:
widget.book_list.insert(value, page_index)
widget.book_list.remove(None)
widget.table.clearContents()
reset_table(
book_len=len(widget.book_list),
widget=widget,
)
reset_table(book_len=len(widget.book_list), widget=widget)
set_icon(widget)
return None

@@ -835,12 +804,7 @@ def warning(parent) -> None:
:param parent: parent
:return: None
"""
QMessageBox.warning(
parent,
"Oops",
MESSAGE[parent.language][2],
QMessageBox.Yes,
)
QMessageBox.warning(parent, "Oops", MESSAGE[parent.language][2], QMessageBox.Yes)


def _open_warning(parent: QWidget) -> Tuple[None, bool]:
@@ -850,10 +814,5 @@ def _open_warning(parent: QWidget) -> Tuple[None, bool]:
:param parent: parent
:return: (None, False)
"""
QMessageBox.critical(
parent,
"Oops",
MESSAGE[parent.language][0],
QMessageBox.Yes,
)
QMessageBox.critical(parent, "Oops", MESSAGE[parent.language][0], QMessageBox.Yes)
return None, False
4 changes: 4 additions & 0 deletions pypdfeditor_core/language.py
Original file line number Diff line number Diff line change
@@ -253,3 +253,7 @@ def lag_p(parent: QtWidgets.QWidget, language: str) -> None:
parent.label6.setText(LAB_LP[language][5])
parent.label7.setText(LAB_LP[language][6])
parent.label8.setText(LAB_LP[language][7])


if __name__ == "__main__":
...
4 changes: 2 additions & 2 deletions pypdfeditor_core/style_sheets.py
Original file line number Diff line number Diff line change
@@ -65,7 +65,7 @@
border-radius:3px;
min-height:45px}}
"""
TEXTEDIT_STYlE = f"""
TEXTEDIT_STYLE = f"""
QTextEdit{{font-size:11pt;
border-top-left-radius:5px;
border-top-right-radius:5px;
@@ -196,7 +196,7 @@
background-color:#e2e2dd;
color:#8d90a4}}
"""
SCROLL_AREA_STYlE = f"""
SCROLL_AREA_STYLE = f"""
QScrollArea{{
border:none;
background-color:transparent}}
9 changes: 6 additions & 3 deletions pypdfeditor_core/window_effect.py
Original file line number Diff line number Diff line change
@@ -81,9 +81,8 @@ def monitorNCCALCSIZE(_msg: MSG, geometry) -> None:
params.rgrc[0].left = geometry.x()
params.rgrc[0].top = geometry.y()
params.rgrc[0].right = geometry.width()
params.rgrc[0].bottom = (
geometry.height() - 1
) # enable to show taskbar when it is set to auto-hide
# enable to show taskbar when it is set to auto-hide
params.rgrc[0].bottom = geometry.height() - 1

def add_window_style(self, h_wnd: int) -> None:
"""
@@ -138,3 +137,7 @@ def screen_change(self, h_wnd: int) -> None:
0, # left top right bottom
0x0002 | 0x0001 | 0x0020, # SWP_NOMOVE # SWP_NOSIZE # SWP_FRAMECHANGED
)


if __name__ == "__main__":
...
44 changes: 18 additions & 26 deletions pypdfeditor_core/windows.py
Original file line number Diff line number Diff line change
@@ -37,10 +37,10 @@
TAB_STYLE,
LABEL_STYLE,
LINE_EDIT_STYLE,
TEXTEDIT_STYlE,
TEXTEDIT_STYLE,
SWITCH_STYLE,
COMBO_BOX_STYLE,
SCROLL_AREA_STYlE,
SCROLL_AREA_STYLE,
TABLE_STYLE1,
TABLE_STYLE2,
BUTTON_STYLE,
@@ -206,22 +206,14 @@ def draw_bg(self, painter) -> None:
path = QPainterPath()
path.moveTo(radius, rect.left())
path.arcTo(
QtCore.QRectF(
rect.left(),
rect.top(),
circle_width,
circle_width,
),
QtCore.QRectF(rect.left(), rect.top(), circle_width, circle_width),
90,
180,
)
path.lineTo(rect.width() - radius, rect.height())
path.arcTo(
QtCore.QRectF(
rect.width() - rect.height(),
rect.top(),
circle_width,
circle_width,
rect.width() - rect.height(), rect.top(), circle_width, circle_width
),
270,
180,
@@ -243,10 +235,7 @@ def draw_slider(self, painter) -> None:
rect = QtCore.QRect(0, 0, self.width(), self.height())
slider_width = rect.height() - self.space * 2
slider_rect = QtCore.QRect(
int(self.startX + self.space),
self.space,
slider_width,
slider_width,
int(self.startX + self.space), self.space, slider_width, slider_width
)
painter.drawEllipse(slider_rect)
painter.restore()
@@ -468,7 +457,13 @@ def __init__(self, system: str, version: str):
self.tab2.setStyleSheet(BGC_STYLE % LIGHT_COLOUR)
self.tab3.setStyleSheet(BGC_STYLE % LIGHT_COLOUR)
self.tab4.setStyleSheet(BGC_STYLE % LIGHT_COLOUR)
return

def saveState(self) -> QtCore.QByteArray:
return QtCore.QByteArray(f"{self.pos().x()},{self.pos().y()}".encode())

def restoreState(self, state: QtCore.QByteArray) -> None:
x, y = [int(i) for i in str(state)[2:-1].split(",")]
self.move(x, y)

def paintEvent(self, event) -> None:
"""
@@ -608,7 +603,7 @@ def tab0_init(self) -> None:
<p style='color:#333;font-family:Verdana'>Out [4]: STAND WITH ISRAEL 🇮🇱</p>
<p style='color:#333;font-family:Verdana'>Out [5]: ...</p>
"""
)
)
shadow(text, QColor(0, 0, 0, 90), 10)
label_w = QLabel(self.tab0)
label_w.setStyleSheet(LABEL_STYLE)
@@ -719,7 +714,7 @@ def tab3_init(self) -> None:
initialize tab3
"""
scroll_area = QScrollArea()
scroll_area.setStyleSheet(SCROLL_AREA_STYlE)
scroll_area.setStyleSheet(SCROLL_AREA_STYLE)
self.widget3.setMinimumSize(int(self.width() * 0.8), int(self.height() * 0.8))
layout = QGridLayout(self.widget3)
scroll_area.setWidget(self.widget3)
@@ -813,7 +808,7 @@ def tab3_init(self) -> None:
self.tab3.line3.setText("90")
self.tab3.line4.setText("40")
self.tab3.line5.setText(" 0")
self.tab3.text.setStyleSheet(TEXTEDIT_STYlE)
self.tab3.text.setStyleSheet(TEXTEDIT_STYLE)
self.tab3.line1.setStyleSheet(LINE_EDIT_STYLE)
self.tab3.line2.setStyleSheet(LINE_EDIT_STYLE)
self.tab3.line3.setStyleSheet(LINE_EDIT_STYLE)
@@ -899,7 +894,7 @@ def tab4_init(self) -> None:
initialize tab4
"""
scroll_area = QScrollArea()
scroll_area.setStyleSheet(SCROLL_AREA_STYlE)
scroll_area.setStyleSheet(SCROLL_AREA_STYLE)
self.widget4.setMinimumSize(int(self.width() * 0.8), int(self.height() * 0.8))
layout = QGridLayout(self.widget4)
scroll_area.setWidget(self.widget4)
@@ -937,7 +932,7 @@ def tab4_init(self) -> None:
)
self.tab4.table.setStyleSheet(TABLE_STYLE2)
self.tab4.text = QTextEdit(self.tab4)
self.tab4.text.setStyleSheet(TEXTEDIT_STYlE)
self.tab4.text.setStyleSheet(TEXTEDIT_STYLE)
self.tab4.text.setLineWrapColumnOrWidth(2000)
self.tab4.text.setLineWrapMode(QTextEdit.FixedPixelWidth)
self.tab4.label0 = QLabel(self.tab4)
@@ -954,10 +949,7 @@ def tab4_init(self) -> None:
self.tab4.label5.setStyleSheet(LABEL_STYLE)
self.tab4.label1.setPixmap(
QPixmap(str(icon_path / "book2.svg")).scaled(
180,
180,
QtCore.Qt.IgnoreAspectRatio,
QtCore.Qt.SmoothTransformation,
180, 180, QtCore.Qt.IgnoreAspectRatio, QtCore.Qt.SmoothTransformation
),
)
self.tab4.line1 = QLineEdit(self.tab4)

0 comments on commit c370afd

Please sign in to comment.