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.
Files changed (535) hide show
  1. dabo-2026.1.10/.claude/settings.local.json +10 -0
  2. dabo-2026.1.10/.gitignore +74 -0
  3. dabo-2026.1.10/AUTHORS +23 -0
  4. dabo-2026.1.10/INSTALL.md +40 -0
  5. dabo-2026.1.10/LICENSE.TXT +1 -0
  6. dabo-2026.1.10/MANIFEST.in +3 -0
  7. dabo-2026.1.10/PKG-INFO +91 -0
  8. dabo-2026.1.10/README.md +75 -0
  9. dabo-2026.1.10/RELEASENOTES.md +120 -0
  10. dabo-2026.1.10/dabo/LICENSE.TXT +22 -0
  11. dabo-2026.1.10/dabo/__init__.py +181 -0
  12. dabo-2026.1.10/dabo/application.py +1817 -0
  13. dabo-2026.1.10/dabo/base_object.py +405 -0
  14. dabo-2026.1.10/dabo/biz/RemoteBizobj.py +218 -0
  15. dabo-2026.1.10/dabo/biz/__init__.py +30 -0
  16. dabo-2026.1.10/dabo/biz/bizobj.py +3249 -0
  17. dabo-2026.1.10/dabo/biz/dAutoBizobj.py +347 -0
  18. dabo-2026.1.10/dabo/biz/test/test_dBizobj.py +710 -0
  19. dabo-2026.1.10/dabo/biz/test/test_mm.py +356 -0
  20. dabo-2026.1.10/dabo/color_tools.py +390 -0
  21. dabo-2026.1.10/dabo/constants.py +39 -0
  22. dabo-2026.1.10/dabo/db/__init__.py +145 -0
  23. dabo-2026.1.10/dabo/db/backend.py +702 -0
  24. dabo-2026.1.10/dabo/db/connect_info.py +328 -0
  25. dabo-2026.1.10/dabo/db/connection.py +124 -0
  26. dabo-2026.1.10/dabo/db/cursor_mixin.py +3160 -0
  27. dabo-2026.1.10/dabo/db/dataset.py +485 -0
  28. dabo-2026.1.10/dabo/db/db_firebird.py +358 -0
  29. dabo-2026.1.10/dabo/db/db_mssql.py +305 -0
  30. dabo-2026.1.10/dabo/db/db_mysql.py +376 -0
  31. dabo-2026.1.10/dabo/db/db_oracle.py +190 -0
  32. dabo-2026.1.10/dabo/db/db_postgresql.py +309 -0
  33. dabo-2026.1.10/dabo/db/db_sqlite.py +299 -0
  34. dabo-2026.1.10/dabo/db/db_template.py +157 -0
  35. dabo-2026.1.10/dabo/db/db_web.py +34 -0
  36. dabo-2026.1.10/dabo/db/no_esc_quote_str.py +12 -0
  37. dabo-2026.1.10/dabo/db/table.py +381 -0
  38. dabo-2026.1.10/dabo/db/test/create_firebird_test.ddl +34 -0
  39. dabo-2026.1.10/dabo/db/test/test_dConnectInfo.py +35 -0
  40. dabo-2026.1.10/dabo/db/test/test_dConnection.py +35 -0
  41. dabo-2026.1.10/dabo/db/test/test_dCursorMixin.py +471 -0
  42. dabo-2026.1.10/dabo/debugging.py +91 -0
  43. dabo-2026.1.10/dabo/event_mixin.py +353 -0
  44. dabo-2026.1.10/dabo/events.py +1366 -0
  45. dabo-2026.1.10/dabo/exceptions.py +108 -0
  46. dabo-2026.1.10/dabo/icons/__init__.py +77 -0
  47. dabo-2026.1.10/dabo/icons/apply.png +0 -0
  48. dabo-2026.1.10/dabo/icons/blank.png +0 -0
  49. dabo-2026.1.10/dabo/icons/boolRendererChecked.png +0 -0
  50. dabo-2026.1.10/dabo/icons/boolRendererUnchecked.png +0 -0
  51. dabo-2026.1.10/dabo/icons/browse.png +0 -0
  52. dabo-2026.1.10/dabo/icons/checkMark.png +0 -0
  53. dabo-2026.1.10/dabo/icons/childview.png +0 -0
  54. dabo-2026.1.10/dabo/icons/class.png +0 -0
  55. dabo-2026.1.10/dabo/icons/clear.png +0 -0
  56. dabo-2026.1.10/dabo/icons/close.png +0 -0
  57. dabo-2026.1.10/dabo/icons/collapse_tree.png +0 -0
  58. dabo-2026.1.10/dabo/icons/configure.png +0 -0
  59. dabo-2026.1.10/dabo/icons/copy.png +0 -0
  60. dabo-2026.1.10/dabo/icons/cut.png +0 -0
  61. dabo-2026.1.10/dabo/icons/dCheckBox.png +0 -0
  62. dabo-2026.1.10/dabo/icons/dCommandButton.png +0 -0
  63. dabo-2026.1.10/dabo/icons/dEditBox.png +0 -0
  64. dabo-2026.1.10/dabo/icons/dLabel.png +0 -0
  65. dabo-2026.1.10/dabo/icons/dRadioGroup.png +0 -0
  66. dabo-2026.1.10/dabo/icons/dSpinner.png +0 -0
  67. dabo-2026.1.10/dabo/icons/dTextBox.png +0 -0
  68. dabo-2026.1.10/dabo/icons/dTimer.png +0 -0
  69. dabo-2026.1.10/dabo/icons/daboIcon.ico +0 -0
  70. dabo-2026.1.10/dabo/icons/daboIcon016.png +0 -0
  71. dabo-2026.1.10/dabo/icons/daboIcon032.png +0 -0
  72. dabo-2026.1.10/dabo/icons/daboIcon048.png +0 -0
  73. dabo-2026.1.10/dabo/icons/daboIcon064.png +0 -0
  74. dabo-2026.1.10/dabo/icons/daboIcon096.png +0 -0
  75. dabo-2026.1.10/dabo/icons/daboIcon128.png +0 -0
  76. dabo-2026.1.10/dabo/icons/daboSplashName.png +0 -0
  77. dabo-2026.1.10/dabo/icons/dabo_lettering_100x40.png +0 -0
  78. dabo-2026.1.10/dabo/icons/dabo_lettering_250x100.png +0 -0
  79. dabo-2026.1.10/dabo/icons/delete.png +0 -0
  80. dabo-2026.1.10/dabo/icons/downArrow.png +0 -0
  81. dabo-2026.1.10/dabo/icons/downTriangleBlack.png +0 -0
  82. dabo-2026.1.10/dabo/icons/edit.png +0 -0
  83. dabo-2026.1.10/dabo/icons/event.png +0 -0
  84. dabo-2026.1.10/dabo/icons/event_watcher.png +0 -0
  85. dabo-2026.1.10/dabo/icons/exit.png +0 -0
  86. dabo-2026.1.10/dabo/icons/expand_tree.png +0 -0
  87. dabo-2026.1.10/dabo/icons/file.png +0 -0
  88. dabo-2026.1.10/dabo/icons/find.png +0 -0
  89. dabo-2026.1.10/dabo/icons/find_object.png +0 -0
  90. dabo-2026.1.10/dabo/icons/flip_horiz.png +0 -0
  91. dabo-2026.1.10/dabo/icons/flip_vert.png +0 -0
  92. dabo-2026.1.10/dabo/icons/folder.png +0 -0
  93. dabo-2026.1.10/dabo/icons/help.png +0 -0
  94. dabo-2026.1.10/dabo/icons/highlight_item.png +0 -0
  95. dabo-2026.1.10/dabo/icons/leftArrow.png +0 -0
  96. dabo-2026.1.10/dabo/icons/leftArrows.png +0 -0
  97. dabo-2026.1.10/dabo/icons/method.png +0 -0
  98. dabo-2026.1.10/dabo/icons/new.png +0 -0
  99. dabo-2026.1.10/dabo/icons/open.png +0 -0
  100. dabo-2026.1.10/dabo/icons/paste.png +0 -0
  101. dabo-2026.1.10/dabo/icons/print.png +0 -0
  102. dabo-2026.1.10/dabo/icons/property.png +0 -0
  103. dabo-2026.1.10/dabo/icons/redo.png +0 -0
  104. dabo-2026.1.10/dabo/icons/refresh_tree.png +0 -0
  105. dabo-2026.1.10/dabo/icons/remove.png +0 -0
  106. dabo-2026.1.10/dabo/icons/requery.png +0 -0
  107. dabo-2026.1.10/dabo/icons/revert.png +0 -0
  108. dabo-2026.1.10/dabo/icons/rightArrow.png +0 -0
  109. dabo-2026.1.10/dabo/icons/rightArrows.png +0 -0
  110. dabo-2026.1.10/dabo/icons/rotateCCW.png +0 -0
  111. dabo-2026.1.10/dabo/icons/rotateCW.png +0 -0
  112. dabo-2026.1.10/dabo/icons/save.png +0 -0
  113. dabo-2026.1.10/dabo/icons/saveAs.png +0 -0
  114. dabo-2026.1.10/dabo/icons/show_sizers.png +0 -0
  115. dabo-2026.1.10/dabo/icons/themes/__init__.py +1 -0
  116. dabo-2026.1.10/dabo/icons/themes/tango/16x16/__init__.py +0 -0
  117. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/__init__.py +0 -0
  118. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/bookmark-new.png +0 -0
  119. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/contact-new.png +0 -0
  120. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/dialog-error.png +0 -0
  121. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/dialog-information.png +0 -0
  122. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/dialog-warning.png +0 -0
  123. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/document-new.png +0 -0
  124. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/document-open.png +0 -0
  125. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/document-print-preview.png +0 -0
  126. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/document-print.png +0 -0
  127. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/document-properties.png +0 -0
  128. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/document-save-as.png +0 -0
  129. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/document-save.png +0 -0
  130. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/edit-clear.png +0 -0
  131. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/edit-copy.png +0 -0
  132. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/edit-cut.png +0 -0
  133. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/edit-delete.png +0 -0
  134. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/edit-find-replace.png +0 -0
  135. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/edit-find.png +0 -0
  136. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/edit-paste.png +0 -0
  137. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/edit-redo.png +0 -0
  138. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/edit-select-all.png +0 -0
  139. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/edit-undo.png +0 -0
  140. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/folder-new.png +0 -0
  141. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/format-indent-less.png +0 -0
  142. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/format-indent-more.png +0 -0
  143. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/format-justify-center.png +0 -0
  144. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/format-justify-fill.png +0 -0
  145. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/format-justify-left.png +0 -0
  146. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/format-justify-right.png +0 -0
  147. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/format-text-bold.png +0 -0
  148. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/format-text-italic.png +0 -0
  149. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/format-text-strikethrough.png +0 -0
  150. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/format-text-underline.png +0 -0
  151. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/go-bottom.png +0 -0
  152. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/go-down.png +0 -0
  153. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/go-first.png +0 -0
  154. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/go-home.png +0 -0
  155. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/go-jump.png +0 -0
  156. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/go-last.png +0 -0
  157. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/go-next.png +0 -0
  158. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/go-previous.png +0 -0
  159. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/go-top.png +0 -0
  160. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/go-up.png +0 -0
  161. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/list-add.png +0 -0
  162. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/list-remove.png +0 -0
  163. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/mail-attachment.png +0 -0
  164. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/process-stop.png +0 -0
  165. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/software-update-available.png +0 -0
  166. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/software-update-urgent.png +0 -0
  167. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/system-lock-screen.png +0 -0
  168. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/system-log-out.png +0 -0
  169. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/system-search.png +0 -0
  170. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/system-shutdown.png +0 -0
  171. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/tab-new.png +0 -0
  172. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/view-fullscreen.png +0 -0
  173. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/view-refresh.png +0 -0
  174. dabo-2026.1.10/dabo/icons/themes/tango/16x16/actions/window-new.png +0 -0
  175. dabo-2026.1.10/dabo/icons/themes/tango/16x16/apps/__init__.py +0 -0
  176. dabo-2026.1.10/dabo/icons/themes/tango/16x16/apps/accessories-text-editor.png +0 -0
  177. dabo-2026.1.10/dabo/icons/themes/tango/16x16/apps/help-browser.png +0 -0
  178. dabo-2026.1.10/dabo/icons/themes/tango/16x16/apps/preferences-desktop-font.png +0 -0
  179. dabo-2026.1.10/dabo/icons/themes/tango/16x16/apps/utilities-terminal.png +0 -0
  180. dabo-2026.1.10/dabo/icons/themes/tango/16x16/categories/__init__.py +0 -0
  181. dabo-2026.1.10/dabo/icons/themes/tango/16x16/categories/preferences-system.png +0 -0
  182. dabo-2026.1.10/dabo/icons/themes/tango/22x22/__init__.py +0 -0
  183. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/__init__.py +0 -0
  184. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/bookmark-new.png +0 -0
  185. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/contact-new.png +0 -0
  186. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/dialog-error.png +0 -0
  187. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/dialog-information.png +0 -0
  188. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/dialog-warning.png +0 -0
  189. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/document-new.png +0 -0
  190. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/document-open.png +0 -0
  191. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/document-print-preview.png +0 -0
  192. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/document-print.png +0 -0
  193. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/document-properties.png +0 -0
  194. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/document-save-as.png +0 -0
  195. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/document-save.png +0 -0
  196. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/edit-clear.png +0 -0
  197. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/edit-copy.png +0 -0
  198. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/edit-cut.png +0 -0
  199. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/edit-delete.png +0 -0
  200. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/edit-find-replace.png +0 -0
  201. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/edit-find.png +0 -0
  202. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/edit-paste.png +0 -0
  203. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/edit-redo.png +0 -0
  204. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/edit-select-all.png +0 -0
  205. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/edit-undo.png +0 -0
  206. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/folder-new.png +0 -0
  207. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/format-indent-less.png +0 -0
  208. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/format-indent-more.png +0 -0
  209. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/format-justify-center.png +0 -0
  210. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/format-justify-fill.png +0 -0
  211. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/format-justify-left.png +0 -0
  212. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/format-justify-right.png +0 -0
  213. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/format-text-bold.png +0 -0
  214. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/format-text-italic.png +0 -0
  215. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/format-text-strikethrough.png +0 -0
  216. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/format-text-underline.png +0 -0
  217. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/go-bottom.png +0 -0
  218. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/go-down.png +0 -0
  219. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/go-first.png +0 -0
  220. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/go-home.png +0 -0
  221. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/go-jump.png +0 -0
  222. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/go-last.png +0 -0
  223. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/go-next.png +0 -0
  224. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/go-previous.png +0 -0
  225. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/go-top.png +0 -0
  226. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/go-up.png +0 -0
  227. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/list-add.png +0 -0
  228. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/list-remove.png +0 -0
  229. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/mail-attachment.png +0 -0
  230. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/process-stop.png +0 -0
  231. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/software-update-available.png +0 -0
  232. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/software-update-urgent.png +0 -0
  233. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/system-lock-screen.png +0 -0
  234. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/system-log-out.png +0 -0
  235. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/system-search.png +0 -0
  236. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/system-shutdown.png +0 -0
  237. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/tab-new.png +0 -0
  238. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/view-fullscreen.png +0 -0
  239. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/view-refresh.png +0 -0
  240. dabo-2026.1.10/dabo/icons/themes/tango/22x22/actions/window-new.png +0 -0
  241. dabo-2026.1.10/dabo/icons/themes/tango/22x22/apps/__init__.py +0 -0
  242. dabo-2026.1.10/dabo/icons/themes/tango/22x22/apps/accessories-text-editor.png +0 -0
  243. dabo-2026.1.10/dabo/icons/themes/tango/22x22/apps/help-browser.png +0 -0
  244. dabo-2026.1.10/dabo/icons/themes/tango/22x22/apps/preferences-desktop-font.png +0 -0
  245. dabo-2026.1.10/dabo/icons/themes/tango/22x22/apps/utilities-terminal.png +0 -0
  246. dabo-2026.1.10/dabo/icons/themes/tango/22x22/categories/__init__.py +0 -0
  247. dabo-2026.1.10/dabo/icons/themes/tango/22x22/categories/preferences-system.png +0 -0
  248. dabo-2026.1.10/dabo/icons/themes/tango/32x32/__init__.py +0 -0
  249. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/__init__.py +0 -0
  250. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/bookmark-new.png +0 -0
  251. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/contact-new.png +0 -0
  252. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/dialog-error.png +0 -0
  253. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/dialog-information.png +0 -0
  254. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/dialog-warning.png +0 -0
  255. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/document-new.png +0 -0
  256. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/document-open.png +0 -0
  257. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/document-print-preview.png +0 -0
  258. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/document-print.png +0 -0
  259. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/document-properties.png +0 -0
  260. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/document-save-as.png +0 -0
  261. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/document-save.png +0 -0
  262. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/edit-clear.png +0 -0
  263. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/edit-copy.png +0 -0
  264. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/edit-cut.png +0 -0
  265. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/edit-delete.png +0 -0
  266. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/edit-find-replace.png +0 -0
  267. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/edit-find.png +0 -0
  268. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/edit-paste.png +0 -0
  269. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/edit-redo.png +0 -0
  270. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/edit-select-all.png +0 -0
  271. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/edit-undo.png +0 -0
  272. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/folder-new.png +0 -0
  273. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/format-indent-less.png +0 -0
  274. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/format-indent-more.png +0 -0
  275. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/format-justify-center.png +0 -0
  276. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/format-justify-fill.png +0 -0
  277. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/format-justify-left.png +0 -0
  278. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/format-justify-right.png +0 -0
  279. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/format-text-bold.png +0 -0
  280. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/format-text-italic.png +0 -0
  281. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/format-text-strikethrough.png +0 -0
  282. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/format-text-underline.png +0 -0
  283. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/go-bottom.png +0 -0
  284. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/go-down.png +0 -0
  285. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/go-first.png +0 -0
  286. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/go-home.png +0 -0
  287. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/go-jump.png +0 -0
  288. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/go-last.png +0 -0
  289. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/go-next.png +0 -0
  290. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/go-previous.png +0 -0
  291. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/go-top.png +0 -0
  292. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/go-up.png +0 -0
  293. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/list-add.png +0 -0
  294. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/list-remove.png +0 -0
  295. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/mail-attachment.png +0 -0
  296. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/process-stop.png +0 -0
  297. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/software-update-available.png +0 -0
  298. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/software-update-urgent.png +0 -0
  299. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/system-lock-screen.png +0 -0
  300. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/system-log-out.png +0 -0
  301. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/system-search.png +0 -0
  302. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/system-shutdown.png +0 -0
  303. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/tab-new.png +0 -0
  304. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/view-fullscreen.png +0 -0
  305. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/view-refresh.png +0 -0
  306. dabo-2026.1.10/dabo/icons/themes/tango/32x32/actions/window-new.png +0 -0
  307. dabo-2026.1.10/dabo/icons/themes/tango/32x32/apps/__init__.py +0 -0
  308. dabo-2026.1.10/dabo/icons/themes/tango/32x32/apps/accessories-text-editor.png +0 -0
  309. dabo-2026.1.10/dabo/icons/themes/tango/32x32/apps/help-browser.png +0 -0
  310. dabo-2026.1.10/dabo/icons/themes/tango/32x32/apps/preferences-desktop-font.png +0 -0
  311. dabo-2026.1.10/dabo/icons/themes/tango/32x32/apps/utilities-terminal.png +0 -0
  312. dabo-2026.1.10/dabo/icons/themes/tango/32x32/categories/__init__.py +0 -0
  313. dabo-2026.1.10/dabo/icons/themes/tango/32x32/categories/preferences-system.png +0 -0
  314. dabo-2026.1.10/dabo/icons/themes/tango/AUTHORS +9 -0
  315. dabo-2026.1.10/dabo/icons/themes/tango/COPYING +67 -0
  316. dabo-2026.1.10/dabo/icons/themes/tango/README +7 -0
  317. dabo-2026.1.10/dabo/icons/themes/tango/__init__.py +0 -0
  318. dabo-2026.1.10/dabo/icons/trash.png +0 -0
  319. dabo-2026.1.10/dabo/icons/undo.png +0 -0
  320. dabo-2026.1.10/dabo/icons/upArrow.png +0 -0
  321. dabo-2026.1.10/dabo/icons/upTriangleBlack.png +0 -0
  322. dabo-2026.1.10/dabo/icons/zoomIn.png +0 -0
  323. dabo-2026.1.10/dabo/icons/zoomNormal.png +0 -0
  324. dabo-2026.1.10/dabo/icons/zoomOut.png +0 -0
  325. dabo-2026.1.10/dabo/lib/DesignerClassConverter.py +1108 -0
  326. dabo-2026.1.10/dabo/lib/DesignerUtils.py +381 -0
  327. dabo-2026.1.10/dabo/lib/EasyDialogBuilder.py +406 -0
  328. dabo-2026.1.10/dabo/lib/RemoteConnector.py +410 -0
  329. dabo-2026.1.10/dabo/lib/StopWatch.py +72 -0
  330. dabo-2026.1.10/dabo/lib/__init__.py +17 -0
  331. dabo-2026.1.10/dabo/lib/caselessDict.py +84 -0
  332. dabo-2026.1.10/dabo/lib/connParser.py +205 -0
  333. dabo-2026.1.10/dabo/lib/datanav/Bizobj.py +83 -0
  334. dabo-2026.1.10/dabo/lib/datanav/Form.py +1351 -0
  335. dabo-2026.1.10/dabo/lib/datanav/Grid.py +158 -0
  336. dabo-2026.1.10/dabo/lib/datanav/Page.py +637 -0
  337. dabo-2026.1.10/dabo/lib/datanav/PageFrame.py +79 -0
  338. dabo-2026.1.10/dabo/lib/datanav/__init__.py +41 -0
  339. dabo-2026.1.10/dabo/lib/dates.py +310 -0
  340. dabo-2026.1.10/dabo/lib/encryption.py +104 -0
  341. dabo-2026.1.10/dabo/lib/logger.py +99 -0
  342. dabo-2026.1.10/dabo/lib/manifest.py +113 -0
  343. dabo-2026.1.10/dabo/lib/profilehooks.py +626 -0
  344. dabo-2026.1.10/dabo/lib/propertyHelperMixin.py +446 -0
  345. dabo-2026.1.10/dabo/lib/reportUtils.py +167 -0
  346. dabo-2026.1.10/dabo/lib/reportWriter.py +3589 -0
  347. dabo-2026.1.10/dabo/lib/reporting_stefano/__init__.py +1 -0
  348. dabo-2026.1.10/dabo/lib/reporting_stefano/objects.py +251 -0
  349. dabo-2026.1.10/dabo/lib/reporting_stefano/report.py +216 -0
  350. dabo-2026.1.10/dabo/lib/reporting_stefano/run.py +18 -0
  351. dabo-2026.1.10/dabo/lib/reporting_stefano/samplespec.rfxml +159 -0
  352. dabo-2026.1.10/dabo/lib/reporting_stefano/serialization/__init__.py +9 -0
  353. dabo-2026.1.10/dabo/lib/reporting_stefano/serialization/attributes.py +82 -0
  354. dabo-2026.1.10/dabo/lib/reporting_stefano/serialization/children.py +56 -0
  355. dabo-2026.1.10/dabo/lib/reporting_stefano/serialization/serialization.py +87 -0
  356. dabo-2026.1.10/dabo/lib/reporting_stefano/serialization/xmlserializer.py +90 -0
  357. dabo-2026.1.10/dabo/lib/reporting_stefano/util.py +33 -0
  358. dabo-2026.1.10/dabo/lib/reporting_tests/invoice_demo/bizcard01_medium.jpg +0 -0
  359. dabo-2026.1.10/dabo/lib/reporting_tests/invoice_demo/invoice.py +33 -0
  360. dabo-2026.1.10/dabo/lib/reporting_tests/invoice_demo/invoice.rfxml +695 -0
  361. dabo-2026.1.10/dabo/lib/reporting_tests/invoice_demo/invoice_progressControl.py +50 -0
  362. dabo-2026.1.10/dabo/lib/reporting_tests/invoice_demo/logo_2cannisters_medium.jpg +0 -0
  363. dabo-2026.1.10/dabo/lib/specParser.py +101 -0
  364. dabo-2026.1.10/dabo/lib/test/test_dates.py +89 -0
  365. dabo-2026.1.10/dabo/lib/test/test_utils.py +87 -0
  366. dabo-2026.1.10/dabo/lib/untabify.py +58 -0
  367. dabo-2026.1.10/dabo/lib/utils.py +528 -0
  368. dabo-2026.1.10/dabo/lib/xmltodict.py +457 -0
  369. dabo-2026.1.10/dabo/locale/ar/LC_MESSAGES/dabo.po +7140 -0
  370. dabo-2026.1.10/dabo/locale/ca/LC_MESSAGES/dabo.po +7041 -0
  371. dabo-2026.1.10/dabo/locale/cs/LC_MESSAGES/dabo.po +7172 -0
  372. dabo-2026.1.10/dabo/locale/dabo.pot +7036 -0
  373. dabo-2026.1.10/dabo/locale/de/LC_MESSAGES/dabo.po +8000 -0
  374. dabo-2026.1.10/dabo/locale/el/LC_MESSAGES/dabo.po +7061 -0
  375. dabo-2026.1.10/dabo/locale/en/LC_MESSAGES/dabo.po +5582 -0
  376. dabo-2026.1.10/dabo/locale/en_GB/LC_MESSAGES/dabo.po +7205 -0
  377. dabo-2026.1.10/dabo/locale/es/LC_MESSAGES/dabo.po +7468 -0
  378. dabo-2026.1.10/dabo/locale/fi/LC_MESSAGES/dabo.po +7121 -0
  379. dabo-2026.1.10/dabo/locale/fr/LC_MESSAGES/dabo.po +7071 -0
  380. dabo-2026.1.10/dabo/locale/hi/LC_MESSAGES/dabo.po +7040 -0
  381. dabo-2026.1.10/dabo/locale/hu/LC_MESSAGES/dabo.po +7040 -0
  382. dabo-2026.1.10/dabo/locale/id/LC_MESSAGES/dabo.po +7047 -0
  383. dabo-2026.1.10/dabo/locale/it/LC_MESSAGES/dabo.po +7122 -0
  384. dabo-2026.1.10/dabo/locale/ja/LC_MESSAGES/dabo.po +7040 -0
  385. dabo-2026.1.10/dabo/locale/lv/LC_MESSAGES/dabo.po +7040 -0
  386. dabo-2026.1.10/dabo/locale/nl/LC_MESSAGES/dabo.po +7088 -0
  387. dabo-2026.1.10/dabo/locale/oc/LC_MESSAGES/dabo.po +7040 -0
  388. dabo-2026.1.10/dabo/locale/pl/LC_MESSAGES/dabo.po +7049 -0
  389. dabo-2026.1.10/dabo/locale/pt/LC_MESSAGES/dabo.po +5586 -0
  390. dabo-2026.1.10/dabo/locale/pt_BR/LC_MESSAGES/dabo.po +7058 -0
  391. dabo-2026.1.10/dabo/locale/ro/LC_MESSAGES/dabo.po +7114 -0
  392. dabo-2026.1.10/dabo/locale/ru/LC_MESSAGES/dabo.po +7113 -0
  393. dabo-2026.1.10/dabo/locale/sv/LC_MESSAGES/dabo.po +7040 -0
  394. dabo-2026.1.10/dabo/locale/th/LC_MESSAGES/dabo.po +7040 -0
  395. dabo-2026.1.10/dabo/locale/tr/LC_MESSAGES/dabo.po +7040 -0
  396. dabo-2026.1.10/dabo/locale/zh_CN/LC_MESSAGES/dabo.po +7083 -0
  397. dabo-2026.1.10/dabo/localization.py +267 -0
  398. dabo-2026.1.10/dabo/logging.conf.sample +56 -0
  399. dabo-2026.1.10/dabo/main.py +156 -0
  400. dabo-2026.1.10/dabo/preference_mgr.py +569 -0
  401. dabo-2026.1.10/dabo/report_writer.py +200 -0
  402. dabo-2026.1.10/dabo/security_manager.py +199 -0
  403. dabo-2026.1.10/dabo/settings.py +483 -0
  404. dabo-2026.1.10/dabo/ui/__init__.py +2433 -0
  405. dabo-2026.1.10/dabo/ui/activity_indicator.py +96 -0
  406. dabo-2026.1.10/dabo/ui/alignment_mixin.py +46 -0
  407. dabo-2026.1.10/dabo/ui/auto_complete.py +858 -0
  408. dabo-2026.1.10/dabo/ui/base_menu_bar.py +285 -0
  409. dabo-2026.1.10/dabo/ui/bitmap.py +47 -0
  410. dabo-2026.1.10/dabo/ui/bitmap_button.py +246 -0
  411. dabo-2026.1.10/dabo/ui/border_sizer.py +175 -0
  412. dabo-2026.1.10/dabo/ui/borderless_button.py +179 -0
  413. dabo-2026.1.10/dabo/ui/box.py +43 -0
  414. dabo-2026.1.10/dabo/ui/button.py +376 -0
  415. dabo-2026.1.10/dabo/ui/check_box.py +164 -0
  416. dabo-2026.1.10/dabo/ui/check_list.py +122 -0
  417. dabo-2026.1.10/dabo/ui/collapsible_panel.py +132 -0
  418. dabo-2026.1.10/dabo/ui/color_dialog.py +58 -0
  419. dabo-2026.1.10/dabo/ui/combo_box.py +311 -0
  420. dabo-2026.1.10/dabo/ui/concordance.py +41 -0
  421. dabo-2026.1.10/dabo/ui/control_item_mixin.py +480 -0
  422. dabo-2026.1.10/dabo/ui/control_mixin.py +63 -0
  423. dabo-2026.1.10/dabo/ui/data_control_mixin.py +646 -0
  424. dabo-2026.1.10/dabo/ui/date_picker.py +400 -0
  425. dabo-2026.1.10/dabo/ui/date_text_box.py +495 -0
  426. dabo-2026.1.10/dabo/ui/dialog.py +658 -0
  427. dabo-2026.1.10/dabo/ui/dialogs/HotKeyEditor.py +133 -0
  428. dabo-2026.1.10/dabo/ui/dialogs/PreferenceDialog.py +402 -0
  429. dabo-2026.1.10/dabo/ui/dialogs/SortingForm.py +78 -0
  430. dabo-2026.1.10/dabo/ui/dialogs/Wizard.py +518 -0
  431. dabo-2026.1.10/dabo/ui/dialogs/WizardPage.py +200 -0
  432. dabo-2026.1.10/dabo/ui/dialogs/__init__.py +11 -0
  433. dabo-2026.1.10/dabo/ui/dialogs/about.py +105 -0
  434. dabo-2026.1.10/dabo/ui/dialogs/htmlAbout.py +105 -0
  435. dabo-2026.1.10/dabo/ui/dialogs/infoMessage.py +73 -0
  436. dabo-2026.1.10/dabo/ui/dialogs/login.py +140 -0
  437. dabo-2026.1.10/dabo/ui/dock_form.py +1093 -0
  438. dabo-2026.1.10/dabo/ui/dropdown_list.py +70 -0
  439. dabo-2026.1.10/dabo/ui/edit_box.py +135 -0
  440. dabo-2026.1.10/dabo/ui/editable_list.py +225 -0
  441. dabo-2026.1.10/dabo/ui/editor.py +2685 -0
  442. dabo-2026.1.10/dabo/ui/file_dialog.py +180 -0
  443. dabo-2026.1.10/dabo/ui/font.py +177 -0
  444. dabo-2026.1.10/dabo/ui/font_dialog.py +39 -0
  445. dabo-2026.1.10/dabo/ui/form.py +1276 -0
  446. dabo-2026.1.10/dabo/ui/form_main.py +65 -0
  447. dabo-2026.1.10/dabo/ui/form_mixin.py +1332 -0
  448. dabo-2026.1.10/dabo/ui/gauge.py +144 -0
  449. dabo-2026.1.10/dabo/ui/gl_window.py +240 -0
  450. dabo-2026.1.10/dabo/ui/grid.py +5693 -0
  451. dabo-2026.1.10/dabo/ui/grid_renderers.py +247 -0
  452. dabo-2026.1.10/dabo/ui/grid_sizer.py +683 -0
  453. dabo-2026.1.10/dabo/ui/html_box.py +353 -0
  454. dabo-2026.1.10/dabo/ui/hyper_link.py +229 -0
  455. dabo-2026.1.10/dabo/ui/image.py +570 -0
  456. dabo-2026.1.10/dabo/ui/image_mixin.py +131 -0
  457. dabo-2026.1.10/dabo/ui/keys.py +288 -0
  458. dabo-2026.1.10/dabo/ui/label.py +213 -0
  459. dabo-2026.1.10/dabo/ui/led.py +151 -0
  460. dabo-2026.1.10/dabo/ui/line.py +84 -0
  461. dabo-2026.1.10/dabo/ui/line_plot.py +584 -0
  462. dabo-2026.1.10/dabo/ui/list_box.py +113 -0
  463. dabo-2026.1.10/dabo/ui/list_control.py +889 -0
  464. dabo-2026.1.10/dabo/ui/masked_text_box.py +610 -0
  465. dabo-2026.1.10/dabo/ui/media_control.py +395 -0
  466. dabo-2026.1.10/dabo/ui/menu.py +642 -0
  467. dabo-2026.1.10/dabo/ui/menu_bar.py +213 -0
  468. dabo-2026.1.10/dabo/ui/menu_item.py +298 -0
  469. dabo-2026.1.10/dabo/ui/message_box.py +265 -0
  470. dabo-2026.1.10/dabo/ui/numeric_box.py +422 -0
  471. dabo-2026.1.10/dabo/ui/object_inspector.py +803 -0
  472. dabo-2026.1.10/dabo/ui/page.py +161 -0
  473. dabo-2026.1.10/dabo/ui/page_frame.py +851 -0
  474. dabo-2026.1.10/dabo/ui/page_frame_mixin.py +528 -0
  475. dabo-2026.1.10/dabo/ui/page_frame_no_tabs.py +357 -0
  476. dabo-2026.1.10/dabo/ui/panel.py +537 -0
  477. dabo-2026.1.10/dabo/ui/pdf_window.py +71 -0
  478. dabo-2026.1.10/dabo/ui/pem_mixin.py +4436 -0
  479. dabo-2026.1.10/dabo/ui/progress_dialog.py +130 -0
  480. dabo-2026.1.10/dabo/ui/radio_list.py +643 -0
  481. dabo-2026.1.10/dabo/ui/report_progress.py +91 -0
  482. dabo-2026.1.10/dabo/ui/rich_text_box.py +658 -0
  483. dabo-2026.1.10/dabo/ui/search_box.py +235 -0
  484. dabo-2026.1.10/dabo/ui/shell.py +900 -0
  485. dabo-2026.1.10/dabo/ui/sizer.py +75 -0
  486. dabo-2026.1.10/dabo/ui/sizer_mixin.py +1140 -0
  487. dabo-2026.1.10/dabo/ui/slide_panel_control.py +952 -0
  488. dabo-2026.1.10/dabo/ui/slider.py +230 -0
  489. dabo-2026.1.10/dabo/ui/spinner.py +548 -0
  490. dabo-2026.1.10/dabo/ui/split_form.py +124 -0
  491. dabo-2026.1.10/dabo/ui/splitter.py +512 -0
  492. dabo-2026.1.10/dabo/ui/status_bar.py +63 -0
  493. dabo-2026.1.10/dabo/ui/test.py +167 -0
  494. dabo-2026.1.10/dabo/ui/test_dEditBox.py +44 -0
  495. dabo-2026.1.10/dabo/ui/test_dForm.py +127 -0
  496. dabo-2026.1.10/dabo/ui/test_dTextBox.py +139 -0
  497. dabo-2026.1.10/dabo/ui/text_box.py +119 -0
  498. dabo-2026.1.10/dabo/ui/text_box_mixin.py +906 -0
  499. dabo-2026.1.10/dabo/ui/timer.py +118 -0
  500. dabo-2026.1.10/dabo/ui/toggle_button.py +128 -0
  501. dabo-2026.1.10/dabo/ui/tool_bar.py +648 -0
  502. dabo-2026.1.10/dabo/ui/tree_view.py +1435 -0
  503. dabo-2026.1.10/dabo/ui/uiApp.py +1338 -0
  504. dabo-2026.1.10/dabo/ui/ui_calendar.py +409 -0
  505. dabo-2026.1.10/dabo/ui/ui_cursors.py +34 -0
  506. dabo-2026.1.10/dabo/user_setting_provider.py +67 -0
  507. dabo-2026.1.10/dabo/version.py +14 -0
  508. dabo-2026.1.10/format.sh +2 -0
  509. dabo-2026.1.10/junk.sh +31 -0
  510. dabo-2026.1.10/playground.py +250 -0
  511. dabo-2026.1.10/pyproject.toml +66 -0
  512. dabo-2026.1.10/requirements.txt +11 -0
  513. dabo-2026.1.10/setup.py +82 -0
  514. dabo-2026.1.10/sizerlines.py +88 -0
  515. dabo-2026.1.10/tests/ModuleInitTemplate.py +18 -0
  516. dabo-2026.1.10/tests/TestCaseTemplate.py +21 -0
  517. dabo-2026.1.10/tests/unitTests/CoverageReport.py +27 -0
  518. dabo-2026.1.10/tests/unitTests/Test_color_tools.py +316 -0
  519. dabo-2026.1.10/tests/unitTests/Test_dObject.py +213 -0
  520. dabo-2026.1.10/tests/unitTests/biz/__init__.py +18 -0
  521. dabo-2026.1.10/tests/unitTests/db/__init__.py +18 -0
  522. dabo-2026.1.10/tests/unitTests/lib/__init__.py +18 -0
  523. dabo-2026.1.10/tests/unitTests/masterTestSuite.py +52 -0
  524. dabo-2026.1.10/tests/unitTests/ui/UIwx/Test_dTextBox.py +119 -0
  525. dabo-2026.1.10/tests/unitTests/ui/UIwx/__init__.py +21 -0
  526. dabo-2026.1.10/tests/unitTests/ui/__init__.py +20 -0
  527. dabo-2026.1.10/tools/extractLoc.py +135 -0
  528. dabo-2026.1.10/tools/genpot.py +40 -0
  529. dabo-2026.1.10/tools/remove_dLocalize.py +37 -0
  530. dabo-2026.1.10/tools/reportMixedIndentation.py +39 -0
  531. dabo-2026.1.10/tools/run_all_tests.py +13 -0
  532. dabo-2026.1.10/uv.lock +707 -0
  533. dabo-2026.1.10/vendor/pymssql/pymssql.py +382 -0
  534. dabo-2026.1.10/vendor/pymssql/readme +3 -0
  535. dabo-2026.1.10/win_setup.bat +3 -0
@@ -0,0 +1,10 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(uv run python:*)",
5
+ "Bash(python3:*)",
6
+ "Bash(grep:*)",
7
+ "Bash(cat:*)"
8
+ ]
9
+ }
10
+ }
@@ -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
@@ -0,0 +1,3 @@
1
+ recursive-include dabo/locale *.pot
2
+ recursive-include dabo/locale *.po
3
+ recursive-include dabo/locale *.mo
@@ -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)
@@ -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)