+
    ¬xj”  ã                  óD  € ^ RI Ht ^ RIt^ RIHt ^ RIHtHtHt ^ RI	H
t
Ht ^ RIHtHtHtHtHtHtHtHtHtHtHtHtHtHt ^RIHtHtHtHtH t  ^RI!H"t"H#t#H$t$ ^R	I%H&t& ^R
I'H(t(H)t)H*t* ^RI+H,t,H-t- ^RI.H/t/H0t0H1t1H2t2H3t3H4t4 ]Pj                  ! ]64      t7 ! R R]4      t8R# )é    )ÚannotationsN)ÚPath)ÚQtÚQThreadPoolÚQTimer)ÚQActionÚQKeySequence)ÚQButtonGroupÚQDialogÚQFileDialogÚQHBoxLayoutÚQLabelÚQMainWindowÚQMessageBoxÚQProgressBarÚQPushButtonÚ	QSplitterÚQToolBarÚQToolButtonÚQVBoxLayoutÚQWidget)ÚEditTextDialogÚ
FontDialogÚSettingsDialogÚload_qsettingsÚsave_qsettings)ÚDocumentElementÚDocumentModelÚElementType)Ú
PDFService)Údiscover_tesseractÚexception_textÚ
free_space)Ú
PageEditorÚPreviewWidget)Ú
BaseWorkerÚ
DocxWorkerÚImageWorkerÚ	OCRWorkerÚRenderWorkerÚTableWorkerc                  óÞ  a € ] tR t^4tR V 3R lltR R ltR R ltR R ltR	 R
 ltR R lt	R R lt
R R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R  ltR! R" ltR# R$ ltR% R& ltR' R( ltR) R* ltR+ R, ltR- R. ltR/ R0 ltR1 R2 ltR3 R4 ltR5 R6 ltR7 R8 ltR9 R: lt R; R< lt!R= R> lt"R? R@ lt#RA RB lt$RC RD lt%RE RF lt&RG RH lt'RI RJ lt(RKt)V ;t*# )LÚ
MainWindowc               ó   € V ^8„  d   QhRR/# ©é   ÚreturnÚNone© )Úformats   "ÚF/home/ahrirg/test/pdf-to-docx-semi-manual-convertor/app/main_window.pyÚ__annotate__ÚMainWindow.__annotate__5   s   € ÷ (,ñ (,˜$ñ (,ó    c                	óF  <€ \         SV `  4        V P                  R 4       V P                  RR4       \        P
                  ! 4       V n        \        4       w  pppppV'       g   \        4       p\        VVVVVR7      V n
        RV n        \        4       V n        / V n        V P                  4        V P!                  4        V P#                  4        V P%                  4        V P'                  4       P)                  R4       \*        P,                  ! ^ V P.                  4       R# )u   PDF â†’ DOCX OCR Editoriª  i¶  )ÚfontÚtesseract_pathÚocr_languageÚ
render_dpiÚ
preprocessNzSelect a PDF to begin.)ÚsuperÚ__init__ÚsetWindowTitleÚresizer   ÚglobalInstanceÚthread_poolr   r!   r   ÚmodelÚ_current_render_workerÚsetÚ_processing_workersÚ_moving_old_rectsÚ	_build_uiÚ_build_menuÚ_build_toolbarÚ_build_shortcutsÚ	statusBarÚshowMessager   Ú
singleShotÚopen_pdf)Úselfr:   r;   ÚlanguageÚdpir>   Ú	__class__s   &     €r5   r@   ÚMainWindow.__init__5   sù   ø€ Ü‰ÑÔà×ÑÐ5Ô6Ø�‰�D˜#Ôä&×5Ò5Ó7ˆÔô Óñ	
ØØØØØ÷ Ü/Ó1ˆNä"ØØ)Ø!ØØ!ô
ˆŒ
ð <@ˆÔ#Ü47³EˆÔ Ø35ˆÔà�‰ÔØ×ÑÔØ×ÑÔØ×ÑÔà�‰Ó×$Ñ$Ø$ô	
ô 	×Ò˜!˜TŸ]™]Ö+r8   c               ó   € V ^8„  d   QhRR/# r/   r3   )r4   s   "r5   r6   r7   c   s   € ÷ Gñ G˜4ñ Gr8   c                	óÖ  a € \        4       pS P                  V4       \        V4      pVP                  ^^^^4       \	        S P
                  S 4      S n        VP                  S P                  ^4       \        4       p\        R4      S n
        VP                  S P                  4       \        4       S n        S P                  P                  ^ ^d4       S P                  P                  ^ 4       VP                  S P                  ^4       \        R4      S n        \        R4      S n        \        R4      S n        S P                   P&                  P)                  V 3R l4       S P"                  P&                  P)                  V 3R l4       S P$                  P&                  P)                  S P*                  4       VP                  S P                   4       VP                  S P"                  4       VP                  S P$                  4       VP-                  V4       S P                  P.                  P)                  S P0                  4       S P                  P2                  P)                  S P4                  4       S P                  P6                  P)                  S P8                  4       S P                  P:                  P)                  S P<                  4       S P?                  4        R# )é   z
Page 0 / 0ÚPreviousÚNextúGenerate DOCXc                 ó&   <€ S P                  R4      # ©é   éÿÿÿÿ©Úchange_page©rR   s   €r5   Ú<lambda>Ú&MainWindow._build_ui.<locals>.<lambda>†   s   ø€ �D×$Ñ$ RÔ(r8   c                 ó&   <€ S P                  ^4      # ©r_   ra   rc   s   €r5   rd   re   Š   s   ø€ �D×$Ñ$ QÔ'r8   N) r   ÚsetCentralWidgetr   ÚsetContentsMarginsr$   rE   Ú
pdf_editorÚ	addWidgetr   r   Ú
page_labelr   ÚprogressÚsetRangeÚsetValuer   Úprev_buttonÚnext_buttonÚgenerate_buttonÚclickedÚconnectÚgenerate_docxÚ	addLayoutÚselection_createdÚon_selection_createdÚselection_changedÚon_selection_changedÚselection_deletedÚdelete_elementÚelement_double_clickedÚedit_elementÚ_apply_style)rR   ÚcentralÚmain_layoutÚbottoms   f   r5   rJ   ÚMainWindow._build_uic   s<  ø€ Ü“)ˆØ×Ñ˜gÔ&ä! 'Ó*ˆØ×&Ñ& q¨!¨Q°Ô2ô
 %Ø�J‰JØó
ˆŒð
 	×Ñ˜dŸo™o¨qÔ1ô
 “ˆä  Ó.ˆŒØ×Ñ˜Ÿ™Ô)ä$›ˆŒØ�‰×Ñ˜q #Ô&Ø�‰×Ñ˜qÔ!Ø×Ñ˜Ÿ™¨Ô*ä& zÓ2ˆÔÜ& vÓ.ˆÔÜ*¨?Ó;ˆÔà×Ñ× Ñ ×(Ñ(Ü(ô	
ð 	×Ñ× Ñ ×(Ñ(Ü'ô	
ð 	×Ñ×$Ñ$×,Ñ,Ø×Ñô	
ð 	×Ñ˜×)Ñ)Ô*Ø×Ñ˜×)Ñ)Ô*Ø×Ñ˜×-Ñ-Ô.à×Ñ˜fÔ%ð
 	�‰×)Ñ)×1Ñ1Ø×%Ñ%ô	
