├── .gitignore ├── AUTHORS ├── CHANGELOG ├── CMakeLists.txt ├── CURRENT_VERSION ├── INSTALL ├── LICENSE ├── README.md ├── dialogs ├── DrawRectangle.cpp ├── DrawRectangle.h ├── DrawRectangle.ui ├── FindDialog.cpp ├── FindDialog.h ├── FindDialog.ui ├── GetRowIDDialog.cpp ├── GetRowIDDialog.h ├── GetRowIDDialog.ui ├── SettingsDialog.cpp ├── SettingsDialog.h ├── SettingsDialog.ui ├── ShortCutDialog.ui ├── ShortCutsDialog.cpp └── ShortCutsDialog.h ├── qt-box-editor.pro ├── resources ├── QBE-Faenza.qrc ├── QBE-GNOME.qrc ├── QBE-Oxygen.qrc ├── QBE-Tango.qrc ├── application.qrc ├── icons │ ├── QBE-Faenza │ │ ├── README │ │ ├── applications-fonts.svg │ │ ├── document-import.png │ │ ├── document-open.png │ │ ├── document-save-as.png │ │ ├── document-save.png │ │ ├── edit-find.svg │ │ ├── edit-redo.png │ │ ├── edit-undo.png │ │ ├── exit.png │ │ ├── format-text-bold.png │ │ ├── format-text-italic.png │ │ ├── format-text-underline.png │ │ ├── go-jump.png │ │ ├── go-next.png │ │ ├── go-previous.png │ │ ├── help-about.svg │ │ ├── index.theme │ │ ├── key_bindings.svg │ │ ├── software-properties.svg │ │ ├── zoom-fit.png │ │ ├── zoom-height.png │ │ ├── zoom-in.png │ │ ├── zoom-original.png │ │ ├── zoom-out.png │ │ ├── zoom-selection.png │ │ └── zoom-width.png │ ├── QBE-GNOME │ │ ├── README │ │ ├── application-exit.png │ │ ├── document-open.png │ │ ├── document-save-as.png │ │ ├── document-save.png │ │ ├── edit-find.png │ │ ├── edit-redo.png │ │ ├── edit-undo.png │ │ ├── format-text-bold.png │ │ ├── format-text-italic.png │ │ ├── format-text-underline.png │ │ ├── go-down.png │ │ ├── go-jump.png │ │ ├── go-next.png │ │ ├── go-previous.png │ │ ├── go-up.png │ │ ├── help-about.png │ │ ├── index.theme │ │ ├── list-add.png │ │ ├── list-remove.png │ │ ├── preferences-desktop-font.png │ │ ├── preferences-desktop-keyboard-shortcuts.png │ │ ├── preferences-system.png │ │ ├── zoom-fit-best.png │ │ ├── zoom-in.png │ │ ├── zoom-original.png │ │ └── zoom-out.png │ ├── QBE-Misc │ │ ├── Document-import.svg │ │ ├── README │ │ ├── gnome-edit-find.svg │ │ ├── joinRow.svg │ │ ├── moveTo.svg │ │ └── splitRow.svg │ ├── QBE-Oxygen │ │ ├── application-exit.png │ │ ├── application-x-font-ttf.png │ │ ├── document-import.png │ │ ├── document-open.png │ │ ├── document-save-as.png │ │ ├── document-save.png │ │ ├── draw-rectangle.png │ │ ├── edit-find.png │ │ ├── edit-redo.png │ │ ├── edit-table-delete-row.png │ │ ├── edit-table-insert-row-under.png │ │ ├── edit-undo.png │ │ ├── format-text-bold.png │ │ ├── format-text-italic.png │ │ ├── format-text-underline.png │ │ ├── go-down.png │ │ ├── go-jump.png │ │ ├── go-next.png │ │ ├── go-previous.png │ │ ├── go-up.png │ │ ├── help-about.png │ │ ├── index.theme │ │ ├── list-add.png │ │ ├── list-remove.png │ │ ├── preferences-desktop-keyboard.png │ │ ├── preferences-system.png │ │ ├── zoom-fit-best.png │ │ ├── zoom-fit-height.png │ │ ├── zoom-fit-width.png │ │ ├── zoom-in.png │ │ ├── zoom-original.png │ │ ├── zoom-out.png │ │ └── zoom-select.png │ ├── QBE-Tango │ │ ├── README │ │ ├── View-zoom-0.svg │ │ ├── View-zoom-fit.svg │ │ ├── View-zoom-in.svg │ │ ├── View-zoom-out.svg │ │ ├── View-zoom-target.svg │ │ ├── document-open.svg │ │ ├── document-save-as.svg │ │ ├── document-save.svg │ │ ├── edit-find.svg │ │ ├── edit-redo.svg │ │ ├── edit-undo.svg │ │ ├── font-x-generic.svg │ │ ├── format-text-bold.svg │ │ ├── format-text-italic.svg │ │ ├── format-text-underline.svg │ │ ├── go-down.svg │ │ ├── go-jump.svg │ │ ├── go-next.svg │ │ ├── go-previous.svg │ │ ├── go-top.svg │ │ ├── go-up.svg │ │ ├── help-browser.svg │ │ ├── index.theme │ │ ├── list-add.svg │ │ ├── list-remove.svg │ │ └── system-log-out.svg │ ├── qbe.ico │ ├── qbe.png │ ├── qbe.svg │ └── qbe │ │ ├── README │ │ ├── deleteRow.png │ │ ├── deleteRow.svg │ │ ├── down.svg │ │ ├── drawRect.png │ │ ├── insertRow.svg │ │ ├── rectangle.svg │ │ ├── showSymbol.png │ │ └── up.svg └── win.rc ├── src ├── ChildWidget.cpp ├── ChildWidget.h ├── DelegateEditors.cpp ├── DelegateEditors.h ├── MainWindow.cpp ├── MainWindow.h ├── Settings.h ├── TessTools.cpp ├── TessTools.h └── main.cpp └── tests ├── 8.box ├── 8.tif ├── DESCRIPTIONS ├── eng.ligatures.exp01.box ├── eng.ligatures.exp01.tif ├── eng.ligatures.exp01.txt ├── hiero.sethe.1.box ├── hiero.sethe.1.png ├── kan01.box ├── kan01.png ├── multipages.box ├── multipages.tif ├── pangrams-stam.box ├── pangrams-stam.png ├── slk.example.001.bmp └── slk.example.001.box /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | *.swp 3 | .hg* 4 | temp* 5 | x_code* 6 | qt-box-editor-* 7 | qt-box-editor.pro* 8 | tests* 9 | old* 10 | Makefile 11 | Makefile.Debug 12 | Makefile.Release 13 | object_script.* 14 | win32* 15 | win64* 16 | *.dll 17 | build/* -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | zofer = Zohar Gofer (C) 2012 2 | daemons2000 = Dmitri Silaev (C) 2012 3 | zdenop = Zdenko Podobný (C) 2011-2012 4 | mk219533 = Marcel Kołodziejczyk (C) 2009-2010 (Original author) 5 | -------------------------------------------------------------------------------- /CHANGELOG: -------------------------------------------------------------------------------- 1 | 1.13 2 | - fixed compatibility with QT5 3 | - build build against the tesseract 5.4.x and leptonica 1.84 4 | - add cmake support 5 | 6 | 1.12 7 | - fixed compatibility with Tesseract API 3.02 and 3.03 8 | - fix generating box file with tesserac 3.04 and 3.05 9 | - fix grayscale palette in PIXqImage 10 | - fix opening box files created by text2image 11 | - use c++11 for bulding 12 | - several other bug fixes 13 | 14 | 1.11 15 | - fixed compatibility with QT5 16 | - added multipage support 17 | - use leptonica for opening tif files to problems with tif 18 | - several bug fixes 19 | 20 | 1.10 21 | - implemented bbox drag resizing (thanks to D. Silaev) 22 | - reload image, reload box file from disk 23 | - implemented 'regenerate box file' 24 | - implemented 'convert image to binary image' 25 | - implemented 'zoom in/out' with CTRL + mouse wheel 26 | - watch for modified boxfile outside of program 27 | - set CrossCursor for rubberBand selection 28 | - improve shortcuts info/help 29 | - fix for moveTo function 30 | - fix crash for joinSymbol/add check for selection in modelItemBox 31 | 32 | 1.09 33 | - implemented icontheme change option + 3 additional themes (gnome, tango, 34 | oxygen) 35 | - implemented option to change QT Style 36 | - implemented redo (thanks to Z. Gofer) 37 | - improved undo (thanks to Z. Gofer) 38 | - Rubber band selection with Ctrl + mouse click and drag from image 39 | (thanks to D. Silaev) 40 | - multiline join and delete (thanks to D. Silaev) 41 | - baloon effect - possibility to define how many symbols will be displayed 42 | (thanks to D. Silaev) 43 | - extended settings for more customisation 44 | - several fixed of segfault 45 | 46 | 1.08 47 | - show/hide columns with font formatting (thanks to D. Silaev) 48 | - char table col width management, Font column fixes (thanks to D. Silaev) 49 | - fixed MSVC build (thanks to D. Silaev) 50 | - multiple Balloon Symbols to increase proofreading (thanks to D. Silaev) 51 | - initial implementation of undo for table operation: Add, Delete, Change, 52 | Join, Split, Replace (thanks to Z. Gofer) 53 | - Halo text effect for better readability (thanks to D. Silaev) 54 | - fixes related to direct typing mode thanks to D. Silaev) 55 | - fix segfault when zooming 56 | 57 | 1.07 58 | - implement Drag&Drop for opening images 59 | - create box file if not exists (requires tesseract traineddata) 60 | - multirow change of font style (bold/italic/underlined) 61 | - export to multiple box files based on font style (bold/italic/underlined) 62 | - draw rectangle based on bounding box 63 | - fixes for table size, font style change, line recognition in text export, 64 | row moving 65 | 66 | 1.06 67 | - changes of box size is visible on image immediately 68 | - implemented find dialog 69 | 70 | 1.05 71 | - status bar improvement: 72 | * UTF code of symbol 73 | * size of box 74 | * zoom factor 75 | - export of symbols to txt file ( symbol per line, line by line, paragraph per 76 | line) 77 | - import of symbols from txt file 78 | - improved settings dialog for export/import 79 | 80 | 1.04 81 | - direct typing mode (automatic moving to next symbol cell after key release 82 | event) 83 | - improved copy&paste in symbol table 84 | - new functions: "Go to", "Move to" for symbol table 85 | - toolbar for symbol table operations 86 | - fixed loading multipage box file (at the moment there is support only for 87 | first page, so other pages must be ignored) 88 | - fixed check of new version on Windows build (proxy is still not supported) 89 | - used plastic theme 90 | 91 | 1.03 92 | - setting dialog 93 | - option to select font for table, colors for boxes 94 | - shortcuts help/dialog 95 | - added function to insert box 96 | - added function to move box within table/model 97 | 98 | 1.02 99 | - replace icons from Faenza Icons set 100 | - added zoom to box, zoom to fit, fit to width, fit to height 101 | - added hide/show boxes 102 | - improved saving/restoring state of application 103 | 104 | 1.01 105 | - fixed problem that application did not find box file if there where multiple 106 | dots in filename 107 | - add support for tesseract v3.00 box files 108 | - Open file remembers last open directory 109 | - added Check for update (it did not work on windows) 110 | - added Recent files to File menu 111 | - added Save As function 112 | - added Zoom 1:1 113 | 114 | 1.00 115 | - initial release 116 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.5) 2 | 3 | project(qt-box-editor CXX) 4 | set(CMAKE_CXX_STANDARD 17) 5 | 6 | set(QTB_VERSION "1.13.0") 7 | add_definitions(-DAPP_VERSION="${QTB_VERSION}") 8 | set(CMAKE_INCLUDE_CURRENT_DIR ON) 9 | set(CMAKE_AUTOMOC ON) 10 | set(CMAKE_AUTORCC ON) 11 | set(CMAKE_AUTOUIC ON) 12 | 13 | find_package(Qt5 REQUIRED Widgets Svg Network) 14 | find_package(Leptonica REQUIRED) 15 | find_package(Tesseract REQUIRED) 16 | 17 | include_directories(${Tesseract_INCLUDE_DIRS} ${Leptonica_INCLUDE_DIRS}) 18 | include_directories( 19 | ${CMAKE_CURRENT_SOURCE_DIR}/dialogs ${CMAKE_CURRENT_SOURCE_DIR}/src 20 | ) 21 | link_directories(${Tesseract_LIBRARY_DIRS} ${leptonica_LIBRARY_DIRS}) 22 | add_definitions(${Tesseract_DEFINITIONS} ${leptonica_DEFINITIONS}) 23 | 24 | set(project_SOURCES 25 | src/main.cpp 26 | src/MainWindow.cpp 27 | src/ChildWidget.cpp 28 | src/DelegateEditors.cpp 29 | src/TessTools.cpp 30 | dialogs/SettingsDialog.cpp 31 | dialogs/GetRowIDDialog.cpp 32 | dialogs/ShortCutsDialog.cpp 33 | dialogs/FindDialog.cpp 34 | dialogs/DrawRectangle.cpp) 35 | set(project_HEADERS 36 | src/MainWindow.h 37 | src/ChildWidget.h 38 | src/Settings.h 39 | src/TessTools.h 40 | src/DelegateEditors.h 41 | dialogs/SettingsDialog.h 42 | dialogs/GetRowIDDialog.h 43 | dialogs/ShortCutsDialog.h 44 | dialogs/FindDialog.h 45 | dialogs/DrawRectangle.h) 46 | set(project_FORMS 47 | dialogs/ShortCutDialog.ui dialogs/GetRowIDDialog.ui 48 | dialogs/SettingsDialog.ui dialogs/FindDialog.ui dialogs/DrawRectangle.ui) 49 | set(project_RESOURCES 50 | resources/application.qrc resources/QBE-GNOME.qrc resources/QBE-Faenza.qrc 51 | resources/QBE-Oxygen.qrc resources/QBE-Tango.qrc) 52 | 53 | # qt5_add_resources(project_SOURCES ${project_RESOURCES}) 54 | 55 | if (${CMAKE_SYSTEM_NAME} MATCHES "Windows") 56 | enable_language("RC") 57 | set (WIN32_RESOURCES ${CMAKE_CURRENT_SOURCE_DIR}/resources/win.rc) 58 | endif() 59 | 60 | add_executable( 61 | ${CMAKE_PROJECT_NAME}-${QTB_VERSION} ${project_SOURCES} ${project_FORMS} 62 | ${project_HEADERS} ${project_RESOURCES} ${WIN32_RESOURCES}) 63 | target_link_libraries( 64 | ${CMAKE_PROJECT_NAME}-${QTB_VERSION} Qt5::Widgets Qt5::Svg Qt5::Network 65 | ${Leptonica_LIBRARIES} ${Tesseract_LIBRARIES} ) 66 | -------------------------------------------------------------------------------- /CURRENT_VERSION: -------------------------------------------------------------------------------- 1 | 1.11 2 | -------------------------------------------------------------------------------- /INSTALL: -------------------------------------------------------------------------------- 1 | REQUIREMENTS 2 | ============ 3 | * QT4 (tested with QT-4.7.3, QT-4.8.2) 4 | * leptonica library 5 | * tesseract 3.01 or 3.02 build as library 6 | Obs.: In case you're compiling it with QT5 >= then you must to install libqt5svg5-dev/libqt5svg5-devel 7 | 8 | BUILDING 9 | ======== 10 | 11 | adjust location of leptonica and tesseract in qt-box-editor.pro 12 | qmake 13 | make 14 | 15 | In case of Windows, output is in win32 directory. 16 | 17 | BUILDING ON UBUNTU 18 | ================== 19 | 20 | sudo apt-get install qt5-qmake 21 | sudo apt-get install qt5-default 22 | sudo apt-get install libqt5gui5 23 | sudo apt-get install qt5-doc 24 | sudo apt-get install libqt5svg5-dev 25 | sudo apt-get install libleptonica-dev 26 | 27 | qmake -qt=5 28 | make 29 | 30 | BUILDING ON OSX 31 | ================== 32 | 33 | Before you can run the qmake/ make commands below, you'll need to install the Apple published Xcode suite, and run it at least once so the terms can be agreed to. 34 | 35 | brew cask install xquartz 36 | brew install --with-training-tools tesseract 37 | brew install qt 38 | qmake 39 | make 40 | open qt-box-editor-1.13dev.app/ 41 | 42 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | QT Box Editor 2 | ============= 3 | 4 | Project homepage: [https://github.com/zdenop/qt-box-editor](https://github.com/zdenop/qt-box-editor) 5 | 6 | Project description: [https://zdenop.github.io/qt-box-editor/](https://zdenop.github.io/qt-box-editor/) 7 | 8 | Screenshots: [wiki](https://github.com/zdenop/qt-box-editor/wiki) 9 | 10 | Download current (devel) source: [tar.gz](https://github.com/zdenop/qt-box-editor/tarball/master) or [zip](https://github.com/zdenop/qt-box-editor/zipball/master). 11 | 12 | The latest released source is [qt-box-editor-v1.13](https://github.com/zdenop/qt-box-editor/tarball/master/tree/v1.13). 13 | 14 | Download [win32 binary build](http://sourceforge.net/projects/qtboxeditor/?source=dlp) from [sourceforge.net](http://sourceforge.net/projects/qtboxeditor/) 15 | 16 | Licence: [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) 17 | 18 | 19 | DESCRIPTION 20 | ----------- 21 | 22 | QT Box Editor is tool for adjusting [tesseract-ocr](https://github.com/tesseract-ocr/tesseract) v3 (a.k.a Legacy engine) box files. Aim of this project is to provide easy and efficient way for editing regardless file size. 23 | **It is useless for training tesseract v4 and above (LSTM engine).** 24 | 25 | Release information can be found in CHANGELOG file. Code and artwork contribution is welcomed. 26 | 27 | QT box editor is a successor of [tesseract-gui project](https://github.com/mk219533/tesseract-gui) that is not developed anymore. Name of application was changed due to name collision with project http://tesseract-gui.sourceforge.net. 28 | 29 | 30 | LICENSE 31 | ------- 32 | 33 | License was changed from "THE BEER-WARE LICENSE" to ["Apache License, Version 2.0"](http://www.apache.org/licenses/LICENSE-2.0) based on agreement with Marcel Kołodziejczyk ([original author](https://github.com/mk219533/tesseract-gui)). Anyway you are welcome to buy him a free beer if you meet him. He deserves it. 34 | 35 | [Faenza Icons](http://tiheum.deviantart.com/art/Faenza-Icons-173323228) are under GNU/GPL license. 36 | [Tango Icons](http://tango.freedesktop.org/) are Public Domain. 37 | 38 | ARTWORK 39 | ------- 40 | 41 | These icons are Faenza Icons: 42 | exit.png 43 | filesave.png 44 | fileopen.png 45 | gtk-jump-to-ltr.png 46 | help-about.png 47 | next.png 48 | previous.png 49 | text_bold.png 50 | text_italic.png 51 | text_under.png 52 | window-close.png 53 | zoom-in.png 54 | zoom-fit.png 55 | zoom-original.png 56 | zoom-out.png 57 | zoom-selection.png (is modified zoom-fit.png) 58 | 59 | import.svg is modified icon of Faenza fileopen icon. 60 | 61 | joinRow.svg and splitRow.svg are adapted icons of lmproulx icons [Convergent](http://www.openclipart.org/detail/convergent-by-lmproulx) and [Divergent](http://www.openclipart.org/detail/divergent-by-lmproulx) 62 | 63 | gnome-edit-find.svg is from [Wikipedia](http://en.wikipedia.org/wiki/File:Gnome-edit-find.svg). 64 | 65 | Other icons/artwork were created for Qt Box Editor and they are released under Apache License, Version 2.0. 66 | 67 | 68 | Distribution 69 | ------------ 70 | 71 | See [release page](https://github.com/zdenop/qt-box-editor/releases) 72 | 73 | 74 | 75 | Instalation 76 | ----------- 77 | 78 | Requirements: QT5, tesseract & leptonica and (optionally) cmake. 79 | 80 | For building you can use `qmake-qt5` or `cmake` 81 | 82 | For cmake build you will need to compile&install tesseract by cmake otherwise cmake relevant files (e.g. ` tesseractConfig.cmake`) will not be created and installed. 83 | 84 | ## cmake windows build 85 | 86 | `` could be e.g. `f:/Qt/5.15.2/msvc2019_64` 87 | `` could be e.g. `f:/win64` 88 | 89 | ```sh 90 | set QTDIR= 91 | set PATH=%QTDIR%/bin;%PATH% 92 | cmake -G "Visual Studio 16 2019" -A x64 -S . -B build -DCMAKE_PREFIX_PATH=";" 93 | cmake --build build --config Release --verbose 94 | ``` 95 | 96 | The Output will be at build\Release\qt-box-editor-1.13.0.exe 97 | 98 | ## cmake linux build 99 | 100 | ```sh 101 | cmake -B build 102 | make 103 | ``` 104 | 105 | ## qmake linux build 106 | 107 | ```sh 108 | qmake-qt5 109 | make 110 | ``` -------------------------------------------------------------------------------- /dialogs/DrawRectangle.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * File: FindDialog.cpp 3 | * Description: Find Dialog 4 | * Author: Zdenko Podobny 5 | * Created: 2011-09-23 6 | * 7 | * (C) Copyright 2011-2024, Zdenko Podobny 8 | ** 9 | ** Licensed under the Apache License, Version 2.0 (the "License"); 10 | ** you may not use this file except in compliance with the License. 11 | ** You may obtain a copy of the License at 12 | ** 13 | ** http://www.apache.org/licenses/LICENSE-2.0 14 | ** 15 | ** Unless required by applicable law or agreed to in writing, software 16 | ** distributed under the License is distributed on an "AS IS" BASIS, 17 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | ** See the License for the specific language governing permissions and 19 | ** limitations under the License. 20 | * 21 | **********************************************************************/ 22 | 23 | #include "dialogs/DrawRectangle.h" 24 | #include "ui_DrawRectangle.h" 25 | 26 | //http://qt.gitorious.org/qt-labs/qtspotify/blobs/b7b0ecae6f5ab815e941bd62c00b0f87d2810016/logindialog.cpp 27 | DrawRectangle::DrawRectangle(QWidget* parent, QString title, int maxWidth, 28 | int maxHeight) : 29 | QDialog(parent), 30 | ui(new Ui::DrawRect) 31 | { 32 | ui->setupUi(this); 33 | 34 | if (!title.isEmpty()) 35 | setWindowTitle(tr("Draw rectangle in %1:").arg(title)); 36 | 37 | ui->spinBox_x1->setMaximum(maxWidth); 38 | ui->spinBox_x2->setMaximum(maxWidth); 39 | ui->spinBox_y1->setMaximum(maxHeight); 40 | ui->spinBox_y2->setMaximum(maxHeight); 41 | 42 | ui->spinBox_x1->setFocus(); 43 | // workaround selectAll() do not work... 44 | ui->spinBox_x1->stepUp(); 45 | ui->spinBox_x1->stepDown(); 46 | 47 | QLabel *lbl = new QLabel("OR you can insert line from Tesseract output e.g. ((1645,6315),(1756,6432))", this); 48 | lbl->setToolTip("Use this, if you got Tesseract's output like
FAIL! APPLY_BOXES: boxfile line 58/D"
 49 |                   "((3166,6595),(3267,6686)): FAILURE! Couldn't find a matching blob
