From 991f6238367fd634274822d5d3a09ab4a627cb17 Mon Sep 17 00:00:00 2001 From: tutosrive Date: Sun, 15 Jun 2025 15:28:51 -0500 Subject: [PATCH 1/2] Update language confirgurations, fix language dialog retranslate --- src/PYMD/_pymd.py | 8 +- src/PYMD/database/_db.py | 14 - src/PYMD/{database => db_manager}/__init__.py | 0 src/PYMD/db_manager/db_manage.py | 15 + src/PYMD/interface/_interface.py | 16 +- src/PYMD/interface/_lang.py | 20 +- .../translations/locale/pymd_en_GB.qm | Bin 4042 -> 6739 bytes .../translations/locale/pymd_en_GB.ts | 133 +++++++-- .../translations/locale/pymd_es_CO.qm | Bin 4021 -> 5241 bytes .../translations/locale/pymd_es_CO.ts | 278 ++++++++++++++++++ 10 files changed, 428 insertions(+), 56 deletions(-) delete mode 100644 src/PYMD/database/_db.py rename src/PYMD/{database => db_manager}/__init__.py (100%) create mode 100644 src/PYMD/db_manager/db_manage.py create mode 100644 src/PYMD/interface/translations/locale/pymd_es_CO.ts diff --git a/src/PYMD/_pymd.py b/src/PYMD/_pymd.py index f5ef935..1b86690 100644 --- a/src/PYMD/_pymd.py +++ b/src/PYMD/_pymd.py @@ -1,9 +1,5 @@ -from ._converter import Converter -from ._files_manager import FileManager +from .db_manager import db_manage from chromologger import Logger as Log -from .interface import run -import sys - log:Log = Log('./logs/log_pymd') @@ -13,4 +9,6 @@ class Pymd: @staticmethod def run_app(): + db_manage.database_config() + from .interface import run run() \ No newline at end of file diff --git a/src/PYMD/database/_db.py b/src/PYMD/database/_db.py deleted file mode 100644 index b209f57..0000000 --- a/src/PYMD/database/_db.py +++ /dev/null @@ -1,14 +0,0 @@ -from sqlazo import Database -from chromologger import Logger as Log - -log = Log('./log.log') - -db = Database('./config.db', False) -# Query to validate that the table exists -validate_query = db.get_data_where('config_ui', 'id == 1') -if validate_query is None: - cols_config: list[str] = ['id INTEGER PRIMARY KEY', 'name TEXT NOT NULL', 'value TEXT NOT NULL'] - db.create_table('config_ui', cols_config) - db.insert_data(['current_lang_code', 'es_CO'], ['name', 'value'], 'config_ui') - db.insert_data(['last_directory_open', 'C:/'], ['name', 'value'], 'config_ui') - db.insert_data(['last_directory_output', 'C:/'], ['name', 'value'], 'config_ui') diff --git a/src/PYMD/database/__init__.py b/src/PYMD/db_manager/__init__.py similarity index 100% rename from src/PYMD/database/__init__.py rename to src/PYMD/db_manager/__init__.py diff --git a/src/PYMD/db_manager/db_manage.py b/src/PYMD/db_manager/db_manage.py new file mode 100644 index 0000000..a6d4513 --- /dev/null +++ b/src/PYMD/db_manager/db_manage.py @@ -0,0 +1,15 @@ +from sqlazo import Database +from chromologger import Logger as Log + +log = Log('./log.log') + +def database_config(): + db = Database('./db_manager/config.db', False) + # Query to validate that the table exists + validate_query = db.get_data_where('config_ui', 'id == 1') + if validate_query is None: + cols_config: list[str] = ['id INTEGER PRIMARY KEY', 'name TEXT NOT NULL', 'value TEXT NOT NULL'] + db.create_table('config_ui', cols_config) + db.insert_data(['current_lang_code', 'es_CO'], ['name', 'value'], 'config_ui') + db.insert_data(['last_directory_open', 'C:/'], ['name', 'value'], 'config_ui') + db.insert_data(['last_directory_output', 'C:/'], ['name', 'value'], 'config_ui') diff --git a/src/PYMD/interface/_interface.py b/src/PYMD/interface/_interface.py index 1084e0f..66dfb32 100644 --- a/src/PYMD/interface/_interface.py +++ b/src/PYMD/interface/_interface.py @@ -15,7 +15,7 @@ # Feature: Change focus order (the exit dialog focus is "ok", should be "cancel") -db = Database('./database/config.db', False) +db = Database('./db_manager/config.db', False) log:Log = Log('./logs/log_interface') app = QApplication(sys.argv) @@ -29,8 +29,8 @@ def __init__(self, parent=None): super().__init__(parent) self.__closed_ui:bool = False self.current_lang = lang_manager.lang_code - lang_manager.set_super_parent(self) self.ui: Ui_MainWindow = Ui_MainWindow() + lang_manager.set_super_parent(self) self.ui.setupUi(self) self.__listeners() # Hide views temporally (to Show initial help) @@ -71,10 +71,12 @@ def __open_file(self): # Save last directory print(self.__filename.absolute().parent.__str__()) db.insert_data(['last_directory_open', self.__filename.absolute().parent.__str__()], ['name', 'value'], 'config_ui') + # Feature: Show progress bar # => Can be a Label image (hide initialHelp if all ok, continue else show initialHelp again) __converter:Converter = Converter(self.__filename.absolute().__str__()) __content:str | None = __converter.convert_file().data_str + if __content is not None: self.__init_help.hide() self.ui.frame_views.show() @@ -113,7 +115,7 @@ def __extensions(self) -> str: def __exit(self, event_target: QCloseEvent | None = None): __result:int = self.__box_dialog(self.tr('Close Program'),self.tr('Do you want to close this program?'),{'ok': self.tr('Accept')}).exec() - print(__result) + if __result == 1024: self.__closed_ui = True self.close() @@ -129,11 +131,15 @@ def __language(self): if self.ui.text_preview_mode.isVisible(): # Show a warning dialog before change language __result = self.__box_dialog(self.tr('Warning'), self.tr('Extracted content will be deleted once you change the language (unless you have already saved it)'),{'ok': self.tr('Accept')}).exec() + if not self.ui.text_preview_mode.isVisible() or __result == 1024: #Feature: Save content in a temporal file (The content is removed when language change) lang_manager.show_dialog() - #Update UI language + + #Update UI language (MainWindow > childs and Language Dialog) self.ui.retranslateUi(self) + lang_manager.lang_dialog.retranslateUi(self) + self.current_lang = lang_manager.lang_code # When initial info screen is visible if self.__init_help.info.isVisible(): self.__init_help.load_info(self.current_lang) @@ -149,10 +155,12 @@ def __box_dialog(self, title:str = '', text:str = '', buttons_cancel_ok:dict | N __dialog.setWindowIcon(__icon) __dialog.setWindowTitle(title) __dialog.setText(text) + # Has been received a dict with buttons if buttons_cancel_ok is not None and type(buttons_cancel_ok) is dict: if 'ok' in buttons_cancel_ok: __buttons_txt[0] = buttons_cancel_ok['ok'] if 'cancel' in buttons_cancel_ok: __buttons_txt[1] = buttons_cancel_ok['cancel'] + # Set visible text for each button __dialog.button(__dialog.StandardButton.Ok).setText(__buttons_txt[0]) __dialog.button(__dialog.StandardButton.Cancel).setText(__buttons_txt[1]) diff --git a/src/PYMD/interface/_lang.py b/src/PYMD/interface/_lang.py index 0c26148..c7e9902 100644 --- a/src/PYMD/interface/_lang.py +++ b/src/PYMD/interface/_lang.py @@ -1,10 +1,10 @@ from PySide6.QtCore import Qt, QTranslator, QLocale -from PySide6.QtWidgets import QApplication +from PySide6.QtWidgets import QApplication, QMainWindow from .ui_dialog_language import Ui_Lang_Dialog from PySide6.QtWidgets import QDialog from sqlazo import Database -db = Database('./database/config.db', False) +db = Database('./db_manager/config.db', False) class LanguageManager(QDialog): def __init__(self, app:QApplication=None): @@ -14,19 +14,23 @@ def __init__(self, app:QApplication=None): self.lang_file:str = '' self.__translator:QTranslator = QTranslator(app) self.__app:QApplication = app - self.parent = None - self.__lang_dialog = None + self.parent:QMainWindow | None = None + self.lang_dialog:Ui_Lang_Dialog | None = None def set_super_parent(self, parent): self.parent = parent super().__init__(self.parent) - self.__lang_dialog = Ui_Lang_Dialog() - self.__lang_dialog.setupUi(self) + self.lang_dialog = Ui_Lang_Dialog() + self.lang_dialog.setupUi(self) def show_dialog(self): + __buttons_dialog = self.lang_dialog.dialog_btn + __buttons_dialog.setStandardButtons(__buttons_dialog.StandardButton.Ok | __buttons_dialog.StandardButton.Cancel) + __buttons_dialog.button(__buttons_dialog.StandardButton.Ok).setText(self.tr('Save')) + __buttons_dialog.button(__buttons_dialog.StandardButton.Cancel).setText(self.tr('Cancel')) self.exec() - if self.result() == 1 and self.__lang_dialog.languages.currentItem() is not None: - self.lang_code:str = self.__lang_dialog.languages.currentItem().toolTip() + if self.result() == 1 and self.lang_dialog.languages.currentItem() is not None: + self.lang_code:str = self.lang_dialog.languages.currentItem().toolTip() # Pending improvement (when 'update_data' is added to 'sqlazo') db.delete_data('config_ui', 'name == "current_lang_code"') db.insert_data(['current_lang_code', self.lang_code], ['name', 'value'], 'config_ui') diff --git a/src/PYMD/interface/translations/locale/pymd_en_GB.qm b/src/PYMD/interface/translations/locale/pymd_en_GB.qm index ecdf4e73e6603ac7b034c3ee26f15ab4997e919f..84f9cbe67b5fdc96915560fbb0c0ff79458af6cb 100644 GIT binary patch literal 6739 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 Gw(UQ}D4-+& delta 555 zcmX|+O=uHQ6ot?HWqzDVAdN{|u#UTQ7PW#!BL%HS6rm*$1k;7JB$H-flC)&d>;}Pw zLal}e3ayA@b_Ew5!G&(b3My)aXhE0OO(7HtEkaT2)neb~yBy9v@7&hmxBGAR`27%m zNI<9raY+Q!IK*~8aR}1jdE!?{7h{0_5NGZzlJD3K^(lZ#m*k@%jVGF)oYqGwXodNBl{=NBjl&@_QP#N%$?!-=YG_L845&B(?G@ zfOb5zaf3cWT2?Qt0m8UEy>yrKRe5!5nS$HO$igNSbrol(MTI^njevaWqa7N&%8w<; zKdX*jc>{z^&3^ZZ4%yP?Uf;)2;Il4H(FJJe;_PWMO8PUdMnSq!Oe~NNe=p=kU-7B;1La8SVnYP;J?*7iK7GErkM!ZEfI?_<8v!Spanish - CO + + LanguageManager + + + Save + Save + + + + Cancel + Cancel + + MainWindow - + Open File Open File - Select a file (*pdf *html *docx) - Select a file (*pdf *html *docx) + Select a file (*pdf *html *docx) + + + + Select a file + Select a file - + + + + Warning + Warning + + + + The file does not contain plain text (make sure the file content is not just images) + The file does not contain plain text (make sure the file content is not just images) + + + + Select a directory + Select a directory + + + + The file is empty + The file is empty + + + + + + Accept + Accept + + + Close Program Close Program - + Do you want to close this program? Do you want to close this program? + + + Extracted content will be deleted once you change the language (unless you have already saved it) + Extracted content will be deleted once you change the language (unless you have already saved it) + + + + Ok + Ok + + + + Cancel + Cancel + PYMD - SRM & TRG @@ -63,18 +124,6 @@ Markdown Markdown - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css"> -p, li { white-space: pre-wrap; } -hr { height: 1px; border-width: 0; } -li.unchecked::marker { content: "\2610"; } -li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Gabriola'; font-size:12pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - Preview @@ -110,9 +159,32 @@ li.checked::marker { content: "\2612"; } Menu - Settings - Settings + Settings + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css"> +p, li { white-space: pre-wrap; } +hr { height: 1px; border-width: 0; } +li.unchecked::marker { content: "\2610"; } +li.checked::marker { content: "\2612"; } +</style></head><body style=" font-family:'Times New Roman'; font-size:12pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Gabriola';"><br /></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css"> +p, li { white-space: pre-wrap; } +hr { height: 1px; border-width: 0; } +li.unchecked::marker { content: "\2610"; } +li.checked::marker { content: "\2612"; } +</style></head><body style=" font-family:'Times New Roman'; font-size:12pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Gabriola';"><br /></p></body></html> + + + + Preferences + Preferences @@ -170,17 +242,29 @@ li.checked::marker { content: "\2612"; } Open Source Licences + + OSL + + + {__name_library.capitalize()} - original: {__links[__name_library.lower()]} + {__name_library.capitalize()} - original: {__links[__name_library.lower()]} + + about_dialog - + About About - + + <code>pip install pymd</code> + <code>pip install pymd</code> + + PYMD - PYMD + PYMD @@ -207,12 +291,11 @@ li.checked::marker { content: "\2612"; } PySide6 - Markdown - Markdown + Markdown - + CREDITS CREDITS diff --git a/src/PYMD/interface/translations/locale/pymd_es_CO.qm b/src/PYMD/interface/translations/locale/pymd_es_CO.qm index cfd4de31369db1974882d19a69dadcb2f8fbd4dc..0d0b7a9991f675e0750a4f32fe002c6410266cf4 100644 GIT binary patch delta 1857 zcmah}ZHQD=7=CBw&d$uv*RH6WhTD;-oso2xBrw^;RaPx^-P&CeC6}{z&dwh9e$3vv zv+Ec#NeKz!M;FvgQs_rNB!BEu{zxdal0Y)hga|R|SNKtu_92x$=g!Wek~G7)@44rF z-{<{$&i(MQKQnuqE3XlSHxk89QRw$DQKXNwa~e_XJ<_hV;k<#u?R}63D17j9qCgX^ z-2WL--HEDfY@-d=o*`<;(#iG;{N@GI$GeCc-wmDE{wz^)SSufPVSinF^C)l{&u9mq zKS@NFsr?j5PGQSLaVs`jYusKB? zegOq??@OhwL)S&YI}({O_kZj3jz%^`7`h?InFvMS2t2WfKA{&;qEts%MRZZM$-%$c zQ?$%G9@}2|lseHorM1yY7d95Wa(H9dZ^4Q3xITGO^f9jZIsl zZgCy1yCTPQ%s^N!8HSncGnJgO7?g%k%E}j$b60H8X$XL$DlB!;Iy`G^Q2ep5n9mHw z21W({vZ--lekfCMB2RaK!+k4;2`i7)#VA#IENA0VTDI%6fJ=)N4E1!y7MEpAJ}g+V)Z$?HHHR8oWYukR zspv9k;%ia#2fkw7Lwcp|m5X!~<2ibE{hpyTPNf4>VHVu7*PUGYl#ECcBNzXSO5r(&ENq21`R) z!^Mpcco_DWa5C9fwyAGgXkE{mK0?LH=dGRd;PfFqJ58`;q8knYru1S~2h?94( zsyZz@ntjCYlq21f#4jo4t2Z>rH)Z(6byNZ~Du0S5z@W+x?I&ZuI`h;?hO=7Sm!*AZ z&oT)z+;(HGh8hf6fGfgoaS^u7D=|&>u}u!swM>t+g69E_MAq5INkQXe%1YV>WBde5 z31!?kyD2mXwMe3U?3Xa)U`x_rp$N4w$HH~gmPJJh!NjS z4jq1!Awla>7Is&0VOHQRJfY{PC|W6_i%35L=pZIee1LY-40>kV63vsA+VcsxD{^=PEd>ee#&`o>Tl zTl5^FD}nWFuY2PTDP*MDV#)4yx*bqrmSHDbnv + + + + Lang_Dialog + + + Select Language + Seleccionar Lenguaje + + + + English - GB + Inglés - GB + + + + Spanish - CO + Español - CO + + + + LanguageManager + + + Save + Guardar + + + + Cancel + Cancelar + + + + MainWindow + + + Select a file + Seleccione un archivo + + + + + + Open File + Abrir Archivo + + + + + + Warning + Precaución + + + + The file does not contain plain text (make sure the file content is not just images) + El archivo NO contiene text plano (Asegúrate de que el contenido del archivo no sean solo imágenes) + + + + Select a directory + Seleccione un directorio + + + + The file is empty + El archivo está vacío + + + + + + Accept + Aceptar + + + + Close Program + Cerrrar programa + + + + Do you want to close this program? + ¿Quieres cerrar el programa? + + + + Extracted content will be deleted once you change the language (unless you have already saved it) + El contenido extraído será eliminado una vez cambie el idioma (a menos que ya lo hayas guardado) + + + + Ok + Aceptar + + + + Cancel + Cancelar + + + + PYMD - SRM & TRG + PYMD - SRM Y TRG + + + + Change language + Cambiar idioma + + + + Ctrl+A + + + + + Markdown + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css"> +p, li { white-space: pre-wrap; } +hr { height: 1px; border-width: 0; } +li.unchecked::marker { content: "\2610"; } +li.checked::marker { content: "\2612"; } +</style></head><body style=" font-family:'Times New Roman'; font-size:12pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Gabriola';"><br /></p></body></html> + + + + + Preview + Vista previa + + + + Save file to Markdown (.md) + Guardar archivo como Markdown + + + + Convert + Convertir + + + + Ctrl+Enter + Button to save/convert .md file + + + + + <html><head/><body><p>© 2025 Tutos Rive. Licensed under the <a href="https://github.com/tutosrive/pymd/blob/main/LICENSE"><span style=" text-decoration: underline; color:#27bf73;">MIT License</span></a></p><p><br/></p></body></html> + Copyright Notice - Footer + <html><head/><body><p>© 2025 Tutos Rive. Bajo <a href="https://github.com/tutosrive/pymd/blob/main/LICENSE"><span style=" text-decoration: underline; color:#27bf73;">Licencia MIT</span></a></p><p><br/></p></body></html> + + + + Menu + Menú + + + + Preferences + Preferencias + + + + Help + Ayuda + + + + Ctrl+O + + + + + Exit + Salir + + + + Ctrl+W + + + + + About + Acerca de + + + + Ctrl+M + + + + + Language + Idioma + + + + Ctrl+L + + + + + Theme + Tema + + + + Ctrl+T + + + + + Open Source Licences + Licencias de código abierto + + + + OSL + + + {__name_library.capitalize()} - original: {__links[__name_library.lower()]} + + + + + about_dialog + + + About + Acerca de + + + + <code>pip install pymd</code> + + + + + dialog_osl + + + Open Source Licenses - Notice + Lincencias de código abierto - Aviso + + + + + Select a library + Seleccione una librería + + + + Markitdown + + + + + PySide6 + + + + + CREDITS + CRÉDITOS + + + From 73d384e88ccadbec0c752e79b1ed270919fa640e Mon Sep 17 00:00:00 2001 From: tutosrive Date: Sun, 15 Jun 2025 15:40:07 -0500 Subject: [PATCH 2/2] Fix title retranslate UI dialog --- src/PYMD/interface/_interface.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PYMD/interface/_interface.py b/src/PYMD/interface/_interface.py index 66dfb32..71b9943 100644 --- a/src/PYMD/interface/_interface.py +++ b/src/PYMD/interface/_interface.py @@ -138,7 +138,7 @@ def __language(self): #Update UI language (MainWindow > childs and Language Dialog) self.ui.retranslateUi(self) - lang_manager.lang_dialog.retranslateUi(self) + lang_manager.lang_dialog.retranslateUi(lang_manager) self.current_lang = lang_manager.lang_code # When initial info screen is visible