ð 	�‰×)Ñ)×1Ñ1Ø×%Ñ%ô	
ð 	�‰×)Ñ)×1Ñ1Ø×Ñô	
ð 	�‰×.Ñ.×6Ñ6Ø×Ñô	
ð 	×ÑÖr8   c               ó   € V ^8„  d   QhRR/# r/   r3   )r4   s   "r5   r6   r7   ±   s   € ÷ i
ñ i
˜dñ i
r8   c                	ó(   € V P                  R 4       R# )aH  
            QMainWindow {
                background: #ffffff;
            }

            QWidget {
                color: #202124;
                font-size: 13px;
            }

            QToolBar {
                background: #ffffff;
                border: none;
                border-bottom: 1px solid #dadce0;
                spacing: 6px;
                padding: 6px;
            }

            QToolButton {
                background: #ffffff;
                border: 1px solid #dadce0;
                border-radius: 6px;
                padding: 8px 14px;
                color: #202124;
            }

            QToolButton:checked {
                background: #e8f0fe;
                border-color: #1a73e8;
                color: #174ea6;
            }

            QToolButton:hover {
                background: #f1f3f4;
            }

            QPushButton {
                background: #ffffff;
                border: 1px solid #dadce0;
                border-radius: 5px;
                padding: 7px 12px;
                color: #202124;
            }

            QPushButton:hover {
                background: #f1f3f4;
            }

            QProgressBar {
                border: 1px solid #dadce0;
                border-radius: 4px;
                text-align: center;
                background: #f1f3f4;
                color: #202124;
            }

            QProgressBar::chunk {
                background: #1a73e8;
            }

            QLabel#pageTitle {
                color: #5f6368;
                font-weight: bold;
                padding: 4px;
            }

            QStatusBar {
                background: #ffffff;
                color: #5f6368;
                border-top: 1px solid #dadce0;
            }

            QMenuBar {
                background: #ffffff;
                color: #202124;
            }

            QMenuBar::item {
                background: transparent;
                padding: 5px 8px;
            }

            QMenuBar::item:selected {
                background: #f1f3f4;
            }

            QMenu {
                background: #ffffff;
                color: #202124;
                border: 1px solid #dadce0;
            }

            QMenu::item {
                padding: 6px 24px;
            }

            QMenu::item:selected {
                background: #e8f0fe;
                color: #202124;
            }

            QLineEdit,
            QTextEdit,
            QPlainTextEdit,
            QSpinBox,
            QDoubleSpinBox,
            QComboBox {
                background: #ffffff;
                color: #202124;
                border: 1px solid #dadce0;
                border-radius: 4px;
                padding: 5px;
            }

            QLineEdit:focus,
            QTextEdit:focus,
            QPlainTextEdit:focus,
            QSpinBox:focus,
            QDoubleSpinBox:focus,
            QComboBox:focus {
                border: 1px solid #1a73e8;
            }

            QComboBox QAbstractItemView {
                background: #ffffff;
                color: #202124;
                selection-background-color: #e8f0fe;
                selection-color: #202124;
            }

            QCheckBox,
            QRadioButton {
                color: #202124;
            }

            QScrollBar:vertical {
                background: #f1f3f4;
                width: 12px;
                margin: 0;
            }

            QScrollBar::handle:vertical {
                background: #bdc1c6;
                border-radius: 6px;
                min-height: 30px;
            }

            QScrollBar::handle:vertical:hover {
                background: #9aa0a6;
            }

            QScrollBar:horizontal {
                background: #f1f3f4;
                height: 12px;
                margin: 0;
            }

            QScrollBar::handle:horizontal {
                background: #bdc1c6;
                border-radius: 6px;
                min-width: 30px;
            }

            QScrollBar::handle:horizontal:hover {
                background: #9aa0a6;
            }
            N)ÚsetStyleSheetrc   s   &r5   r   ÚMainWindow._apply_style±   s   € Ø×Ñðföh	
r8   c               ó   € V ^8„  d   QhRR/# r/   r3   )r4   s   "r5   r6   r7   ]  s   € ÷ t(ñ t( ñ t(r8   c                óH
  a € \        RS 4      pVP                  R4       VP                  \        P                  P
                  4       S P                  V4       \        S 4      S n        S P                  P                  R4       \        RS 4      S n        S P                  P                  R4       S P                  P                  R4       \        RS 4      S n        S P                  P                  R4       S P                  P                  R4       \        RS 4      S n        S P                  P                  R4       S P                  P                  R	4       \!        S 4      S n        S P"                  P%                  S P                  4       \!        S 4      S n        S P&                  P%                  S P                  4       \!        S 4      S n        S P(                  P%                  S P                  4       S P                  P+                  S P"                  ^4       S P                  P+                  S P&                  ^4       S P                  P+                  S P(                  ^4       VP-                  S P"                  4       VP-                  S P&                  4       VP-                  S P(                  4       VP/                  4        \        R
S 4      S n        S P0                  P                  R4       \        RS 4      S n        S P2                  P                  R4       VP5                  S P0                  4       VP5                  S P2                  4       VP/                  4        \        RS 4      pVP                  R4       VP6                  P9                  S P:                  4       \        RS 4      pVP                  R4       VP6                  P9                  S P<                  4       VP5                  V4       VP5                  V4       S P                  P6                  P9                  V 3R l4       S P                  P6                  P9                  V 3R l4       S P                  P6                  P9                  V 3R l4       S P0                  P6                  P9                  S P>                  4       S P2                  P6                  P9                  S P@                  4       S P                  PC                  R4       S PE                  \F        PH                  4       R# )z#Build the main application toolbar.ÚToolsFTÚTextu$   1 â€” Draw a text region and OCR it.ÚImageu   2 â€” Draw an image region.ÚTableu2   3 â€” Draw a table region and recognize its cells.ÚFontu   F â€” Select OCR output font.zOCR Settingsz>Configure OCR language, Tesseract path and processing options.úOpen PDFu   Ctrl+O â€” Open a PDF document.úSave Projectu$   Ctrl+S â€” Save the current project.c                ó^   <€ SP                  V '       d   \        P                  4      # R 4      # ©N)Úset_toolr   ÚTEXT©ÚcheckedrR   s   &€r5   rd   Ú+MainWindow._build_toolbar.<locals>.<lambda>¶  s!   ø€ ˜DŸM™Mß$+”× Ñ ôØ15ôr8   c                ó^   <€ SP                  V '       d   \        P                  4      # R 4      # r’   )r“   r   ÚIMAGEr•   s   &€r5   rd   r—   ¼  ó!   ø€ ˜DŸM™Mß%,”×!Ñ!ôØ26ôr8   c                ó^   <€ SP                  V '       d   \        P                  4      # R 4      # r’   )r“   r   ÚTABLEr•   s   &€r5   rd   r—   Â  rš   r8   N)%r   Ú
setMovableÚsetToolButtonStyler   ÚToolButtonStyleÚToolButtonTextOnlyÚ
addToolBarr
   Ú
tool_groupÚsetExclusiver   Útext_actionÚsetCheckableÚ
setToolTipÚimage_actionÚtable_actionr   Útext_buttonÚsetDefaultActionÚimage_buttonÚtable_buttonÚ	addButtonrk   ÚaddSeparatorÚfont_actionÚsettings_actionÚ	addActionÚ	triggeredrt   rQ   Úsave_projectÚchoose_fontÚopen_settingsÚ
setCheckedr“   r   r”   )rR   ÚtoolbarÚopen_actionÚsave_actions   f   r5   rL   ÚMainWindow._build_toolbar]  s  ø€ ô ˜7 DÓ)ˆØ×Ñ˜5Ô!Ø×"Ñ"Ü×Ñ×1Ñ1ô	
ð 	�‰˜Ô ô
 ' tÓ,ˆŒØ�‰×$Ñ$ TÔ*ä" 6¨4Ó0ˆÔØ×Ñ×%Ñ% dÔ+Ø×Ñ×#Ñ#Ø2ô	
ô $ G¨TÓ2ˆÔØ×Ñ×&Ñ& tÔ,Ø×Ñ×$Ñ$Ø)ô	
ô $ G¨TÓ2ˆÔØ×Ñ×&Ñ& tÔ,Ø×Ñ×$Ñ$Ø@ô	
ô ' tÓ,ˆÔØ×Ñ×)Ñ)¨$×*:Ñ*:Ô;ä'¨Ó-ˆÔØ×Ñ×*Ñ*¨4×+<Ñ+<Ô=ä'¨Ó-ˆÔØ×Ñ×*Ñ*¨4×+<Ñ+<Ô=à�‰×!Ñ! $×"2Ñ"2°AÔ6Ø�‰×!Ñ! $×"3Ñ"3°QÔ7Ø�‰×!Ñ! $×"3Ñ"3°QÔ7à×Ñ˜$×*Ñ*Ô+Ø×Ñ˜$×+Ñ+Ô,Ø×Ñ˜$×+Ñ+Ô,ð
 	×ÑÔä" 6¨4Ó0ˆÔØ×Ñ×#Ñ#Ø+ô	