"); 50 | 51 | // NOTE: We do next here: 52 | // 1) delete buttonBox from layout 53 | // 2) insert our widgets with respective span parameters 54 | // 3) insert original buttonBox 55 | QLayoutItem *buttonBox = ui->gridLayout->itemAt(ui->gridLayout->rowCount()); 56 | ui->gridLayout->addWidget(lbl, ui->gridLayout->rowCount(), 0, 4, 0); 57 | edtTesseractOutput = new QLineEdit(this); 58 | edtTesseractOutput->setPlaceholderText("Enter here numbers like '((3183,6605),(3291,6716))'"); 59 | ui->gridLayout->addWidget(edtTesseractOutput, ui->gridLayout->rowCount(), 0, 4, 0); 60 | ui->gridLayout->addWidget(buttonBox->widget(), ui->gridLayout->rowCount(), 0, 4, 0); 61 | } 62 | 63 | DrawRectangle::~DrawRectangle() 64 | { 65 | delete ui; 66 | } 67 | /** 68 | * Input: tesseract coord; e.g.:Bounding box=(197,27)->(206,41) 69 | * return: image coord ; e.g.: (197, , 206, ) 70 | */ 71 | QRect DrawRectangle::getRectangle() const 72 | { 73 | QRect coords; 74 | if (edtTesseractOutput && !edtTesseractOutput->text().isEmpty()) { 75 | const QString output(edtTesseractOutput->text()); 76 | QRegExp rx("(\\d+)"); 77 | QStringList list; 78 | int pos = 0; 79 | while ((pos = rx.indexIn(output, pos)) != -1) { 80 | list << rx.cap(1); 81 | pos += rx.matchedLength(); 82 | } 83 | if (list.isEmpty() || list.count() != 4) { 84 | coords.setCoords(0, 0, 0, 0); 85 | } else { 86 | coords.setTopLeft(QPoint(list.at(0).toInt(), ui->spinBox_y1->maximum() - list.at(1).toInt())); 87 | coords.setBottomRight(QPoint(list.at(2).toInt(), ui->spinBox_y2->maximum() - list.at(3).toInt())); 88 | } 89 | edtTesseractOutput->clear(); 90 | } else { 91 | ui->spinBox_x1->setFocus(); 92 | ui->spinBox_x1->selectAll(); 93 | 94 | if (ui->spinBox_x1->value() == 0 95 | && ui->spinBox_y1->value() == 0 96 | && ui->spinBox_x2->value() == 0 97 | && ui->spinBox_y2->value() == 0) { 98 | // NOTE: User hasn't changed anything 99 | coords.setCoords(0, 0, 0, 0); 100 | } else { 101 | // NOTE: User input some values 102 | coords.setCoords(ui->spinBox_x1->value(), 103 | ui->spinBox_y1->maximum() - ui->spinBox_y1->value(), 104 | ui->spinBox_x2->value(), 105 | ui->spinBox_y2->maximum() - ui->spinBox_y2->value()); 106 | } 107 | } 108 | return coords; 109 | } 110 | -------------------------------------------------------------------------------- /dialogs/DrawRectangle.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * File: FindDialog.h 3 | * Description: Find Dialog 4 | * Author: Zdenko Podobny 5 | * Created: 2011-09-23 6 | * 7 | * (C) Copyright 2011-2024, Zdenko Podobny 8 | ** 9 | ** Licensed under the Apache License, Version 2.0 (the "License"); 10 | ** you may not use this file except in compliance with the License. 11 | ** You may obtain a copy of the License at 12 | ** 13 | ** http://www.apache.org/licenses/LICENSE-2.0 14 | ** 15 | ** Unless required by applicable law or agreed to in writing, software 16 | ** distributed under the License is distributed on an "AS IS" BASIS, 17 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | ** See the License for the specific language governing permissions and 19 | ** limitations under the License. 20 | * 21 | **********************************************************************/ 22 | 23 | #ifndef DIALOGS_DrawRectangle_H_ 24 | #define DIALOGS_DrawRectangle_H_ 25 | 26 | #include 27 | #include 28 | #include 29 | 30 | namespace Ui { 31 | class DrawRect; 32 | } 33 | 34 | class DrawRectangle : public QDialog { 35 | Q_OBJECT 36 | 37 | public: 38 | DrawRectangle(QWidget* parent = 0, QString title = "", int maxWidth = 0, 39 | int maxHeight = 0); 40 | ~DrawRectangle(); 41 | 42 | QRect getRectangle() const; 43 | 44 | private: 45 | Ui::DrawRect *ui; 46 | QLineEdit *edtTesseractOutput; 47 | }; 48 | 49 | 50 | #endif // DIALOGS_DrawRectangle_H_ 51 | -------------------------------------------------------------------------------- /dialogs/DrawRectangle.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | DrawRect 4 | 5 | 6 | 7 | 0 8 | 0 9 | 293 10 | 100 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | false 18 | 19 | 20 | false 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | <html><head/><body><p align="center"><span style=" font-size:12pt; font-weight:600;">Bounding box</span></p></body></html> 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | Qt::Horizontal 42 | 43 | 44 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | spinBox_x1 60 | spinBox_y1 61 | spinBox_x2 62 | spinBox_y2 63 | buttonBox 64 | 65 | 66 | 67 | 68 | buttonBox 69 | accepted() 70 | DrawRect 71 | accept() 72 | 73 | 74 | 248 75 | 254 76 | 77 | 78 | 157 79 | 274 80 | 81 | 82 | 83 | 84 | buttonBox 85 | rejected() 86 | DrawRect 87 | reject() 88 | 89 | 90 | 316 91 | 260 92 | 93 | 94 | 286 95 | 274 96 | 97 | 98 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /dialogs/FindDialog.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * File: FindDialog.cpp 3 | * Description: Find Dialog 4 | * Author: Zdenko Podobny 5 | * Created: 2011-09-23 6 | * 7 | * (C) Copyright 2011-2024, Zdenko Podobny 8 | ** 9 | ** Licensed under the Apache License, Version 2.0 (the "License"); 10 | ** you may not use this file except in compliance with the License. 11 | ** You may obtain a copy of the License at 12 | ** 13 | ** http://www.apache.org/licenses/LICENSE-2.0 14 | ** 15 | ** Unless required by applicable law or agreed to in writing, software 16 | ** distributed under the License is distributed on an "AS IS" BASIS, 17 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | ** See the License for the specific language governing permissions and 19 | ** limitations under the License. 20 | * 21 | **********************************************************************/ 22 | 23 | #include "dialogs/FindDialog.h" 24 | #include "Settings.h" 25 | 26 | #if (!defined(_WIN32)) 27 | #include 28 | #endif 29 | 30 | #include 31 | 32 | FindDialog::FindDialog(QWidget* parent, QString title) 33 | : QDialog(parent) { 34 | setupUi(this); 35 | 36 | if (!title.isEmpty()) 37 | setWindowTitle(tr("Find in %1:").arg(title)); 38 | findNextButton = new QPushButton(tr("&Next")); 39 | findNextButton->setDefault(true); 40 | findNextButton->setEnabled(false); 41 | findPrevButton = new QPushButton(tr("&Previous")); 42 | findPrevButton->setEnabled(false); 43 | closeButton = new QPushButton(tr("&Close")); 44 | 45 | buttonBox->addButton(findNextButton, 46 | QDialogButtonBox::ActionRole); 47 | buttonBox->addButton(findPrevButton, 48 | QDialogButtonBox::ActionRole); 49 | buttonBox->addButton(closeButton, 50 | QDialogButtonBox::RejectRole); 51 | 52 | QRegExp regExp(".+"); // no empty string test 53 | lineEdit->setValidator(new QRegExpValidator(regExp, this)); 54 | 55 | connect(findNextButton, SIGNAL(clicked()), this, SLOT(findNext())); 56 | connect(findPrevButton, SIGNAL(clicked()), this, SLOT(findPrev())); 57 | connect(closeButton, SIGNAL(clicked()), this, SLOT(close())); 58 | connect(checkBox_Mc, SIGNAL(toggled(bool)), this, SLOT(changed_Mc(bool))); 59 | connect(parent, SIGNAL(blinkFindDialog()), this, SLOT(blinkFindDialog())); 60 | timerBlink = new QTimeLine(10); 61 | originalBackColor = this->palette().color(QPalette::Window);; 62 | getSettings(); 63 | } 64 | 65 | void FindDialog::on_lineEdit_textChanged() { 66 | findNextButton->setEnabled(lineEdit->hasAcceptableInput()); 67 | findPrevButton->setEnabled(lineEdit->hasAcceptableInput()); 68 | } 69 | 70 | void FindDialog::findNext() { 71 | QString symbol = lineEdit->text(); 72 | Qt::CaseSensitivity mc = 73 | checkBox_Mc->isChecked() ? Qt::CaseSensitive 74 | : Qt::CaseInsensitive; 75 | emit findNext(symbol, mc); 76 | } 77 | 78 | void FindDialog::findPrev() { 79 | QString symbol = lineEdit->text(); 80 | Qt::CaseSensitivity mc = 81 | checkBox_Mc->isChecked() ? Qt::CaseSensitive 82 | : Qt::CaseInsensitive; 83 | emit findPrev(symbol, mc); 84 | } 85 | 86 | void FindDialog::changed_Mc(bool status) { 87 | QSettings settings(QSettings::IniFormat, QSettings::UserScope, 88 | SETTING_ORGANIZATION, SETTING_APPLICATION); 89 | settings.setValue("Find/MatchCase", status); 90 | } 91 | 92 | void FindDialog::blinkFindDialog() { 93 | QApplication::beep(); 94 | if(timerBlink->state() == QTimeLine::NotRunning) 95 | { 96 | timerBlink->resume(); 97 | connect(timerBlink, SIGNAL(finished()), this, SLOT(blinkFinished())); 98 | } 99 | QPalette pal = this->palette(); 100 | pal.setColor(QPalette::Window, Qt::red); 101 | this->setPalette(pal); 102 | } 103 | 104 | void FindDialog::blinkFinished() { 105 | disconnect(timerBlink, SIGNAL(finished()), this, SLOT(blinkFinished())); 106 | QPalette pal = this->palette(); 107 | pal.setColor(QPalette::Window, originalBackColor); 108 | this->setPalette(pal); 109 | } 110 | 111 | void FindDialog::closeEvent(QCloseEvent* event) { 112 | writeGeometry(); 113 | event->accept(); 114 | } 115 | 116 | void FindDialog::getSettings() { 117 | QSettings settings(QSettings::IniFormat, QSettings::UserScope, 118 | SETTING_ORGANIZATION, SETTING_APPLICATION); 119 | if (settings.contains("Find/MatchCase")) 120 | checkBox_Mc->setChecked(settings.value("Find/MatchCase").toBool()); 121 | 122 | QPoint pos = settings.value("Find/Pos", QPoint(200, 200)).toPoint(); 123 | QSize size = settings.value("Find/Size", QSize(300, 100)).toSize(); 124 | resize(size); 125 | move(pos); 126 | } 127 | 128 | void FindDialog::writeGeometry() { 129 | QSettings settings(QSettings::IniFormat, QSettings::UserScope, 130 | SETTING_ORGANIZATION, SETTING_APPLICATION); 131 | settings.setValue("Find/Pos", pos()); 132 | settings.setValue("Find/Size", size()); 133 | } 134 | -------------------------------------------------------------------------------- /dialogs/FindDialog.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * File: FindDialog.h 3 | * Description: Find Dialog 4 | * Author: Zdenko Podobny 5 | * Created: 2011-09-23 6 | * 7 | * (C) Copyright 2011-2024, Zdenko Podobny 8 | ** 9 | ** Licensed under the Apache License, Version 2.0 (the "License"); 10 | ** you may not use this file except in compliance with the License. 11 | ** You may obtain a copy of the License at 12 | ** 13 | ** http://www.apache.org/licenses/LICENSE-2.0 14 | ** 15 | ** Unless required by applicable law or agreed to in writing, software 16 | ** distributed under the License is distributed on an "AS IS" BASIS, 17 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | ** See the License for the specific language governing permissions and 19 | ** limitations under the License. 20 | * 21 | **********************************************************************/ 22 | 23 | #ifndef DIALOGS_FINDDIALOG_H_ 24 | #define DIALOGS_FINDDIALOG_H_ 25 | 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | 33 | #include "ui_FindDialog.h" 34 | 35 | class FindDialog : public QDialog, public Ui::Find { 36 | Q_OBJECT 37 | 38 | public: 39 | explicit FindDialog(QWidget* parent = 0, QString title = ""); 40 | 41 | public slots: 42 | void blinkFindDialog(); 43 | 44 | signals: 45 | void findNext(const QString &smbl, Qt::CaseSensitivity mc); 46 | void findPrev(const QString &smbl, Qt::CaseSensitivity mc); 47 | 48 | protected: 49 | void closeEvent(QCloseEvent* event); 50 | 51 | private: 52 | QPushButton *findNextButton; 53 | QPushButton *findPrevButton; 54 | QPushButton *closeButton; 55 | QTimeLine *timerBlink; 56 | QColor originalBackColor; 57 | 58 | void writeGeometry(); 59 | 60 | private slots: 61 | void on_lineEdit_textChanged(); 62 | void findNext(); 63 | void findPrev(); 64 | void blinkFinished(); 65 | void changed_Mc(bool status); 66 | void getSettings(); 67 | }; 68 | 69 | 70 | #endif // DIALOGS_FINDDIALOG_H_ 71 | -------------------------------------------------------------------------------- /dialogs/FindDialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Find 4 | 5 | 6 | 7 | 0 8 | 0 9 | 306 10 | 98 11 | 12 | 13 | 14 | Find... 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | Find symbol: 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | Qt::Vertical 38 | 39 | 40 | QDialogButtonBox::NoButton 41 | 42 | 43 | 44 | 45 | 46 | 47 | Match case 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | buttonBox 57 | rejected() 58 | Find 59 | reject() 60 | 61 | 62 | 316 63 | 260 64 | 65 | 66 | 286 67 | 274 68 | 69 | 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /dialogs/GetRowIDDialog.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * File: GetRowIDDialog.cpp 3 | * Description: Get Row ID Dialog 4 | * Author: Zdenko Podobny 5 | * Created: 2011-04-14 6 | * 7 | * (C) Copyright 2011-2024, Zdenko Podobny 8 | ** 9 | ** Licensed under the Apache License, Version 2.0 (the "License"); 10 | ** you may not use this file except in compliance with the License. 11 | ** You may obtain a copy of the License at 12 | ** 13 | ** http://www.apache.org/licenses/LICENSE-2.0 14 | ** 15 | ** Unless required by applicable law or agreed to in writing, software 16 | ** distributed under the License is distributed on an "AS IS" BASIS, 17 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | ** See the License for the specific language governing permissions and 19 | ** limitations under the License. 20 | * 21 | **********************************************************************/ 22 | 23 | #include "dialogs/GetRowIDDialog.h" 24 | 25 | GetRowIDDialog::GetRowIDDialog(QWidget* parent) 26 | : QDialog(parent) { 27 | setupUi(this); 28 | buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); 29 | 30 | QRegExp regExp("^\\d\\d*$"); 31 | lineEdit->setValidator(new QRegExpValidator(regExp, this)); 32 | 33 | connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept())); 34 | connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); 35 | } 36 | 37 | void GetRowIDDialog::on_lineEdit_textChanged() { 38 | buttonBox->button(QDialogButtonBox::Ok)->setEnabled( 39 | lineEdit->hasAcceptableInput()); 40 | } 41 | 42 | -------------------------------------------------------------------------------- /dialogs/GetRowIDDialog.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * File: GetRowIDDialog.h 3 | * Description: Get Row ID Dialog 4 | * Author: Zdenko Podobny 5 | * Created: 2011-04-14 6 | * 7 | * (C) Copyright 2011-2024, Zdenko Podobny 8 | ** 9 | ** Licensed under the Apache License, Version 2.0 (the "License"); 10 | ** you may not use this file except in compliance with the License. 11 | ** You may obtain a copy of the License at 12 | ** 13 | ** http://www.apache.org/licenses/LICENSE-2.0 14 | ** 15 | ** Unless required by applicable law or agreed to in writing, software 16 | ** distributed under the License is distributed on an "AS IS" BASIS, 17 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | ** See the License for the specific language governing permissions and 19 | ** limitations under the License. 20 | * 21 | **********************************************************************/ 22 | 23 | #ifndef DIALOGS_GETROWIDDIALOG_H_ 24 | #define DIALOGS_GETROWIDDIALOG_H_ 25 | 26 | #include 27 | #include 28 | #include 29 | 30 | #include "ui_GetRowIDDialog.h" 31 | 32 | class GetRowIDDialog : public QDialog, public Ui::GetRowIDDialog { 33 | Q_OBJECT 34 | 35 | public: 36 | explicit GetRowIDDialog(QWidget* parent = 0); 37 | 38 | private slots: 39 | void on_lineEdit_textChanged(); 40 | }; 41 | 42 | 43 | #endif // DIALOGS_GETROWIDDIALOG_H_ 44 | -------------------------------------------------------------------------------- /dialogs/GetRowIDDialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | GetRowIDDialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 174 10 | 69 11 | 12 | 13 | 14 | Enter row id… 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | Row ID: 23 | 24 | 25 | lineEdit 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | Qt::Horizontal 38 | 39 | 40 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok 41 | 42 | 43 | 44 | 45 | 46 | 47 | lineEdit 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /dialogs/SettingsDialog.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * File: SettingsDialog.h 3 | * Description: Settings Dialog 4 | * Author: Zdenko Podobny 5 | * Created: 2011-02-11 6 | * 7 | * (C) Copyright 2010, Marcel Kolodziejczyk 8 | * (C) Copyright 2011-2024, Zdenko Podobny 9 | ** 10 | ** Licensed under the Apache License, Version 2.0 (the "License"); 11 | ** you may not use this file except in compliance with the License. 12 | ** You may obtain a copy of the License at 13 | ** 14 | ** http://www.apache.org/licenses/LICENSE-2.0 15 | ** 16 | ** Unless required by applicable law or agreed to in writing, software 17 | ** distributed under the License is distributed on an "AS IS" BASIS, 18 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19 | ** See the License for the specific language governing permissions and 20 | ** limitations under the License. 21 | * 22 | **********************************************************************/ 23 | 24 | #ifndef SRC_INCLUDE_SETTINGSDIALOG_H_ 25 | #define SRC_INCLUDE_SETTINGSDIALOG_H_ 26 | 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | 34 | #include "ui_SettingsDialog.h" 35 | #include "Settings.h" 36 | 37 | class SettingsDialog : public QDialog, public Ui::SettingsDialog { 38 | Q_OBJECT 39 | 40 | public: 41 | explicit SettingsDialog(QWidget* pard = 0, int tabIndex = 0); 42 | ~SettingsDialog(); 43 | QString getLangName(QString lang); 44 | 45 | signals: 46 | void settingsChanged(); 47 | 48 | private slots: 49 | void on_fontButton_clicked(); 50 | void on_fontImageButton_clicked(); 51 | void on_imageFontColorButton_clicked(); 52 | void on_colorRectButton_clicked(); 53 | void on_rectFillColorButton_clicked(); 54 | void on_colorBoxButton_clicked(); 55 | void on_backgroundColorButton_clicked(); 56 | void on_pbSelectDP_clicked(); 57 | void on_pbCheck_clicked(); 58 | void saveSettings(); 59 | 60 | private: 61 | void initSettings(); 62 | void initLangs(); 63 | void initStyles(); 64 | void chooseColor(QPushButton* button, QColor* color); 65 | void updateColorButton(QPushButton* button, const QColor& color); 66 | 67 | QFont tableFont; 68 | QFont imageFont; 69 | QColor imageFontColor; 70 | QColor rectColor; 71 | QColor rectFillColor; 72 | QColor boxColor; 73 | QColor backgroundColor; 74 | }; 75 | #endif // SRC_INCLUDE_SETTINGSDIALOG_H_ 76 | -------------------------------------------------------------------------------- /dialogs/ShortCutDialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | ShortCutDialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 340 10 | 350 11 | 12 | 13 | 14 | Shortcuts list 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | QFrame::Plain 23 | 24 | 25 | true 26 | 27 | 28 | 29 | 30 | 31 | 32 | Ok 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | okButton 44 | clicked() 45 | ShortCutDialog 46 | close() 47 | 48 | 49 | 120 50 | 297 51 | 52 | 53 | 119 54 | 159 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /dialogs/ShortCutsDialog.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * File: ShortCutsDialog.cpp 3 | * Description: Dialog for shorcuts 4 | * Author: Zdenko Podobny 5 | * Created: 2011-03-21 6 | * 7 | * (C) Copyright 2011-2024, Zdenko Podobny 8 | ** 9 | ** Licensed under the Apache License, Version 2.0 (the "License"); 10 | ** you may not use this file except in compliance with the License. 11 | ** You may obtain a copy of the License at 12 | ** 13 | ** http://www.apache.org/licenses/LICENSE-2.0 14 | ** 15 | ** Unless required by applicable law or agreed to in writing, software 16 | ** distributed under the License is distributed on an "AS IS" BASIS, 17 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | ** See the License for the specific language governing permissions and 19 | ** limitations under the License. 20 | * 21 | **********************************************************************/ 22 | 23 | #include "dialogs/ShortCutsDialog.h" 24 | 25 | ShortCutsDialog::ShortCutsDialog(QWidget* parent) 26 | : QDialog(parent) { 27 | setupUi(this); 28 | textEdit -> setHtml(tr( 29 | "

