dabo 2026.1.10__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dabo-2026.1.10/.claude/settings.local.json +10 -0
- dabo-2026.1.10/.gitignore +74 -0
- dabo-2026.1.10/AUTHORS +23 -0
- dabo-2026.1.10/INSTALL.md +40 -0
- dabo-2026.1.10/LICENSE.TXT +1 -0
- dabo-2026.1.10/MANIFEST.in +3 -0
- dabo-2026.1.10/PKG-INFO +91 -0
- dabo-2026.1.10/README.md +75 -0
- dabo-2026.1.10/RELEASENOTES.md +120 -0
- dabo-2026.1.10/dabo/LICENSE.TXT +22 -0
- dabo-2026.1.10/dabo/__init__.py +181 -0
- dabo-2026.1.10/dabo/application.py +1817 -0
- dabo-2026.1.10/dabo/base_object.py +405 -0
- dabo-2026.1.10/dabo/biz/RemoteBizobj.py +218 -0
- dabo-2026.1.10/dabo/biz/__init__.py +30 -0
- dabo-2026.1.10/dabo/biz/bizobj.py +3249 -0
- dabo-2026.1.10/dabo/biz/dAutoBizobj.py +347 -0
- dabo-2026.1.10/dabo/biz/test/test_dBizobj.py +710 -0
- dabo-2026.1.10/dabo/biz/test/test_mm.py +356 -0
- dabo-2026.1.10/dabo/color_tools.py +390 -0
- dabo-2026.1.10/dabo/constants.py +39 -0
- dabo-2026.1.10/dabo/db/__init__.py +145 -0
- dabo-2026.1.10/dabo/db/backend.py +702 -0
- dabo-2026.1.10/dabo/db/connect_info.py +328 -0
- dabo-2026.1.10/dabo/db/connection.py +124 -0
- dabo-2026.1.10/dabo/db/cursor_mixin.py +3160 -0
- dabo-2026.1.10/dabo/db/dataset.py +485 -0
- dabo-2026.1.10/dabo/db/db_firebird.py +358 -0
- dabo-2026.1.10/dabo/db/db_mssql.py +305 -0
- dabo-2026.1.10/dabo/db/db_mysql.py +376 -0
- dabo-2026.1.10/dabo/db/db_oracle.py +190 -0
- dabo-2026.1.10/dabo/db/db_postgresql.py +309 -0
- dabo-2026.1.10/dabo/db/db_sqlite.py +299 -0
- dabo-2026.1.10/dabo/db/db_template.py +157 -0
- dabo-2026.1.10/dabo/db/db_web.py +34 -0
- dabo-2026.1.10/dabo/db/no_esc_quote_str.py +12 -0
- dabo-2026.1.10/dabo/db/table.py +381 -0
- dabo-2026.1.10/dabo/db/test/create_firebird_test.ddl +34 -0
- dabo-2026.1.10/dabo/db/test/test_dConnectInfo.py +35 -0
- dabo-2026.1.10/dabo/db/test/test_dConnection.py +35 -0
- dabo-2026.1.10/dabo/db/test/test_dCursorMixin.py +471 -0
- dabo-2026.1.10/dabo/debugging.py +91 -0
- dabo-2026.1.10/dabo/event_mixin.py +353 -0
- dabo-2026.1.10/dabo/events.py +1366 -0
- dabo-2026.1.10/dabo/exceptions.py +108 -0
- dabo-2026.1.10/dabo/icons/__init__.py +77 -0
- dabo-2026.1.10/dabo/icons/apply.png +0 -0
- dabo-2026.1.10/dabo/icons/blank.png +0 -0
- dabo-2026.1.10/dabo/icons/boolRendererChecked.png +0 -0
- dabo-2026.1.10/dabo/icons/boolRendererUnchecked.png +0 -0
- dabo-2026.1.10/dabo/icons/browse.png +0 -0
- dabo-2026.1.10/dabo/icons/checkMark.png +0 -0
- dabo-2026.1.10/dabo/icons/childview.png +0 -0
- dabo-2026.1.10/dabo/icons/class.png +0 -0
- dabo-2026.1.10/dabo/icons/clear.png +0 -0
- dabo-2026.1.10/dabo/icons/close.png +0 -0
- dabo-2026.1.10/dabo/icons/collapse_tree.png +0 -0
- dabo-2026.1.10/dabo/icons/configure.png +0 -0
- dabo-2026.1.10/dabo/icons/copy.png +0 -0
- dabo-2026.1.10/dabo/icons/cut.png +0 -0
- dabo-2026.1.10/dabo/icons/dCheckBox.png +0 -0
- dabo-2026.1.10/dabo/icons/dCommandButton.png +0 -0
- dabo-2026.1.10/dabo/icons/dEditBox.png +0 -0
- dabo-2026.1.10/dabo/icons/dLabel.png +0 -0
- dabo-2026.1.10/dabo/icons/dRadioGroup.png +0 -0
- dabo-2026.1.10/dabo/icons/dSpinner.png +0 -0
- dabo-2026.1.10/dabo/icons/dTextBox.png +0 -0
- dabo-2026.1.10/dabo/icons/dTimer.png +0 -0
- dabo-2026.1.10/dabo/icons/daboIcon.ico +0 -0
- dabo-2026.1.10/dabo/icons/daboIcon016.png +0 -0
- dabo-2026.1.10/dabo/icons/daboIcon032.png +0 -0
- dabo-2026.1.10/dabo/icons/daboIcon048.png +0 -0
- dabo-2026.1.10/dabo/icons/daboIcon064.png +0 -0
- dabo-2026.1.10/dabo/icons/daboIcon096.png +0 -0
- dabo-2026.1.10/dabo/icons/daboIcon128.png +0 -0
- dabo-2026.1.10/dabo/icons/daboSplashName.png +0 -0
- dabo-2026.1.10/dabo/icons/dabo_lettering_100x40.png +0 -0
- dabo-2026.1.10/dabo/icons/dabo_lettering_250x100.png +0 -0
- dabo-2026.1.10/dabo/icons/delete.png +0 -0
- dabo-2026.1.10/dabo/icons/downArrow.png +0 -0
- dabo-2026.1.10/dabo/icons/downTriangleBlack.png +0 -0
- dabo-2026.1.10/dabo/icons/edit.png +0 -0
- dabo-2026.1.10/dabo/icons/event.png +0 -0
- dabo-2026.1.10/dabo/icons/event_watcher.png +0 -0
- dabo-2026.1.10/dabo/icons/exit.png +0 -0
- dabo-2026.1.10/dabo/icons/expand_tree.png +0 -0
- dabo-2026.1.10/dabo/icons/file.png +0 -0
- dabo-2026.1.10/dabo/icons/find.png +0 -0
- dabo-2026.1.10/dabo/icons/find_object.png +0 -0
- dabo-2026.1.10/dabo/icons/flip_horiz.png +0 -0
- dabo-2026.1.10/dabo/icons/flip_vert.png +0 -0
- dabo-2026.1.10/dabo/icons/folder.png +0 -0
- dabo-2026.1.10/dabo/icons/help.png +0 -0
- dabo-2026.1.10/dabo/icons/highlight_item.png +0 -0
- dabo-2026.1.10/dabo/icons/leftArrow.png +0 -0
- dabo-2026.1.10/dabo/icons/leftArrows.png +0 -0
- dabo-2026.1.10/dabo/icons/method.png +0 -0
- dabo-2026.1.10/dabo/icons/new.png +0 -0
- dabo-2026.1.10/dabo/icons/open.png +0 -0
- dabo-2026.1.10/dabo/icons/paste.png +0 -0
- dabo-2026.1.10/dabo/icons/print.png +0 -0
- dabo-2026.1.10/dabo/icons/property.png +0 -0
- dabo-2026.1.10/dabo/icons/redo.png +0 -0
- dabo-2026.1.10/dabo/icons/refresh_tree.png +0 -0
- dabo-2026.1.10/dabo/icons/remove.png +0 -0
- dabo-2026.1.10/dabo/icons/requery.png +0 -0
- dabo-2026.1.10/dabo/icons/revert.png +0 -0
- dabo-2026.1.10/dabo/icons/rightArrow.png +0 -0
- dabo-2026.1.10/dabo/icons/rightArrows.png +0 -0
- dabo-2026.1.10/dabo/icons/rotateCCW.png +0 -0
- dabo-2026.1.10/dabo/icons/rotateCW.png +0 -0
- dabo-2026.1.10/dabo/icons/save.png +0 -0
- dabo-2026.1.10/dabo/icons/saveAs.png +0 -0
- dabo-2026.1.10/dabo/icons/show_sizers.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/__init__.py +1 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/__init__.py +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/__init__.py +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/bookmark-new.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/contact-new.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/dialog-error.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/dialog-information.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/dialog-warning.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/document-new.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/document-open.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/document-print-preview.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/document-print.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/document-properties.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/document-save-as.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/document-save.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/edit-clear.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/edit-copy.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/edit-cut.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/edit-delete.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/edit-find-replace.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/edit-find.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/edit-paste.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/edit-redo.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/edit-select-all.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/edit-undo.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/folder-new.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/format-indent-less.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/format-indent-more.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/format-justify-center.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/format-justify-fill.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/format-justify-left.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/format-justify-right.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/format-text-bold.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/format-text-italic.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/format-text-strikethrough.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/format-text-underline.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/go-bottom.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/go-down.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/go-first.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/go-home.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/go-jump.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/go-last.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/go-next.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/go-previous.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/go-top.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/go-up.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/list-add.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/list-remove.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/mail-attachment.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/process-stop.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/software-update-available.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/software-update-urgent.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/system-lock-screen.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/system-log-out.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/system-search.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/system-shutdown.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/tab-new.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/view-fullscreen.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/view-refresh.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/window-new.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/apps/__init__.py +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/apps/accessories-text-editor.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/apps/help-browser.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/apps/preferences-desktop-font.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/apps/utilities-terminal.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/categories/__init__.py +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/16x16/categories/preferences-system.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/__init__.py +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/__init__.py +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/bookmark-new.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/contact-new.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/dialog-error.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/dialog-information.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/dialog-warning.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/document-new.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/document-open.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/document-print-preview.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/document-print.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/document-properties.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/document-save-as.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/document-save.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/edit-clear.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/edit-copy.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/edit-cut.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/edit-delete.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/edit-find-replace.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/edit-find.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/edit-paste.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/edit-redo.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/edit-select-all.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/edit-undo.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/folder-new.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/format-indent-less.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/format-indent-more.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/format-justify-center.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/format-justify-fill.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/format-justify-left.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/format-justify-right.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/format-text-bold.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/format-text-italic.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/format-text-strikethrough.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/format-text-underline.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/go-bottom.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/go-down.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/go-first.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/go-home.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/go-jump.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/go-last.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/go-next.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/go-previous.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/go-top.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/go-up.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/list-add.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/list-remove.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/mail-attachment.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/process-stop.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/software-update-available.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/software-update-urgent.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/system-lock-screen.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/system-log-out.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/system-search.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/system-shutdown.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/tab-new.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/view-fullscreen.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/view-refresh.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/window-new.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/apps/__init__.py +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/apps/accessories-text-editor.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/apps/help-browser.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/apps/preferences-desktop-font.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/apps/utilities-terminal.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/categories/__init__.py +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/22x22/categories/preferences-system.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/__init__.py +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/__init__.py +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/bookmark-new.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/contact-new.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/dialog-error.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/dialog-information.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/dialog-warning.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/document-new.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/document-open.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/document-print-preview.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/document-print.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/document-properties.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/document-save-as.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/document-save.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/edit-clear.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/edit-copy.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/edit-cut.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/edit-delete.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/edit-find-replace.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/edit-find.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/edit-paste.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/edit-redo.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/edit-select-all.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/edit-undo.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/folder-new.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/format-indent-less.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/format-indent-more.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/format-justify-center.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/format-justify-fill.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/format-justify-left.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/format-justify-right.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/format-text-bold.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/format-text-italic.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/format-text-strikethrough.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/format-text-underline.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/go-bottom.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/go-down.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/go-first.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/go-home.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/go-jump.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/go-last.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/go-next.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/go-previous.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/go-top.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/go-up.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/list-add.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/list-remove.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/mail-attachment.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/process-stop.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/software-update-available.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/software-update-urgent.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/system-lock-screen.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/system-log-out.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/system-search.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/system-shutdown.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/tab-new.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/view-fullscreen.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/view-refresh.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/window-new.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/apps/__init__.py +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/apps/accessories-text-editor.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/apps/help-browser.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/apps/preferences-desktop-font.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/apps/utilities-terminal.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/categories/__init__.py +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/32x32/categories/preferences-system.png +0 -0
- dabo-2026.1.10/dabo/icons/themes/tango/AUTHORS +9 -0
- dabo-2026.1.10/dabo/icons/themes/tango/COPYING +67 -0
- dabo-2026.1.10/dabo/icons/themes/tango/README +7 -0
- dabo-2026.1.10/dabo/icons/themes/tango/__init__.py +0 -0
- dabo-2026.1.10/dabo/icons/trash.png +0 -0
- dabo-2026.1.10/dabo/icons/undo.png +0 -0
- dabo-2026.1.10/dabo/icons/upArrow.png +0 -0
- dabo-2026.1.10/dabo/icons/upTriangleBlack.png +0 -0
- dabo-2026.1.10/dabo/icons/zoomIn.png +0 -0
- dabo-2026.1.10/dabo/icons/zoomNormal.png +0 -0
- dabo-2026.1.10/dabo/icons/zoomOut.png +0 -0
- dabo-2026.1.10/dabo/lib/DesignerClassConverter.py +1108 -0
- dabo-2026.1.10/dabo/lib/DesignerUtils.py +381 -0
- dabo-2026.1.10/dabo/lib/EasyDialogBuilder.py +406 -0
- dabo-2026.1.10/dabo/lib/RemoteConnector.py +410 -0
- dabo-2026.1.10/dabo/lib/StopWatch.py +72 -0
- dabo-2026.1.10/dabo/lib/__init__.py +17 -0
- dabo-2026.1.10/dabo/lib/caselessDict.py +84 -0
- dabo-2026.1.10/dabo/lib/connParser.py +205 -0
- dabo-2026.1.10/dabo/lib/datanav/Bizobj.py +83 -0
- dabo-2026.1.10/dabo/lib/datanav/Form.py +1351 -0
- dabo-2026.1.10/dabo/lib/datanav/Grid.py +158 -0
- dabo-2026.1.10/dabo/lib/datanav/Page.py +637 -0
- dabo-2026.1.10/dabo/lib/datanav/PageFrame.py +79 -0
- dabo-2026.1.10/dabo/lib/datanav/__init__.py +41 -0
- dabo-2026.1.10/dabo/lib/dates.py +310 -0
- dabo-2026.1.10/dabo/lib/encryption.py +104 -0
- dabo-2026.1.10/dabo/lib/logger.py +99 -0
- dabo-2026.1.10/dabo/lib/manifest.py +113 -0
- dabo-2026.1.10/dabo/lib/profilehooks.py +626 -0
- dabo-2026.1.10/dabo/lib/propertyHelperMixin.py +446 -0
- dabo-2026.1.10/dabo/lib/reportUtils.py +167 -0
- dabo-2026.1.10/dabo/lib/reportWriter.py +3589 -0
- dabo-2026.1.10/dabo/lib/reporting_stefano/__init__.py +1 -0
- dabo-2026.1.10/dabo/lib/reporting_stefano/objects.py +251 -0
- dabo-2026.1.10/dabo/lib/reporting_stefano/report.py +216 -0
- dabo-2026.1.10/dabo/lib/reporting_stefano/run.py +18 -0
- dabo-2026.1.10/dabo/lib/reporting_stefano/samplespec.rfxml +159 -0
- dabo-2026.1.10/dabo/lib/reporting_stefano/serialization/__init__.py +9 -0
- dabo-2026.1.10/dabo/lib/reporting_stefano/serialization/attributes.py +82 -0
- dabo-2026.1.10/dabo/lib/reporting_stefano/serialization/children.py +56 -0
- dabo-2026.1.10/dabo/lib/reporting_stefano/serialization/serialization.py +87 -0
- dabo-2026.1.10/dabo/lib/reporting_stefano/serialization/xmlserializer.py +90 -0
- dabo-2026.1.10/dabo/lib/reporting_stefano/util.py +33 -0
- dabo-2026.1.10/dabo/lib/reporting_tests/invoice_demo/bizcard01_medium.jpg +0 -0
- dabo-2026.1.10/dabo/lib/reporting_tests/invoice_demo/invoice.py +33 -0
- dabo-2026.1.10/dabo/lib/reporting_tests/invoice_demo/invoice.rfxml +695 -0
- dabo-2026.1.10/dabo/lib/reporting_tests/invoice_demo/invoice_progressControl.py +50 -0
- dabo-2026.1.10/dabo/lib/reporting_tests/invoice_demo/logo_2cannisters_medium.jpg +0 -0
- dabo-2026.1.10/dabo/lib/specParser.py +101 -0
- dabo-2026.1.10/dabo/lib/test/test_dates.py +89 -0
- dabo-2026.1.10/dabo/lib/test/test_utils.py +87 -0
- dabo-2026.1.10/dabo/lib/untabify.py +58 -0
- dabo-2026.1.10/dabo/lib/utils.py +528 -0
- dabo-2026.1.10/dabo/lib/xmltodict.py +457 -0
- dabo-2026.1.10/dabo/locale/ar/LC_MESSAGES/dabo.po +7140 -0
- dabo-2026.1.10/dabo/locale/ca/LC_MESSAGES/dabo.po +7041 -0
- dabo-2026.1.10/dabo/locale/cs/LC_MESSAGES/dabo.po +7172 -0
- dabo-2026.1.10/dabo/locale/dabo.pot +7036 -0
- dabo-2026.1.10/dabo/locale/de/LC_MESSAGES/dabo.po +8000 -0
- dabo-2026.1.10/dabo/locale/el/LC_MESSAGES/dabo.po +7061 -0
- dabo-2026.1.10/dabo/locale/en/LC_MESSAGES/dabo.po +5582 -0
- dabo-2026.1.10/dabo/locale/en_GB/LC_MESSAGES/dabo.po +7205 -0
- dabo-2026.1.10/dabo/locale/es/LC_MESSAGES/dabo.po +7468 -0
- dabo-2026.1.10/dabo/locale/fi/LC_MESSAGES/dabo.po +7121 -0
- dabo-2026.1.10/dabo/locale/fr/LC_MESSAGES/dabo.po +7071 -0
- dabo-2026.1.10/dabo/locale/hi/LC_MESSAGES/dabo.po +7040 -0
- dabo-2026.1.10/dabo/locale/hu/LC_MESSAGES/dabo.po +7040 -0
- dabo-2026.1.10/dabo/locale/id/LC_MESSAGES/dabo.po +7047 -0
- dabo-2026.1.10/dabo/locale/it/LC_MESSAGES/dabo.po +7122 -0
- dabo-2026.1.10/dabo/locale/ja/LC_MESSAGES/dabo.po +7040 -0
- dabo-2026.1.10/dabo/locale/lv/LC_MESSAGES/dabo.po +7040 -0
- dabo-2026.1.10/dabo/locale/nl/LC_MESSAGES/dabo.po +7088 -0
- dabo-2026.1.10/dabo/locale/oc/LC_MESSAGES/dabo.po +7040 -0
- dabo-2026.1.10/dabo/locale/pl/LC_MESSAGES/dabo.po +7049 -0
- dabo-2026.1.10/dabo/locale/pt/LC_MESSAGES/dabo.po +5586 -0
- dabo-2026.1.10/dabo/locale/pt_BR/LC_MESSAGES/dabo.po +7058 -0
- dabo-2026.1.10/dabo/locale/ro/LC_MESSAGES/dabo.po +7114 -0
- dabo-2026.1.10/dabo/locale/ru/LC_MESSAGES/dabo.po +7113 -0
- dabo-2026.1.10/dabo/locale/sv/LC_MESSAGES/dabo.po +7040 -0
- dabo-2026.1.10/dabo/locale/th/LC_MESSAGES/dabo.po +7040 -0
- dabo-2026.1.10/dabo/locale/tr/LC_MESSAGES/dabo.po +7040 -0
- dabo-2026.1.10/dabo/locale/zh_CN/LC_MESSAGES/dabo.po +7083 -0
- dabo-2026.1.10/dabo/localization.py +267 -0
- dabo-2026.1.10/dabo/logging.conf.sample +56 -0
- dabo-2026.1.10/dabo/main.py +156 -0
- dabo-2026.1.10/dabo/preference_mgr.py +569 -0
- dabo-2026.1.10/dabo/report_writer.py +200 -0
- dabo-2026.1.10/dabo/security_manager.py +199 -0
- dabo-2026.1.10/dabo/settings.py +483 -0
- dabo-2026.1.10/dabo/ui/__init__.py +2433 -0
- dabo-2026.1.10/dabo/ui/activity_indicator.py +96 -0
- dabo-2026.1.10/dabo/ui/alignment_mixin.py +46 -0
- dabo-2026.1.10/dabo/ui/auto_complete.py +858 -0
- dabo-2026.1.10/dabo/ui/base_menu_bar.py +285 -0
- dabo-2026.1.10/dabo/ui/bitmap.py +47 -0
- dabo-2026.1.10/dabo/ui/bitmap_button.py +246 -0
- dabo-2026.1.10/dabo/ui/border_sizer.py +175 -0
- dabo-2026.1.10/dabo/ui/borderless_button.py +179 -0
- dabo-2026.1.10/dabo/ui/box.py +43 -0
- dabo-2026.1.10/dabo/ui/button.py +376 -0
- dabo-2026.1.10/dabo/ui/check_box.py +164 -0
- dabo-2026.1.10/dabo/ui/check_list.py +122 -0
- dabo-2026.1.10/dabo/ui/collapsible_panel.py +132 -0
- dabo-2026.1.10/dabo/ui/color_dialog.py +58 -0
- dabo-2026.1.10/dabo/ui/combo_box.py +311 -0
- dabo-2026.1.10/dabo/ui/concordance.py +41 -0
- dabo-2026.1.10/dabo/ui/control_item_mixin.py +480 -0
- dabo-2026.1.10/dabo/ui/control_mixin.py +63 -0
- dabo-2026.1.10/dabo/ui/data_control_mixin.py +646 -0
- dabo-2026.1.10/dabo/ui/date_picker.py +400 -0
- dabo-2026.1.10/dabo/ui/date_text_box.py +495 -0
- dabo-2026.1.10/dabo/ui/dialog.py +658 -0
- dabo-2026.1.10/dabo/ui/dialogs/HotKeyEditor.py +133 -0
- dabo-2026.1.10/dabo/ui/dialogs/PreferenceDialog.py +402 -0
- dabo-2026.1.10/dabo/ui/dialogs/SortingForm.py +78 -0
- dabo-2026.1.10/dabo/ui/dialogs/Wizard.py +518 -0
- dabo-2026.1.10/dabo/ui/dialogs/WizardPage.py +200 -0
- dabo-2026.1.10/dabo/ui/dialogs/__init__.py +11 -0
- dabo-2026.1.10/dabo/ui/dialogs/about.py +105 -0
- dabo-2026.1.10/dabo/ui/dialogs/htmlAbout.py +105 -0
- dabo-2026.1.10/dabo/ui/dialogs/infoMessage.py +73 -0
- dabo-2026.1.10/dabo/ui/dialogs/login.py +140 -0
- dabo-2026.1.10/dabo/ui/dock_form.py +1093 -0
- dabo-2026.1.10/dabo/ui/dropdown_list.py +70 -0
- dabo-2026.1.10/dabo/ui/edit_box.py +135 -0
- dabo-2026.1.10/dabo/ui/editable_list.py +225 -0
- dabo-2026.1.10/dabo/ui/editor.py +2685 -0
- dabo-2026.1.10/dabo/ui/file_dialog.py +180 -0
- dabo-2026.1.10/dabo/ui/font.py +177 -0
- dabo-2026.1.10/dabo/ui/font_dialog.py +39 -0
- dabo-2026.1.10/dabo/ui/form.py +1276 -0
- dabo-2026.1.10/dabo/ui/form_main.py +65 -0
- dabo-2026.1.10/dabo/ui/form_mixin.py +1332 -0
- dabo-2026.1.10/dabo/ui/gauge.py +144 -0
- dabo-2026.1.10/dabo/ui/gl_window.py +240 -0
- dabo-2026.1.10/dabo/ui/grid.py +5693 -0
- dabo-2026.1.10/dabo/ui/grid_renderers.py +247 -0
- dabo-2026.1.10/dabo/ui/grid_sizer.py +683 -0
- dabo-2026.1.10/dabo/ui/html_box.py +353 -0
- dabo-2026.1.10/dabo/ui/hyper_link.py +229 -0
- dabo-2026.1.10/dabo/ui/image.py +570 -0
- dabo-2026.1.10/dabo/ui/image_mixin.py +131 -0
- dabo-2026.1.10/dabo/ui/keys.py +288 -0
- dabo-2026.1.10/dabo/ui/label.py +213 -0
- dabo-2026.1.10/dabo/ui/led.py +151 -0
- dabo-2026.1.10/dabo/ui/line.py +84 -0
- dabo-2026.1.10/dabo/ui/line_plot.py +584 -0
- dabo-2026.1.10/dabo/ui/list_box.py +113 -0
- dabo-2026.1.10/dabo/ui/list_control.py +889 -0
- dabo-2026.1.10/dabo/ui/masked_text_box.py +610 -0
- dabo-2026.1.10/dabo/ui/media_control.py +395 -0
- dabo-2026.1.10/dabo/ui/menu.py +642 -0
- dabo-2026.1.10/dabo/ui/menu_bar.py +213 -0
- dabo-2026.1.10/dabo/ui/menu_item.py +298 -0
- dabo-2026.1.10/dabo/ui/message_box.py +265 -0
- dabo-2026.1.10/dabo/ui/numeric_box.py +422 -0
- dabo-2026.1.10/dabo/ui/object_inspector.py +803 -0
- dabo-2026.1.10/dabo/ui/page.py +161 -0
- dabo-2026.1.10/dabo/ui/page_frame.py +851 -0
- dabo-2026.1.10/dabo/ui/page_frame_mixin.py +528 -0
- dabo-2026.1.10/dabo/ui/page_frame_no_tabs.py +357 -0
- dabo-2026.1.10/dabo/ui/panel.py +537 -0
- dabo-2026.1.10/dabo/ui/pdf_window.py +71 -0
- dabo-2026.1.10/dabo/ui/pem_mixin.py +4436 -0
- dabo-2026.1.10/dabo/ui/progress_dialog.py +130 -0
- dabo-2026.1.10/dabo/ui/radio_list.py +643 -0
- dabo-2026.1.10/dabo/ui/report_progress.py +91 -0
- dabo-2026.1.10/dabo/ui/rich_text_box.py +658 -0
- dabo-2026.1.10/dabo/ui/search_box.py +235 -0
- dabo-2026.1.10/dabo/ui/shell.py +900 -0
- dabo-2026.1.10/dabo/ui/sizer.py +75 -0
- dabo-2026.1.10/dabo/ui/sizer_mixin.py +1140 -0
- dabo-2026.1.10/dabo/ui/slide_panel_control.py +952 -0
- dabo-2026.1.10/dabo/ui/slider.py +230 -0
- dabo-2026.1.10/dabo/ui/spinner.py +548 -0
- dabo-2026.1.10/dabo/ui/split_form.py +124 -0
- dabo-2026.1.10/dabo/ui/splitter.py +512 -0
- dabo-2026.1.10/dabo/ui/status_bar.py +63 -0
- dabo-2026.1.10/dabo/ui/test.py +167 -0
- dabo-2026.1.10/dabo/ui/test_dEditBox.py +44 -0
- dabo-2026.1.10/dabo/ui/test_dForm.py +127 -0
- dabo-2026.1.10/dabo/ui/test_dTextBox.py +139 -0
- dabo-2026.1.10/dabo/ui/text_box.py +119 -0
- dabo-2026.1.10/dabo/ui/text_box_mixin.py +906 -0
- dabo-2026.1.10/dabo/ui/timer.py +118 -0
- dabo-2026.1.10/dabo/ui/toggle_button.py +128 -0
- dabo-2026.1.10/dabo/ui/tool_bar.py +648 -0
- dabo-2026.1.10/dabo/ui/tree_view.py +1435 -0
- dabo-2026.1.10/dabo/ui/uiApp.py +1338 -0
- dabo-2026.1.10/dabo/ui/ui_calendar.py +409 -0
- dabo-2026.1.10/dabo/ui/ui_cursors.py +34 -0
- dabo-2026.1.10/dabo/user_setting_provider.py +67 -0
- dabo-2026.1.10/dabo/version.py +14 -0
- dabo-2026.1.10/format.sh +2 -0
- dabo-2026.1.10/junk.sh +31 -0
- dabo-2026.1.10/playground.py +250 -0
- dabo-2026.1.10/pyproject.toml +66 -0
- dabo-2026.1.10/requirements.txt +11 -0
- dabo-2026.1.10/setup.py +82 -0
- dabo-2026.1.10/sizerlines.py +88 -0
- dabo-2026.1.10/tests/ModuleInitTemplate.py +18 -0
- dabo-2026.1.10/tests/TestCaseTemplate.py +21 -0
- dabo-2026.1.10/tests/unitTests/CoverageReport.py +27 -0
- dabo-2026.1.10/tests/unitTests/Test_color_tools.py +316 -0
- dabo-2026.1.10/tests/unitTests/Test_dObject.py +213 -0
- dabo-2026.1.10/tests/unitTests/biz/__init__.py +18 -0
- dabo-2026.1.10/tests/unitTests/db/__init__.py +18 -0
- dabo-2026.1.10/tests/unitTests/lib/__init__.py +18 -0
- dabo-2026.1.10/tests/unitTests/masterTestSuite.py +52 -0
- dabo-2026.1.10/tests/unitTests/ui/UIwx/Test_dTextBox.py +119 -0
- dabo-2026.1.10/tests/unitTests/ui/UIwx/__init__.py +21 -0
- dabo-2026.1.10/tests/unitTests/ui/__init__.py +20 -0
- dabo-2026.1.10/tools/extractLoc.py +135 -0
- dabo-2026.1.10/tools/genpot.py +40 -0
- dabo-2026.1.10/tools/remove_dLocalize.py +37 -0
- dabo-2026.1.10/tools/reportMixedIndentation.py +39 -0
- dabo-2026.1.10/tools/run_all_tests.py +13 -0
- dabo-2026.1.10/uv.lock +707 -0
- dabo-2026.1.10/vendor/pymssql/pymssql.py +382 -0
- dabo-2026.1.10/vendor/pymssql/readme +3 -0
- dabo-2026.1.10/win_setup.bat +3 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
*.py[cod]
|
|
2
|
+
|
|
3
|
+
# vim swap files
|
|
4
|
+
*.swp
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Packages
|
|
10
|
+
*.egg
|
|
11
|
+
*.egg-info
|
|
12
|
+
dist
|
|
13
|
+
build
|
|
14
|
+
eggs
|
|
15
|
+
parts
|
|
16
|
+
bin
|
|
17
|
+
var
|
|
18
|
+
sdist
|
|
19
|
+
develop-eggs
|
|
20
|
+
.installed.cfg
|
|
21
|
+
lib64
|
|
22
|
+
|
|
23
|
+
# Installer logs
|
|
24
|
+
pip-log.txt
|
|
25
|
+
|
|
26
|
+
# Unit test / coverage reports
|
|
27
|
+
.coverage
|
|
28
|
+
.tox
|
|
29
|
+
nosetests.xml
|
|
30
|
+
|
|
31
|
+
# Translations
|
|
32
|
+
*.mo
|
|
33
|
+
|
|
34
|
+
# MacOS files
|
|
35
|
+
.DS_Store
|
|
36
|
+
|
|
37
|
+
# Mr Developer
|
|
38
|
+
.mr.developer.cfg
|
|
39
|
+
.project
|
|
40
|
+
.pydevproject
|
|
41
|
+
.idea/*
|
|
42
|
+
|
|
43
|
+
# Venv
|
|
44
|
+
vdabo/*
|
|
45
|
+
|
|
46
|
+
.python-version
|
|
47
|
+
|
|
48
|
+
colorgrid.html
|
|
49
|
+
|
|
50
|
+
colors.html
|
|
51
|
+
|
|
52
|
+
create_colorgrid.py
|
|
53
|
+
|
|
54
|
+
dabo/hexdLocalize.py
|
|
55
|
+
|
|
56
|
+
dabo/icons/function.png
|
|
57
|
+
|
|
58
|
+
dabo/ui/convert.py
|
|
59
|
+
|
|
60
|
+
dec2hex.py
|
|
61
|
+
|
|
62
|
+
DEVENTS
|
|
63
|
+
|
|
64
|
+
dui
|
|
65
|
+
|
|
66
|
+
hello.py
|
|
67
|
+
|
|
68
|
+
hexcolorgrid.html
|
|
69
|
+
|
|
70
|
+
junk.py
|
|
71
|
+
|
|
72
|
+
photo.cnxml
|
|
73
|
+
|
|
74
|
+
webtest.cnxml
|
dabo-2026.1.10/AUTHORS
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
The core authors of Dabo are:
|
|
2
|
+
|
|
3
|
+
Ed Leafe
|
|
4
|
+
Paul McNett
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
The following people have submitted nontrivial patches:
|
|
8
|
+
|
|
9
|
+
John Fabiani
|
|
10
|
+
Vladimir Sekissov
|
|
11
|
+
Stefano Masini
|
|
12
|
+
Adi J. Sieker
|
|
13
|
+
Carl Karsten
|
|
14
|
+
Nate Lowrie
|
|
15
|
+
Uwe Grauer
|
|
16
|
+
Simen Haugen
|
|
17
|
+
Christoph Zwerschke
|
|
18
|
+
Jacek Kałucki
|
|
19
|
+
Larry Long
|
|
20
|
+
Werner F. Bruhin
|
|
21
|
+
Neil Flowers
|
|
22
|
+
|
|
23
|
+
Thanks everyone for using, improving, and enjoying Dabo!!
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
Dabo Installation Notes
|
|
2
|
+
====================================
|
|
3
|
+
|
|
4
|
+
Prerequisites:
|
|
5
|
+
--------------
|
|
6
|
+
* Python (we recommend 3.10 or later)
|
|
7
|
+
* wxPython 4.2.2 or later
|
|
8
|
+
* pymysql (only to run the MySQL-based demos or for your project)
|
|
9
|
+
* reportlab (only to run reports)
|
|
10
|
+
* PIL (only to run reports) (also known as Imaging or the Python Imaging Library)
|
|
11
|
+
- the `Pillow` package is a PIL-compatible fork.
|
|
12
|
+
|
|
13
|
+
Installation:
|
|
14
|
+
-------------
|
|
15
|
+
It's best to use a modern tool such as [poetry](https://python-poetry.org/) or [uv](https://docs.astral.sh/uv/) to handle installation. The manual methods listed below were from the original Dabo release, and may or may not work today. But I'm including them in case they're helpful.
|
|
16
|
+
|
|
17
|
+
* Windows: run ```win_setup.bat```
|
|
18
|
+
* Mac or Linux: Execute the following shell command: ```sudo python setup.py install```
|
|
19
|
+
|
|
20
|
+
Having Problems Installing?
|
|
21
|
+
---------------------------
|
|
22
|
+
*This is also old advice!*
|
|
23
|
+
|
|
24
|
+
If you have trouble installing, and for whatever reason the ```setup.py``` doesn't work, just add a file named ```dabo.pth``` to your site-packages directory, with the path to dabo such as ```/home/pmcnett/projects/dabo```.
|
|
25
|
+
|
|
26
|
+
If you are on Linux and got the following error:
|
|
27
|
+
```
|
|
28
|
+
error: invalid Python installation: unable to open /usr/lib/python3.6/config/Makefile (No such file or directory)
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
and you really want to get setup.py to install dabo for you, you need to install the ```python-dev``` package. For instance (on Debian):
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
apt-get install python3.6-dev
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
(assuming you are running python3.6; change the version number as appropriate).
|
|
38
|
+
|
|
39
|
+
There are some problems with some of the third-party libraries like PIL when running in a mixed 32/64 bit environment, such as Mac OSX. While everything can be made to work running 64-bit versions of everything, if you are havingtrouble it may be worth trying to install 32-bit Python, wxPython, etc. Note: to run python in 32-bit on Mac, use ```python-32``` as the command instead of python.
|
|
40
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
dabo/LICENSE.TXT
|
dabo-2026.1.10/PKG-INFO
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: dabo
|
|
3
|
+
Version: 2026.1.10
|
|
4
|
+
Summary: A framework for developing data-driven business applications
|
|
5
|
+
Author-email: Ed Leafe <ed@leafe.com>, Paul McNett <paul@mcnett.name>
|
|
6
|
+
License-File: AUTHORS
|
|
7
|
+
License-File: LICENSE.TXT
|
|
8
|
+
Requires-Python: >=3.12
|
|
9
|
+
Requires-Dist: cryptography>=46.0.5
|
|
10
|
+
Requires-Dist: filetype>=1.2.0
|
|
11
|
+
Requires-Dist: pillow>=12.1.1
|
|
12
|
+
Requires-Dist: pymysql>=1.1.1
|
|
13
|
+
Requires-Dist: reportlab>=4.2.5
|
|
14
|
+
Requires-Dist: wxpython>=4.2.2
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
|
|
17
|
+
Dabo: A Framework for developing data-driven business applications
|
|
18
|
+
==================================================================
|
|
19
|
+
|
|
20
|
+
Dabo is for developing multi-platform database business applications - you
|
|
21
|
+
know, applications that need to connect to a database like MySQL, Oracle,
|
|
22
|
+
MS-SQL, PostgreSQL, or SQLite, get recordsets of data based on criteria set by
|
|
23
|
+
the user, provide easy ways to edit and commit changes to the data, and to
|
|
24
|
+
report on the data.
|
|
25
|
+
|
|
26
|
+
You program in Python, subclassing Dabo's base classes. In addition, there are
|
|
27
|
+
several graphical tools for laying out your GUI, editing your menus, and
|
|
28
|
+
creating professional business reports.
|
|
29
|
+
|
|
30
|
+
Dabo has three main subpackages, representing the three tiers common in modern
|
|
31
|
+
database application design:
|
|
32
|
+
```
|
|
33
|
+
dabo.db : database
|
|
34
|
+
dabo.biz : business objects
|
|
35
|
+
dabo.ui : user interface
|
|
36
|
+
```
|
|
37
|
+
```dabo.db``` and ```dabo.biz``` are completely ui-free, while ```dabo.ui```
|
|
38
|
+
requires wxPython.
|
|
39
|
+
|
|
40
|
+
To distribute your application to end users
|
|
41
|
+
-------------------------------------------
|
|
42
|
+
Use PyInstaller or cxFreeze to make an executable package to deploy to Mac,
|
|
43
|
+
Windows, and Linux clients. Or, make sure your end users have Python, wxPython,
|
|
44
|
+
etc. installed and distribute your source code.
|
|
45
|
+
|
|
46
|
+
To run Dabo, and apps based on Dabo, you need:
|
|
47
|
+
----------------------------------------------
|
|
48
|
+
* Python 3.6 or later
|
|
49
|
+
* wxPython 4.0 or later
|
|
50
|
+
* Reportlab and Python Imaging Library if running reports.
|
|
51
|
+
* One or more of the following operating systems:
|
|
52
|
+
* Windows XP or higher
|
|
53
|
+
* Macintosh OSX 10.5 or higher
|
|
54
|
+
* Linux 6 or higher with X11 running and Gtk3
|
|
55
|
+
|
|
56
|
+
How you get started is pretty much up to you. There are two related projects: `dabo_demo`, which
|
|
57
|
+
contains demonstrtion code for the various Dabo classes, and `dabo_ide`, which contains tools for
|
|
58
|
+
creating Dabo applications visually. Please note that the `dabo_ide` tools worked great when they
|
|
59
|
+
were written in the mid-2000s, but have not been fully updated to the modern Python tools.
|
|
60
|
+
|
|
61
|
+
For some quick results for the impatient, once you've installed Dabo using the
|
|
62
|
+
standard ```uv add dabo``` or ```poetry install dabo``` method, do this from your Python
|
|
63
|
+
interpreter:
|
|
64
|
+
|
|
65
|
+
```python
|
|
66
|
+
from dabo.application import dApp
|
|
67
|
+
dApp().start()
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
press Ctrl+D and type the following into the command window that appears:
|
|
71
|
+
|
|
72
|
+
```python
|
|
73
|
+
tb = dabo.ui.dTextBox(self)
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Notice the textbox in the upper left hand corner?
|
|
77
|
+
```python
|
|
78
|
+
tb.Value = "yippee!"
|
|
79
|
+
tb.FontBold = True
|
|
80
|
+
print(tb.Value)
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Now, use the ui to change the value in the textbox, and switch back to
|
|
84
|
+
the command window.
|
|
85
|
+
```python
|
|
86
|
+
print(tb.Value)
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
[https://dabodev.com](Dabo Website)
|
|
90
|
+
|
|
91
|
+
[https://github.com/dabodev/dabo](Dabo Repo on GitHub)
|
dabo-2026.1.10/README.md
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
Dabo: A Framework for developing data-driven business applications
|
|
2
|
+
==================================================================
|
|
3
|
+
|
|
4
|
+
Dabo is for developing multi-platform database business applications - you
|
|
5
|
+
know, applications that need to connect to a database like MySQL, Oracle,
|
|
6
|
+
MS-SQL, PostgreSQL, or SQLite, get recordsets of data based on criteria set by
|
|
7
|
+
the user, provide easy ways to edit and commit changes to the data, and to
|
|
8
|
+
report on the data.
|
|
9
|
+
|
|
10
|
+
You program in Python, subclassing Dabo's base classes. In addition, there are
|
|
11
|
+
several graphical tools for laying out your GUI, editing your menus, and
|
|
12
|
+
creating professional business reports.
|
|
13
|
+
|
|
14
|
+
Dabo has three main subpackages, representing the three tiers common in modern
|
|
15
|
+
database application design:
|
|
16
|
+
```
|
|
17
|
+
dabo.db : database
|
|
18
|
+
dabo.biz : business objects
|
|
19
|
+
dabo.ui : user interface
|
|
20
|
+
```
|
|
21
|
+
```dabo.db``` and ```dabo.biz``` are completely ui-free, while ```dabo.ui```
|
|
22
|
+
requires wxPython.
|
|
23
|
+
|
|
24
|
+
To distribute your application to end users
|
|
25
|
+
-------------------------------------------
|
|
26
|
+
Use PyInstaller or cxFreeze to make an executable package to deploy to Mac,
|
|
27
|
+
Windows, and Linux clients. Or, make sure your end users have Python, wxPython,
|
|
28
|
+
etc. installed and distribute your source code.
|
|
29
|
+
|
|
30
|
+
To run Dabo, and apps based on Dabo, you need:
|
|
31
|
+
----------------------------------------------
|
|
32
|
+
* Python 3.6 or later
|
|
33
|
+
* wxPython 4.0 or later
|
|
34
|
+
* Reportlab and Python Imaging Library if running reports.
|
|
35
|
+
* One or more of the following operating systems:
|
|
36
|
+
* Windows XP or higher
|
|
37
|
+
* Macintosh OSX 10.5 or higher
|
|
38
|
+
* Linux 6 or higher with X11 running and Gtk3
|
|
39
|
+
|
|
40
|
+
How you get started is pretty much up to you. There are two related projects: `dabo_demo`, which
|
|
41
|
+
contains demonstrtion code for the various Dabo classes, and `dabo_ide`, which contains tools for
|
|
42
|
+
creating Dabo applications visually. Please note that the `dabo_ide` tools worked great when they
|
|
43
|
+
were written in the mid-2000s, but have not been fully updated to the modern Python tools.
|
|
44
|
+
|
|
45
|
+
For some quick results for the impatient, once you've installed Dabo using the
|
|
46
|
+
standard ```uv add dabo``` or ```poetry install dabo``` method, do this from your Python
|
|
47
|
+
interpreter:
|
|
48
|
+
|
|
49
|
+
```python
|
|
50
|
+
from dabo.application import dApp
|
|
51
|
+
dApp().start()
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
press Ctrl+D and type the following into the command window that appears:
|
|
55
|
+
|
|
56
|
+
```python
|
|
57
|
+
tb = dabo.ui.dTextBox(self)
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Notice the textbox in the upper left hand corner?
|
|
61
|
+
```python
|
|
62
|
+
tb.Value = "yippee!"
|
|
63
|
+
tb.FontBold = True
|
|
64
|
+
print(tb.Value)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Now, use the ui to change the value in the textbox, and switch back to
|
|
68
|
+
the command window.
|
|
69
|
+
```python
|
|
70
|
+
print(tb.Value)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
[https://dabodev.com](Dabo Website)
|
|
74
|
+
|
|
75
|
+
[https://github.com/dabodev/dabo](Dabo Repo on GitHub)
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
Dabo Release Notes
|
|
2
|
+
==================
|
|
3
|
+
|
|
4
|
+
v0.9.14 - 2 Dec 2013
|
|
5
|
+
---------------------
|
|
6
|
+
|
|
7
|
+
* dAutoComplete:
|
|
8
|
+
* New UI control (thanks Neil Flowers)
|
|
9
|
+
* Bug Fixes:
|
|
10
|
+
* Added needed unicode check when logging SQL parameters.
|
|
11
|
+
* Fix SimpleCrypt for newer Python Crypto versions (thanks Jacek).
|
|
12
|
+
* Fix Report Writer bug: some Memos were not being printed.
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
v0.9.13 - 28 Jun 2013
|
|
16
|
+
---------------------
|
|
17
|
+
|
|
18
|
+
* dCheckBox:
|
|
19
|
+
* Fixed 3-state problems and added samples to the test.
|
|
20
|
+
* dGrid:
|
|
21
|
+
* Fixed to not erase the multi-selection when right-clicking.
|
|
22
|
+
* Fixed wrong column sized during user resize with invisible columns.
|
|
23
|
+
* dMenu:
|
|
24
|
+
* Made wxPython 2.9 compatibility fixes (Thanks to Werner F Bruhin)
|
|
25
|
+
* Added help strings for some menu items (Thanks to Werner F Bruhin)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
v0.9.12 - 12 Jun 2013
|
|
29
|
+
---------------------
|
|
30
|
+
|
|
31
|
+
* Fixed dReportWriter recursion exception in cases where the long memo text doesn't have any line breaks over the span of more than a page. Thanks to Werner F Bruhin and Carl Karsten for assisting in finding this bug.
|
|
32
|
+
* Fixed dSpinner to check bounds (Value must be between Max and Min) before flushing Value to the database.
|
|
33
|
+
* Code cleanup, including fixing tab/space inconsistencies (thanks Werner).
|
|
34
|
+
* Dabo v0.9.10 introduced bad locale translation files. Reverted to the translations we had prior, until we can find the long-term fix.
|
|
35
|
+
* Fixed dBizobj.getDataSet() to not move the RowNumber, which it was doing if VirtualFields were involved. Fixed getDataSet() for virtual fields that need to requery children.
|
|
36
|
+
* Fixed invoice progressControl demo bug in cancel. (Thanks John Fabiani).
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
v0.9.11 - 23 May 2013
|
|
40
|
+
---------------------
|
|
41
|
+
* Fixed getDataSet() for virtual fields that need to requery children.
|
|
42
|
+
* Convenience: return the child reference in biz.addChild().
|
|
43
|
+
* Fixed some problems with the invoice report demo.
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
v0.9.10 - 8 May 2013
|
|
47
|
+
--------------------
|
|
48
|
+
* Bugfix: Canceling Parent bizobj wasn't necessarily removing new child records.
|
|
49
|
+
* Added better unicode handling in the operations that write out files.
|
|
50
|
+
* Added ability to set default value in dApp.getAppInfo().
|
|
51
|
+
* Pulled the most recent translation files from Launchpad. Thanks to everyone helping out with localizing our strings!
|
|
52
|
+
* Added better buffer (blob) support.
|
|
53
|
+
* Added args and kwargs to VirtualFields.
|
|
54
|
+
* Added dabo.settings.convertFloatToDecimal, for when you don't want this default behavior.
|
|
55
|
+
* Fixed segfaults in editable grid columns.
|
|
56
|
+
* Fixed dLabel to implicitly update() when the caption changes.
|
|
57
|
+
* Added getContainingPage() to get a reference to the page, if any, that contains self.
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
v0.9.9 - 18 Feb 2013
|
|
61
|
+
--------------------
|
|
62
|
+
* dBizobj/dCursor: You can now specify fields that don't exist in the flds argument of getDataSet(). The returned dataset will simply not contain the missing fields.
|
|
63
|
+
* dForm: Status bar was showing 'Record 1/1' with no bizobj present. Fixed.
|
|
64
|
+
* dForm: In some cases, sub-forms weren't saving their window geometry correctly. Fixed.
|
|
65
|
+
* List-type UI controls like dListBox and dCheckList now restore their values properly even in the presence of some bad values in the preferences file.
|
|
66
|
+
* dBizobj: Added clear(), which completely clears the bizobj and its children of all data, regardless of whether there are unsaved changes.
|
|
67
|
+
* dBizobj: Added removeWhere(), removeChild(), which complement addWhere() and addChild().
|
|
68
|
+
* dGrid: Added property SaveRestoreDataSet. Use this to save and restore the contents of an editable grid.
|
|
69
|
+
* dGrid: Fixed sorting to not sort if the grid or column is set to not be Sortable.
|
|
70
|
+
* Removed self.super() and self.doDefault().
|
|
71
|
+
* Removed GridHeaderPaint event.
|
|
72
|
+
* Removed dabo.lib.datanav2, which has been an alias of dabo.lib.datanav for years now.
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
v0.9.8 - 9 Feb 2013
|
|
76
|
+
-------------------
|
|
77
|
+
* Fixed dControlItemMixin.appendItem() to work with multiple-selections. Prior to this, calling appendItem() on a dCheckList for example would result in all the previously checked items being cleared.
|
|
78
|
+
* Fixed dCursor from trying to save derived fields, which would fail. Now, we simply ignore the derived fields when saving.
|
|
79
|
+
* Fixed dCursor to not persist implicit DataStructure, because different requeries can have different fields.
|
|
80
|
+
* Fixed black cmd.exe box from flashing on and off in Windows in reportUtil.printReport().
|
|
81
|
+
* Fixed datanav.Form where FormType="Edit", which was causing an IndexError when canceling.
|
|
82
|
+
* Removed previously-deprecated dBizobj.SQL property; deprecated dBizobj.setValues() which has been going by setFieldValues() for years now.
|
|
83
|
+
* Extended dBizobj.new() to accept fields to set, which will override any DefaultValues.
|
|
84
|
+
* Made some sort-related minor enhancements in dBizobj and dGrid.
|
|
85
|
+
* Fixed bug on Linux that made the calendar popup in dDateTextBox show in the wrong location. Also, fixed the popup to respond to key presses immediately, rather than requiring a mouse-click first.
|
|
86
|
+
* Added removeColumn(), removeColumns() and addColumns() to dGrid.
|
|
87
|
+
* Fixed dBizobj to only addField() when it doesn't already exist.
|
|
88
|
+
* Added ProcessTabs property to dEditBox, allowing the user to type tabs into the edit box, at the expense of no longer being able to navigate to the next control with the tab key.
|
|
89
|
+
* Fixed artifacts when moving dGrid columns with the mouse.
|
|
90
|
+
* Fixed dApp/dSecurityManager to only instantiate one login dialog instance, instead of releasing it and reinstantiating after every failed login attempt.
|
|
91
|
+
* Fixed autoBindEvents to work with Name as well as with RegID, so event handlers can be placed in the parent panel and work as expected.
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
v0.9.7 - 27 Jan 2013
|
|
95
|
+
--------------------
|
|
96
|
+
* Fixed conflict between splash and login dialog.
|
|
97
|
+
* Remove uuid from dabo (in stdlib now).
|
|
98
|
+
* Display the appName and appVersion in About.
|
|
99
|
+
* Don't cause keyboard errors in empty grids.
|
|
100
|
+
* Fixed DynamicCell properties for dColumn.
|
|
101
|
+
* Fixed getBizobj() to not implicitly set DataSource.
|
|
102
|
+
* Fixed grid cell editing/writing back to biz.
|
|
103
|
+
* Fixed makeGridEditor to not convert value to string.
|
|
104
|
+
* Reworked AppWizard's generated version files.
|
|
105
|
+
* Fixed the download_url in setup.py.
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
v0.9.6 - 11 Jan 2013
|
|
109
|
+
--------------------
|
|
110
|
+
* Improved dReportWriter's ability to locate images, especially in frozen apps.
|
|
111
|
+
* Fixed some edge-cases in dReportWriter with multi-columns and spanning objects.
|
|
112
|
+
* Fixed a problem with activeControlValid() for controls not bound to a bizobj.
|
|
113
|
+
* Fixed a problem with dMenu running on 64-bit.
|
|
114
|
+
* Tested Mac with wxPython 2.9.4.0 and fixed some obvious errors.
|
|
115
|
+
* Removed biz.Caption from the EditPage.Caption.
|
|
116
|
+
* Since the the decimal precision is already known in the bizobj, use that for dColumn.Precision if the caller didn't explicitly set it, for convenience.
|
|
117
|
+
* Fixed issue introduced in v0.9.5 that tried to update invisible forms and dialogs.
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
This file begun with v0.9.6 just after we migrated to GitHub from self-hosted Subversion. For prior release notes, see https://github.com/dabodev/dabo/blob/v0.9.5/ChangeLog
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Dabo: 3-tier desktop application runtime framework
|
|
2
|
+
Copyright (c) 2004-2026 Ed Leafe, Paul McNett, et. al.
|
|
3
|
+
|
|
4
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
5
|
+
this software and associated documentation files (the "Software"), to deal in
|
|
6
|
+
the Software without restriction, including without limitation the rights to
|
|
7
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
8
|
+
of the Software, and to permit persons to whom the Software is furnished to do
|
|
9
|
+
so, subject to the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be included in all
|
|
12
|
+
copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"""
|
|
2
|
+
3-Tier Desktop Database Business Application Framework
|
|
3
|
+
|
|
4
|
+
http://dabodev.com
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import asyncio
|
|
8
|
+
import builtins
|
|
9
|
+
import importlib
|
|
10
|
+
import locale
|
|
11
|
+
import os
|
|
12
|
+
import sys
|
|
13
|
+
from functools import partial
|
|
14
|
+
from pathlib import Path
|
|
15
|
+
|
|
16
|
+
from . import application
|
|
17
|
+
from . import settings
|
|
18
|
+
from . import version
|
|
19
|
+
|
|
20
|
+
# Reference to the running application object
|
|
21
|
+
app_reference = None
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
# Current version
|
|
25
|
+
def get_version():
|
|
26
|
+
return version.get_version()
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
# Add a module-level property-like getter
|
|
30
|
+
def __getattr__(name: str):
|
|
31
|
+
if name == "Version":
|
|
32
|
+
return version.get_version()
|
|
33
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
# Method to create a standard Dabo directory structure layout
|
|
37
|
+
def makeDaboDirectories(homedir=None):
|
|
38
|
+
"""If homedir is passed, the directories will be created off of that
|
|
39
|
+
directory. Otherwise, it is assumed that they should be created
|
|
40
|
+
in the current directory location.
|
|
41
|
+
"""
|
|
42
|
+
dabo_loc = __file__
|
|
43
|
+
curr_loc = None
|
|
44
|
+
if homedir:
|
|
45
|
+
curr_loc = Path.cwd()
|
|
46
|
+
os.chdir(homedir)
|
|
47
|
+
for d in settings.standardDirs:
|
|
48
|
+
dirpath = Path(d)
|
|
49
|
+
dirpath.mkdir(parents=True, exist_ok=True)
|
|
50
|
+
if curr_loc:
|
|
51
|
+
os.chdir(curr_loc)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def _load_base_modules():
|
|
55
|
+
from . import base_object
|
|
56
|
+
from . import constants
|
|
57
|
+
from . import events
|
|
58
|
+
from . import exceptions
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def _load_remaining_modules():
|
|
62
|
+
from . import db
|
|
63
|
+
from . import preference_mgr
|
|
64
|
+
from . import ui
|
|
65
|
+
|
|
66
|
+
ui.load_namespace()
|
|
67
|
+
from . import biz
|
|
68
|
+
from . import color_tools
|
|
69
|
+
from . import events
|
|
70
|
+
from . import settings
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
# if settings.implicitImports:
|
|
74
|
+
# asyncio.ensure_future(_load_modules())
|
|
75
|
+
|
|
76
|
+
# Load the base modules first
|
|
77
|
+
_load_base_modules()
|
|
78
|
+
# Now load the rest
|
|
79
|
+
_load_remaining_modules()
|
|
80
|
+
|
|
81
|
+
# Logging configuration
|
|
82
|
+
logger = None
|
|
83
|
+
dbActivityLog = None
|
|
84
|
+
fileFormatter = None
|
|
85
|
+
fileLogHandler = None
|
|
86
|
+
dbFileLogHandler = None
|
|
87
|
+
dbFileFormatter = None
|
|
88
|
+
settings.setup_logging()
|
|
89
|
+
# Add convenience names for logging
|
|
90
|
+
debug = log_debug = logger.debug
|
|
91
|
+
info = log_info = logger.info
|
|
92
|
+
error = log_error = logger.error
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
if settings.localizeDabo:
|
|
96
|
+
# Install localization service for dabo. dApp will install localization service
|
|
97
|
+
# for the user application separately.
|
|
98
|
+
from . import localization
|
|
99
|
+
|
|
100
|
+
localization.install("dabo")
|
|
101
|
+
|
|
102
|
+
if settings.importDebugger:
|
|
103
|
+
from .debugging import logPoint
|
|
104
|
+
|
|
105
|
+
try:
|
|
106
|
+
import pudb as pdb
|
|
107
|
+
except ImportError:
|
|
108
|
+
import pdb
|
|
109
|
+
trace = pdb.set_trace
|
|
110
|
+
|
|
111
|
+
def debugout(*args):
|
|
112
|
+
from .lib.utils import ustr
|
|
113
|
+
|
|
114
|
+
txtargs = [ustr(arg) for arg in args]
|
|
115
|
+
txt = " ".join(txtargs)
|
|
116
|
+
log = logging.getLogger("Debug")
|
|
117
|
+
log.debug(txt)
|
|
118
|
+
|
|
119
|
+
# Mangle the namespace so that developers can add lines like:
|
|
120
|
+
# debugo("Some Message")
|
|
121
|
+
# or
|
|
122
|
+
# debugout("Another Message", self.Caption)
|
|
123
|
+
# to their code for debugging.
|
|
124
|
+
# (I added 'debugo' as an homage to Whil Hentzen!)
|
|
125
|
+
builtins.debugo = builtins.debugout = debugout
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def quickStart(homedir=None):
|
|
129
|
+
"""This creates a bare-bones application in either the specified
|
|
130
|
+
directory, or the current one if none is specified.
|
|
131
|
+
"""
|
|
132
|
+
currLoc = os.getcwd()
|
|
133
|
+
if homedir is None:
|
|
134
|
+
homedir = input("Enter the name for your application: ")
|
|
135
|
+
if not homedir:
|
|
136
|
+
return
|
|
137
|
+
|
|
138
|
+
if not os.path.exists(homedir):
|
|
139
|
+
os.makedirs(homedir)
|
|
140
|
+
os.chdir(homedir)
|
|
141
|
+
makeDaboDirectories()
|
|
142
|
+
open("main.py", "w").write(
|
|
143
|
+
"""#!/usr/bin/env python
|
|
144
|
+
# -*- coding: utf-8 -*-
|
|
145
|
+
from . import ui
|
|
146
|
+
from application import dApp
|
|
147
|
+
|
|
148
|
+
app = dApp()
|
|
149
|
+
|
|
150
|
+
# IMPORTANT! Change app.MainFormClass value to the name
|
|
151
|
+
# of the form class that you want to run when your
|
|
152
|
+
# application starts up.
|
|
153
|
+
app.MainFormClass = ui.dFormMain
|
|
154
|
+
|
|
155
|
+
app.start()
|
|
156
|
+
"""
|
|
157
|
+
)
|
|
158
|
+
|
|
159
|
+
template = """#!/usr/bin/env python
|
|
160
|
+
# -*- coding: utf-8 -*-
|
|
161
|
+
######
|
|
162
|
+
# In order for Dabo to 'see' classes in your %(dd)s directory, add an
|
|
163
|
+
# import statement here for each class. E.g., if you have a file named
|
|
164
|
+
# 'MyClasses.py' in this directory, and it defines two classes named 'FirstClass'
|
|
165
|
+
# and 'SecondClass', add these lines:
|
|
166
|
+
#
|
|
167
|
+
# from MyClasses import FirstClass
|
|
168
|
+
# from MyClasses import SecondClass
|
|
169
|
+
#
|
|
170
|
+
# Now you can refer to these classes as: self.Application.%(dd)s.FirstClass and
|
|
171
|
+
# self.Application.%(dd)s.SecondClass
|
|
172
|
+
######
|
|
173
|
+
|
|
174
|
+
"""
|
|
175
|
+
for dd in _standardDirs:
|
|
176
|
+
fname = "%s/__init__.py" % dd
|
|
177
|
+
txt = template % locals()
|
|
178
|
+
open(fname, "w").write(txt)
|
|
179
|
+
os.chmod("main.py", 744)
|
|
180
|
+
os.chdir(currLoc)
|
|
181
|
+
print("Application '%s' has been created for you" % homedir)
|