ô  ' ~°tÓ<ˆÔØ×Ñ×'Ñ'ØLô	
ð 	×Ñ˜$×*Ñ*Ô+Ø×Ñ˜$×.Ñ.Ô/ð
 	×ÑÔä˜j¨$Ó/ˆØ×ÑÐ@ÔAØ×Ñ×%Ñ% d§m¡mÔ4ä˜n¨dÓ3ˆØ×ÑÐEÔFØ×Ñ×%Ñ% d×&7Ñ&7Ô8à×Ñ˜+Ô&Ø×Ñ˜+Ô&ð
 	×Ñ×"Ñ"×*Ñ*ôô	
ð 	×Ñ×#Ñ#×+Ñ+ôô	
ð 	×Ñ×#Ñ#×+Ñ+ôô	
ð 	×Ñ×"Ñ"×*Ñ*¨4×+;Ñ+;Ô<Ø×Ñ×&Ñ&×.Ñ.¨t×/AÑ/AÔBð
 	×Ñ×#Ñ# DÔ)Ø�‰”k×&Ñ&Ö'r8   c               ó   € V ^8„  d   QhRR/# r/   r3   )r4   s   "r5   r6   r7   Ô  s   € ÷ -+ñ -+˜Tñ -+r8   c                	ó  € V P                  4       pVP                  R 4      p\        RV 4      pVP                  \	        R4      4       VP
                  P                  V P                  4       VP                  V4       \        RV 4      pVP
                  P                  V P                  4       VP                  V4       \        RV 4      pVP                  \	        R4      4       VP
                  P                  V P                  4       VP                  V4       \        RV 4      pVP                  \	        R4      4       VP
                  P                  V P                  4       VP                  V4       VP                  4        \        RV 4      pVP
                  P                  V P                  4       VP                  V4       VP                  4        \        R	V 4      pVP
                  P                  V P                  4       VP                  V4       VP                  R
4      p	\        RV 4      p
V
P                  \	        R4      4       V
P
                  P                  V P                  4       V	P                  V
4       R# )ÚFiler�   zCtrl+OzOpen Projectr�   zCtrl+Su   Save DOCX Asâ€¦zCtrl+Shift+Sr\   ÚExitÚEditzDelete SelectedÚDeleteN)ÚmenuBarÚaddMenur   ÚsetShortcutr	   r²   rt   rQ   r±   Úopen_projectr³   Úsave_docx_asr®   ru   ÚcloseÚdelete_selected)rR   ÚmenuÚ	file_menur¸   rÄ   r³   Úsave_asÚgenerateÚexit_actionÚ	edit_menuÚdelete_actions   &          r5   rK   ÚMainWindow._build_menuÔ  s  € Ø�|‰|‹~ˆà—L‘L Ó(ˆ	ä˜j¨$Ó/ˆØ×Ñ¤¨XÓ 6Ô7Ø×Ñ×%Ñ% d§m¡mÔ4Ø×Ñ˜KÔ(ä˜~¨tÓ4ˆØ×Ñ×&Ñ& t×'8Ñ'8Ô9Ø×Ñ˜LÔ)ä˜~¨tÓ4ˆØ× Ñ ¤¨hÓ!7Ô8Ø×Ñ×&Ñ& t×'8Ñ'8Ô9Ø×Ñ˜LÔ)äÐ+¨TÓ2ˆØ×ÑÜ˜Ó(ô	
ð 	×Ñ×!Ñ! $×"3Ñ"3Ô4Ø×Ñ˜GÔ$à×ÑÔ ä˜?¨DÓ1ˆØ×Ñ×"Ñ" 4×#5Ñ#5Ô6Ø×Ñ˜HÔ%à×ÑÔ ä˜f dÓ+ˆØ×Ñ×%Ñ% d§j¡jÔ1Ø×Ñ˜KÔ(à—L‘L Ó(ˆ	äÐ 1°4Ó8ˆØ×!Ñ!¤,¨xÓ"8Ô9Ø×Ñ×'Ñ'Ø× Ñ ô	
ð 	×Ñ˜MÖ*r8   c               ó   € V ^8„  d   QhRR/# r/   r3   )r4   s   "r5   r6   r7     s   € ÷ 
ñ 
 $ñ 
r8   c                	óô  a € S P                   P                  \        R 4      4       S P                  P                  \        R4      4       S P                  P                  \        R4      4       S P
                  P                  \        R4      4       ^ RIHp V! \        \        P                  P                  4      S V 3R lR7       V! \        \        P                  P                  4      S V 3R lR7       R# )	Ú1Ú2Ú3ÚF)Ú	QShortcutc                 ó&   <€ S P                  R4      # r^   ra   rc   s   €r5   rd   Ú-MainWindow._build_shortcuts.<locals>.<lambda>  s   ø€ ˜d×.Ñ.¨rÔ2r8   )Ú	activatedc                 ó&   <€ S P                  ^4      # rg   ra   rc   s   €r5   rd   rØ     s   ø€ ˜d×.Ñ.¨qÔ1r8   N)r¤   rÃ   r	   r§   r¨   r¯   Ú
qtpy.QtGuirÖ   r   ÚKeyÚKey_LeftÚ	Key_Right)rR   rÖ   s   f r5   rM   ÚMainWindow._build_shortcuts  sª   ø€ à×Ñ×$Ñ$¤\°#Ó%6Ô7Ø×Ñ×%Ñ%¤l°3Ó&7Ô8Ø×Ñ×%Ñ%¤l°3Ó&7Ô8Ø×Ñ×$Ñ$¤\°#Ó%6Ô7å(áÜœŸ™Ÿ™Ó)ØÜ2õ	
ñ
 	ÜœŸ™×)Ñ)Ó*ØÜ1÷	
r8   c               ó   € V ^8„  d   QhRR/# r/   r3   )r4   s   "r5   r6   r7     s   € ÷ ñ ˜$ñ r8   c                	óª   € \         P                  ! V R \        \        P                  ! 4       4      R4      w  rV'       g   R# V P                  V4       R# )r�   z"PDF files (*.pdf);;All files (*.*)N)r   ÚgetOpenFileNameÚstrr   ÚhomeÚload_pdf)rR   ÚpathÚ_s   &  r5   rQ   ÚMainWindow.open_pdf  s?   € Ü×-Ò-ØØÜ”—	’	“ÓØ0ó	
‰ˆ÷ Ùà�‰�dÖr8   c               ó    € V ^8„  d   QhRRRR/# )r0   ræ   rã   r1   r2   r3   )r4   s   "r5   r6   r7   (  s   € ÷ Bñ B˜Sð B Tñ Br8   c                	ó$  € \         P                  ! V4      w  r#V'       g   \        P                  ! V R V4       R#  \         P                  ! V4      p. p\        ^V^,           4       F<  p\         P                  ! VV4      w  rx^RIHp	 VP                  V	! VVVR7      4       K>  	  \        \        V4      P                  R4      4      p
\        VV
^VV P                  P                  V P                  P                   V P                  P"                  V P                  P$                  V P                  P&                  R7	      V n        V P                  V P(                  n        V P*                  P-                  ^ 4       V P/                  ^4       V P1                  4       P3                  RV R24       V P5                  4        R#   \6         dB   p\8        P;                  R4       \        P                  ! T R	\=        T4      4        Rp?R# Rp?ii ; i)
zCannot Open PDFN)Ú	PageState)Úpage_numberÚwidth_ptÚ	height_ptú.docx)	Ú
source_pdfÚoutput_docxÚcurrent_pageÚpagesr:   r<   r=   r>   r;   zLoaded z pages.zUnable to load PDFz	PDF Error)r    Úvalidater   ÚcriticalÚ
page_countÚrangeÚ	page_sizeÚmodelsrë   Úappendrã   r   Úwith_suffixr   rE   r:   r<   r=   r>   r;   rj   rm   ro   Ú	load_pagerN   rO   Ú_save_settingsÚ	ExceptionÚloggerÚ	exceptionr"   )rR   ræ   ÚvalidÚerrorÚcountró   rì   ÚwidthÚheightrë   ÚoutputÚexcs   &&          r5   rå   ÚMainWindow.load_pdf(  s´  € Ü!×*Ò*¨4Ó0‰ˆçÜ× Ò ØØ!Øôñ
 ð7	Ü×)Ò)¨$Ó/ˆEàˆEä$ Q¨°­	Ö2�Ü *× 4Ò 4ØØó!‘�õ
 .à—‘ÙØ$/Ø!&Ø"(ôöñ  3ô  Ü�T“