Editor shortcuts

" 30 | "

F1 — this help
" 31 | "Ins — insert symbol below current symbol
" 32 | "Del — delete current symbol
" 33 | "CTRL + 1 — join current symbol with next symbol" 34 | "
" 35 | "CTRL + 2 — split current symbol to 2 symbols" 36 | "
" 37 | "
" 38 | "CTRL + B — set symbol as bold
" 39 | "CTRL + I — set symbol as italic
" 40 | "CTRL + U — set symbol as underlined
" 41 | "
" 42 | "CTRL + Z — undo last change
" 43 | "CTRL + Y — redo last undo
" 44 | "
" 45 | "CTRL + +/- — zoom image
" 46 | "CTRL + * — zoom image to original scale
" 47 | "CTRL + . — zoom image to fit whole image in " 48 | "current view
" 49 | "CTRL + > — zoom image to fit height of " 50 | "image in current view" 51 | "
" 52 | "CTRL + < — zoom image to fit width of image" 53 | " in current view
" 54 | "CTRL + / — zoom current box to fit in current" 55 | " view
" 56 | "
" 57 | "CTRL + D — direct type mode
" 58 | "
" 59 | "CTRL + Arrows up/down — move symbol up/down in" 60 | " table
" 61 | "CTRL + G — go to row id…
" 62 | "CTRL + M — Move row to row id…
" 63 | "CTRL + T — setting dialog
" 64 | "
" 65 | "CTRL + F — find symbol
" 66 | "
" 67 | "CTRL + L — show/hide balloon symbols on " 68 | "image
" 69 | "CTRL + H — show/hide all boxes on image
" 70 | "CTRL + R — draw/hide rectangle on image
" 71 | "Arrows in table area — move " 72 | "focus/selection
" 73 | "Arrows in image area — scroll image
" 74 | "

" 75 | "
" 76 | "

Mouse tips for image area

" 77 | "Wheel — scroll image
" 78 | "CTRL + Wheel — zoom in/out
" 79 | "CTRL + Click (left button) on symbol — " 80 | "select/highlight symbol
" 81 | "CTRL + Click (left button) and CTRL +" 82 | " drag — add symbols to selection
" 83 | "Click (Left button) and Drag symbol border — " 84 | "change symbol box. It works with single symbol " 85 | "selection only.
" 86 | "

")); 87 | } 88 | -------------------------------------------------------------------------------- /dialogs/ShortCutsDialog.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * File: ShortCutsDialog.h 3 | * Description: Dialog for shorcuts 4 | * Author: Zdenko Podobny 5 | * Created: 2011-03-21 6 | * 7 | * (C) Copyright 2011-2024, Zdenko Podobny 8 | ** 9 | ** Licensed under the Apache License, Version 2.0 (the "License"); 10 | ** you may not use this file except in compliance with the License. 11 | ** You may obtain a copy of the License at 12 | ** 13 | ** http://www.apache.org/licenses/LICENSE-2.0 14 | ** 15 | ** Unless required by applicable law or agreed to in writing, software 16 | ** distributed under the License is distributed on an "AS IS" BASIS, 17 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | ** See the License for the specific language governing permissions and 19 | ** limitations under the License. 20 | * 21 | **********************************************************************/ 22 | 23 | #ifndef DIALOGS_SHORTCUTSDIALOG_H_ 24 | #define DIALOGS_SHORTCUTSDIALOG_H_ 25 | 26 | #include 27 | #include "ui_ShortCutDialog.h" 28 | 29 | class ShortCutsDialog : public QDialog, public Ui::ShortCutDialog { 30 | Q_OBJECT 31 | 32 | public: 33 | explicit ShortCutsDialog(QWidget* = 0); 34 | }; 35 | 36 | #endif // DIALOGS_SHORTCUTSDIALOG_H_ 37 | -------------------------------------------------------------------------------- /qt-box-editor.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = app 2 | QTB_VERSION = "1.13.0" 3 | TARGET = qt-box-editor-$${QTB_VERSION} 4 | DEFINES += APP_VERSION=\\\"$${QTB_VERSION}\\\" 5 | DESTDIR = . 6 | 7 | DEPENDPATH += ./ \ 8 | resource/images \ 9 | resource 10 | 11 | INCLUDEPATH += ./ \ 12 | dialogs \ 13 | src/include \ 14 | src 15 | 16 | QT += network svg 17 | 18 | INSTALLS += target 19 | target.path = $$PREFIX/bin 20 | 21 | CONFIG(debug, debug|release) { 22 | CONFIG += debug warn_on 23 | DESTDIR = debug 24 | QT += testlib 25 | OBJECTS_DIR += build/debug 26 | MOC_DIR += build/debug 27 | UI_DIR += build/debug 28 | RCC_DIR += build/debug 29 | } else { 30 | CONFIG += release warn_off 31 | DESTDIR = release 32 | OBJECTS_DIR += build/release 33 | MOC_DIR += build/release 34 | UI_DIR += build/release 35 | RCC_DIR += build/release 36 | } 37 | 38 | FORMS += \ 39 | dialogs/ShortCutDialog.ui \ 40 | dialogs/GetRowIDDialog.ui \ 41 | dialogs/SettingsDialog.ui \ 42 | dialogs/FindDialog.ui \ 43 | dialogs/DrawRectangle.ui 44 | 45 | SOURCES += src/main.cpp \ 46 | src/MainWindow.cpp \ 47 | src/ChildWidget.cpp \ 48 | src/DelegateEditors.cpp \ 49 | src/TessTools.cpp \ 50 | dialogs/SettingsDialog.cpp \ 51 | dialogs/GetRowIDDialog.cpp \ 52 | dialogs/ShortCutsDialog.cpp \ 53 | dialogs/FindDialog.cpp \ 54 | dialogs/DrawRectangle.cpp 55 | 56 | HEADERS += src/MainWindow.h \ 57 | src/ChildWidget.h \ 58 | src/Settings.h \ 59 | src/TessTools.h \ 60 | src/DelegateEditors.h \ 61 | dialogs/SettingsDialog.h \ 62 | dialogs/GetRowIDDialog.h \ 63 | dialogs/ShortCutsDialog.h \ 64 | dialogs/FindDialog.h \ 65 | dialogs/DrawRectangle.h 66 | 67 | RESOURCES = resources/application.qrc \ 68 | resources/QBE-GNOME.qrc \ 69 | resources/QBE-Faenza.qrc \ 70 | resources/QBE-Oxygen.qrc \ 71 | resources/QBE-Tango.qrc 72 | 73 | win32 { 74 | DESTDIR = ./win32 75 | CONFIG += embed_manifest_exe 76 | TMAKE_CXXFLAGS += -DQT_NODLL 77 | TMAKE_CXXFLAGS += -fno-exceptions -fno-rtti -static 78 | #QTPLUGIN += qsvg # image formats 79 | DEFINES += WINDOWS 80 | #QMAKE_LFLAGS.gcc += -static-libgcc # -static 81 | RC_FILE = resources/win.rc 82 | INCLUDEPATH += $$PWD/win32-external/include/ 83 | LIBS += -lws2_32 -L$$PWD/win32-external/lib 84 | 85 | CONFIG(debug, debug|release) { 86 | TARGET = $$join(TARGET,,,d) 87 | LIBS += -lltesseract54d -lleptonica-1.84.1d 88 | } else { 89 | LIBS += -ltesseract54 -lleptonica-1.84.1 90 | } 91 | } 92 | 93 | unix:!macx { 94 | # qt-5 or later 95 | greaterThan(QT_MAJOR_VERSION, 4) { 96 | message(Qt $$[QT_VERSION] was detected.) 97 | QT += widgets 98 | QMAKE_CXXFLAGS += -std=c++17 99 | CONFIG += c++17 100 | } 101 | INCLUDEPATH += /opt/include/ 102 | LIBS += -L/opt/lib -ltesseract -lleptonica 103 | } 104 | 105 | # Libraries may be installed this way on macOS: 106 | # brew install --with-training-tools --with-all-languages tesseract 107 | # 108 | # TESSDATA_PREFIX in the Settings of the App is: /usr/local/share/ 109 | macx { 110 | message(Starting OSX build...) 111 | QT += widgets 112 | INCLUDEPATH += /usr/local/include/ 113 | LIBS += -L/usr/local/lib -ltesseract -lleptonica 114 | } 115 | -------------------------------------------------------------------------------- /resources/QBE-Faenza.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | icons/QBE-Faenza/index.theme 4 | 5 | icons/QBE-Faenza/document-open.png 6 | icons/QBE-Faenza/document-save.png 7 | icons/QBE-Faenza/document-save-as.png 8 | icons/QBE-Faenza/document-import.png 9 | icons/QBE-Faenza/exit.png 10 | icons/QBE-Faenza/format-text-bold.png 11 | icons/QBE-Faenza/format-text-italic.png 12 | icons/QBE-Faenza/format-text-underline.png 13 | icons/QBE-Faenza/zoom-original.png 14 | icons/QBE-Faenza/zoom-out.png 15 | icons/QBE-Faenza/zoom-in.png 16 | icons/QBE-Faenza/zoom-fit.png 17 | icons/QBE-Faenza/zoom-selection.png 18 | icons/QBE-Faenza/zoom-width.png 19 | icons/QBE-Faenza/zoom-height.png 20 | icons/QBE-Faenza/go-next.png 21 | icons/QBE-Faenza/go-previous.png 22 | icons/QBE-Faenza/go-jump.png 23 | icons/QBE-Faenza/key_bindings.svg 24 | icons/QBE-Faenza/help-about.svg 25 | icons/QBE-Faenza/edit-undo.png 26 | icons/QBE-Faenza/edit-redo.png 27 | icons/QBE-Faenza/software-properties.svg 28 | icons/QBE-Faenza/edit-find.svg 29 | icons/QBE-Faenza/applications-fonts.svg 30 | 31 | icons/QBE-Misc/joinRow.svg 32 | icons/QBE-Misc/moveTo.svg 33 | icons/QBE-Misc/splitRow.svg 34 | 35 | icons/qbe/drawRect.png 36 | icons/qbe/deleteRow.svg 37 | icons/qbe/up.svg 38 | icons/qbe/insertRow.svg 39 | icons/qbe/rectangle.svg 40 | icons/qbe/showSymbol.png 41 | icons/qbe/down.svg 42 | 43 | 44 | -------------------------------------------------------------------------------- /resources/QBE-GNOME.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | icons/QBE-GNOME/index.theme 4 | 5 | icons/QBE-GNOME/document-open.png 6 | icons/QBE-GNOME/document-save.png 7 | icons/QBE-GNOME/document-save-as.png 8 | icons/QBE-GNOME/application-exit.png 9 | icons/QBE-GNOME/format-text-bold.png 10 | icons/QBE-GNOME/format-text-italic.png 11 | icons/QBE-GNOME/format-text-underline.png 12 | icons/QBE-GNOME/zoom-original.png 13 | icons/QBE-GNOME/zoom-out.png 14 | icons/QBE-GNOME/zoom-in.png 15 | icons/QBE-GNOME/zoom-fit-best.png 16 | icons/QBE-GNOME/go-next.png 17 | icons/QBE-GNOME/go-previous.png 18 | icons/QBE-GNOME/go-up.png 19 | icons/QBE-GNOME/go-down.png 20 | icons/QBE-GNOME/go-jump.png 21 | icons/QBE-GNOME/list-add.png 22 | icons/QBE-GNOME/list-remove.png 23 | icons/QBE-GNOME/help-about.png 24 | icons/QBE-GNOME/edit-find.png 25 | icons/QBE-GNOME/edit-undo.png 26 | icons/QBE-GNOME/edit-redo.png 27 | icons/QBE-GNOME/preferences-desktop-font.png 28 | icons/QBE-GNOME/preferences-desktop-keyboard-shortcuts.png 29 | icons/QBE-GNOME/preferences-system.png 30 | 31 | icons/QBE-Faenza/zoom-selection.png 32 | icons/QBE-Faenza/zoom-width.png 33 | icons/QBE-Faenza/zoom-height.png 34 | 35 | icons/QBE-Misc/Document-import.svg 36 | icons/QBE-Misc/joinRow.svg 37 | icons/QBE-Misc/moveTo.svg 38 | icons/QBE-Misc/splitRow.svg 39 | 40 | icons/qbe/drawRect.png 41 | icons/qbe/rectangle.svg 42 | icons/qbe/showSymbol.png 43 | 44 | 45 | -------------------------------------------------------------------------------- /resources/QBE-Oxygen.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | icons/QBE-Oxygen/index.theme 4 | 5 | icons/QBE-Oxygen/document-open.png 6 | icons/QBE-Oxygen/document-save.png 7 | icons/QBE-Oxygen/document-save-as.png 8 | icons/QBE-Oxygen/document-import.png 9 | icons/QBE-Oxygen/application-exit.png 10 | icons/QBE-Oxygen/format-text-bold.png 11 | icons/QBE-Oxygen/format-text-italic.png 12 | icons/QBE-Oxygen/format-text-underline.png 13 | icons/QBE-Oxygen/zoom-original.png 14 | icons/QBE-Oxygen/zoom-out.png 15 | icons/QBE-Oxygen/zoom-in.png 16 | icons/QBE-Oxygen/zoom-fit-best.png 17 | icons/QBE-Oxygen/zoom-select.png 18 | icons/QBE-Oxygen/zoom-fit-width.png 19 | icons/QBE-Oxygen/zoom-fit-height.png 20 | icons/QBE-Oxygen/go-next.png 21 | icons/QBE-Oxygen/go-previous.png 22 | icons/QBE-Oxygen/go-up.png 23 | icons/QBE-Oxygen/go-down.png 24 | icons/QBE-Oxygen/go-jump.png 25 | icons/QBE-Oxygen/help-about.png 26 | icons/QBE-Oxygen/edit-table-insert-row-under.png 27 | icons/QBE-Oxygen/edit-table-delete-row.png 28 | icons/QBE-Oxygen/edit-find.png 29 | icons/QBE-Oxygen/edit-undo.png 30 | icons/QBE-Oxygen/edit-redo.png 31 | icons/QBE-Oxygen/application-x-font-ttf.png 32 | icons/QBE-Oxygen/preferences-system.png 33 | icons/QBE-Oxygen/preferences-desktop-keyboard.png 34 | icons/QBE-Oxygen/draw-rectangle.png 35 | 36 | icons/QBE-Misc/joinRow.svg 37 | icons/QBE-Misc/moveTo.svg 38 | icons/QBE-Misc/splitRow.svg 39 | 40 | icons/qbe/rectangle.svg 41 | icons/qbe/showSymbol.png 42 | 43 | 44 | -------------------------------------------------------------------------------- /resources/QBE-Tango.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | icons/QBE-Tango/index.theme 4 | 5 | icons/QBE-Tango/document-open.svg 6 | icons/QBE-Tango/document-save.svg 7 | icons/QBE-Tango/document-save-as.svg 8 | icons/QBE-Tango/system-log-out.svg 9 | icons/QBE-Tango/format-text-bold.svg 10 | icons/QBE-Tango/format-text-italic.svg 11 | icons/QBE-Tango/format-text-underline.svg 12 | icons/QBE-Tango/View-zoom-0.svg 13 | icons/QBE-Tango/View-zoom-out.svg 14 | icons/QBE-Tango/View-zoom-in.svg 15 | icons/QBE-Tango/View-zoom-fit.svg 16 | icons/QBE-Tango/View-zoom-target.svg 17 | icons/QBE-Tango/go-next.svg 18 | icons/QBE-Tango/go-previous.svg 19 | icons/QBE-Tango/go-up.svg 20 | icons/QBE-Tango/go-down.svg 21 | icons/QBE-Tango/go-jump.svg 22 | icons/QBE-Tango/list-add.svg 23 | icons/QBE-Tango/list-remove.svg 24 | icons/QBE-Tango/help-browser.svg 25 | icons/QBE-Tango/edit-find.svg 26 | icons/QBE-Tango/edit-undo.svg 27 | icons/QBE-Tango/edit-redo.svg 28 | icons/QBE-Tango/font-x-generic.svg 29 | 30 | icons/QBE-Faenza/zoom-width.png 31 | icons/QBE-Faenza/zoom-height.png 32 | icons/QBE-Faenza/key_bindings.svg 33 | icons/QBE-Faenza/software-properties.svg 34 | 35 | icons/QBE-Misc/Document-import.svg 36 | icons/QBE-Misc/joinRow.svg 37 | icons/QBE-Misc/moveTo.svg 38 | icons/QBE-Misc/splitRow.svg 39 | 40 | icons/qbe/drawRect.png 41 | icons/qbe/rectangle.svg 42 | icons/qbe/showSymbol.png 43 | 44 | 45 | -------------------------------------------------------------------------------- /resources/application.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | icons/qbe.png 4 | icons/qbe.svg 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/icons/QBE-Faenza/README: -------------------------------------------------------------------------------- 1 | Here are icons from Feanza icons pack[1]. This work is released under the GNU/GPL license. zoom-selection.png, zoom-height.png, zoom-width.png are derived from zoom-fit.png import.svg is modified fileopen icon. [1] http://tiheum.deviantart.com/art/Faenza-Icons-173323228 -------------------------------------------------------------------------------- /resources/icons/QBE-Faenza/document-import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Faenza/document-import.png -------------------------------------------------------------------------------- /resources/icons/QBE-Faenza/document-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Faenza/document-open.png -------------------------------------------------------------------------------- /resources/icons/QBE-Faenza/document-save-as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Faenza/document-save-as.png -------------------------------------------------------------------------------- /resources/icons/QBE-Faenza/document-save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Faenza/document-save.png -------------------------------------------------------------------------------- /resources/icons/QBE-Faenza/edit-redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Faenza/edit-redo.png -------------------------------------------------------------------------------- /resources/icons/QBE-Faenza/edit-undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Faenza/edit-undo.png -------------------------------------------------------------------------------- /resources/icons/QBE-Faenza/exit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Faenza/exit.png -------------------------------------------------------------------------------- /resources/icons/QBE-Faenza/format-text-bold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Faenza/format-text-bold.png -------------------------------------------------------------------------------- /resources/icons/QBE-Faenza/format-text-italic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Faenza/format-text-italic.png -------------------------------------------------------------------------------- /resources/icons/QBE-Faenza/format-text-underline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Faenza/format-text-underline.png -------------------------------------------------------------------------------- /resources/icons/QBE-Faenza/go-jump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Faenza/go-jump.png -------------------------------------------------------------------------------- /resources/icons/QBE-Faenza/go-next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Faenza/go-next.png -------------------------------------------------------------------------------- /resources/icons/QBE-Faenza/go-previous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Faenza/go-previous.png -------------------------------------------------------------------------------- /resources/icons/QBE-Faenza/index.theme: -------------------------------------------------------------------------------- 1 | [Icon Theme] 2 | Name=Faenza 3 | Comment=Faenza Theme 4 | Inherits=default 5 | Directories=24x24 6 | 7 | [24x24] 8 | Size=24 -------------------------------------------------------------------------------- /resources/icons/QBE-Faenza/zoom-fit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Faenza/zoom-fit.png -------------------------------------------------------------------------------- /resources/icons/QBE-Faenza/zoom-height.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Faenza/zoom-height.png -------------------------------------------------------------------------------- /resources/icons/QBE-Faenza/zoom-in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Faenza/zoom-in.png -------------------------------------------------------------------------------- /resources/icons/QBE-Faenza/zoom-original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Faenza/zoom-original.png -------------------------------------------------------------------------------- /resources/icons/QBE-Faenza/zoom-out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Faenza/zoom-out.png -------------------------------------------------------------------------------- /resources/icons/QBE-Faenza/zoom-selection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Faenza/zoom-selection.png -------------------------------------------------------------------------------- /resources/icons/QBE-Faenza/zoom-width.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Faenza/zoom-width.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/README: -------------------------------------------------------------------------------- 1 | These icons are from GNOME: http://ftp.gnome.org/pub/gnome/sources/gnome-icon-theme/3.4/gnome-icon-theme-3.4.0.tar.xz GNOME icon theme is distributed under the terms of either GNU LGPL v.3 or Creative Commons BY-SA 3.0 license. -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/application-exit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/application-exit.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/document-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/document-open.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/document-save-as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/document-save-as.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/document-save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/document-save.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/edit-find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/edit-find.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/edit-redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/edit-redo.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/edit-undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/edit-undo.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/format-text-bold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/format-text-bold.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/format-text-italic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/format-text-italic.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/format-text-underline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/format-text-underline.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/go-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/go-down.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/go-jump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/go-jump.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/go-next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/go-next.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/go-previous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/go-previous.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/go-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/go-up.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/help-about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/help-about.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/index.theme: -------------------------------------------------------------------------------- 1 | [Icon Theme] 2 | Name=GNOME 3 | Comment=Default GNOME Theme 4 | Inherits=default 5 | Directories=22x22 24x24 6 | 7 | [22x22] 8 | Size=22 9 | 10 | [24x24] 11 | Size=24 -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/list-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/list-add.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/list-remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/list-remove.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/preferences-desktop-font.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/preferences-desktop-font.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/preferences-desktop-keyboard-shortcuts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/preferences-desktop-keyboard-shortcuts.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/preferences-system.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/preferences-system.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/zoom-fit-best.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/zoom-fit-best.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/zoom-in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/zoom-in.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/zoom-original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/zoom-original.png -------------------------------------------------------------------------------- /resources/icons/QBE-GNOME/zoom-out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-GNOME/zoom-out.png -------------------------------------------------------------------------------- /resources/icons/QBE-Misc/README: -------------------------------------------------------------------------------- 1 | Icons from different sources: joinRow.svg and splitRow.svg are adapted icons of lmproulx icons Convergent[1] and Divergent[2]. gnome-edit-find.svg is from Wikipedia[3]. Document-import.svg is from project free-cad[4] [1] http://www.openclipart.org/detail/convergent-by-lmproulx [2] http://www.openclipart.org/detail/divergent-by-lmproulx [3] http://en.wikipedia.org/wiki/File:Gnome-edit-find.svg [4] http://sourceforge.net/apps/mediawiki/free-cad/nfs/project/f/fr/free-cad/d/d3/Document-import.svg -------------------------------------------------------------------------------- /resources/icons/QBE-Misc/joinRow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | joinRow 20 | 22 | 44 | 46 | 47 | 49 | image/svg+xml 50 | 52 | joinRow 53 | 55 | 2011-04-09 56 | 57 | 58 | lmproulx 59 | 60 | 61 | 62 | 63 | zdenop 64 | 65 | 66 | 67 | 68 | zdenop 69 | 70 | 71 | adapted icon Convergent http://www.openclipart.org/detail/convergent-by-lmproulx 72 | 73 | 75 | 77 | 79 | 81 | 82 | 83 | 84 | 89 | 95 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /resources/icons/QBE-Misc/moveTo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | Down 20 | 22 | 29 | 30 | 49 | 52 | 53 | 55 | 56 | 58 | image/svg+xml 59 | 61 | Down 62 | 64 | 65 | 66 | zdenop 67 | 68 | 69 | 70 | 71 | 72 | 76 | 82 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /resources/icons/QBE-Misc/splitRow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | splitRow 20 | 22 | 25 | 29 | 30 | 31 | 53 | 55 | 56 | 58 | image/svg+xml 59 | 61 | splitRow 62 | 2011-04-09 63 | 64 | 65 | lmproulx 66 | 67 | 68 | 70 | adapted icon Divergent http://www.openclipart.org/detail/divergent-by-lmproulx 71 | 72 | 73 | zdenop 74 | 75 | 76 | 77 | 78 | zdenop 79 | 80 | 81 | 82 | 84 | 86 | 88 | 90 | 91 | 92 | 93 | 98 | 101 | 105 | 111 | 112 | 116 | 122 | 123 | 124 | 125 | -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/application-exit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/application-exit.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/application-x-font-ttf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/application-x-font-ttf.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/document-import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/document-import.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/document-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/document-open.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/document-save-as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/document-save-as.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/document-save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/document-save.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/draw-rectangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/draw-rectangle.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/edit-find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/edit-find.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/edit-redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/edit-redo.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/edit-table-delete-row.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/edit-table-delete-row.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/edit-table-insert-row-under.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/edit-table-insert-row-under.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/edit-undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/edit-undo.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/format-text-bold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/format-text-bold.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/format-text-italic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/format-text-italic.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/format-text-underline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/format-text-underline.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/go-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/go-down.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/go-jump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/go-jump.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/go-next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/go-next.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/go-previous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/go-previous.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/go-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/go-up.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/help-about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/help-about.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/index.theme: -------------------------------------------------------------------------------- 1 | [Icon Theme] 2 | Name=Oxygen 3 | Comment=Oxygen Team 4 | #Inherits=gnome 5 | Directories=22x22, 24x24 6 | 7 | [22x22] 8 | Size=22 9 | 10 | [24x24] 11 | Size=24 -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/list-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/list-add.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/list-remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/list-remove.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/preferences-desktop-keyboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/preferences-desktop-keyboard.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/preferences-system.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/preferences-system.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/zoom-fit-best.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/zoom-fit-best.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/zoom-fit-height.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/zoom-fit-height.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/zoom-fit-width.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/zoom-fit-width.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/zoom-in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/zoom-in.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/zoom-original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/zoom-original.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/zoom-out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/zoom-out.png -------------------------------------------------------------------------------- /resources/icons/QBE-Oxygen/zoom-select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/QBE-Oxygen/zoom-select.png -------------------------------------------------------------------------------- /resources/icons/QBE-Tango/README: -------------------------------------------------------------------------------- 1 | This icons are from Tango Project: http://tango.freedesktop.org. They are released as Public Domain. -------------------------------------------------------------------------------- /resources/icons/QBE-Tango/edit-undo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 23 | 25 | 32 | 35 | 39 | 43 | 44 | 47 | 51 | 55 | 56 | 59 | 63 | 67 | 68 | 71 | 75 | 79 | 80 | 91 | 94 | 98 | 102 | 103 | 113 | 122 | 131 | 142 | 143 | 164 | 166 | 167 | 169 | image/svg+xml 170 | 172 | 173 | 174 | Jakub Steiner 175 | 176 | 177 | http://jimmac.musichall.cz 178 | 180 | Edit Undo 181 | 182 | 183 | edit 184 | undo 185 | revert 186 | 187 | 188 | 189 | 191 | 193 | 195 | 197 | 198 | 199 | 200 | 204 | 214 | 219 | 224 | 229 | 230 | 231 | -------------------------------------------------------------------------------- /resources/icons/QBE-Tango/go-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 23 | 25 | 32 | 34 | 38 | 42 | 43 | 46 | 50 | 54 | 55 | 58 | 62 | 66 | 67 | 78 | 89 | 100 | 101 | 122 | 124 | 125 | 127 | image/svg+xml 128 | 130 | 131 | 132 | Jakub Steiner 133 | 134 | 135 | http://jimmac.musichall.cz 136 | 138 | Go Down 139 | 140 | 141 | go 142 | lower 143 | down 144 | arrow 145 | pointer 146 | > 147 | 148 | 149 | 150 | 151 | Andreas Nilsson 152 | 153 | 154 | 155 | 157 | 159 | 161 | 163 | 164 | 165 | 166 | 170 | 180 | 183 | 188 | 193 | 198 | 199 | 200 | 201 | -------------------------------------------------------------------------------- /resources/icons/QBE-Tango/go-jump.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 23 | 25 | 32 | 35 | 39 | 43 | 44 | 47 | 51 | 55 | 56 | 58 | 62 | 66 | 67 | 70 | 74 | 78 | 79 | 90 | 100 | 110 | 119 | 120 | 141 | 143 | 144 | 146 | image/svg+xml 147 | 149 | 150 | 151 | Jakub Steiner 152 | 153 | 154 | http://jimmac.musichall.cz 155 | 157 | Go Jump 158 | 159 | 160 | go 161 | jump 162 | seek 163 | arrow 164 | pointer 165 | 166 | 167 | 168 | 170 | 172 | 174 | 176 | 177 | 178 | 179 | 183 | 193 | 198 | 203 | 204 | 205 | -------------------------------------------------------------------------------- /resources/icons/QBE-Tango/go-next.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 24 | 26 | 33 | 35 | 39 | 43 | 44 | 47 | 51 | 55 | 56 | 59 | 63 | 67 | 68 | 79 | 90 | 101 | 102 | 123 | 125 | 126 | 128 | image/svg+xml 129 | 131 | 132 | 133 | Jakub Steiner 134 | 135 | 136 | http://jimmac.musichall.cz 137 | 139 | Go Next 140 | 141 | 142 | go 143 | next 144 | right 145 | arrow 146 | pointer 147 | > 148 | 149 | 150 | 151 | 153 | 155 | 157 | 159 | 160 | 161 | 162 | 166 | 176 | 181 | 186 | 191 | 192 | 193 | -------------------------------------------------------------------------------- /resources/icons/QBE-Tango/go-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 23 | 25 | 32 | 34 | 38 | 42 | 43 | 46 | 50 | 54 | 55 | 58 | 62 | 66 | 67 | 78 | 89 | 100 | 101 | 122 | 124 | 125 | 127 | image/svg+xml 128 | 130 | 131 | 132 | Jakub Steiner 133 | 134 | 135 | http://jimmac.musichall.cz 136 | 138 | Go Up 139 | 140 | 141 | go 142 | higher 143 | up 144 | arrow 145 | pointer 146 | > 147 | 148 | 149 | 150 | 151 | Andreas Nilsson 152 | 153 | 154 | 155 | 157 | 159 | 161 | 163 | 164 | 165 | 166 | 170 | 180 | 185 | 190 | 195 | 196 | 197 | -------------------------------------------------------------------------------- /resources/icons/QBE-Tango/index.theme: -------------------------------------------------------------------------------- 1 | [Icon Theme] 2 | Name=Tango 3 | Comment=Tango Theme 4 | Inherits=default 5 | Directories=22x22 24x24 6 | 7 | [22x22] 8 | Size=22 9 | 10 | [24x24] 11 | Size=24 -------------------------------------------------------------------------------- /resources/icons/qbe.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/qbe.ico -------------------------------------------------------------------------------- /resources/icons/qbe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/qbe.png -------------------------------------------------------------------------------- /resources/icons/qbe.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 39 | 41 | 42 | 44 | image/svg+xml 45 | 47 | 48 | 49 | 50 | 51 | 55 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /resources/icons/qbe/README: -------------------------------------------------------------------------------- 1 | Here are icons created for Qt Box Editor and they are released 2 | under Apache License, Version 2.0. -------------------------------------------------------------------------------- /resources/icons/qbe/deleteRow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/qbe/deleteRow.png -------------------------------------------------------------------------------- /resources/icons/qbe/deleteRow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 22 | 26 | 30 | 34 | 35 | 36 | 55 | 57 | 58 | 60 | image/svg+xml 61 | 63 | 64 | 65 | 66 | 67 | 71 | 76 | 81 | 89 | 102 | 108 | 114 | 115 | 130 | 135 | 139 | 140 | 141 | 142 | -------------------------------------------------------------------------------- /resources/icons/qbe/down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | Down 20 | 22 | 41 | 44 | 45 | 47 | 48 | 50 | image/svg+xml 51 | 53 | Down 54 | 56 | 57 | 58 | zdenop 59 | 60 | 61 | 62 | 63 | 64 | 68 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /resources/icons/qbe/drawRect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/qbe/drawRect.png -------------------------------------------------------------------------------- /resources/icons/qbe/insertRow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | InsertRow 20 | 22 | 41 | 43 | 44 | 46 | image/svg+xml 47 | 49 | 51 | InsertRow 52 | 53 | 54 | zdenop 55 | 56 | 57 | 58 | 59 | 60 | 64 | 69 | 74 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /resources/icons/qbe/rectangle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 39 | 41 | 43 | 47 | 51 | 52 | 61 | 70 | 79 | 88 | 98 | 108 | 111 | 115 | 116 | 117 | 119 | 120 | 122 | image/svg+xml 123 | 125 | 126 | 127 | 128 | 129 | 131 | 138 | 145 | 146 | 147 | -------------------------------------------------------------------------------- /resources/icons/qbe/showSymbol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/resources/icons/qbe/showSymbol.png -------------------------------------------------------------------------------- /resources/icons/qbe/up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | up 20 | 22 | 41 | 44 | 45 | 47 | 48 | 50 | image/svg+xml 51 | 53 | up 54 | 56 | 57 | 58 | zdenop 59 | 60 | 61 | 62 | 63 | 64 | 68 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /resources/win.rc: -------------------------------------------------------------------------------- 1 | IDI_ICON1 ICON DISCARDABLE "icons/qbe.ico" 2 | -------------------------------------------------------------------------------- /src/DelegateEditors.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * File: DelegateEditors.cpp 3 | * Description: SpinBoxDelegate that export signals of SpinBox to QTableView 4 | Created based on Nokia Qt\4.7.3\examples\itemviews\ 5 | spinboxdelegate 6 | * Author: Zdenko Podobny 7 | * Created: 2011-07-06 8 | * 9 | * (C) Copyright 2011-2024, Zdenko Podobny 10 | * (C) Copyright 2012, Zohar Gofer 11 | ** 12 | ** Licensed under the Apache License, Version 2.0 (the "License"); 13 | ** you may not use this file except in compliance with the License. 14 | ** You may obtain a copy of the License at 15 | ** 16 | ** http://www.apache.org/licenses/LICENSE-2.0 17 | ** 18 | ** Unless required by applicable law or agreed to in writing, software 19 | ** distributed under the License is distributed on an "AS IS" BASIS, 20 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 21 | ** See the License for the specific language governing permissions and 22 | ** limitations under the License. 23 | * 24 | **********************************************************************/ 25 | 26 | #include "DelegateEditors.h" 27 | #include 28 | #include 29 | #include 30 | 31 | 32 | /******************************** 33 | * SpinBoxDelegate 34 | ********************************/ 35 | SpinBoxDelegate::SpinBoxDelegate(QObject *parent) 36 | : QItemDelegate(parent) { 37 | } 38 | 39 | QWidget *SpinBoxDelegate::createEditor(QWidget *parent, 40 | const QStyleOptionViewItem &/* option */, 41 | const QModelIndex &/* index */) const { 42 | QSpinBox *editor = new QSpinBox(parent); 43 | editor->setRange(0, 1000000); 44 | connect(editor, SIGNAL(valueChanged(int)), SIGNAL(sbd_valueChanged(int))); 45 | connect(editor, SIGNAL(editingFinished()), SIGNAL(sbd_editingFinished())); 46 | return editor; 47 | } 48 | 49 | void SpinBoxDelegate::setEditorData(QWidget *editor, 50 | const QModelIndex &index) const { 51 | int value = index.model()->data(index, Qt::EditRole).toInt(); 52 | 53 | QSpinBox *spinBox = static_cast(editor); 54 | spinBox->setValue(value); 55 | } 56 | void SpinBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, 57 | const QModelIndex &index) const { 58 | QSpinBox *spinBox = static_cast(editor); 59 | spinBox->interpretText(); 60 | int value = spinBox->value(); 61 | model->setData(index, value, Qt::EditRole); 62 | } 63 | 64 | void SpinBoxDelegate::updateEditorGeometry(QWidget *editor, 65 | const QStyleOptionViewItem &option, const QModelIndex &/* index */) const { 66 | editor->setGeometry(option.rect); 67 | } 68 | 69 | /******************************** 70 | * CheckboxDelegate 71 | ********************************/ 72 | CheckboxDelegate::CheckboxDelegate(QObject* parent) 73 | : QItemDelegate(parent) { 74 | } 75 | 76 | QWidget* CheckboxDelegate::createEditor(QWidget* /*parent*/, const QStyleOptionViewItem& /*option*/, 77 | const QModelIndex& /*index*/) const { 78 | // NOTE: This prevents standard bool editor from appearing on double click 79 | return NULL; 80 | } 81 | 82 | void CheckboxDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { 83 | bool value = index.data(Qt::EditRole).toBool(); 84 | #if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) 85 | QSize size = check(option, option.rect, Qt::Checked).size(); 86 | #else 87 | QSize size = doCheck(option, option.rect, Qt::Checked).size(); 88 | #endif 89 | 90 | QRect checkboxRect = QStyle::alignedRect(option.direction, Qt::AlignCenter, size, option.rect); 91 | drawCheck(painter, option, checkboxRect, (value ? Qt::Checked : Qt::Unchecked)); 92 | } 93 | 94 | bool CheckboxDelegate::editorEvent(QEvent* event, QAbstractItemModel* model, const QStyleOptionViewItem& option, 95 | const QModelIndex& index) { 96 | bool value = index.data(Qt::EditRole).toBool(); 97 | 98 | if (event->type() == QEvent::MouseButtonRelease) { 99 | const int textMargin = QApplication::style()->pixelMetric(QStyle::PM_FocusFrameHMargin) + 1; 100 | QRect checkRect = QStyle::alignedRect(option.direction, Qt::AlignCenter, 101 | option.decorationSize, 102 | QRect(option.rect.x() + (2 * textMargin), option.rect.y(), 103 | option.rect.width() - (2 * textMargin), 104 | option.rect.height())); 105 | if (!checkRect.contains(static_cast(event)->pos())) 106 | return false; 107 | } else if (event->type() == QEvent::KeyPress) { 108 | if (static_cast(event)->key() != Qt::Key_Space && static_cast(event)->key() != Qt::Key_Select) 109 | return false; 110 | } else { 111 | return false; 112 | } 113 | 114 | value = !value; 115 | emit toggled(value, index.column()); 116 | 117 | return model->setData(index, value, Qt::EditRole); 118 | } 119 | 120 | LineEditDelegate::LineEditDelegate(QObject* parent) 121 | : QItemDelegate(parent) { 122 | } 123 | 124 | QWidget* LineEditDelegate::createEditor(QWidget *parent) const { 125 | QLineEdit* editor = new QLineEdit(parent); 126 | 127 | connect(editor,SIGNAL(textEdited(QString)),SIGNAL(led_editstarted())); 128 | connect(editor,SIGNAL(editingFinished()),SIGNAL(led_editfinished())); 129 | 130 | return editor; 131 | } 132 | -------------------------------------------------------------------------------- /src/DelegateEditors.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * File: DelegateEditors.h 3 | * Description: SpinBoxDelegate that export signals of SpinBox to QTableView 4 | Created based on Nokia Qt\4.7.3\examples\itemviews\ 5 | spinboxdelegate 6 | * Author: Zdenko Podobny 7 | * Created: 2011-07-06 8 | * 9 | * (C) Copyright 2011-2024, Zdenko Podobny 10 | * (C) Copyright 2012, Zohar Gofer 11 | ** 12 | ** Licensed under the Apache License, Version 2.0 (the "License"); 13 | ** you may not use this file except in compliance with the License. 14 | ** You may obtain a copy of the License at 15 | ** 16 | ** http://www.apache.org/licenses/LICENSE-2.0 17 | ** 18 | ** Unless required by applicable law or agreed to in writing, software 19 | ** distributed under the License is distributed on an "AS IS" BASIS, 20 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 21 | ** See the License for the specific language governing permissions and 22 | ** limitations under the License. 23 | * 24 | **********************************************************************/ 25 | 26 | #ifndef SRC_INCLUDE_DELEGATEEDITORS_H_ 27 | #define SRC_INCLUDE_DELEGATEEDITORS_H_ 28 | 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | 35 | class SpinBoxDelegate : public QItemDelegate { 36 | Q_OBJECT 37 | 38 | public: 39 | explicit SpinBoxDelegate(QObject *parent = 0); 40 | QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, 41 | const QModelIndex &index) const; 42 | 43 | void setEditorData(QWidget *editor, const QModelIndex &index) const; 44 | void setModelData(QWidget *editor, QAbstractItemModel *model, 45 | const QModelIndex &index) const; 46 | 47 | void updateEditorGeometry(QWidget *editor, 48 | const QStyleOptionViewItem &option, const QModelIndex &index) const; 49 | 50 | signals: 51 | void sbd_valueChanged(int sbdValue); 52 | void sbd_editingFinished(); 53 | }; 54 | 55 | class CheckboxDelegate : public QItemDelegate 56 | { 57 | Q_OBJECT 58 | 59 | public: 60 | CheckboxDelegate(QObject* parent = 0); 61 | QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, 62 | const QModelIndex& index) const; 63 | bool editorEvent(QEvent* event, QAbstractItemModel* model, const QStyleOptionViewItem& option, 64 | const QModelIndex& index); 65 | 66 | void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; 67 | 68 | signals: 69 | void toggled(bool checked, int column); 70 | }; 71 | 72 | class LineEditDelegate : public QItemDelegate 73 | { 74 | Q_OBJECT 75 | 76 | public: 77 | LineEditDelegate(QObject* parent = 0); 78 | QWidget* createEditor(QWidget* parent) const; 79 | 80 | signals: 81 | void led_editstarted(); 82 | void led_editfinished(); 83 | }; 84 | 85 | #endif // SRC_INCLUDE_DELEGATEEDITORS_H_ 86 | -------------------------------------------------------------------------------- /src/MainWindow.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * File: MainWindow.h 3 | * Description: MainWindow functions 4 | * Author: Marcel Kolodziejczyk 5 | * Created: 2010-01-04 6 | * 7 | * (C) Copyright 2010, Marcel Kolodziejczyk 8 | * (C) Copyright 2011-2024, Zdenko Podobny 9 | * (C) Copyright 2012, Zohar Gofer 10 | ** 11 | ** Licensed under the Apache License, Version 2.0 (the "License"); 12 | ** you may not use this file except in compliance with the License. 13 | ** You may obtain a copy of the License at 14 | ** 15 | ** http://www.apache.org/licenses/LICENSE-2.0 16 | ** 17 | ** Unless required by applicable law or agreed to in writing, software 18 | ** distributed under the License is distributed on an "AS IS" BASIS, 19 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 20 | ** See the License for the specific language governing permissions and 21 | ** limitations under the License. 22 | * 23 | **********************************************************************/ 24 | 25 | #ifndef SRC_INCLUDE_MAINWINDOW_H_ 26 | #define SRC_INCLUDE_MAINWINDOW_H_ 27 | 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | #include 40 | #include 41 | #include 42 | #include 43 | #include 44 | #include 45 | #include 46 | #include 47 | #include 48 | #include 49 | #include 50 | 51 | 52 | #include "ChildWidget.h" 53 | #include "Settings.h" 54 | #include "SettingsDialog.h" 55 | 56 | class ChildWidget; 57 | class QAction; 58 | class QMenu; 59 | class QTabWidget; 60 | class QSignalMapper; 61 | class ShortCutsDialog; 62 | 63 | class MainWindow : public QMainWindow { 64 | Q_OBJECT 65 | QNetworkAccessManager manager; 66 | 67 | public: 68 | MainWindow(); 69 | 70 | void addChild(const QString& imageFileName); 71 | SettingsDialog* runSettingsDialog; 72 | 73 | public slots: 74 | void checkForUpdate(); 75 | void requestFinished(QNetworkReply* reply); 76 | 77 | protected: 78 | void dragEnterEvent(QDragEnterEvent* event); 79 | void dropEvent(QDropEvent* event); 80 | void closeEvent(QCloseEvent* event); 81 | 82 | private slots: 83 | void open(); 84 | void openRecentFile(); 85 | void save(); 86 | void splitToFeatureBF(); 87 | void saveAs(); 88 | void genBoxFile(); 89 | void getBinImage(); 90 | void reLoad(); 91 | void reLoadImg(); 92 | void importPLSym(); 93 | void importTextSym(); 94 | void exportToFile(int type); 95 | bool closeActiveTab(); 96 | bool closeAllTabs(); 97 | void nextTab(); 98 | void previousTab(); 99 | void bold(bool checked); 100 | void italic(bool checked); 101 | void underline(bool checked); 102 | void directTypingMode(bool checked); 103 | void showFontColumns(bool checked); 104 | void zoomToFit(); 105 | void zoomToHeight(); 106 | void zoomToWidth(); 107 | void zoomOriginal(); 108 | void zoomToSelection(); 109 | void zoomIn(); 110 | void zoomOut(); 111 | void showSymbol(); 112 | void drawBoxes(); 113 | void insertSymbol(); 114 | void splitSymbol(); 115 | void joinSymbol(); 116 | void deleteSymbol(); 117 | void moveUp(); 118 | void moveDown(); 119 | void moveTo(); 120 | void goToRow(); 121 | void find(); 122 | void drawRect(bool checked); 123 | void undo(); 124 | void redo(); 125 | void reReadSetting(); 126 | void slotSettings(); 127 | void slotSettings(int tab); 128 | void shortCutList(); 129 | void about(); 130 | void aboutQt(); 131 | void handleClose(int i); 132 | void updateMenus(); 133 | void updateViewMenu(); 134 | void updateCommandActions(); 135 | void updateTabTitle(); 136 | void updateSaveAction(); 137 | void zoomRatioChanged(qreal); 138 | void statusBarMessage(QString); 139 | 140 | private: 141 | ShortCutsDialog* shortCutsDialog; 142 | ChildWidget* activeChild(); 143 | void createActions(); 144 | void createMenus(); 145 | void createToolBars(); 146 | void createStatusBar(); 147 | void readSettings(bool init); 148 | void writeSettings(); 149 | void checkVersion(QNetworkReply* reply); 150 | void updateRecentFileActions(); 151 | 152 | QTabWidget* tabWidget; 153 | 154 | QSignalMapper* windowMapper; 155 | QSignalMapper* exportMapper; 156 | 157 | QMenu* fileMenu; 158 | QMenu* importMenu; 159 | QMenu* exportMenu; 160 | QMenu* editMenu; 161 | QMenu* viewMenu; 162 | QMenu* tessMenu; 163 | QMenu* helpMenu; 164 | 165 | enum { MaxRecentFiles = 8 }; 166 | QAction* recentFileActs[MaxRecentFiles]; 167 | 168 | QToolBar* fileToolBar; 169 | QToolBar* editToolBar; 170 | QToolBar* viewToolBar; 171 | 172 | QAction* openAct; 173 | QAction* saveAct; 174 | QAction* splitToFeatureBFAct; 175 | QAction* saveAsAct; 176 | QAction* reLoadAct; 177 | QAction* reLoadImgAct; 178 | QAction* importPLSymAct; 179 | QAction* importTextSymAct; 180 | QAction* symbolPerLineAct; 181 | QAction* rowPerLineAct; 182 | QAction* paragraphPerLineAct; 183 | QAction* closeAct; 184 | QAction* closeAllAct; 185 | QAction* fSeparatorAct; 186 | QAction* exitAct; 187 | 188 | QAction* boldAct; 189 | QAction* italicAct; 190 | QAction* underlineAct; 191 | 192 | QAction* settingsAct; 193 | 194 | QAction* zoomOriginalAct; 195 | QAction* zoomToSelectionAct; 196 | QAction* zoomToFitAct; 197 | QAction* zoomToHeightAct; 198 | QAction* zoomToWidthAct; 199 | QAction* zoomInAct; 200 | QAction* zoomOutAct; 201 | QAction* showSymbolAct; 202 | QAction* drawBoxesAct; 203 | QAction* DirectTypingAct; 204 | QAction* showFontColumnsAct; 205 | QAction* nextAct; 206 | QAction* previousAct; 207 | QAction* separatorAct; 208 | 209 | QAction* splitAct; 210 | QAction* insertAct; 211 | QAction* joinAct; 212 | QAction* deleteAct; 213 | QAction* moveUpAct; 214 | QAction* moveToAct; 215 | QAction* moveDownAct; 216 | QAction* goToRowAct; 217 | QAction* findAct; 218 | QAction* drawRectAct; 219 | QAction* undoAct; 220 | QAction* redoAct; 221 | QAction* genBoxAct; 222 | QAction* getBinAct; 223 | QAction* checkForUpdateAct; 224 | QAction* shortCutListAct; 225 | QAction* aboutAct; 226 | QAction* aboutQtAct; 227 | QLabel* _utfCodeLabel; 228 | QLabel* _boxsize; 229 | QLabel* _zoom; 230 | 231 | bool openSettings; 232 | }; 233 | 234 | #endif // SRC_INCLUDE_MAINWINDOW_H_ 235 | -------------------------------------------------------------------------------- /src/Settings.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * File: Settings.h 3 | * Description: Global settings 4 | * Author: Zdenko Podobny 5 | * Created: 2011-01-20 6 | * 7 | * (C) Copyright 2011-2024, Zdenko Podobny 8 | ** 9 | ** Licensed under the Apache License, Version 2.0 (the "License"); 10 | ** you may not use this file except in compliance with the License. 11 | ** You may obtain a copy of the License at 12 | ** 13 | ** http://www.apache.org/licenses/LICENSE-2.0 14 | ** 15 | ** Unless required by applicable law or agreed to in writing, software 16 | ** distributed under the License is distributed on an "AS IS" BASIS, 17 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | ** See the License for the specific language governing permissions and 19 | ** limitations under the License. 20 | * 21 | **********************************************************************/ 22 | 23 | #ifndef SRC_INCLUDE_SETTINGS_H_ 24 | #define SRC_INCLUDE_SETTINGS_H_ 25 | 26 | #define SETTING_ORGANIZATION "qt-box-editor" 27 | #define SETTING_APPLICATION "QT Box Editor" 28 | 29 | #define UPDATE_URL "https://raw.github.com/zdenop/qt-box-editor/master/CURRENT_VERSION" 30 | #define PROJECT_URL "http://github.com/zdenop/qt-box-editor" 31 | #define PROJECT_URL_NAME "github.com/zdenop/qt-box-editor" 32 | #define TABLE_FONT "Arial" 33 | #define TABLE_FONT_SIZE 12 34 | 35 | #endif // SRC_INCLUDE_SETTINGS_H_ 36 | -------------------------------------------------------------------------------- /src/TessTools.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * File: TessTools.h 3 | * Description: Tesseract tools 4 | * Author: Zdenko Podobny 5 | * Created: 2012-03-27 6 | * 7 | * (C) Copyright 2012-2024, Zdenko Podobny 8 | ** 9 | ** Licensed under the Apache License, Version 2.0 (the "License"); 10 | ** you may not use this file except in compliance with the License. 11 | ** You may obtain a copy of the License at 12 | ** 13 | ** http://www.apache.org/licenses/LICENSE-2.0 14 | ** 15 | ** Unless required by applicable law or agreed to in writing, software 16 | ** distributed under the License is distributed on an "AS IS" BASIS, 17 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | ** See the License for the specific language governing permissions and 19 | ** limitations under the License. 20 | * 21 | **********************************************************************/ 22 | 23 | #ifndef SRC_INCLUDE_TESSTOOLS_H_ 24 | #define SRC_INCLUDE_TESSTOOLS_H_ 25 | 26 | #include 27 | #include 28 | #if (LIBLEPT_MAJOR_VERSION > 1) || (LIBLEPT_MINOR_VERSION > 82) 29 | #include 30 | #endif 31 | #include 32 | #include 33 | 34 | class TessTools { 35 | public: 36 | TessTools(); 37 | ~TessTools(); 38 | QString makeBoxes(const QImage &qImage, const int page); 39 | static PIX *qImage2PIX(const QImage &qImage); 40 | static QImage PIX2qImage(PIX *pixImage); 41 | static QImage GetThresholded(const QImage &qImage); 42 | static const char *qString2Char(QString string); 43 | QList getLanguages(QString datapath); 44 | 45 | private: 46 | static QString getDataPath(); 47 | static QString getLang(); 48 | static void setDataPath(); 49 | static void msg(QString messageText); 50 | static const char *kTrainedDataSuffix; 51 | }; 52 | 53 | #endif // SRC_INCLUDE_TESSTOOLS_H_ 54 | -------------------------------------------------------------------------------- /src/main.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * File: main.cpp 3 | * Description: Main function 4 | * Author: Marcel Kolodziejczyk 5 | * Created: 2010-01-04 6 | * 7 | * (C) Copyright 2010, Marcel Kolodziejczyk 8 | * (C) Copyright 2011-2024, Zdenko Podobny 9 | ** 10 | ** Licensed under the Apache License, Version 2.0 (the "License"); 11 | ** you may not use this file except in compliance with the License. 12 | ** You may obtain a copy of the License at 13 | ** 14 | ** http://www.apache.org/licenses/LICENSE-2.0 15 | ** 16 | ** Unless required by applicable law or agreed to in writing, software 17 | ** distributed under the License is distributed on an "AS IS" BASIS, 18 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19 | ** See the License for the specific language governing permissions and 20 | ** limitations under the License. 21 | * 22 | **********************************************************************/ 23 | 24 | #include 25 | #include 26 | #include 27 | #if defined _COMPOSE_STATIC_ 28 | #include 29 | Q_IMPORT_PLUGIN(qsvg) 30 | #endif 31 | 32 | #include "MainWindow.h" 33 | #include "Settings.h" 34 | 35 | int main(int argc, char* argv[]) { 36 | Q_INIT_RESOURCE(application); 37 | 38 | QApplication app(argc, argv); 39 | app.setOrganizationName(SETTING_ORGANIZATION); 40 | app.setApplicationName(SETTING_APPLICATION); 41 | 42 | QSettings settings(QSettings::IniFormat, QSettings::UserScope, 43 | SETTING_ORGANIZATION, SETTING_APPLICATION); 44 | //Set the style saved inside the configuration if any 45 | QString style = settings.value("GUI/Style").toString(); 46 | if (style.isEmpty()) { 47 | app.setStyle(QStyleFactory::create("Plastique")); 48 | } else { 49 | app.setStyle(QStyleFactory::create(style)); 50 | } 51 | 52 | //Set the icon theme saved inside the configuration if any 53 | QString iconTheme = settings.value("GUI/IconTheme").toString(); 54 | if (!iconTheme.isEmpty()) { 55 | QIcon::setThemeName(iconTheme); 56 | } 57 | static const char * GENERIC_ICON_TO_CHECK = "fileopen"; 58 | static const char * FALLBACK_ICON_THEME = "QBE-Faenza"; 59 | if (!QIcon::hasThemeIcon(GENERIC_ICON_TO_CHECK)) { 60 | //If there is no default working icon theme then we should 61 | //use an icon theme that we provide via a .qrc file 62 | //This case happens under Windows and Mac OS X 63 | //This does not happen under GNOME or KDE 64 | QIcon::setThemeName(FALLBACK_ICON_THEME); 65 | } 66 | 67 | #if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) 68 | QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); 69 | #endif 70 | 71 | MainWindow mainWin; 72 | mainWin.show(); 73 | for (int i = 1; i < argc; ++i) { 74 | mainWin.addChild(argv[i]); 75 | } 76 | 77 | return app.exec(); 78 | } 79 | 80 | -------------------------------------------------------------------------------- /tests/8.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/tests/8.tif -------------------------------------------------------------------------------- /tests/DESCRIPTIONS: -------------------------------------------------------------------------------- 1 | = Description of Test Files = 2 | ----------------------------- 3 | 4 | 8.box/tif - Polish example files 5 | 6 | hiero.sethe.1.box/png - Hieroglyph sample (thanks to Oduss...@gmail.com) 7 | (originally posted http://code.google.com/p/tesseract-ocr/issues/detail?sort=-id&id=430) 8 | 9 | kan01.box/png - kannada example box files 10 | (thanks to withblessings at gmail.com) 11 | 12 | pangrams-stam.box/png - RTL (Hebrew ) box file example 13 | (thanks to enrico.segre at weizmann.ac.il) 14 | 15 | slk.example.001.box/bmp - Slovak example files 16 | -------------------------------------------------------------------------------- /tests/eng.ligatures.exp01.box: -------------------------------------------------------------------------------- 1 | t 15 72 29 86 0 2 | h 27 72 36 86 0 3 | i 37 72 41 85 0 4 | z 43 72 49 81 0 5 | f1 55 72 66 86 0 6 | a 68 72 76 81 0 7 | g 77 68 85 81 0 8 | fi 90 72 101 86 0 9 | t 102 72 107 83 0 10 | z 108 72 114 81 0 11 | t 120 72 125 83 0 12 | 0 126 72 134 81 0 13 | fi 140 72 151 86 0 14 | n 152 72 161 81 0 15 | e 162 72 169 81 0 16 | a 176 72 184 81 0 17 | r 185 72 191 83 0 18 | t 191 72 196 83 0 19 | i 202 72 206 85 0 20 | m 207 72 221 81 0 21 | p 221 68 230 81 0 22 | r 232 72 238 81 0 23 | e 239 72 246 81 0 24 | s 248 72 254 81 0 25 | s 256 72 262 81 0 26 | i 264 72 268 85 0 27 | o 270 72 278 81 0 28 | n 279 72 288 81 0 29 | L 15 28 25 41 0 30 | i 27 28 31 41 0 31 | b 32 28 41 42 0 32 | e 43 28 50 37 0 33 | r 52 28 58 37 0 34 | a 59 28 67 37 0 35 | t 67 28 72 39 0 36 | i 73 28 77 41 0 37 | o 79 28 87 37 0 38 | n 88 28 97 37 0 39 | S 103 28 112 41 0 40 | e 114 28 121 37 0 41 | r 123 28 129 37 0 42 | i 130 28 134 41 0 43 | f 135 28 141 42 0 44 | 1 148 28 155 41 0 45 | 5 157 28 165 41 0 46 | T 15 6 27 19 0 47 | e 28 6 35 15 0 48 | s 37 6 43 15 0 49 | t 44 6 49 17 0 50 | t 54 6 59 17 0 51 | e 60 6 67 15 0 52 | x 68 6 77 15 0 53 | t 77 6 82 17 0 54 | f 87 6 93 20 0 55 | o 94 6 102 15 0 56 | r 104 6 110 15 0 57 | Q 116 3 129 19 0 58 | T 129 6 141 19 0 59 | B 147 6 158 19 0 60 | o 160 6 168 15 0 61 | x 169 6 178 15 0 62 | E 184 6 194 19 0 63 | d 196 6 205 20 0 64 | i 206 6 210 19 0 65 | t 211 6 216 17 0 66 | o 217 6 225 15 0 67 | r 227 6 232 15 0 68 | -------------------------------------------------------------------------------- /tests/eng.ligatures.exp01.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/tests/eng.ligatures.exp01.tif -------------------------------------------------------------------------------- /tests/eng.ligatures.exp01.txt: -------------------------------------------------------------------------------- 1 | This flag fits to fine art impression 2 | Liberation Serif 15 3 | Test text for QT Box Editor 4 | -------------------------------------------------------------------------------- /tests/hiero.sethe.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/tests/hiero.sethe.1.png -------------------------------------------------------------------------------- /tests/kan01.box: -------------------------------------------------------------------------------- 1 | ಬ್ಲಾ 10 140 47 169 0 2 | ಗ್ 47 151 73 174 0 3 | ಗೆ 82 151 102 175 0 4 | ಳೆ 102 151 127 175 0 5 | ಯ 125 151 159 175 0 6 | ರಿ 159 151 179 175 0 7 | ಗೆ 179 151 199 175 0 8 | ಲ್ಲಾ 199 140 236 169 0 9 | ಹೂ 11 116 52 140 0 10 | ಸ 53 116 75 140 0 11 | ವ 85 116 106 140 0 12 | ರ್ಷ 107 116 141 140 0 13 | ದ 143 116 165 140 0 14 | ಶು 173 116 202 140 0 15 | ಭಾ 202 111 239 134 0 16 | ಶ 239 116 259 140 0 17 | ಯ 259 116 293 140 0 18 | ಗ 293 116 313 140 0 19 | ಳು 313 116 344 140 0 20 | | 346 116 351 120 0 21 | ಬೆ 11 82 33 106 0 22 | ಳೆ 43 82 67 106 0 23 | ಸಾ 74 82 110 100 0 24 | ಲ 119 82 141 100 0 25 | ತೀ 166 82 200 105 0 26 | ರಿ 208 82 228 106 0 27 | ಸ 236 82 258 106 0 28 | ಲಾ 266 82 303 100 0 29 | ರ 312 82 332 106 0 30 | ದ 340 82 362 106 0 31 | ರೈ 388 71 417 105 0 32 | ತ 427 82 449 106 0 33 | ತ 10 47 32 71 0 34 | ನ್ನ 40 34 66 71 0 35 | ಮಾ 92 47 140 71 0 36 | ನ 148 47 170 71 0 37 | ಕ್ಕೆ 178 35 202 70 0 38 | ಅಂ 230 47 267 65 0 39 | ಜಿ 276 47 298 71 0 40 | -------------------------------------------------------------------------------- /tests/kan01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/tests/kan01.png -------------------------------------------------------------------------------- /tests/multipages.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/tests/multipages.tif -------------------------------------------------------------------------------- /tests/pangrams-stam.box: -------------------------------------------------------------------------------- 1 | ה 92 753 102 763 0 2 | $ר 103 753 113 763 0 3 | ב 113 753 123 763 0 4 | ח 124 753 133 764 0 5 | 6 144 753 154 764 0 6 | $7 155 752 164 764 0 7 | . 165 753 169 757 0 8 | 8 170 753 180 764 0 9 | 9 180 753 190 764 0 10 | א 196 752 206 763 0 11 | צ 207 753 216 765 0 12 | מ 217 753 227 763 0 13 | 5 233 753 242 764 0 14 | 0 243 753 253 764 0 15 | ע 259 751 268 763 0 16 | ת 269 753 278 762 0 17 | פ 279 749 287 763 0 18 | ל 286 753 297 769 0 19 | ו 298 754 302 762 0 20 | : 308 753 311 763 0 21 | ב 318 753 328 763 0 22 | ז 328 753 332 766 0 23 | כ 333 753 343 763 0 24 | ו 344 752 348 763 0 25 | א 349 752 358 763 0 26 | מ 360 753 370 763 0 27 | ] 376 752 378 763 0 28 | ם 381 753 392 762 0 29 | י 393 757 397 763 0 30 | ב 396 753 407 765 0 31 | [ 410 752 413 763 0 32 | ט 419 753 430 765 0 33 | ש 431 753 443 766 0 34 | ן 449 747 452 766 0 35 | ר 453 753 462 762 0 36 | ק 463 747 473 763 0 37 | ס 474 753 483 762 0 38 | ג 489 753 494 765 0 39 | ד 496 753 505 763 0 40 |  91 715 102 724 0 41 | ם 103 715 106 726 0 42 | י 107 715 117 725 0 43 | מ 116 715 127 731 0 44 | ל 133 718 137 725 0 45 | י 138 715 147 725 0 46 | ב 149 715 157 728 0 47 | צ 163 715 173 724 0 48 | ת 174 715 184 725 0 49 | א 190 709 198 725 0 50 | ף 199 715 208 726 0 51 | ח 209 715 219 725 0 52 | ד 220 715 232 728 0 53 | ש 238 714 241 719 0 54 | , 243 709 246 728 0 55 | ן 247 715 257 728 0 56 | ט 259 709 268 725 0 57 | ק 275 715 284 726 0 58 | 3 284 715 294 726 0 59 | 4 301 714 304 726 0 60 | } 305 715 315 731 0 61 | ל 316 715 320 728 0 62 | ז 320 715 324 725 0 63 | ו 325 715 330 728 0 64 | ג 335 715 345 731 0 65 | ל 347 713 356 728 0 66 | ע 357 714 360 726 0 67 | { 367 709 376 727 0 68 | ץ 377 711 385 725 0 69 | פ 386 715 391 728 0 70 | נ 397 709 406 725 0 71 | ק 408 715 417 725 0 72 | ס 418 715 427 725 0 73 | ר 427 715 437 725 0 74 | ת 438 715 448 727 0 75 | ה 461 715 468 727 0 76 | 1 470 715 479 726 0 77 | 2 486 708 495 725 0 78 | ך 495 715 505 725 0 79 | כ 92 651 102 660 0 80 | ת 103 651 112 660 0 81 | ת 113 650 123 661 0 82 | א 124 651 134 661 0 83 | ב 140 651 150 660 0 84 | ת 151 651 160 660 0 85 | ס 161 651 171 661 0 86 | מ 172 651 182 661 0 87 | ב 188 650 192 655 0 88 | , 194 654 197 660 0 89 | י 198 652 202 660 0 90 | ו 203 651 208 664 0 91 | ג 215 651 224 661 0 92 | ב 225 645 235 661 0 93 | ר 235 645 245 661 0 94 | ק 246 651 256 661 0 95 | מ 262 654 266 661 0 96 | י 267 652 271 660 0 97 | ו 272 651 277 664 0 98 | ג 282 651 287 662 0 99 | ו 287 651 296 668 0 100 | ל 303 651 312 660 0 101 | ת 313 651 322 662 0 102 | ח 323 645 333 661 0 103 | ק 332 651 343 667 0 104 | ל 349 650 358 661 0 105 | א 360 651 363 660 0 106 | ו 364 651 374 661 0 107 | ב 374 651 384 667 0 108 | ל 390 649 394 655 0 109 | , 395 651 405 660 0 110 | ם 406 654 410 661 0 111 | י 411 651 420 661 0 112 | הל 420 651 430 667 0 113 | א 431 650 441 661 0 114 | ה 447 651 457 661 0 115 | ס 459 651 468 660 0 116 | נ 469 651 473 664 0 117 | ה 474 651 484 661 0 118 | ו 490 651 494 660 0 119 | א 495 651 505 661 0 120 | ם 119 623 129 632 0 121 | י 130 626 134 633 0 122 | א 135 622 144 633 0 123 | ר 146 623 154 633 0 124 | ו 155 623 159 633 0 125 | מ 160 623 170 633 0 126 | ב 171 623 181 633 0 127 | ו 182 623 186 632 0 128 | , 192 622 195 627 0 129 | ה 197 623 207 633 0 130 | י 208 623 212 633 0 131 | ו 212 623 216 633 0 132 | ט 217 623 227 636 0 133 | נ 228 623 233 636 0 134 | ע 239 621 248 635 0 135 | ו 249 623 253 632 0 136 | ר 254 623 262 633 0 137 | ז 263 623 266 637 0 138 | ב 268 623 278 633 0 139 | ו 279 624 283 632 0 140 | ה 289 623 298 633 0 141 | ק 300 617 309 633 0 142 | ז 310 623 314 633 0 143 | ח 315 623 324 634 0 144 | ד 330 623 339 633 0 145 | י 341 626 344 632 0 146 | ב 345 623 355 633 0 147 | ו 356 623 360 632 0 148 | ה 366 623 376 633 0 149 | מ 377 623 387 633 0 150 | ח 388 623 397 634 0 151 | ל 396 623 407 639 0 152 | מ 408 623 418 633 0 153 | ב 419 623 428 633 0 154 | ו 429 623 433 632 0 155 | ם 439 623 449 632 0 156 | י 451 626 454 632 0 157 | ת 455 623 465 632 0 158 | פ 466 619 474 632 0 159 | ו 475 623 478 632 0 160 | מ 480 623 490 633 0 161 | ב 491 623 500 633 0 162 | ו 501 623 505 632 0 163 | — 124 599 139 600 0 164 | ם 140 596 150 605 0 165 | י 151 596 154 606 0 166 | ר 154 596 164 606 0 167 | צ 165 596 173 609 0 168 | מ 174 596 184 606 0 169 | ב 185 596 195 606 0 170 | , 197 594 199 598 0 171 | ם 204 596 214 605 0 172 | כ 215 596 225 605 0 173 | י 226 600 230 606 0 174 | ה 230 596 240 606 0 175 | ל 240 596 250 612 0 176 | א 251 595 261 606 0 177 | ה 267 596 277 606 0 178 | ו 278 596 282 605 0 179 | ה 283 596 292 606 0 180 | י 294 600 298 606 0 181 | ם 304 596 314 605 0 182 | כ 315 596 325 605 0 183 | ל 324 596 334 612 0 184 | ה 340 596 350 606 0 185 | ש 351 596 364 608 0 186 | ע 364 594 373 608 0 187 | - 373 594 382 608 0 188 | ר 384 595 392 608 0 189 | ש 393 595 404 608 0 190 | א 405 595 416 608 0 191 | ל 421 596 431 612 0 192 | כ 432 596 442 606 0 193 | כ 443 596 453 606 0 194 | : 458 596 462 606 0 195 | ם 464 596 474 606 0 196 | י 475 597 478 606 0 197 | ל 478 596 488 612 0 198 | ד 489 596 498 608 0 199 | ג 500 596 505 609 0 200 | ) 423 566 427 580 0 201 | 4 428 569 435 580 0 202 | : 437 569 439 576 0 203 | 3 441 569 447 580 0 204 | 4 449 569 456 580 0 205 | ( 457 566 461 580 0 206 | ך 462 562 471 578 0 207 | י 472 573 476 579 0 208 | נ 476 569 481 582 0 209 | י 482 573 486 579 0 210 | ע 487 567 496 585 0 211 | ל 496 567 505 585 0 212 | ם 98 531 109 540 0 213 | י 110 531 114 541 0 214 | ו 114 531 118 541 0 215 | ג 119 531 124 544 0 216 | ף 130 526 139 540 0 217 | ס 140 531 149 540 0 218 | א 150 530 159 541 0 219 | ל 159 531 169 547 0 220 | י 176 531 179 543 0 221 | ט 180 531 191 543 0 222 | פ 192 527 200 540 0 223 | ש 201 531 213 544 0 224 | מ 214 531 224 541 0 225 | י 230 531 234 541 0 226 | כ 234 531 244 541 0 227 | , 250 529 254 535 0 228 | ד 255 531 265 542 0 229 | ע 266 529 274 545 0 230 | ל 274 531 284 548 0 231 | י 291 534 294 540 0 232 | מ 295 531 305 541 0 233 | ו 306 532 310 540 0 234 | ק 311 525 320 541 0 235 | ם 326 531 337 541 0 236 | ו 338 531 341 541 0 237 | י 342 534 346 541 0 238 | ל 346 531 356 547 0 239 | ה 362 531 371 541 0 240 | ו 373 531 376 540 0 241 | ה 377 531 387 541 0 242 | י 389 534 392 540 0 243 | ם 398 531 408 540 0 244 | א 409 530 419 541 0 245 | נ 420 531 425 544 0 246 | י 430 531 434 542 0 247 | ל 435 530 446 548 0 248 | ו 451 532 455 540 0 249 | כ 456 531 466 540 0 250 | ח 466 531 475 542 0 251 | ן 481 525 485 541 0 252 | כ 486 531 496 540 0 253 | ל 495 531 505 547 0 254 | ש 106 504 118 514 0 255 | א 119 503 128 514 0 256 | ב 130 504 139 514 0 257 | י 144 504 150 514 0 258 | כ 150 504 159 514 0 259 | , 166 502 170 508 0 260 | י 171 507 175 514 0 261 | פ 176 500 184 513 0 262 | א 185 503 194 514 0 263 | ן 201 498 205 514 0 264 | ו 205 498 209 514 0 265 | ר 210 504 219 513 0 266 | ח 220 504 229 515 0 267 | ל 233 504 244 520 0 268 | כ 245 504 255 513 0 269 | י 261 504 264 514 0 270 | מ 264 504 275 514 0 271 | ע 276 502 285 516 0 272 | ז 286 504 289 517 0 273 | ם 295 504 306 514 0 274 | ה 307 504 316 514 0 275 | י 317 504 321 515 0 276 | ל 321 504 330 520 0 277 | ע 332 502 341 516 0 278 | ך 347 497 356 514 0 279 | פ 357 500 365 514 0 280 | ש 366 504 376 517 0 281 | ל 376 504 387 520 0 282 | , 393 502 397 508 0 283 | ת 398 504 408 513 0 284 | ו 409 505 413 513 0 285 | כ 409 504 423 513 0 286 | ל 422 504 433 520 0 287 | מ 434 504 444 514 0 288 | מ 445 504 455 514 0 289 | י 461 504 465 516 0 290 | צ 465 504 474 516 0 291 | ב 475 504 485 515 0 292 | ק 486 498 496 515 0 293 | ל 495 504 505 520 0 294 | ) 314 474 318 488 0 295 | 3 320 477 326 488 0 296 | : 328 477 330 484 0 297 | 8 332 477 338 488 0 298 | ( 340 474 344 488 0 299 | ץ 345 471 353 490 0 300 | ר 354 477 363 486 0 301 | א 364 477 374 487 0 302 | ה 375 477 385 487 0 303 | ל 389 477 400 493 0 304 | כ 401 477 411 486 0 305 | ל 415 477 425 493 0 306 | כ 426 477 436 486 0 307 | א 437 477 447 487 0 308 | ת 448 477 458 486 0 309 | י 464 481 468 487 0 310 | ת 464 477 478 487 0 311 | א 479 477 489 487 0 312 | נ 490 477 495 487 0 313 | ק 496 471 505 487 0 314 | ﭏ 316 439 327 455 0 315 | ר 328 439 337 448 0 316 | ש 338 439 350 449 0 317 | י 351 443 355 449 0 318 | ◆ 360 441 367 447 0 319 | ײ 373 442 381 449 0 320 | ר 382 439 391 448 0 321 | ש 392 439 404 449 0 322 | ל 408 439 419 455 0 323 | א 420 438 429 449 0 324 | ר 431 440 440 448 0 325 | ב 440 439 450 449 0 326 | ג 451 439 457 451 0 327 | ﭏ 461 439 473 455 0 328 | כ 474 439 484 448 0 329 | " 485 446 488 450 0 330 | מ 490 439 500 449 0 331 | . 210 402 212 404 0 332 | י 216 406 220 412 0 333 | ד 221 402 230 412 0 334 | ו 231 403 235 411 0 335 | , 240 401 244 406 0 336 | ה 246 402 255 412 0 337 | 257 409 258 413 0 338 | ס 259 402 268 411 0 339 | ח 269 402 278 413 0 340 | ם 284 402 295 411 0 341 | " 296 409 299 413 0 342 | ע 301 400 310 412 0 343 | ט 311 402 321 415 0 344 | ב 322 402 332 412 0 345 | ר 338 402 345 412 0 346 | ז 348 402 352 412 0 347 | ג 353 402 358 415 0 348 | ת 364 402 374 411 0 349 | " 375 409 379 413 0 350 | צ 377 402 388 415 0 351 | ק 390 396 399 412 0 352 | : 410 402 414 412 0 353 | ל 419 402 430 418 0 354 | כ 430 402 440 411 0 355 | א 441 402 451 412 0 356 | ן 457 396 461 412 0 357 | פ 462 398 470 411 0 358 | ש 471 402 483 415 0 359 | ) 484 400 488 413 0 360 | * 489 406 495 413 0 361 | ( 497 399 501 413 0 362 | -------------------------------------------------------------------------------- /tests/pangrams-stam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/tests/pangrams-stam.png -------------------------------------------------------------------------------- /tests/slk.example.001.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdenop/qt-box-editor/5c46409dfa7a6d8ad5313e981f3abddf27f40472/tests/slk.example.001.bmp -------------------------------------------------------------------------------- /tests/slk.example.001.box: -------------------------------------------------------------------------------- 1 | „ 71 144 82 152 0 2 | N 83 147 97 163 0 3 | u 97 148 108 160 0 4 | ž 107 147 117 163 0 5 | p 125 144 137 160 0 6 | o 136 147 147 160 0 7 | k 147 147 159 163 0 8 | o 159 147 170 160 0 9 | j 169 144 176 162 0 10 | a 176 147 187 160 0 11 | m 195 147 211 159 0 12 | á 212 147 222 163 0 13 | m 222 147 239 160 0 14 | e 238 147 249 160 0 15 | n 256 147 268 160 0 16 | a 268 147 279 160 0 17 | d 278 147 290 163 0 18 | o 290 148 301 160 0 19 | s 300 147 310 160 0 20 | t 310 148 317 163 0 21 | a 317 148 328 160 0 22 | č 327 148 338 164 0 23 | , 337 145 342 152 0 24 | “ 342 158 352 166 0 25 | u 361 148 372 160 0 26 | s 372 147 381 160 0 27 | m 381 148 397 160 0 28 | i 397 148 403 163 0 29 | a 403 147 414 160 0 30 | l 414 147 421 163 0 31 | s 428 148 438 160 0 32 | a 437 148 448 160 0 33 | d 456 148 468 163 0 34 | o 467 148 478 160 0 35 | m 478 148 494 160 0 36 | á 494 148 505 164 0 37 | c 505 148 516 161 0 38 | i 515 148 522 163 0 39 | p 529 144 541 160 0 40 | á 541 148 552 164 0 41 | n 552 148 564 160 0 42 | . 563 148 569 153 0 43 | „ 576 145 586 153 0 44 | A 586 148 600 164 0 45 | k 600 148 612 164 0 46 | j 52 121 58 140 0 47 | e 59 125 70 137 0 48 | p 78 121 89 137 0 49 | o 89 125 100 138 0 50 | k 100 125 111 141 0 51 | o 111 125 122 137 0 52 | j 122 121 128 140 0 53 | n 138 124 149 137 0 54 | a 149 125 159 137 0 55 | j 160 121 165 140 0 56 | v 167 125 176 137 0 57 | ä 176 125 187 140 0 58 | č 187 125 197 140 0 59 | š 196 125 206 140 0 60 | í 206 125 212 140 0 61 | p 221 121 232 137 0 62 | o 232 125 242 138 0 63 | k 243 125 253 140 0 64 | l 254 125 260 140 0 65 | a 260 125 271 137 0 66 | d 272 125 283 140 0 67 | n 291 125 302 137 0 68 | a 302 125 313 137 0 69 | s 321 125 330 137 0 70 | v 330 125 340 137 0 71 | e 340 125 350 137 0 72 | t 350 125 357 140 0 73 | e 357 125 368 139 0 74 | , 368 122 373 130 0 75 | a 382 125 392 137 0 76 | k 392 125 403 141 0 77 | o 403 125 414 137 0 78 | i 424 125 429 140 0 79 | s 429 124 438 136 0 80 | t 438 125 444 140 0 81 | i 444 125 451 140 0 82 | a 451 125 462 137 0 83 | p 471 121 482 137 0 84 | o 482 125 492 138 0 85 | n 492 126 504 138 0 86 | i 504 126 510 140 0 87 | e 510 125 520 138 0 88 | k 520 126 531 141 0 89 | t 531 125 539 140 0 90 | o 538 125 550 138 0 91 | r 550 125 559 137 0 92 | í 558 126 565 141 0 93 | , 565 123 569 129 0 94 | m 577 126 594 138 0 95 | ô 594 125 605 141 0 96 | j 605 122 611 141 0 97 | d 54 102 64 118 0 98 | o 65 102 75 115 0 99 | m 75 102 92 114 0 100 | b 99 103 111 118 0 101 | y 110 99 121 114 0 102 | m 129 102 146 114 0 103 | a 146 102 156 114 0 104 | l 157 102 163 118 0 105 | b 171 103 182 118 0 106 | y 183 99 193 114 0 107 | ť 193 102 201 118 0 108 | n 209 102 221 114 0 109 | a 221 102 231 114 0 110 | j 231 99 237 117 0 111 | b 237 103 248 118 0 112 | o 248 103 259 115 0 113 | h 258 102 270 118 0 114 | a 270 102 280 114 0 115 | t 281 102 288 117 0 116 | š 287 102 297 118 0 117 | í 297 103 303 118 0 118 | v 312 103 322 115 0 119 | š 322 102 330 118 0 120 | e 331 102 341 115 0 121 | t 341 102 348 117 0 122 | k 348 103 359 118 0 123 | ý 359 99 370 118 0 124 | c 372 103 381 115 0 125 | h 380 102 392 118 0 126 | A 400 103 414 118 0 127 | m 413 103 430 115 0 128 | e 430 103 441 115 0 129 | r 440 103 449 115 0 130 | í 449 103 456 118 0 131 | k 455 103 467 118 0 132 | . 467 103 472 108 0 133 | A 481 103 494 118 0 134 | l 494 103 500 119 0 135 | e 501 103 511 116 0 136 | i 519 103 525 118 0 137 | n 525 103 537 115 0 138 | í 537 103 543 119 0 139 | v 552 103 562 115 0 140 | r 562 103 571 115 0 141 | a 571 103 580 115 0 142 | v 581 103 591 115 0 143 | i 592 103 597 118 0 144 | a 597 103 607 116 0 145 | , 607 100 612 107 0 146 | ž 53 80 63 95 0 147 | e 63 79 73 92 0 148 | d 84 80 95 95 0 149 | o 96 80 106 92 0 150 | m 106 80 123 92 0 151 | y 122 76 134 92 0 152 | n 145 80 156 92 0 153 | e 157 80 167 93 0 154 | r 168 80 175 92 0 155 | a 177 80 186 92 0 156 | s 185 80 195 92 0 157 | t 194 80 201 94 0 158 | ú 201 80 213 95 0 159 | v 224 80 234 92 0 160 | p 246 75 256 92 0 161 | o 257 80 267 92 0 162 | k 268 80 279 96 0 163 | o 279 80 289 92 0 164 | j 289 76 295 96 0 165 | i 296 80 302 96 0 166 | n 315 80 325 92 0 167 | a 326 80 336 92 0 168 | v 337 80 346 92 0 169 | e 347 80 356 92 0 170 | ľ 358 80 365 96 0 171 | k 364 80 376 96 0 172 | o 376 80 387 94 0 173 | , 388 77 391 85 0 174 | a 403 80 414 92 0 175 | l 413 80 420 95 0 176 | e 420 80 431 92 0 177 | v 441 80 453 92 0 178 | p 463 76 475 92 0 179 | o 475 80 486 94 0 180 | h 485 80 497 96 0 181 | y 496 77 508 92 0 182 | b 507 80 519 97 0 183 | e 518 80 529 94 0 184 | . 528 80 533 86 0 185 | S 545 80 557 95 0 186 | t 557 80 564 95 0 187 | o 564 80 575 93 0 188 | j 574 76 581 96 0 189 | a 581 80 592 93 0 190 | c 592 80 602 93 0 191 | a 601 80 613 93 0 192 | v 54 57 64 69 0 193 | o 64 57 75 70 0 194 | d 75 57 85 73 0 195 | a 86 57 96 69 0 196 | t 105 57 113 72 0 197 | i 112 58 119 72 0 198 | e 119 57 129 70 0 199 | ž 129 57 139 73 0 200 | j 149 53 154 72 0 201 | e 155 57 165 70 0 202 | v 175 58 185 70 0 203 | r 185 57 194 69 0 204 | a 193 57 203 70 0 205 | j 203 53 209 72 0 206 | n 220 57 232 70 0 207 | i 232 58 238 72 0 208 | e 237 57 248 70 0 209 | n 258 58 269 70 0 210 | a 269 58 279 70 0 211 | j 280 54 285 72 0 212 | z 287 57 296 70 0 213 | d 296 58 307 73 0 214 | r 308 58 316 70 0 215 | a 316 58 326 70 0 216 | v 326 58 336 70 0 217 | š 336 57 345 73 0 218 | i 345 57 351 72 0 219 | a 351 57 362 70 0 220 | . 362 58 366 62 0 221 | “ 367 68 376 75 0 222 | --------------------------------------------------------------------------------