×&Ñ& wÓ/óˆFô 'ØØ"ØØØ—Z‘Z—_‘_Ø!ŸZ™Z×4Ñ4ØŸ:™:×0Ñ0ØŸ:™:×0Ñ0Ø#Ÿz™z×8Ñ8ô
ˆDŒJð %)§J¡JˆD�O‰OÔ!ð �M‰M×"Ñ" 1Ô%Ø�N‰N˜1Ôà�N‰NÓ×(Ñ(Ø˜%˜ Ð(ôð ×ÑÖ!øäô 	Ü×ÑÐ1Ô2Ü× Ò ØØÜ˜sÓ#÷ò ûð	ús   ¼FG ÇHÇ6H
È
Hc               ó   € V ^8„  d   QhRR/# r/   r3   )r4   s   "r5   r6   r7   l  s   € ÷ #ñ #˜dñ #r8   c                	óD  € V P                   P                  '       g   \        P                  ! V R R4       R# \	        V P                   P                  4      P                  R4      p\        P                  ! V R\        V4      R4      w  r#V'       g   R#  V P                   P                  V4       V P                  4       P                  RV 24       R#   \         dB   p\        P                  R4       \        P                  ! T R\!        T4      4        Rp?R# Rp?ii ; i)	z
No ProjectúOpen a PDF first.Nz.pdfocrprojectzSave OCR Projectz0PDF OCR Project (*.pdfocrproject);;JSON (*.json)zProject saved: zProject save failedz
Save Error)rE   rð   r   Úinformationr   rû   r   ÚgetSaveFileNamerã   r³   rN   rO   rþ   rÿ   r   rõ   r"   )rR   Údefaultræ   rç   r  s   &    r5   r³   ÚMainWindow.save_projectl  sö   € Ø�z‰z×$×$Ð$Ü×#Ò#ØØØ#ôñ
 ô �—‘×&Ñ&Ó'ß‰[Ð)Ó*ð 	ô
 ×-Ò-ØØÜ�‹LØ>ó	
‰ˆ÷ Ùð	Ø�J‰J×#Ñ# DÔ)Ø�N‰NÓ×(Ñ(Ø! $ Ð(öøô ô 	Ü×ÑÐ2Ô3Ü× Ò ØØÜ˜sÓ#÷ò ûð	ús   Â=C ÃDÃ6DÄDc               ó   € V ^8„  d   QhRR/# r/   r3   )r4   s   "r5   r6   r7   ‘  s   € ÷ +ñ +˜dñ +r8   c                	ó¨  € \         P                  ! V R \        \        P                  ! 4       4      R4      w  rV'       g   R#  \
        P                  ! V4      p\        VP                  4      P                  4       '       g(   \        P                  ! V RRVP                   24       R# W0n        W0P                  n        \        \        ^VP                  4      \!        VP"                  4      4      pV P%                  V4       R#   \&         dB   p\(        P+                  R4       \        P,                  ! T R\/        T4      4        Rp?R# Rp?ii ; i)zOpen OCR Projectz(PDF OCR Project (*.pdfocrproject *.json)NzSource PDF Missingz@The project was loaded, but its source PDF could not be found:

zProject load failedzProject Error)r   râ   rã   r   rä   r   Úload_projectrð   Úis_filer   ÚwarningrE   rj   ÚminÚmaxrò   Úlenró   rü   rþ   rÿ   r   rõ   r"   )rR   ræ   rç   rE   Úpager  s   &     r5   rÄ   ÚMainWindow.open_project‘  s  € Ü×-Ò-ØØÜ”—	’	“ÓØ6ó	
‰ˆ÷ Ùð 	Ü!×.Ò.¨tÓ4ˆEä˜×(Ñ(Ó)×1Ñ1×3Ò3Ü×#Ò#ØØ(ð2à ×+Ñ+Ð,ð.ô	ñ àŒJØ$)�O‰OÔ!ô Ü�A�u×)Ñ)Ó*Ü�E—K‘KÓ óˆDð
 �N‰N˜4Ö øäô 	Ü×ÑÐ2Ô3Ü× Ò ØØÜ˜sÓ#÷ò ûð	ús    ÁA$D Â)AD ÄEÄ6EÅEc               ó    € V ^8„  d   QhRRRR/# )r0   rì   Úintr1   r2   r3   )r4   s   "r5   r6   r7   Â  s   € ÷ 7+ñ 7+ Sð 7+¨Tñ 7+r8   c                	óè  a € S P                   P                  '       g   R # \        \        ^V4      \	        S P                   P                  4      4      pVS P                   n        S P                  P                  V4       S P                  P                  RV R\	        S P                   P                  4       24       S P                  P                  V^8„  4       S P                  P                  V\	        S P                   P                  4      8  4       S P                  P                  \        ^d\!        R S P                   P                   4       4      ,          \        ^\	        S P                   P                  4      4      ,          4      4       S P#                  4       P%                  RV R24       S P                   P&                  '       d¡   \)        S P                   P&                  V^�4      pVS n        VP,                  P.                  P1                  V3V 3R ll4       VP,                  P2                  P1                  S P4                  4       S P6                  P9                  V4       R # R # )NúPage z / c              3  ó:   "  € T F  pVP                   x € K  	  R # 5ir’   ©Ú	processed©Ú.0r  s   & r5   Ú	<genexpr>Ú'MainWindow.load_page.<locals>.<genexpr>Û  s   é € ð á 0˜ð —N–NÛ 0ùó   ‚zLoading page u   â€¦c                ó&   <€ SP                  W4      # r’   )Úon_page_rendered)ÚdataÚprR   s   &&€r5   rd   Ú&MainWindow.load_page.<locals>.<lambda>ñ  s   ø€ Ø×)Ñ)¨!Ô2r8   )rE   ró   r  r  r  rò   rj   Úset_pagerl   ÚsetTextrp   Ú
setEnabledrq   rm   ro   r  ÚsumrN   rO   rð   r*   rF   ÚsignalsÚresultrt   r  Úon_worker_errorrD   Ústart)rR   rì   Úworkers   f& r5   rü   ÚMainWindow.load_pageÂ  sò  ø€ Ø�z‰z××ÐÙäÜ��;ÓÜ�—
‘
× Ñ Ó!ó
ˆð
 #.ˆ�
‰
ÔØ�‰× Ñ  Ô-ð 	�‰×ÑØ�K�= ¤C¨¯
©
×(8Ñ(8Ó$9Ð#:Ð;ô	
ð 	×Ñ×#Ñ# K°!¡OÔ4Ø×Ñ×#Ñ#Øœ#˜dŸj™j×.Ñ.Ó/Ñ/ô	
ð 	�‰×ÑÜØÜñ à $§
¡
× 0Ò 0óó õô
 �aœ˜TŸZ™Z×-Ñ-Ó.Ó/õ0óô		
ð 	�‰Ó×$Ñ$Ø˜K˜=¨Ð,ô	
ð �:‰:× × Ð Ü!Ø—
‘
×%Ñ%ØØóˆFð +1ˆDÔ'à�N‰N×!Ñ!×)Ñ)Ø*ö ôð
 �N‰N× Ñ ×(Ñ(Ø×$Ñ$ôð ×Ñ×"Ñ" 6Ö*ñ% !r8   c               ó$   € V ^8„  d   QhRRRRRR/# )r0   rì   r  r(  Úbytesr1   r2   r3   )r4   s   "r5   r6   r7   û  s(   € ÷ 
ñ 
àð
ð ð
ð 
ñ	
r8   c                	ó
  € WP                   P                  8w  d   R # ^ RIHpHp VP                  V4      pV P                  P                  VP                  V4      4       V P                  4       P                  RV R24       R # )N)ÚQImageÚQPixmapr  z ready.)rE   rò   rÛ   r8  r9  ÚfromDatarj   Ú
set_pixmapÚ	fromImagerN   rO   )rR   rì   r(  r8  r9  Úimages   &&&   r5   r'  ÚMainWindow.on_page_renderedû  sk   € ð
 Ÿ*™*×1Ñ1Ô1Ùç.à—‘ Ó%ˆØ�‰×"Ñ"Ø×Ñ˜eÓ$ô	
ð 	�‰Ó×$Ñ$Ø�K�= Ð(ö	
r8   c               ó    € V ^8„  d   QhRRRR/# )r0   Údeltar  r1   r2   r3   )r4   s   "r5   r6   r7     s   € ÷ #ñ # ð #¨ñ #r8   c                	ó  € V P                   P                  '       g   R # V P                   P                  V,           p^Tu;8:  d%   \        V P                   P                  4      8:  d   M R # V P	                  V4       R # R # r’   )rE   ró   rò   r  rü   )rR   r@  Útargets   && r5   rb   ÚMainWindow.change_page  sY   € Ø�z‰z××ÐÙà—‘×(Ñ(¨5Õ0ˆà�Ö/œ#˜dŸj™j×.Ñ.Ó/×/Ð/Ø�N‰N˜6Ö"ñ 0r8   c               ó    € V ^8„  d   QhRRRR/# )r0   ÚtoolzElementType | Noner1   r2   r3   )r4   s   "r5   r6   r7     s   € ÷ ñ à ðð 
ñr8   c                	ó  € V P                   P                  V4       V'       d=   V P                  4       P                  VP                  P                  4        R 24       R# V P                  4       P                  R4       R# )z tool selected.zSelection tool disabled.N)rj   r“   rN   rO   ÚvalueÚtitle)rR   rE  s   &&r5   r“   ÚMainWindow.set_tool  s`   € ð 	�‰× Ñ  Ô&çØ�N‰NÓ×(Ñ(Ø—:‘:×#Ñ#Ó%Ð& oÐ6öð �N‰NÓ×(Ñ(Ø*ör8   c               ó   € V ^8„  d   QhRR/# r/   r3   )r4   s   "r5   r6   r7   *  s   € ÷ ñ ˜Tñ r8   c                	ó6  € \        V P                  P                  V 4      pVP                  4       \        P
                  P                  8w  d   R # VP                  4       V P                  n        V P                  P                  4        V P                  4        R # r’   )r   rE   r:   Úexecr   Ú
DialogCodeÚAcceptedÚselected_fontrj   Úupdaterý   )rR   Údialogs   & r5   r´   ÚMainWindow.choose_font*  sk   € ÜØ�J‰J�O‰OØó
ˆð
 �;‰;‹=œG×.Ñ.×7Ñ7Ô7Ùà ×.Ñ.Ó0ˆ�
‰
Œð 	�‰×ÑÔ à×ÑÖr8   c               ó   € V ^8„  d   QhRR/# r/   r3   )r4   s   "r5   r6   r7   :  s   € ÷ 
ñ 
˜tñ 
r8   c                	ó*  € \        V P                  P                  V P                  P                  V P                  P                  V P                  P
                  V 4      pVP                  4       \        P                  P                  8w  d   R # VP                  4       w  ppppW P                  n        W0P                  n        W@P                  n        WPP                  n        V P                  4        V P                  4       P                  R4       R # )NzOCR settings updated.)r   rE   r;   r<   r=   r>   rL  r   rM  rN  Úvaluesrý   rN   rO   )rR   rQ  ræ   rS   rT   r>   s   &     r5   rµ   ÚMainWindow.open_settings:  sÌ   € ÜØ�J‰J×%Ñ%Ø�J‰J×#Ñ#Ø�J‰J×!Ñ!Ø�J‰J×!Ñ!Øó
ˆð �;‰;‹=œG×.Ñ.×7Ñ7Ô7Ùð �M‰M‹Oñ	
ØØØØð %)�
‰
Ô!Ø"*�
‰
ÔØ #�
‰
ÔØ *�
‰
Ôà×ÑÔà�‰Ó×$Ñ$Ø#ö	
r8   c               ó   € V ^8„  d   QhRR/# r/   r3   )r4   s   "r5   r6   r7   X  s   € ÷ 
ñ 
 ñ 
r8   c                	óì   € \        V P                  P                  V P                  P                  V P                  P                  V P                  P
                  V P                  P                  4       R # r’   )r   rE   r:   r;   r<   r=   r>   rc   s   &r5   rý   ÚMainWindow._save_settingsX  sI   € ÜØ�J‰J�O‰OØ�J‰J×%Ñ%Ø�J‰J×#Ñ#Ø�J‰J×!Ñ!Ø�J‰J×!Ñ!ö	
r8   c               ó    € V ^8„  d   QhRRRR/# ©r0   Úelementr   r1   r2   r3   )r4   s   "r5   r6   r7   e  s   € ÷  ñ  à ð ð 
ñ r8   c                	óB  € V P                   P                  VP                  4      pVP                  P	                  V4       R Vn        VP                  V P                  n        V P                  P                  4        VP                  \        P                  8X  d   V P                  V4       MaVP                  \        P                  8X  d   V P                  V4       M0VP                  \        P                   8X  d   V P#                  V4       V P%                  4        R# )TN)rE   r  rì   Úelementsrú   r   Úidrj   Úselected_idrP  Úelement_typer   r”   Ú	start_ocrr™   Ústart_imagerœ   Ústart_tableÚ_update_progress)rR   r\  r  s   && r5   rx   ÚMainWindow.on_selection_createde  sÅ   € ð �z‰z�‰˜w×2Ñ2Ó3ˆØ�‰×Ñ˜WÔ%ØˆŒà&-§j¡jˆ�‰Ô#à�‰×ÑÔ à×Ñ¤;×#3Ñ#3Ô3Ø�N‰N˜7Õ#à×!Ñ!¤[×%6Ñ%6Ô6Ø×Ñ˜WÕ%à×!Ñ!¤[×%6Ñ%6Ô6Ø×Ñ˜WÔ%à×ÑÖr8   c               ó    € V ^8„  d   QhRRRR/# r[  r3   )r4   s   "r5   r6   r7   |  s   € ÷ 3'ñ 3'à ð3'ð 
ñ3'r8   c           	     	óL  a € S P                   P                  '       gC   R Vn        RVn        S P                  P                  4        \        P                  ! S RR4       R# \        S P                   P                  VP                  VP                  4       S P                   P                  S P                   P                  S P                   P                  S P                   P                  4      pS P                  V4       VP                   P"                  P%                  VP&                  3V 3R ll4       VP                   P                  P%                  VP&                  3V 3R ll4       S P)                  4       P+                  R4       S P,                  P/                  V4       R# )Fz6Tesseract was not found. Configure it in OCR Settings.úTesseract Not Foundz_Tesseract OCR was not found.

Install Tesseract or configure its executable under OCR Settings.Nc                ó&   <€ SP                  W4      # r’   )Úon_ocr_result)ÚtextÚeidrR   s   &&€r5   rd   Ú&MainWindow.start_ocr.<locals>.<lambda>¡  s   ø€ Ø×"Ñ" 3Ô-r8   c                ó&   <€ SP                  W4      # r’   ©Úon_element_error©r  rm  rR   s   &&€r5   rd   rn  ¦  ó   ø€ Ø×%Ñ% cÔ1r8   u   Processing OCRâ€¦)rE   r;   Ú
processingr  rj   rP  r   r  r)   rð   rì   Úrectr=   r<   r>   Ú_register_workerr/  r0  rt   r_  rN   rO   rD   r2  ©rR   r\  r3  s   f& r5   rb  ÚMainWindow.start_ocr|  s@  ø€ ð �z‰z×(×(Ð(Ø!&ˆGÔð0ð ŒMð
 �O‰O×"Ñ"Ô$ä×ÒØØ%ð*ô	ñ äØ�J‰J×!Ñ!Ø×ÑØ�L‰L‹NØ�J‰J×!Ñ!Ø�J‰J×%Ñ%Ø�J‰J×#Ñ#Ø�J‰J×!Ñ!ó
ˆð 	×Ñ˜fÔ%à�‰×Ñ×%Ñ%Ø$ŸZ™Zö ô	
ð
 	�‰×Ñ×$Ñ$Ø%Ÿj™jö ô	
ð 	�‰Ó×$Ñ$Øô	
ð 	×Ñ×Ñ˜vÖ&r8   c               ó    € V ^8„  d   QhRRRR/# r[  r3   )r4   s   "r5   r6   r7   ±  s   € ÷ 'ñ 'à ð'ð 
ñ'r8   c           	     	ó&  a € \        S P                  P                  VP                  VP	                  4       \        ^ÈS P                  P                  4      4      pS P                  V4       VP                  P                  P                  VP                  3V 3R ll4       VP                  P                  P                  VP                  3V 3R ll4       S P                  4       P                  R4       S P                  P!                  V4       R# )éÈ   c                ó&   <€ SP                  W4      # r’   )Úon_image_result)r(  rm  rR   s   &&€r5   rd   Ú(MainWindow.start_image.<locals>.<lambda>¿  s   ø€ Ø×$Ñ$ SÔ/r8   c                ó&   <€ SP                  W4      # r’   rp  rr  s   &&€r5   rd   r~  Ä  rs  r8   u   Extracting imageâ€¦N)r(   rE   rð   rì   ru  r  r=   rv  r/  r0  rt   r_  r  rN   rO   rD   r2  rw  s   f& r5   rc  ÚMainWindow.start_image±  sÌ   ø€ ô Ø�J‰J×!Ñ!Ø×ÑØ�L‰L‹NÜ��T—Z‘Z×*Ñ*Ó+ó	
ˆð 	×Ñ˜fÔ%à�‰×Ñ×%Ñ%Ø$ŸZ™Zö ô	
ð
 	�‰×Ñ×$Ñ$Ø%Ÿj™jö ô	
ð 	�‰Ó×$Ñ$Ø!ô	
ð 	×Ñ×Ñ˜vÖ&r8   c               ó    € V ^8„  d   QhRRRR/# r[  r3   )r4   s   "r5   r6   r7   Ï  s   € ÷ ,'ñ ,'à ð,'ð 
ñ,'r8   c           	     	ó`  a € S P                   P                  '       gC   R Vn        RVn        S P                  P                  4        \        P                  ! S RR4       R# \        S P                   P                  VP                  VP                  4       \        ^ÜS P                   P                  4      S P                   P                  S P                   P                  S P                   P                  4      pS P!                  V4       VP"                  P$                  P'                  VP(                  3V 3R ll4       VP"                  P                  P'                  VP(                  3V 3R ll4       S P+                  4       P-                  R4       S P.                  P1                  V4       R# )Fz$Tesseract is required for table OCR.ri  z'Configure Tesseract under OCR Settings.Nc                ó&   <€ SP                  W4      # r’   )Úon_table_result)r0  rm  rR   s   &&€r5   rd   Ú(MainWindow.start_table.<locals>.<lambda>í  s   ø€ Ø×$Ñ$ SÔ1r8   c                ó&   <€ SP                  W4      # r’   rp  rr  s   &&€r5   rd   r…  ò  rs  r8   u   Recognizing tableâ€¦)rE   r;   rt  r  rj   rP  r   r  r+   rð   rì   ru  r  r=   r<   r>   rv  r/  r0  rt   r_  rN   rO   rD   r2  rw  s   f& r5   rd  ÚMainWindow.start_tableÏ  s>  ø€ ð �z‰z×(×(Ð(Ø!&ˆGÔØBˆGŒMà�O‰O×"Ñ"Ô$ä×ÒØØ%Ø9ôñ
 äØ�J‰J×!Ñ!Ø×ÑØ�L‰L‹NÜ��T—Z‘Z×*Ñ*Ó+Ø�J‰J×%Ñ%Ø�J‰J×#Ñ#Ø�J‰J×!Ñ!ó
ˆð 	×Ñ˜fÔ%à�‰×Ñ×%Ñ%Ø&Ÿz™zö ô	
ð
 	�‰×Ñ×$Ñ$Ø%Ÿj™jö ô	
ð 	�‰Ó×$Ñ$Ø"ô	
ð 	×Ñ×Ñ˜vÖ&r8   c               ó    € V ^8„  d   QhRRRR/# )r0   r3  r&   r1   r2   r3   )r4   s   "r5   r6   r7   ý  s   € ÷ 
ñ 
 zð 
°dñ 
r8   c                	ó–   a € S P                   P                  V4       VP                  P                  P	                  V3V 3R  ll4       R# )c                ó:   <€ SP                   P                  V 4      # r’   )rH   Údiscard)ÚwrR   s   &€r5   rd   Ú-MainWindow._register_worker.<locals>.<lambda>  s   ø€ ˜T×5Ñ5×=Ñ=¸aÔ@r8   N)rH   Úaddr/  Úfinishedrt   )rR   r3  s   f&r5   rv  ÚMainWindow._register_workerý  s5   ø€ Ø× Ñ ×$Ñ$ VÔ,à�‰×Ñ×'Ñ'ØÖ@ö	
r8   c               ó$   € V ^8„  d   QhRRRRRR/# )r0   Ú
element_idrã   rl  r1   r2   r3   )r4   s   "r5   r6   r7     s(   € ÷ 
ñ 
àð
ð ð
ð 
ñ	
r8   c                	óâ   € V P                   P                  V4      pVf   R # RVn        RVn        W#n        V P
                  P                  4        V P                  4       P                  R4       R # )NFÚ zOCR completed.)	rE   r\  rt  r  rl  rj   rP  rN   rO   )rR   r’  rl  r\  s   &&& r5   rk  ÚMainWindow.on_ocr_result  s^   € ð
 —*‘*×$Ñ$ ZÓ0ˆàŠ?Ùà"ˆÔØˆŒØŒð 	�‰×ÑÔ à�‰Ó×$Ñ$Øö	
r8   c               ó$   € V ^8„  d   QhRRRRRR/# )r0   r’  rã   r(  r6  r1   r2   r3   )r4   s   "r5   r6   r7     s(   € ÷ 
ñ 
àð
ð ð
ð 
ñ	
r8   c                	ó  € V P                   P                  V4      pVf   R # RVn        RVn        \        P
                  ! V4      Vn        V P                  P                  4        V P                  4       P                  R4       R # )NFr”  zImage extraction completed.)rE   r\  rt  r  r   Úimage_to_b64Úimage_png_b64rj   rP  rN   rO   )rR   r’  r(  r\  s   &&& r5   r}  ÚMainWindow.on_image_result  so   € ð
 —*‘*×$Ñ$ ZÓ0ˆàŠ?Ùà"ˆÔØˆŒä×&Ò& tÓ,ð 	Ôð
 	�‰×ÑÔ à�‰Ó×$Ñ$Ø)ö	
r8   c               ó    € V ^8„  d   QhRRRR/# ©r0   r’  rã   r1   r2   r3   )r4   s   "r5   r6   r7   0  s   € ÷ "!ñ "!àð"!ð 
ñ	"!r8   c                	ó   € V P                   P                  V4      pVf   R # Vw  rERVn        RVn        Ve5   WCn        RVn        RVn        V P                  4       P                  R4       MHR Vn        RVn        \        P                  ! V4      Vn        V P                  4       P                  R4       V P                  P                  4        R # )NFr”  zTable recognized.Tu/   Table recognition failed â€” inserted as image.)rE   r\  rt  r  ÚtableÚtable_fallback_imager™  rN   rO   r   r˜  rj   rP  )rR   r’  r0  r\  rž  Ú
image_datas   &&&   r5   r„  ÚMainWindow.on_table_result0  s½   € ð
 —*‘*×$Ñ$ ZÓ0ˆàŠ?Ùà"Ñˆà"ˆÔØˆŒàÒØ!ŒMØ+0ˆGÔ(Ø$&ˆGÔ!Ø�N‰NÓ×(Ñ(Ø#õð !ˆGŒMØ+/ˆGÔ(ä×*Ò*¨:Ó6ð Ô!ð �N‰NÓ×(Ñ(ØAôð
 	�‰×ÑÖ r8   c               ó$   € V ^8„  d   QhRRRRRR/# )r0   r’  rã   r  r1   r2   r3   )r4   s   "r5   r6   r7   T  s(   € ÷ 
ñ 
àð
ð ð
ð 
ñ	
r8   c                	óò   € V P                   P                  V4      pVf   R # RVn        VP                  4       ^ ,          Vn        V P
                  P                  4        \        P                  ! V RV4       R # )NFzProcessing Error)	rE   r\  rt  Ú
splitlinesr  rj   rP  r   r  )rR   r’  r  r\  s   &&& r5   rq  ÚMainWindow.on_element_errorT  sf   € ð
 —*‘*×$Ñ$ ZÓ0ˆàŠ?Ùà"ˆÔØ×(Ñ(Ó*¨1Õ-ˆŒð 	�‰×ÑÔ ä×ÒØØØö	
r8   c               ó    € V ^8„  d   QhRRRR/# rœ  r3   )r4   s   "r5   r6   r7   j  s   € ÷ ñ àðð 
ñ	r8   c                	ó   € R # r’   r3   )rR   r’  Úchanges   &&&r5   rz   ÚMainWindow.on_selection_changedj  s   € ñ 	r8   c               ó    € V ^8„  d   QhRRRR/# rœ  r3   )r4   s   "r5   r6   r7   t  s   € ÷ !ñ !àð!ð 
ñ!r8   c                	ór  € V P                   P                  V4      pVf   R # VP                  \        P                  8w  d   R # \        VP                  V 4      pVP                  4       \        P                  P                  8w  d   R # VP                  4       Vn        V P                  P                  4        R # r’   )rE   r\  ra  r   r”   r   rl  rL  r   rM  rN  rj   rP  )rR   r’  r\  rQ  s   &&  r5   r~   ÚMainWindow.edit_elementt  s‡   € ð —*‘*×$Ñ$ ZÓ0ˆàŠ?Ùà×Ñ¤;×#3Ñ#3Ô3ÙäØ�L‰LØó
ˆð
 �;‰;‹=œG×.Ñ.×7Ñ7Ô7Ùà—{‘{“}ˆŒà�‰×ÑÖ r8   c               ó   € V ^8„  d   QhRR/# r/   r3   )r4   s   "r5   r6   r7   Œ  s   € ÷ ,ñ , ñ ,r8   c                	óh   € V P                   P                  pV'       d   V P                  V4       R # R # r’   )rj   r`  r|   )rR   r’  s   & r5   rÇ   ÚMainWindow.delete_selectedŒ  s'   € Ø—_‘_×0Ñ0ˆ
çØ×Ñ 
Ö+ñ r8   c               ó    € V ^8„  d   QhRRRR/# rœ  r3   )r4   s   "r5   r6   r7   ’  s   € ÷ ñ àðð 
ñr8   c                	óH  € V P                   P                   F‡  p\        VP                  4       Fk  w  r4VP                  V8X  g   K  VP                  V VP                  '       g   R Vn        RV P                  n        V P                  P                  4          R# 	  K‰  	  R# )Fr”  N)	rE   ró   Ú	enumerater^  r_  r   rj   r`  rP  )rR   r’  r  Úindexr\  s   &&   r5   r|   ÚMainWindow.delete_element’  sv   € ð —J‘J×$Ô$ˆDÜ"+¨D¯M©MÖ":‘�Ø—:‘: Ö+ØŸ™ eÐ,àŸ=Ÿ=˜=ð */˜œà24�D—O‘OÔ/Ø—O‘O×*Ñ*Ô,ãó #;ó %r8   c               ó   € V ^8„  d   QhRR/# )r0   r1   r   r3   )r4   s   "r5   r6   r7   ©  s   € ÷ +ñ + Tñ +r8   c                óŠ  € V P                   P                  '       dA   \        V P                   P                  4      pVP                  P	                  4       R8X  d   V# V P                   P
                  '       d1   \        V P                   P
                  4      pVP                  R4      # \        P                  ! 4       R,          # )z-Return a sensible automatic DOCX output path.rï   zoutput.docx)rE   rñ   r   ÚsuffixÚlowerrð   rû   rä   )rR   r  Úpdf_paths   &  r5   Údefault_output_pathÚMainWindow.default_output_path©  sˆ   € ð �:‰:×!×!Ð!Ü˜$Ÿ*™*×0Ñ0Ó1ˆFà�}‰}×"Ñ"Ó$¨Ô/Ø�à�:‰:× × Ð Ü˜DŸJ™J×1Ñ1Ó2ˆHØ×'Ñ'¨Ó0Ð0ä�yŠy‹{˜]Õ*Ð*r8   c               ó   € V ^8„  d   QhRR/# r/   r3   )r4   s   "r5   r6   r7   ¹  s   € ÷ Rñ R˜tñ Rr8   c                	ó€  a a€ S P                   P                  '       g   \        P                  ! S R R4       R# S P	                  4       o\        S4      S P                   n        SP                  4       '       d�   \        P                  ! S RRS R2\        P                  P                  \        P                  P                  ,          \        P                  P                  4      pV\        P                  P                  8w  d   R#  \        S4      R8  d   \        P                  ! S RR4       SP                  P                  RRR	7       S P                   P!                  4       p\#        V\        S4      4      pS P%                  V4       VP&                  P(                  P+                  VV 3R
 l4       VP&                  P,                  P+                  VV 3R l4       VP&                  P.                  P+                  S P0                  4       S P2                  P5                  R4       VP&                  P6                  P+                  V 3R l4       S P8                  P;                  V4       R#   \<         dB   p\>        PA                  R4       \        PB                  ! S R\E        T4      4        Rp?R# Rp?ii ; i)zNo PDFr  NzOverwrite DOCX?zThe file already exists:

z

Overwrite it?zLow Disk Spacez0Less than 50 MB of free disk space is available.T)ÚparentsÚexist_okc                 óH   <€ SP                  4       P                  R S  24      # )zGenerating DOCX: )rN   rO   )r  rR   s   €€r5   rd   Ú*MainWindow.generate_docx.<locals>.<lambda>ï  s!   ø€ ˜Ÿ™Ó(×4Ñ4Ø'¨ xÐ0ôr8   c                ó&   <€ SP                  S4      # r’   )Úon_docx_generated)rç   r  rR   s   &€€r5   rd   rÁ  õ  s   ø€ ˜$×0Ñ0°Ô8r8   Fc                 ó:   <€ S P                   P                  R 4      # )T)rr   r-  rc   s   €r5   rd   rÁ  ÿ  s   ø€ ˜×,Ñ,×7Ñ7¸Ô=r8   zDOCX generation setup failedz
DOCX Errori   )#rE   rð   r   r  rº  rã   rñ   ÚexistsÚquestionÚStandardButtonÚYesÚNor#   r  ÚparentÚmkdirÚcloner'   rv  r/  Ústartedrt   r0  r  r1  rr   r-  r�  rD   r2  rþ   rÿ   r   rõ   r"   )rR   ÚanswerÚsnapshotr3  r  r  s   f    @r5   ru   ÚMainWindow.generate_docx¹  s/  ù€ Ø�z‰z×$×$Ð$Ü×#Ò#ØØØ#ôñ
 ð ×)Ñ)Ó+ˆô "% V£ˆ�
‰
Ôà�=‰=�?Š?Ü ×)Ò)ØØ!à2°6°(ð ;$ð $ô ×*Ñ*×.Ñ.Ü×,Ñ,×/Ñ/õ0ä×*Ñ*×-Ñ-ó
ˆFð œ×3Ñ3×7Ñ7Ô7Ùð3	Ü˜&Ó!Ð$4Ô4Ü×#Ò#ØØ$ØFôð �M‰M×Ñ¨°tÐÔ<ð —z‘z×'Ñ'Ó)ˆHäØÜ�F“óˆFð
 ×!Ñ! &Ô)à�N‰N×"Ñ"×*Ñ*õôð �N‰N×!Ñ!×)Ñ)Ý8ôð �N‰N× Ñ ×(Ñ(Ø×$Ñ$ôð × Ñ ×+Ñ+¨EÔ2à�N‰N×#Ñ#×+Ñ+Ü=ôð ×Ñ×"Ñ" 6Ö*øäô 	Ü×ÑÐ;Ô<ä× Ò ØØÜ˜sÓ#÷ò ûð	ús   ÄE'I1 É1J=É<6J8Ê8J=c               ó    € V ^8„  d   QhRRRR/# )r0   r  r   r1   r2   r3   )r4   s   "r5   r6   r7     s   € ÷ 
ñ 
àð
ð 
ñ
r8   c                	ó€   € V P                  4       P                  R V 24       \        P                  ! V RRV 24       R# )zDOCX generated: zDOCX Completez"Document generated successfully:

N)rN   rO   r   r  )rR   r  s   &&r5   rÃ  ÚMainWindow.on_docx_generated  sC   € ð 	�‰Ó×$Ñ$Ø˜v˜hÐ'ô	
ô 	×ÒØØØ2°6°(Ð;ö	
r8   c               ó   € V ^8„  d   QhRR/# r/   r3   )r4   s   "r5   r6   r7     s   € ÷ ñ ˜dñ r8   c                	óÂ   € V P                  4       p\        P                  ! V R \        V4      R4      w  r#V'       g   R# W P                  n        V P                  4        R# )zSave DOCX AszWord document (*.docx)N)rº  r   r  rã   rE   rñ   ru   )rR   r  ræ   rç   s   &   r5   rÅ   ÚMainWindow.save_docx_as  sP   € Ø×*Ñ*Ó,ˆä×-Ò-ØØÜ�‹LØ$ó	
‰ˆ÷ Ùà!%�
‰
ÔØ×ÑÖr8   c               ó    € V ^8„  d   QhRRRR/# )r0   Úmessagerã   r1   r2   r3   )r4   s   "r5   r6   r7   0  s   € ÷ 
ñ 
àð
ð 
ñ
r8   c                	óè   € \         P                  R V4       V'       d   VP                  4       ^ ,          MRpV P                  4       P	                  RV 24       \
        P                  ! V RV4       R# )zWorker error: %szUnknown errorzBackground operation failed: zBackground Processing ErrorN)rÿ   r  r¤  rN   rO   r   rõ   )rR   rØ  Úshorts   && r5   r1  ÚMainWindow.on_worker_error0  sb   € ô 	�‰Ð'¨Ô1ç+2�×"Ñ"Ó$ QÖ'¸ˆà�‰Ó×$Ñ$Ø+¨E¨7Ð3ô	
ô 	×ÒØØ)Øö	
r8   c               ó   € V ^8„  d   QhRR/# r/   r3   )r4   s   "r5   r6   r7   B  s   € ÷ 
ñ 
 $ñ 
r8   c                	ób  € V P                   P                  '       g   V P                  P                  ^ 4       R# \	        R V P                   P                   4       4      pV P                  P                  \        ^dV,          \        V P                   P                  4      ,          4      4       R# )r   Nc              3  ó:   "  € T F  pVP                   x € K  	  R # 5ir’   r  r!  s   & r5   r#  Ú.MainWindow._update_progress.<locals>.<genexpr>G  s   é € ð 
á(�ð �NŽNÛ(ùr%  )rE   ró   rm   ro   r.  r  r  )rR   r   s   & r5   re  ÚMainWindow._update_progressB  s|   € Ø�z‰z××ÐØ�M‰M×"Ñ" 1Ô%Ùäñ 
àŸ
™
×(Ò(ó
ó 
ˆ	ð
 	�‰×ÑÜ��i•¤# d§j¡j×&6Ñ&6Ó"7Õ7Ó8ö	
r8   c               ó   € V ^8„  d   QhRR/# r/   r3   )r4   s   "r5   r6   r7   P  s   € ÷ ñ  4ñ r8   c                	óF  € V P                   '       dÈ   \        P                  ! V R R\        P                  P                  \        P                  P
                  ,          \        P                  P
                  4      pV\        P                  P                  8w  d   VP                  4        R# \        V P                   4       F  p VP                  4        K  	  V P                  4        VP                  4        R#   \         d    \        P                  R4        K]  i ; i)zOperations Runningz6Background operations are still running.

Exit anyway?NzWorker cancellation failed)rH   r   rÆ  rÇ  rÈ  rÉ  ÚignoreÚlistÚcancelrþ   rÿ   r   rý   Úaccept)rR   ÚeventrÎ  r3  s   &&  r5   Ú
closeEventÚMainWindow.closeEventP  sÞ   € Ø×#×#Ð#Ü ×)Ò)ØØ$ð#ô ×*Ñ*×.Ñ.Ü×,Ñ,×/Ñ/õ0ä×*Ñ*×-Ñ-ó
ˆFð œ×3Ñ3×7Ñ7Ô7Ø—‘”ÙäØ×(Ñ(ö�ðØ—M‘M–Oñ	ð 	×ÑÔØ�‰Žøô !ô Ü×$Ñ$Ø4÷ðús   ÃC<Ã< D ÄD )rF   rI   rH   r¯   rr   r§   r«   rE   rq   rl   rj   rp   rm   r°   r¨   r¬   r¤   r©   rD   r¢   )+Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r@   rJ   r   rL   rK   rM   rQ   rå   r³   rÄ   rü   r'  rb   r“   r´   rµ   rý   rx   rb  rc  rd  rv  rk  r}  r„  rq  rz   r~   rÇ   r|   rº  ru   rÃ  rÅ   r1  re  rè  Ú__static_attributes__Ú__classcell__)rU   s   @r5   r-   r-   4   sØ   ø† ÷(,ð (,õ\Gõ\i
õXt(õn-+õ^
õ0õBõH#õJ+õb7+õr
õ&#õõõ 
õ<
õ õ.3'õj'õ<,'õ\
õ
õ*
õ."!õH
õ,õ!õ0,õõ.+õ Rõj
õõ(
õ$
÷ó r8   r-   )9Ú
__future__r   ÚloggingÚpathlibr   Úqtpy.QtCorer   r   r   rÛ   r   r	   Úqtpy.QtWidgetsr
   r   r   r   r   r   r   r   r   r   r   r   r   r   Údialogsr   r   r   r   r   rù   r   r   r   Úservicesr    Úutilsr!   r"   r#   Úwidgetsr$   r%   Úworkersr&   r'   r(   r)   r*   r+   Ú	getLoggerrê  rÿ   r-   r3   r8   r5   Ú<module>rû     sw   ðÝ "ã Ý ç /Ñ /ß ,÷÷ ÷ ÷ ÷"õ ÷ñ õ
 !ß AÑ Aß .÷÷ ð 
×	Ò	˜8Ó	$€ôy�ö yr8   