wxPython 4.3.2__cp315-cp315-win_amd64.whl

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 (472) hide show
  1. wx/WebView2Loader.dll +0 -0
  2. wx/__init__.py +22 -0
  3. wx/__init__.pyi +10 -0
  4. wx/__version__.py +9 -0
  5. wx/__version__.pyi +15 -0
  6. wx/_adv.cp315-win_amd64.pyd +0 -0
  7. wx/_aui.cp315-win_amd64.pyd +0 -0
  8. wx/_core.cp315-win_amd64.pyd +0 -0
  9. wx/_dataview.cp315-win_amd64.pyd +0 -0
  10. wx/_glcanvas.cp315-win_amd64.pyd +0 -0
  11. wx/_grid.cp315-win_amd64.pyd +0 -0
  12. wx/_html.cp315-win_amd64.pyd +0 -0
  13. wx/_html2.cp315-win_amd64.pyd +0 -0
  14. wx/_media.cp315-win_amd64.pyd +0 -0
  15. wx/_msw.cp315-win_amd64.pyd +0 -0
  16. wx/_propgrid.cp315-win_amd64.pyd +0 -0
  17. wx/_ribbon.cp315-win_amd64.pyd +0 -0
  18. wx/_richtext.cp315-win_amd64.pyd +0 -0
  19. wx/_stc.cp315-win_amd64.pyd +0 -0
  20. wx/_xml.cp315-win_amd64.pyd +0 -0
  21. wx/_xrc.cp315-win_amd64.pyd +0 -0
  22. wx/adv.py +127 -0
  23. wx/adv.pyi +5931 -0
  24. wx/aui.py +70 -0
  25. wx/aui.pyi +4805 -0
  26. wx/core.py +3417 -0
  27. wx/core.pyi +62949 -0
  28. wx/dataview.py +176 -0
  29. wx/dataview.pyi +3828 -0
  30. wx/gizmos.py +18 -0
  31. wx/glcanvas.py +13 -0
  32. wx/glcanvas.pyi +544 -0
  33. wx/grid.py +237 -0
  34. wx/grid.pyi +5678 -0
  35. wx/html.py +38 -0
  36. wx/html.pyi +3283 -0
  37. wx/html2.py +46 -0
  38. wx/html2.pyi +1301 -0
  39. wx/include/wxPython/sip.h +1938 -0
  40. wx/include/wxPython/wxpy_api.h +418 -0
  41. wx/lib/CDate.py +201 -0
  42. wx/lib/ClickableHtmlWindow.py +57 -0
  43. wx/lib/__init__.py +0 -0
  44. wx/lib/activex.py +178 -0
  45. wx/lib/activexwrapper.py +153 -0
  46. wx/lib/agw/__init__.py +128 -0
  47. wx/lib/agw/advancedsplash.py +563 -0
  48. wx/lib/agw/aquabutton.py +1127 -0
  49. wx/lib/agw/artmanager.py +2110 -0
  50. wx/lib/agw/aui/__init__.py +295 -0
  51. wx/lib/agw/aui/aui_constants.py +2616 -0
  52. wx/lib/agw/aui/aui_switcherdialog.py +1232 -0
  53. wx/lib/agw/aui/aui_utilities.py +648 -0
  54. wx/lib/agw/aui/auibar.py +4045 -0
  55. wx/lib/agw/aui/auibook.py +6288 -0
  56. wx/lib/agw/aui/dockart.py +1198 -0
  57. wx/lib/agw/aui/framemanager.py +10485 -0
  58. wx/lib/agw/aui/tabart.py +2749 -0
  59. wx/lib/agw/aui/tabmdi.py +679 -0
  60. wx/lib/agw/balloontip.py +1157 -0
  61. wx/lib/agw/buttonpanel.py +2787 -0
  62. wx/lib/agw/cubecolourdialog.py +3529 -0
  63. wx/lib/agw/customtreectrl.py +9908 -0
  64. wx/lib/agw/data/ShortcutEditor_1.png +0 -0
  65. wx/lib/agw/data/ShortcutEditor_1_thumb.png +0 -0
  66. wx/lib/agw/data/ShortcutEditor_2.png +0 -0
  67. wx/lib/agw/data/ShortcutEditor_2_thumb.png +0 -0
  68. wx/lib/agw/data/ShortcutEditor_3.png +0 -0
  69. wx/lib/agw/data/ShortcutEditor_3_thumb.png +0 -0
  70. wx/lib/agw/data/ShortcutEditor_4.png +0 -0
  71. wx/lib/agw/data/ShortcutEditor_4_thumb.png +0 -0
  72. wx/lib/agw/data/default_help_text.html +105 -0
  73. wx/lib/agw/flatmenu.py +7392 -0
  74. wx/lib/agw/flatnotebook.py +6669 -0
  75. wx/lib/agw/floatspin.py +1820 -0
  76. wx/lib/agw/fmcustomizedlg.py +535 -0
  77. wx/lib/agw/fmresources.py +407 -0
  78. wx/lib/agw/foldpanelbar.py +2282 -0
  79. wx/lib/agw/fourwaysplitter.py +1130 -0
  80. wx/lib/agw/genericmessagedialog.py +1549 -0
  81. wx/lib/agw/gradientbutton.py +731 -0
  82. wx/lib/agw/hyperlink.py +664 -0
  83. wx/lib/agw/hypertreelist.py +5756 -0
  84. wx/lib/agw/infobar.py +885 -0
  85. wx/lib/agw/knobctrl.py +944 -0
  86. wx/lib/agw/labelbook.py +3028 -0
  87. wx/lib/agw/multidirdialog.py +581 -0
  88. wx/lib/agw/peakmeter.py +1028 -0
  89. wx/lib/agw/persist/__init__.py +188 -0
  90. wx/lib/agw/persist/persist_constants.py +283 -0
  91. wx/lib/agw/persist/persist_handlers.py +2614 -0
  92. wx/lib/agw/persist/persistencemanager.py +863 -0
  93. wx/lib/agw/piectrl.py +1082 -0
  94. wx/lib/agw/pybusyinfo.py +399 -0
  95. wx/lib/agw/pycollapsiblepane.py +940 -0
  96. wx/lib/agw/pygauge.py +570 -0
  97. wx/lib/agw/pyprogress.py +916 -0
  98. wx/lib/agw/ribbon/__init__.py +198 -0
  99. wx/lib/agw/ribbon/art.py +219 -0
  100. wx/lib/agw/ribbon/art_aui.py +1283 -0
  101. wx/lib/agw/ribbon/art_default.py +81 -0
  102. wx/lib/agw/ribbon/art_internal.py +248 -0
  103. wx/lib/agw/ribbon/art_msw.py +2735 -0
  104. wx/lib/agw/ribbon/art_osx.py +52 -0
  105. wx/lib/agw/ribbon/bar.py +1259 -0
  106. wx/lib/agw/ribbon/buttonbar.py +1317 -0
  107. wx/lib/agw/ribbon/control.py +205 -0
  108. wx/lib/agw/ribbon/gallery.py +973 -0
  109. wx/lib/agw/ribbon/page.py +946 -0
  110. wx/lib/agw/ribbon/panel.py +1170 -0
  111. wx/lib/agw/ribbon/toolbar.py +1441 -0
  112. wx/lib/agw/rulerctrl.py +1885 -0
  113. wx/lib/agw/scrolledthumbnail.py +2116 -0
  114. wx/lib/agw/shapedbutton.py +1809 -0
  115. wx/lib/agw/shortcuteditor.py +2642 -0
  116. wx/lib/agw/speedmeter.py +1800 -0
  117. wx/lib/agw/supertooltip.py +1443 -0
  118. wx/lib/agw/thumbnailctrl.py +529 -0
  119. wx/lib/agw/toasterbox.py +1327 -0
  120. wx/lib/agw/ultimatelistctrl.py +13671 -0
  121. wx/lib/agw/xlsgrid.py +2111 -0
  122. wx/lib/agw/zoombar.py +1336 -0
  123. wx/lib/analogclock/__init__.py +140 -0
  124. wx/lib/analogclock/analogclock.py +630 -0
  125. wx/lib/analogclock/helpers.py +986 -0
  126. wx/lib/analogclock/lib_setup/__init__.py +0 -0
  127. wx/lib/analogclock/lib_setup/buttontreectrlpanel.py +297 -0
  128. wx/lib/analogclock/lib_setup/fontselect.py +57 -0
  129. wx/lib/analogclock/setup.py +490 -0
  130. wx/lib/analogclock/styles.py +47 -0
  131. wx/lib/anchors.py +103 -0
  132. wx/lib/art/__init__.py +4 -0
  133. wx/lib/art/flagart.py +1583 -0
  134. wx/lib/art/img2pyartprov.py +56 -0
  135. wx/lib/busy.py +152 -0
  136. wx/lib/buttons.py +1140 -0
  137. wx/lib/calendar.py +1596 -0
  138. wx/lib/checkbox.py +837 -0
  139. wx/lib/colourchooser/__init__.py +36 -0
  140. wx/lib/colourchooser/canvas.py +145 -0
  141. wx/lib/colourchooser/intl.py +24 -0
  142. wx/lib/colourchooser/pycolourbox.py +89 -0
  143. wx/lib/colourchooser/pycolourchooser.py +626 -0
  144. wx/lib/colourchooser/pycolourslider.py +98 -0
  145. wx/lib/colourchooser/pypalette.py +208 -0
  146. wx/lib/colourdb.py +740 -0
  147. wx/lib/colourselect.py +385 -0
  148. wx/lib/colourutils.py +118 -0
  149. wx/lib/combotreebox.py +944 -0
  150. wx/lib/delayedresult.py +420 -0
  151. wx/lib/dialogs.py +510 -0
  152. wx/lib/docview.py +3210 -0
  153. wx/lib/dragscroller.py +79 -0
  154. wx/lib/editor/README.txt +77 -0
  155. wx/lib/editor/__init__.py +24 -0
  156. wx/lib/editor/editor.py +974 -0
  157. wx/lib/editor/images.py +15 -0
  158. wx/lib/editor/selection.py +44 -0
  159. wx/lib/embeddedimage.py +76 -0
  160. wx/lib/eventStack.py +136 -0
  161. wx/lib/eventwatcher.py +440 -0
  162. wx/lib/evtmgr.py +521 -0
  163. wx/lib/expando.py +393 -0
  164. wx/lib/fancytext.py +494 -0
  165. wx/lib/filebrowsebutton.py +461 -0
  166. wx/lib/flashwin.py +262 -0
  167. wx/lib/flashwin_old.py +651 -0
  168. wx/lib/floatcanvas/FCEvents.py +53 -0
  169. wx/lib/floatcanvas/FCObjects.py +2910 -0
  170. wx/lib/floatcanvas/FloatCanvas.py +1025 -0
  171. wx/lib/floatcanvas/GUIMode.py +396 -0
  172. wx/lib/floatcanvas/NavCanvas.py +162 -0
  173. wx/lib/floatcanvas/Resources.py +319 -0
  174. wx/lib/floatcanvas/ScreenShot.py +1788 -0
  175. wx/lib/floatcanvas/Utilities/BBox.py +313 -0
  176. wx/lib/floatcanvas/Utilities/Colors.py +137 -0
  177. wx/lib/floatcanvas/Utilities/GUI.py +91 -0
  178. wx/lib/floatcanvas/Utilities/__init__.py +7 -0
  179. wx/lib/floatcanvas/__init__.py +124 -0
  180. wx/lib/foldmenu.py +89 -0
  181. wx/lib/gestures.py +310 -0
  182. wx/lib/gizmos/__init__.py +18 -0
  183. wx/lib/gizmos/dynamicsash.py +1202 -0
  184. wx/lib/gizmos/ledctrl.py +299 -0
  185. wx/lib/gizmos/treelistctrl.py +87 -0
  186. wx/lib/graphics.py +1942 -0
  187. wx/lib/gridmovers.py +516 -0
  188. wx/lib/iewin.py +249 -0
  189. wx/lib/iewin_old.py +894 -0
  190. wx/lib/imagebrowser.py +853 -0
  191. wx/lib/imageutils.py +163 -0
  192. wx/lib/infoframe.py +490 -0
  193. wx/lib/inspection.py +1254 -0
  194. wx/lib/intctrl.py +990 -0
  195. wx/lib/itemspicker.py +256 -0
  196. wx/lib/langlistctrl.py +480 -0
  197. wx/lib/layoutf.py +271 -0
  198. wx/lib/masked/__init__.py +27 -0
  199. wx/lib/masked/combobox.py +839 -0
  200. wx/lib/masked/ctrl.py +108 -0
  201. wx/lib/masked/ipaddrctrl.py +241 -0
  202. wx/lib/masked/maskededit.py +7262 -0
  203. wx/lib/masked/numctrl.py +2000 -0
  204. wx/lib/masked/textctrl.py +465 -0
  205. wx/lib/masked/timectrl.py +1465 -0
  206. wx/lib/mixins/__init__.py +17 -0
  207. wx/lib/mixins/grid.py +47 -0
  208. wx/lib/mixins/gridlabelrenderer.py +277 -0
  209. wx/lib/mixins/imagelist.py +77 -0
  210. wx/lib/mixins/inspection.py +184 -0
  211. wx/lib/mixins/listctrl.py +893 -0
  212. wx/lib/mixins/rubberband.py +403 -0
  213. wx/lib/mixins/treemixin.py +678 -0
  214. wx/lib/msgpanel.py +95 -0
  215. wx/lib/multisash.py +746 -0
  216. wx/lib/myole4ax.idl +178 -0
  217. wx/lib/myole4ax.tlb +0 -0
  218. wx/lib/newevent.py +229 -0
  219. wx/lib/newevent.pyi +25 -0
  220. wx/lib/nvdlg.py +156 -0
  221. wx/lib/ogl/__init__.py +13 -0
  222. wx/lib/ogl/basic.py +3989 -0
  223. wx/lib/ogl/bmpshape.py +86 -0
  224. wx/lib/ogl/canvas.py +467 -0
  225. wx/lib/ogl/composit.py +1576 -0
  226. wx/lib/ogl/diagram.py +230 -0
  227. wx/lib/ogl/divided.py +482 -0
  228. wx/lib/ogl/drawn.py +898 -0
  229. wx/lib/ogl/lines.py +1809 -0
  230. wx/lib/ogl/oglmisc.py +607 -0
  231. wx/lib/pdfviewer/__init__.py +113 -0
  232. wx/lib/pdfviewer/bitmaps/ArrowLeft.png +0 -0
  233. wx/lib/pdfviewer/bitmaps/ArrowRight.png +0 -0
  234. wx/lib/pdfviewer/bitmaps/DirectionH.png +0 -0
  235. wx/lib/pdfviewer/bitmaps/DirectionV.png +0 -0
  236. wx/lib/pdfviewer/bitmaps/PlayerFirst.png +0 -0
  237. wx/lib/pdfviewer/bitmaps/PlayerLast.png +0 -0
  238. wx/lib/pdfviewer/bitmaps/PlayerNext.png +0 -0
  239. wx/lib/pdfviewer/bitmaps/PlayerPrev.png +0 -0
  240. wx/lib/pdfviewer/bitmaps/Printer.png +0 -0
  241. wx/lib/pdfviewer/bitmaps/ReadMe.txt +28 -0
  242. wx/lib/pdfviewer/bitmaps/Save.png +0 -0
  243. wx/lib/pdfviewer/bitmaps/ZoomIn.png +0 -0
  244. wx/lib/pdfviewer/bitmaps/ZoomOut.png +0 -0
  245. wx/lib/pdfviewer/bitmaps/encode_bitmaps.py +37 -0
  246. wx/lib/pdfviewer/buttonpanel.py +285 -0
  247. wx/lib/pdfviewer/images.py +240 -0
  248. wx/lib/pdfviewer/viewer.py +1118 -0
  249. wx/lib/pdfwin.py +295 -0
  250. wx/lib/pdfwin_old.py +789 -0
  251. wx/lib/platebtn.py +789 -0
  252. wx/lib/plot/CHANGELOG.md +150 -0
  253. wx/lib/plot/README.md +16 -0
  254. wx/lib/plot/__init__.py +46 -0
  255. wx/lib/plot/__main__.py +5 -0
  256. wx/lib/plot/examples/__init__.py +0 -0
  257. wx/lib/plot/examples/demo.py +1010 -0
  258. wx/lib/plot/examples/simple_example.py +56 -0
  259. wx/lib/plot/plotcanvas.py +2985 -0
  260. wx/lib/plot/polyobjects.py +1524 -0
  261. wx/lib/plot/utils.py +334 -0
  262. wx/lib/popupctl.py +251 -0
  263. wx/lib/printout.py +1155 -0
  264. wx/lib/progressindicator.py +151 -0
  265. wx/lib/pubsub/LICENSE_BSD_Simple.txt +23 -0
  266. wx/lib/pubsub/README_WxPython.txt +22 -0
  267. wx/lib/pubsub/RELEASE_NOTES.txt +71 -0
  268. wx/lib/pubsub/__init__.py +25 -0
  269. wx/lib/pubsub/core/__init__.py +92 -0
  270. wx/lib/pubsub/core/arg1/__init__.py +16 -0
  271. wx/lib/pubsub/core/arg1/listenerimpl.py +97 -0
  272. wx/lib/pubsub/core/arg1/publisher.py +40 -0
  273. wx/lib/pubsub/core/arg1/publishermixin.py +34 -0
  274. wx/lib/pubsub/core/arg1/topicargspecimpl.py +66 -0
  275. wx/lib/pubsub/core/arg1/topicmgrimpl.py +19 -0
  276. wx/lib/pubsub/core/callables.py +198 -0
  277. wx/lib/pubsub/core/imp2.py +62 -0
  278. wx/lib/pubsub/core/itopicdefnprovider.py +0 -0
  279. wx/lib/pubsub/core/kwargs/__init__.py +16 -0
  280. wx/lib/pubsub/core/kwargs/datamsg.py +27 -0
  281. wx/lib/pubsub/core/kwargs/listenerimpl.py +93 -0
  282. wx/lib/pubsub/core/kwargs/publisher.py +77 -0
  283. wx/lib/pubsub/core/kwargs/publishermixin.py +65 -0
  284. wx/lib/pubsub/core/kwargs/topicargspecimpl.py +216 -0
  285. wx/lib/pubsub/core/kwargs/topicmgrimpl.py +13 -0
  286. wx/lib/pubsub/core/listener.py +40 -0
  287. wx/lib/pubsub/core/listenerbase.py +185 -0
  288. wx/lib/pubsub/core/notificationmgr.py +185 -0
  289. wx/lib/pubsub/core/publisherbase.py +189 -0
  290. wx/lib/pubsub/core/topicargspec.py +77 -0
  291. wx/lib/pubsub/core/topicdefnprovider.py +631 -0
  292. wx/lib/pubsub/core/topicexc.py +72 -0
  293. wx/lib/pubsub/core/topicmgr.py +454 -0
  294. wx/lib/pubsub/core/topicobj.py +472 -0
  295. wx/lib/pubsub/core/topictreetraverser.py +143 -0
  296. wx/lib/pubsub/core/topicutils.py +119 -0
  297. wx/lib/pubsub/core/treeconfig.py +21 -0
  298. wx/lib/pubsub/core/validatedefnargs.py +29 -0
  299. wx/lib/pubsub/core/weakmethod.py +102 -0
  300. wx/lib/pubsub/policies.py +24 -0
  301. wx/lib/pubsub/pub.py +199 -0
  302. wx/lib/pubsub/setuparg1.py +47 -0
  303. wx/lib/pubsub/setupkwargs.py +29 -0
  304. wx/lib/pubsub/utils/__init__.py +27 -0
  305. wx/lib/pubsub/utils/exchandling.py +100 -0
  306. wx/lib/pubsub/utils/misc.py +99 -0
  307. wx/lib/pubsub/utils/notification.py +331 -0
  308. wx/lib/pubsub/utils/topictreeprinter.py +195 -0
  309. wx/lib/pubsub/utils/xmltopicdefnprovider.py +286 -0
  310. wx/lib/pydocview.py +3300 -0
  311. wx/lib/rcsizer.py +227 -0
  312. wx/lib/resizewidget.py +357 -0
  313. wx/lib/scrolledpanel.py +243 -0
  314. wx/lib/sheet.py +350 -0
  315. wx/lib/sized_controls.py +691 -0
  316. wx/lib/softwareupdate.py +355 -0
  317. wx/lib/splitter.py +925 -0
  318. wx/lib/statbmp.py +199 -0
  319. wx/lib/stattext.py +321 -0
  320. wx/lib/throbber.py +424 -0
  321. wx/lib/ticker.py +306 -0
  322. wx/lib/ticker_xrc.py +48 -0
  323. wx/lib/utils.py +89 -0
  324. wx/lib/wordwrap.py +97 -0
  325. wx/lib/wxcairo/__init__.py +139 -0
  326. wx/lib/wxcairo/wx_cairocffi.py +200 -0
  327. wx/lib/wxcairo/wx_pycairo.py +455 -0
  328. wx/lib/wxpTag.py +274 -0
  329. wx/libcairo-2.dll +0 -0
  330. wx/locale/af/LC_MESSAGES/wxstd.mo +0 -0
  331. wx/locale/an/LC_MESSAGES/wxstd.mo +0 -0
  332. wx/locale/ar/LC_MESSAGES/wxstd.mo +0 -0
  333. wx/locale/ca/LC_MESSAGES/wxstd.mo +0 -0
  334. wx/locale/ca@valencia/LC_MESSAGES/wxstd.mo +0 -0
  335. wx/locale/co/LC_MESSAGES/wxstd.mo +0 -0
  336. wx/locale/cs/LC_MESSAGES/wxstd.mo +0 -0
  337. wx/locale/da/LC_MESSAGES/wxstd.mo +0 -0
  338. wx/locale/de/LC_MESSAGES/wxstd.mo +0 -0
  339. wx/locale/el/LC_MESSAGES/wxstd.mo +0 -0
  340. wx/locale/es/LC_MESSAGES/wxstd.mo +0 -0
  341. wx/locale/eu/LC_MESSAGES/wxstd.mo +0 -0
  342. wx/locale/fa_IR/LC_MESSAGES/wxstd.mo +0 -0
  343. wx/locale/fi/LC_MESSAGES/wxstd.mo +0 -0
  344. wx/locale/fr/LC_MESSAGES/wxstd.mo +0 -0
  345. wx/locale/gl_ES/LC_MESSAGES/wxstd.mo +0 -0
  346. wx/locale/hi/LC_MESSAGES/wxstd.mo +0 -0
  347. wx/locale/hr/LC_MESSAGES/wxstd.mo +0 -0
  348. wx/locale/hu/LC_MESSAGES/wxstd.mo +0 -0
  349. wx/locale/id/LC_MESSAGES/wxstd.mo +0 -0
  350. wx/locale/it/LC_MESSAGES/wxstd.mo +0 -0
  351. wx/locale/ja/LC_MESSAGES/wxstd.mo +0 -0
  352. wx/locale/ka/LC_MESSAGES/wxstd.mo +0 -0
  353. wx/locale/ko_KR/LC_MESSAGES/wxstd.mo +0 -0
  354. wx/locale/lt/LC_MESSAGES/wxstd.mo +0 -0
  355. wx/locale/lv/LC_MESSAGES/wxstd.mo +0 -0
  356. wx/locale/ms/LC_MESSAGES/wxstd.mo +0 -0
  357. wx/locale/nb/LC_MESSAGES/wxstd.mo +0 -0
  358. wx/locale/ne/LC_MESSAGES/wxstd.mo +0 -0
  359. wx/locale/nl/LC_MESSAGES/wxstd.mo +0 -0
  360. wx/locale/pl/LC_MESSAGES/wxstd.mo +0 -0
  361. wx/locale/pt/LC_MESSAGES/wxstd.mo +0 -0
  362. wx/locale/pt_BR/LC_MESSAGES/wxstd.mo +0 -0
  363. wx/locale/ro/LC_MESSAGES/wxstd.mo +0 -0
  364. wx/locale/ru/LC_MESSAGES/wxstd.mo +0 -0
  365. wx/locale/sk/LC_MESSAGES/wxstd.mo +0 -0
  366. wx/locale/sl/LC_MESSAGES/wxstd.mo +0 -0
  367. wx/locale/sq/LC_MESSAGES/wxstd.mo +0 -0
  368. wx/locale/sr/LC_MESSAGES/wxstd.mo +0 -0
  369. wx/locale/sv/LC_MESSAGES/wxstd.mo +0 -0
  370. wx/locale/ta/LC_MESSAGES/wxstd.mo +0 -0
  371. wx/locale/tr/LC_MESSAGES/wxstd.mo +0 -0
  372. wx/locale/uk/LC_MESSAGES/wxstd.mo +0 -0
  373. wx/locale/vi/LC_MESSAGES/wxstd.mo +0 -0
  374. wx/locale/zh_CN/LC_MESSAGES/wxstd.mo +0 -0
  375. wx/locale/zh_TW/LC_MESSAGES/wxstd.mo +0 -0
  376. wx/media.py +30 -0
  377. wx/media.pyi +272 -0
  378. wx/msw.py +16 -0
  379. wx/msw.pyi +91 -0
  380. wx/propgrid.py +498 -0
  381. wx/propgrid.pyi +7427 -0
  382. wx/py/CHANGES.txt +796 -0
  383. wx/py/Py.ico +0 -0
  384. wx/py/PyAlaCarte.py +34 -0
  385. wx/py/PyAlaMode.py +34 -0
  386. wx/py/PyAlaModeTest.py +33 -0
  387. wx/py/PyCrust.ico +0 -0
  388. wx/py/PyCrust.py +78 -0
  389. wx/py/PyCrust_16.png +0 -0
  390. wx/py/PyCrust_32.png +0 -0
  391. wx/py/PyFilling.py +35 -0
  392. wx/py/PyShell.py +78 -0
  393. wx/py/PySlices.ico +0 -0
  394. wx/py/PySlices.py +98 -0
  395. wx/py/PySlicesShell.py +94 -0
  396. wx/py/PySlices_16.png +0 -0
  397. wx/py/PySlices_32.png +0 -0
  398. wx/py/PyWrap.py +52 -0
  399. wx/py/README.txt +77 -0
  400. wx/py/__init__.py +20 -0
  401. wx/py/buffer.py +136 -0
  402. wx/py/crust.py +403 -0
  403. wx/py/crustslices.py +403 -0
  404. wx/py/dispatcher.py +259 -0
  405. wx/py/document.py +37 -0
  406. wx/py/editor.py +844 -0
  407. wx/py/editwindow.py +316 -0
  408. wx/py/filling.py +358 -0
  409. wx/py/frame.py +976 -0
  410. wx/py/images.py +212 -0
  411. wx/py/interpreter.py +161 -0
  412. wx/py/introspect.py +402 -0
  413. wx/py/magic.py +98 -0
  414. wx/py/parse.py +134 -0
  415. wx/py/path.py +36 -0
  416. wx/py/pseudo.py +99 -0
  417. wx/py/shell.py +1579 -0
  418. wx/py/sliceshell.py +3805 -0
  419. wx/py/tests/test_interpreter.py +71 -0
  420. wx/py/tests/test_introspect.py +810 -0
  421. wx/py/tests/test_pseudo.py +70 -0
  422. wx/py/tests/test_version.py +36 -0
  423. wx/py/tests/testall.py +22 -0
  424. wx/py/version.py +7 -0
  425. wx/py.typed +0 -0
  426. wx/ribbon.py +48 -0
  427. wx/ribbon.pyi +3099 -0
  428. wx/richtext.py +141 -0
  429. wx/richtext.pyi +13581 -0
  430. wx/siplib.cp315-win_amd64.pyd +0 -0
  431. wx/siplib.pyi +19 -0
  432. wx/stc.py +59 -0
  433. wx/stc.pyi +9918 -0
  434. wx/svg/__init__.py +363 -0
  435. wx/svg/_nanosvg.cp315-win_amd64.pyd +0 -0
  436. wx/tools/__init__.py +18 -0
  437. wx/tools/dbg.py +268 -0
  438. wx/tools/genaxmodule.py +50 -0
  439. wx/tools/helpviewer.py +92 -0
  440. wx/tools/img2img.py +85 -0
  441. wx/tools/img2png.py +54 -0
  442. wx/tools/img2py.py +306 -0
  443. wx/tools/img2xpm.py +54 -0
  444. wx/tools/pywxrc.py +951 -0
  445. wx/tools/wxget.py +254 -0
  446. wx/tools/wxget_docs_demo.py +183 -0
  447. wx/wxbase334u_net_vc140_x64.dll +0 -0
  448. wx/wxbase334u_vc140_x64.dll +0 -0
  449. wx/wxbase334u_xml_vc140_x64.dll +0 -0
  450. wx/wxmsw334u_adv_vc140_x64.dll +0 -0
  451. wx/wxmsw334u_aui_vc140_x64.dll +0 -0
  452. wx/wxmsw334u_core_vc140_x64.dll +0 -0
  453. wx/wxmsw334u_gl_vc140_x64.dll +0 -0
  454. wx/wxmsw334u_html_vc140_x64.dll +0 -0
  455. wx/wxmsw334u_media_vc140_x64.dll +0 -0
  456. wx/wxmsw334u_propgrid_vc140_x64.dll +0 -0
  457. wx/wxmsw334u_qa_vc140_x64.dll +0 -0
  458. wx/wxmsw334u_ribbon_vc140_x64.dll +0 -0
  459. wx/wxmsw334u_richtext_vc140_x64.dll +0 -0
  460. wx/wxmsw334u_stc_vc140_x64.dll +0 -0
  461. wx/wxmsw334u_webview_vc140_x64.dll +0 -0
  462. wx/wxmsw334u_xrc_vc140_x64.dll +0 -0
  463. wx/xml.py +18 -0
  464. wx/xml.pyi +728 -0
  465. wx/xrc.py +68 -0
  466. wx/xrc.pyi +896 -0
  467. wxpython-4.3.2.dist-info/METADATA +71 -0
  468. wxpython-4.3.2.dist-info/RECORD +472 -0
  469. wxpython-4.3.2.dist-info/WHEEL +5 -0
  470. wxpython-4.3.2.dist-info/entry_points.txt +13 -0
  471. wxpython-4.3.2.dist-info/licenses/LICENSE.txt +610 -0
  472. wxpython-4.3.2.dist-info/top_level.txt +1 -0
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,28 @@
1
+ Free Icons by Axialis Software
2
+ http://www.axialis.com
3
+
4
+ Here is a library of icons that you can freely use in your projects. All
5
+ the icons are licensed under the Creative Commons Attribution License
6
+ (http://creativecommons.org/licenses/by/2.5/). It means that you can use
7
+ them in any project or website, commercially or not.
8
+
9
+ The icons have been created by Axialis IconWorkshop, the professional
10
+ icon authoring tool for Windows. For more info visit this page:
11
+ http://www.axialis.com/iconworkshop
12
+
13
+ TERMS OF USE
14
+ The only restrictions are: (a) you must keep the credits of the authors:
15
+ "Axialis Team", even if you modify them; (b) link to us if you use them
16
+ on your website (see below).
17
+
18
+ LINK TO US
19
+ If you use the icons in your website, you must add the following link on
20
+ EACH PAGE containing the icons (at the bottom of the page for example).
21
+ The HTML code for this link is:
22
+
23
+ <a href="http://www.axialis.com/free/icons">Icons</a> by <a href="http://www.axialis.com">Axialis Team</a>
24
+
25
+
26
+
27
+
28
+
Binary file
Binary file
Binary file
@@ -0,0 +1,37 @@
1
+
2
+ """
3
+ This is a way to save the startup time when running img2py on lots of
4
+ files...
5
+ """
6
+ import sys, os
7
+ if os.path.abspath('..') not in sys.path:
8
+ sys.path.append(os.path.abspath('..'))
9
+
10
+ vspdir = 'f:/Python%s-sp.v%s' % ( '25', '660') # version-specific site-packages
11
+ if os.path.exists(vspdir) and vspdir not in sys.path:
12
+ sys.path.append(vspdir)
13
+
14
+ from wx.tools import img2py
15
+
16
+
17
+ command_lines = [
18
+ " -u -n First PlayerFirst.png ../images.py",
19
+ "-a -u -n Prev PlayerPrev.png ../images.py",
20
+ "-a -u -n Next PlayerNext.png ../images.py",
21
+ "-a -u -n Last PlayerLast.png ../images.py",
22
+ "-a -u -n PrintIt Printer.png ../images.py",
23
+ "-a -u -n SaveIt Save.png ../images.py",
24
+ "-a -u -n Left ArrowLeft.png ../images.py",
25
+ "-a -u -n Right ArrowRight.png ../images.py",
26
+ "-a -u -n Width DirectionH.png ../images.py",
27
+ "-a -u -n Height DirectionV.png ../images.py",
28
+ "-a -u -n ZoomIn ZoomIn.png ../images.py",
29
+ "-a -u -n ZoomOut ZoomOut.png ../images.py",
30
+ ]
31
+
32
+
33
+ if __name__ == "__main__":
34
+ for line in command_lines:
35
+ args = line.split()
36
+ img2py.main(args)
37
+
@@ -0,0 +1,285 @@
1
+ # Name: buttonpanel.py
2
+ # Package: wx.lib.pdfviewer
3
+ #
4
+ # Purpose: A button panel class for pdf viewer
5
+ #
6
+ # Author: David Hughes dfh@forestfield.co.uk
7
+ # Copyright: Forestfield Software Ltd
8
+ # Licence: Same as wxPython host
9
+
10
+ # History: Created 26 Jun 2009
11
+ #
12
+ # Tags: phoenix-port, documented
13
+ #
14
+ #----------------------------------------------------------------------------
15
+ """
16
+ This module provides the :class:`~wx.lib.pdfviewer.buttonpanel.pdfButtonPanel`
17
+ which can be used together with the :class:`~wx.lib.pdfviewer.viewer.pdfViewer`.
18
+ """
19
+ import sys, os, time
20
+
21
+ from . import images
22
+ import wx
23
+ import wx.lib.agw.buttonpanel as bp
24
+
25
+ class pdfButtonPanel(bp.ButtonPanel):
26
+ """
27
+ :class:`~wx.lib.pdfviewer.buttonpanel.pdfButtonPanel` is derived
28
+ from wx.lib.agw.buttonpanel and provides buttons to manipulate the viewed
29
+ PDF, e.g. zoom, save, print etc.
30
+ """
31
+ def __init__(self, parent, nid, pos, size, style):
32
+ """
33
+ Default class constructor.
34
+
35
+ :param wx.Window `parent`: parent window. Must not be ``None``;
36
+ :param integer `nid`: window identifier. A value of -1 indicates a default value;
37
+ :param `pos`: the control position. A value of (-1, -1) indicates a default position,
38
+ chosen by either the windowing system or wxPython, depending on platform;
39
+ :type `pos`: tuple or :class:`wx.Point`
40
+ :param `size`: the control size. A value of (-1, -1) indicates a default size,
41
+ chosen by either the windowing system or wxPython, depending on platform;
42
+ :type `size`: tuple or :class:`wx.Size`
43
+ :param integer `style`: the button style (unused);
44
+
45
+ """
46
+ self.viewer = None # reference to viewer is set by their common parent
47
+ self.numpages = None
48
+ bp.ButtonPanel.__init__(self, parent, nid, "",
49
+ agwStyle=bp.BP_USE_GRADIENT, alignment=bp.BP_ALIGN_LEFT)
50
+ self.SetProperties()
51
+ self.CreateButtons()
52
+
53
+ def GetPanelItems(self):
54
+ """
55
+ Return the buttons that should be displayed. A subclass can customize this
56
+ """
57
+ return [
58
+ ('btn', images.PrintIt.GetBitmap(), wx.ITEM_NORMAL, "Print", self.OnPrint),
59
+ ('sep',),
60
+ ('btn', images.SaveIt.GetBitmap(), wx.ITEM_NORMAL, "Save", self.OnSave),
61
+ ('sep',),
62
+ ('btn', images.First.GetBitmap(), wx.ITEM_NORMAL, "First page", self.OnFirst),
63
+ ('btn', images.Prev.GetBitmap(), wx.ITEM_NORMAL, "Previous page", self.OnPrev),
64
+ ('btn', images.Next.GetBitmap(), wx.ITEM_NORMAL, "Next page", self.OnNext),
65
+ ('btn', images.Last.GetBitmap(), wx.ITEM_NORMAL, "Last page", self.OnLast),
66
+ ('Ctrl', self.pagelabel),
67
+ ('ctrl', self.page),
68
+ ('ctrl', self.maxlabel),
69
+ ('sep',),
70
+ ('btn', images.ZoomOut.GetBitmap(), wx.ITEM_NORMAL, "Zoom out", self.OnZoomOut),
71
+ ('btn', images.ZoomIn.GetBitmap(), wx.ITEM_NORMAL, "Zoom in", self.OnZoomIn),
72
+ ('ctrl', self.zoom),
73
+ ('btn', images.Width.GetBitmap(), wx.ITEM_NORMAL, "Fit page width", self.OnWidth),
74
+ ('btn', images.Height.GetBitmap(), wx.ITEM_NORMAL, "Fit page height", self.OnHeight),
75
+ ]
76
+
77
+ def CreateButtons(self):
78
+ """
79
+ Add the buttons and other controls to the panel.
80
+ """
81
+ self.disabled_controls = []
82
+ self.pagelabel = wx.StaticText(self, -1, 'Page')
83
+ self.page = wx.TextCtrl(self, -1, size=(30, -1), style=wx.TE_CENTRE|wx.TE_PROCESS_ENTER)
84
+ self.page.Enable(False)
85
+ self.disabled_controls.append(self.page)
86
+ self.page.Bind(wx.EVT_KILL_FOCUS, self.OnPage)
87
+ self.Bind(wx.EVT_TEXT_ENTER, self.OnPage, self.page)
88
+ self.maxlabel = wx.StaticText(self, -1, ' ')
89
+ self.zoom = wx.ComboBox(self, -1, style=wx.CB_DROPDOWN|wx.TE_PROCESS_ENTER)
90
+ self.zoom.Enable(False)
91
+ self.disabled_controls.append(self.zoom)
92
+ self.comboval = (('Actual size', 1.0), ('Fit width', -1), ('Fit page', -2),
93
+ ('25%', 0.25), ('50%', 0.5), ('75%', 0.75), ('100%', 1.0),
94
+ ('125%', 1.25), ('150%', 1.5), ('200%', 2.0), ('400%', 4.0),
95
+ ('800%', 8.0), ('1000%', 10.0))
96
+ for item in self.comboval:
97
+ self.zoom.Append(item[0], item[1]) # string value and client data
98
+ self.Bind(wx.EVT_COMBOBOX, self.OnZoomSet, self.zoom)
99
+ self.Bind(wx.EVT_TEXT_ENTER, self.OnZoomSet, self.zoom)
100
+ panelitems = self.GetPanelItems()
101
+
102
+ self.Freeze()
103
+ for item in panelitems:
104
+ if item[0].lower() == 'btn':
105
+ x_type, image, kind, popup, handler = item
106
+ btn = bp.ButtonInfo(self, wx.ID_ANY,image, kind=kind,
107
+ shortHelp=popup, longHelp='')
108
+ self.AddButton(btn)
109
+ btn.Enable(False)
110
+ self.disabled_controls.append(btn)
111
+ self.Bind(wx.EVT_BUTTON, handler, id=btn.GetId())
112
+ elif item[0].lower() == 'sep':
113
+ self.AddSeparator()
114
+ elif item[0].lower() == 'space':
115
+ self.AddSpacer(item[1])
116
+ elif item[0].lower() == 'ctrl':
117
+ self.AddControl(item[1])
118
+ self.Thaw()
119
+ self.DoLayout()
120
+
121
+
122
+ def SetProperties(self):
123
+ """
124
+ Setup the buttonpanel colours, borders etc.
125
+ """
126
+ bpArt = self.GetBPArt()
127
+ bpArt.SetGradientType(bp.BP_GRADIENT_VERTICAL)
128
+ bpArt.SetColor(bp.BP_GRADIENT_COLOUR_FROM, wx.Colour(119, 136, 153)) #light slate
129
+ bpArt.SetColor(bp.BP_GRADIENT_COLOUR_TO, wx.Colour(245, 245, 245)) # white smoke
130
+ bpArt.SetColor(bp.BP_BORDER_COLOUR, wx.Colour(119, 136, 153))
131
+ bpArt.SetColor(bp.BP_BUTTONTEXT_COLOUR, wx.BLACK) # not used
132
+ bpArt.SetColor(bp.BP_SEPARATOR_COLOUR,
133
+ bp.BrightenColour(wx.Colour(60, 11, 112), 0.85))
134
+ bpArt.SetColor(bp.BP_SELECTION_BRUSH_COLOUR, wx.Colour(225, 225, 255)) # used?
135
+ bpArt.SetColor(bp.BP_SELECTION_PEN_COLOUR,
136
+ wx.SystemSettings.GetColour(wx.SYS_COLOUR_ACTIVECAPTION))
137
+
138
+ def Update(self, pagenum, numpages, zoomscale):
139
+ """
140
+ Called from viewer to initialize and update controls.
141
+
142
+ :param integer `pagenum`: the page to show
143
+ :param integer `numpages`: the total pages
144
+ :param integer `zoomscale`: the zoom factor
145
+
146
+ :note:
147
+ In the viewer, page range is from 0 to numpages-1, in button controls it
148
+ is from 1 to numpages.
149
+
150
+ """
151
+ if self.disabled_controls:
152
+ for item in self.disabled_controls:
153
+ item.Enable(True)
154
+ self.disabled_controls = []
155
+ self.Refresh()
156
+
157
+ self.pageno = pagenum + 1
158
+ self.page.ChangeValue('%d' % self.pageno)
159
+ if numpages != self.numpages:
160
+ self.maxlabel.SetLabel('of %d' % numpages)
161
+ self.numpages = numpages
162
+ self.percentzoom = zoomscale * 100
163
+ self.zoom.SetValue('%.0f%%' % self.percentzoom)
164
+ self.zoomtext = self.zoom.GetValue() # save last good value
165
+
166
+ def OnSave(self, event):
167
+ """
168
+ The button handler to save the PDF file.
169
+ """
170
+ self.viewer.Save()
171
+
172
+ def OnPrint(self, event):
173
+ """
174
+ The button handler to print the PDF file.
175
+ """
176
+ self.viewer.Print()
177
+
178
+ def OnFirst(self, event):
179
+ """
180
+ The button handler to show the first page of the report.
181
+ """
182
+ if self.pageno > 1:
183
+ self.pageno = 1
184
+ self.ChangePage()
185
+
186
+ def OnPrev(self, event):
187
+ """
188
+ The button handler to show the previous page of the report.
189
+ """
190
+ if self.pageno > 1:
191
+ self.pageno -= 1
192
+ self.ChangePage()
193
+
194
+ def OnNext(self, event):
195
+ """
196
+ The button handler to show the next page of the report.
197
+ """
198
+ if self.pageno < self.numpages:
199
+ self.pageno += 1
200
+ self.ChangePage()
201
+
202
+ def OnLast(self, event):
203
+ """
204
+ The button handler to show the last page of the report.
205
+ """
206
+ if self.pageno < self.numpages:
207
+ self.pageno = self.numpages
208
+ self.ChangePage()
209
+
210
+ def OnPage(self, event):
211
+ """
212
+ The handler to go to enter page number of the report, if a
213
+ valid number is entered.
214
+ """
215
+ try:
216
+ newpage = int(self.page.GetValue())
217
+ if 1 <= newpage <= self.numpages:
218
+ if newpage != self.pageno:
219
+ self.pageno = newpage
220
+ self.ChangePage()
221
+ except ValueError:
222
+ pass
223
+ event.Skip()
224
+
225
+ def OnZoomOut(self, event):
226
+ "Decrease page magnification"
227
+ self.viewer.SetZoom(max(0.1, self.percentzoom*0.5/100.0))
228
+
229
+ def OnZoomIn(self, event):
230
+ """
231
+ The button handler to zoom in.
232
+ """
233
+ self.viewer.SetZoom(min(self.percentzoom*2/100.0, 10))
234
+
235
+ def OnZoomSet(self, event):
236
+ """
237
+ The zoom set handler, either a list selection or a value entered.
238
+ """
239
+ MINZ = 0
240
+ MAXZ = 1000
241
+ newzoom_scale = None
242
+ num = self.zoom.GetSelection()
243
+ if num >= 0: # selection from list
244
+ newzoom_scale = self.zoom.GetClientData(num)
245
+ else: # combo text
246
+ astring = self.zoom.GetValue().strip().replace('%','') # ignore percent sign
247
+ try:
248
+ numvalue = float(astring)
249
+ if numvalue < MINZ or numvalue > MAXZ:
250
+ numvalue = None
251
+ except ValueError:
252
+ numvalue = None
253
+ if numvalue: # numeric value
254
+ newzoom_scale = numvalue/100.0
255
+ else: # valid text?
256
+ textvalue = self.zoom.GetValue()
257
+ for k in range(len(self.comboval)):
258
+ if textvalue.lower() == self.comboval[k][0].lower():
259
+ newzoom_scale = self.comboval[k][1]
260
+ break
261
+
262
+ if newzoom_scale:
263
+ self.viewer.SetZoom(newzoom_scale) # will send update to set zoomtext
264
+ else:
265
+ self.zoom.SetValue(self.zoomtext) # restore last good value
266
+ event.Skip()
267
+
268
+ def OnWidth(self, event):
269
+ """
270
+ The button handler to fit display to page width.
271
+ """
272
+ self.viewer.SetZoom(-1)
273
+
274
+ def OnHeight(self, event):
275
+ """
276
+ The button handler to fit display to page height.
277
+ """
278
+ self.viewer.SetZoom(-2)
279
+
280
+ def ChangePage(self):
281
+ """
282
+ Update viewer with new page number.
283
+ """
284
+ self.viewer.GoPage(self.pageno - 1)
285
+
@@ -0,0 +1,240 @@
1
+ #----------------------------------------------------------------------
2
+ # This file was generated by ./encode_bitmaps.py
3
+ #
4
+ from wx.lib.embeddedimage import PyEmbeddedImage
5
+
6
+ First = PyEmbeddedImage(
7
+ "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACz0lEQVRIiX1WsUodQRQ9Z7ME"
8
+ "AoKJxC5EEgyKGk2RP7B8IA/Uwi+wsLS18g8srVKkCQGbZyFJG5tUIoSAIAQtAhaBBBuJmXtS"
9
+ "zNzZ2X1PF5a9b+bOnTtn7jn3ceHzwgcAM7jv0R2vuS3IOmMGwHBWk5wB8EaSSBIAJIkobJEe"
10
+ "VJJopCRBICzGp0UfWfSXCTCgHpntfVnHIMOnsMb24JJQS8phlX54pkVAdTZQCurf6G/Ddk0Q"
11
+ "ACg0UJSwlFB0IIg+TcBs09K4qYDozgscAUUBiaQWPF27khSPHHdUtiUtPl5U/1kfi+OLkkkK"
12
+ "aS59Jx5OaO3lmmQxhoKEgJZdUYTDQSP9eDBw7fkad9/sYn1qnXkuAJUqrr5YxaA3YG+qRwSA"
13
+ "oVgbQAQwQlRAkY9bQuFPiPOz47PYebuDpadLSFWd5zI8RYw6lVyuCkloVUi8H409GMPW6y1s"
14
+ "vNpAxSpXHUUPKi9PCE0VpQGmQVLMlZI20PyTeQ56A0w+moQTsiQmQmetJaIpbZBrvqxrr3UA"
15
+ "0+PTnjFKvvg6BbWydh7kO7irrj1OztRh6Z7AUGadOQEBVetiQqJ5iLaf4OLPBa7/XmPko7Qu"
16
+ "JHkI7cuucrAieHZKG5xcnWDl4wqOzo9Gb1Ak2P1WThInUGl7HUnS1fWVtj9ta/NwE5e/L0vt"
17
+ "koLaJC3syomhoEi0EMmEAEJRqCDQiXT84xj9933uf93Hbbil61QmWsyefg91xtowRJSD7wc4"
18
+ "/XmK81/nrbmbfzfY+7KHw2+HWJ5ebu6ro2GSwLl3cycQltoMTB1qpIDd0b2KDTJZhdOaRsDA"
19
+ "VPdJZtsdCgY2/EBbrpv+0Ei9ZalHnUgCmABjK6vcubqn6WbalfbirZNQJRZqiMlJX1QGyv5K"
20
+ "heT649ij6YCRyamJZzbGgM7GfORCVug+FIc6YP7DAKFGwFkXEplQqOSwlJc+DgcKaLKw4Ow/"
21
+ "oX1dfBQFFGsAAAAASUVORK5CYII=")
22
+
23
+ #----------------------------------------------------------------------
24
+ Prev = PyEmbeddedImage(
25
+ "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAB3RJTUUH2QYaCSkRaCYhigAA"
26
+ "AAlwSFlzAAALEgAACxIB0t1+/AAAAARnQU1BAACxjwv8YQUAAAMGSURBVHjadVYxS1xBEJ6Z"
27
+ "typYBIsgJBCr6BVJoekMSSXpBDGgpd39AVHzC8Ta2tLmilSmC5gycD8gkEOsxEA0hXAgRsyb"
28
+ "7OzO7Nt9d75j2dndmd2Zb7+ZPex86vQAoQPysW+oTT5qydSsIyIwMSBhGDN6ucKkK7L/DZwf"
29
+ "drzyYtgfmVEssZR9Y2+EQYX8XHNQGnvFoCMHBls/Lw646DizeSqL5qVXkEPighyC5bpGxbks"
30
+ "kYgsttI7Dfdxr1HPrbxHYl/pOjU6uddx3m8e9eMBhUfZHSR8IXo19i4qbGwqXRO/vK346mTS"
31
+ "wg5wKBQFHKTRjUISdeQOWmsCEaNenYQWwoseYYCBVHYqhx7TnLTF54uw9moN22vitPTkSLlB"
32
+ "Y1rVyAEGm/Nt9sksHHw4gOOPx7D0bKlYy+1EDhAlWLKQdVwwZGpiCraWtrj7pgvTE9N6KcAJ"
33
+ "LlKoCaNtYlGVsajheWKIyCsvV3Dn7Q7PzcxZ6kFd10HfwwGJYdSwTgQXMsG8BA0xY8j803nY"
34
+ "e7cHyy+W/RYMI5/aBoJUmuGSC7qPy+8gKFEMcdJNwu77Xdh8vQnhqsTwsQN0M4WmoXPojF6U"
35
+ "sGTB8gEf4PzmnId/h2xwWG8tqwKcUZMT9X1PgSEVRGoqvUSusYbezx6ufl5F30MNdcCUiNCa"
36
+ "JmNDZaU4KmUBswisdiiL2Nh1c3/D+/192Piywf3f/bERFF5rNNaTXLJ5HUqsC/mdkssS52x4"
37
+ "ht1vXdj+vo2Xt5dlBLnXZqv7UUoMTZJwCGGRNGns5dNfp7D+dR0OfxzC7b/bogZZ/cnrlTOe"
38
+ "20RKtCzMXJb1O76Do8ERnFycwMLMwmjtwuYJcBZOSrQqK9dVrOQ23y7XV/dXfP3nuizXunmQ"
39
+ "wUpFXoIzeRyvC732s5o/t/q5/PVR/Bq4qF2us3IOWe3KIbICxQaR0xeNyje2qEuQXrcEQwGF"
40
+ "yfYy1hlEJC9FFeEIL1dWixJc+rrZezvyzyO6MAJPOMDDMLC/IPb3Ixa6cpNiHbJ54IR/qlWN"
41
+ "PPgPVhphQTIBT3gAAAAASUVORK5CYII=")
42
+
43
+ #----------------------------------------------------------------------
44
+ Next = PyEmbeddedImage(
45
+ "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACtUlEQVRIiYWWPUtcQRSG33e9"
46
+ "ETGS2EQhWAnGhFik22I7F1KlDegPsPYP+AfEYn+ANnYBCz/QJmAVQqyy2Agq6QRBUiUgiMx5"
47
+ "U8zHnfvhZuByz9w5e2bOM2feWS59XfoCYBGjmp54LNqCrPbNABguC5KLAD5IEkkCgCQRmS0y"
48
+ "BpUkGilJEAjz8WneR+b9ZQIMKFpXO2rVPkgzCyvtGFwSCkkprEInrjQLqNoECkHj2/tb0y4I"
49
+ "AgCFEkWOJUdRQ+B9yoDJpoXvpgzRkxvYgiJDIqmCp253JPmU/YxKtqTeq55mxmcg57/LhTFX"
50
+ "+sNBMh9DToJDxe5QRMRBI2N6MHB5dplH/SOsvVnjBCb8mPNjcAAcGG267LcOhANlQielFNKN"
51
+ "FQDn05wcm8T6+3Xsf9xH/3U/jVX8Ql9OqR/HOjG98EEBU6yUVF1zz+c06A20s7yDhRcLHoUr"
52
+ "scFBoV9FFHHEd8QQDo4vsax1Z7vY+7THje4Gpp9NM8cVEdGRAZ+fIF912mRXzSA2ABjjmFbe"
53
+ "ruDk84lW362qo05jk2GQnFDAgCfrOhy7KCFJOuilYmp8ivMv51GokDljOOHpTEDwE4ys65Ym"
54
+ "CWc3Z9j8tonr39flhgeZoIhyAldOEIMnp5YJbv7cYOv7Fk5/nSbftgMW30WWVq4xpR2w3D/e"
55
+ "Y/vnNnaHu3h4fIhao0z8lMtJmiBWT2UP/CbRy5B0fHXMwY8B7v7epbEa64pcQ2H/rIao8ggY"
56
+ "3g5xcHGA89vzxliFda5bme3l2rUhEmTQ4cVh/JFKrn6sjiLJe24LKGhMiNINZbWUrUxZhqpc"
57
+ "17Akua5lAJgAY6UC/lchkhpY6k8Bl99AzSoKNa48UPJXuASDndgjQwTzupMu8zJgo0Iyvow+"
58
+ "FBs3YPrDAKGAw2UdSVuFZCut+kQcyNAkYcHlP13rmcgeVJ4HAAAAAElFTkSuQmCC")
59
+
60
+ #----------------------------------------------------------------------
61
+ Last = PyEmbeddedImage(
62
+ "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACwklEQVRIiX1WPUtcURA9s3lK"
63
+ "bAwoIbAkEEJEsxgSLEw6MWkEC/cn6H/wH2hjbSvEzljZahobUwSEEAgSCRIIa2NjEQMWuXNS"
64
+ "3HvnzX2764NlZ++dNzPnzNfK7KfZjwCmcdfDIR/NMkFtnCkAxXklItMAXpOkiAgAkKTAyRTJ"
65
+ "RklSVIQkQQg02heNOtSoTyWgQDUw2ruijkb6UWgtZ+MkUZE0s0w/cqTOIBsOmIzm76iv/XIl"
66
+ "EAAQoqbC0+KpaFAQdWqDJoumc6WjaGgCB1DhKCFZ0NOUWyQj5OiRJpNcbi+zfb8NhnjOkO4C"
67
+ "OTM+g+7TLucfzpMabTCQCCjkllCQ6RAVyfCgkIVHC3KweIDV56sywpF4F+Ld0pMlbLzdkLUX"
68
+ "a4IASHDvBggChEq0DFKCmysAIcIcuzeG9Zfr2H+/j7nJueLOqI1Rg4HxLsD0WhleOmCiKSYT"
69
+ "YtU19WCKu+92uflmExOjE3QFUL8bSIaSriolRJKiCMUqJUVpDQgAK89WuPh4UXp/evE8Iijf"
70
+ "1dRoTA6s5n1d51r3/ZGe8dFxdiY7ds5AGBLXB7FMFRha1wMQ5JFioyUF5qK2ngBRJjknyxJV"
71
+ "xF0/t/9ucXF9USY5pPEQXF8o0DJjzrgpDXBw8vsE3b0ujn8d1w5cgM3vysHyMybKjparv1fY"
72
+ "+ryFo59H8M3Yl4NyVqUqUpQ50DoHSuXe9z3Z/rKNm9sbf9eXA2dcagehAdPNktPLU+yc7uDs"
73
+ "6qzv7vDHIXrXPVxeX9b5aswwkpDOh85XEK/KIZU21MABNmR7OQek7YtvlagYRbahmpC1hkxF"
74
+ "Oa4btNi4Zl44gRYZorM6kry5mmiakTZHu/tUCH4Dsa+T0/CjN2T6TIWUZOMe9QaMnZyWuHVj"
75
+ "NJi70SC7sSJZRyh9G9D+MICoEHDepIRKCKVc5HWkpU6mA44aGyw4/w8M23JBubTHcwAAAABJ"
76
+ "RU5ErkJggg==")
77
+
78
+ #----------------------------------------------------------------------
79
+ PrintIt = PyEmbeddedImage(
80
+ "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADDUlEQVRIiZ2Wz2pUWRDGf9Xc"
81
+ "yAgRxkVDFsFGRARHISADbdCNvkCEPIAL8R3c+RZKnmBmp45usuyFzKySxRCT+GehkUQik0Fb"
82
+ "O9fuez4X554/99rJwgPNrXO6uk7VV9/9qu3S6qU/gAsct3TExwVbyLXOHODYKszsArAgSWZm"
83
+ "AJJkZLbMQlBJMmcmSQjD+fjmvI+c95cTOCimZntc1j7Ij1W4ZIfgkigkxbCqNyHTLKBaF6gO"
84
+ "Gp7e3/1oF4YBmEhQBFgWfl3geve6h8InQB3SEELY+sd1Bu8HwgW4PIQ4X0mCaEoDb83fYml+"
85
+ "ibo1hEvMLD7/2fubwdvBVKhw1BD5bJqw+CpCUJGtsPdPC5gfAZEMhMXS0kU2dmOAyK7IKvMs"
86
+ "MjMbV2OomizK4KJIXK4xdlBQgODBxgNW3642GVT7hP27T++Y0QwA42o8BSKXIEJopb9Cv9vP"
87
+ "Cdu222SOZ893nnP3r7uhCnDQqQ3DQfdE1/rdvqdVvXI730/zWZxftLmTc1hlRuVjFrEpgo46"
88
+ "MaO8scc3uXk2w0ysQE6+AnNmVDAshyb00xUA9qX8AhWxgk5sioOv5VdGkxE/uypVDEdD8pgF"
89
+ "FbHjTo790T69Uz3WPqzx7M2zJnuO0Kab526y2Fvk8+Fnym/lESzymOnlwUt6p3o8ff1U5aRk"
90
+ "6fwSBLYk7kRr8GbAo38fcfXMVW182EgvXbggsCjI7L3BPR7OPtSr/17Z/Wv3uTJ3RU+2ntjB"
91
+ "6CAFFzZ7YlbLl5dtMplw58872t7btp2DHaj89+mCDCIcHI4P2RxtJgiAG2dvUL/V8azoJBmr"
92
+ "JhXbe9utIRTkumpC5J2EXALi8YvH2h/u+8lSg3X6l9Pc/v12U67btqAwZxGiOKGc15bdT7uU"
93
+ "k1LLvy0nOaWWa1A5KW33/92AeZL6pGnYxZWLa4gFnETQ8TAWEwEsm1ZhJOZYNy9Ic2W9oMrl"
94
+ "NSuzttusiGrrbWXil6SeDKLwJjeyDhnVPwwlZ/ha8DFZO+v0hwFRULGVZR2Htsmag7wl09En"
95
+ "Y1u0U8e2vgN1UBiOxfpC0gAAAABJRU5ErkJggg==")
96
+
97
+ #----------------------------------------------------------------------
98
+ SaveIt = PyEmbeddedImage(
99
+ "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADAElEQVRIiZ1Wv09TURT+zuuj"
100
+ "JWmMOomOrQaDDCTGri7MQoh/RfkLmFmY2AqJA7MbDQODjP5IQ2JEJwiJSNKURBY1OLT0ns/h"
101
+ "/nwPJMabvPTc+84797vf+c65ldk3s68BTOOmwb886m2CWlpTAIqjXESmAcyRpIgIAJCkILEp"
102
+ "4oOSpKgISYIQqI0van2o1p9KQIH8WrQ3obZBrp5Co+2Dk0ROMoSlm3ikSUCWNqAL6n+tv161"
103
+ "c4EAgBD2aFO1Kczfm7cU2YAEIG5TOyfEvQk+JGXvdA9nF2eWLrUniRQ5dAsPFtB+2IZLB0gG"
104
+ "O52n696uZ3VsHmwWaMsTVCDJDJn/iEnQYKfzso9QAFOmiAIQ4tXhksyRjmT7dBsjMwoU+Xfe"
105
+ "H4RUsyqWHi2xVqmJUGxe1KuLyKOW7YIH1f/dx9rnNYzNGO5D+y4mEqKCCipoTbXQvNO06jEo"
106
+ "UaSRoqAKAI1bDfZe9DDWcSpeDyCIeSKbQK1SC6qjcfE8RW43cYsFirpfuxiZka27KISCiqpZ"
107
+ "FUuPLUUepKgrNLoNguaTE/Qv+lz7aClKdO+f4F9BBa37LTTuNizqJMlWpgq40o4tAWDzdlN6"
108
+ "L3u41Eub5EREbk4A4iiybcaDdEkOJyihC2Myn0SNtX+qA781DYMo7AYmbuBq4v9HqScVVaRJ"
109
+ "j7Go2D3uYvXdKoaXQ/oGliQS9Yk6V56vYPHJImgHCnGCihQxB5YiiogMfg0wHA3Zftq+Umgg"
110
+ "2HnfkcHPQfAXFcAkPUpLFEGBkx8nhSPTEMvPlq/NQedtp0hp4RKyvhkNQUPCADTk7vEutw62"
111
+ "vHTpZczAQdKLDH2JgiSVGqimWqnmohIo8jfU+od1Hn4/lPOLc4gRbvQ2IkVJoYmK7H/b9wFl"
112
+ "58tOuPH8CWTm1cwnEHNQEr6P+2sxCiDoOrkSU66DnV6xJA/yYnuN2fdKcOphym/wJ4JyQj+z"
113
+ "mIJtK9ld4gG1R+Q+DG08thXxPkIpo45/GEDkMDhKUIdLO1RjRF1UiPeJ8o12LPyjPzWYSc7N"
114
+ "KY0aAAAAAElFTkSuQmCC")
115
+
116
+ #----------------------------------------------------------------------
117
+ Left = PyEmbeddedImage(
118
+ "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACzUlEQVRIiZ1WPUsdURA9Z11B"
119
+ "7EMIgRQJxCJGEkgidoKFpWATK3+AKFgIgo1YiSAIr4hia5N/IKRRCSSFwSbVS5MukB+g+JE7"
120
+ "J8X9fk8tXLjs7N3ZuTNnZs4sR7+MfgYwgvsu3bEsyoKsZ88AGLotyREAbySJJAFAkohCFhmN"
121
+ "ShKNlCQIhHn7NK8j8/oyAQa0t3p7n9feSH8UluVoXBJaScmswkP0tDCongMUjMa717d+uSGI"
122
+ "CAdF0kgYQMtygIJTj6dII2gkXNBxQceBcKBMoAv7DmjuTKTVa3FkETvvd0Bj3ncBDufluJdk"
123
+ "Q4BIPtQKlhimgJVXK5p/Me8dMUDO68m8jiQP1y0QtRQBgbE6ioNIEWuv1zT3fI4pUgfBwGCQ"
124
+ "MRdlFYX3Psm5lpMngIBGDTbebmDm2UxdZAESSRVc6duimjxEliGCeecHMYjNd5uafjqNqroA"
125
+ "nH086y3mdPbuj13snu56exGiVCV+k0PNELY/bGvyyWRutNCAADCAAZG+0arGJNmgSXDFXmlT"
126
+ "UgQMN8PqTHQw/mi88rqUy+c+nVhZQZaFHITWVoPGewH0eVcauiuC1HwhyRDQlIk5vzrHwvEC"
127
+ "Tv6c4EGXALk62U1qjNA0l9eXWD5axuHvwwcdkJot3HMVWeaYG7vB6vGqLq4vMPtytsJ67NMY"
128
+ "nHOxSmLD5cqpuSpA5EA5ZW5xgPvnuH6yzoOfBwDBeIVoGQ5glOkCd7mwH/LQlLxRwhUoAVtf"
129
+ "t7B/uo8UhOV31XfWvzxdu36IYIIsh9z51tHVzRWWJpYgp5qLSrrulQW0od0ZlD2H9HCLTNz7"
130
+ "vofu3y7kFBspTbr0bTHxIvXECAATELklehInVwj56NcRZALFzD/VbO5fbdl5KEM25QopJlcP"
131
+ "lasgyEz1KCCK0ysN82wwdmMKucCXUYdi9WNQ/TBAaOHQ7YWkhKHwuoIi6UQ4UECTp0f3P4CK"
132
+ "ICuf1hoBAAAAAElFTkSuQmCC")
133
+
134
+ #----------------------------------------------------------------------
135
+ Right = PyEmbeddedImage(
136
+ "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACs0lEQVRIiZ2Wv0scQRTHv9+7"
137
+ "BU//gZSBELwEhaQIaS0sLNJYWlnGC1xlo2ChrSAIVwhXWySNljFYnEIkpDLEVJdA/gohgs77"
138
+ "ptiZ2ZndnGAGhns7vHv73uf9mOX86fwHAF3ctzRhW5AFWe3MABjGBckugJeSRJIAIElEIosM"
139
+ "RiWJRkoSBMJK+7RSR1bqywQYUPzT2/u8Lo00o7BKDsYloZAUzco/BE8Tg6q9QN5o+C31rSm3"
140
+ "CCLgoEgaCQNolexRkEYuPloEjYTzOs7rOBAOlAl0/twBrYmJtOamiP3X++g/74NGwHkcDuU2"
141
+ "5LLBI1IZaoYlhFlHBODts7fqsIO9yz0F1jBMQCQiVEmGxUosMqXnJUqSq91VbL3aIuVxueS/"
142
+ "Ca6iquXoSbM6wm9trcyuYIpT2L7YhjOXI1VAZBUiGLQ2u4Zet5cWbF2O1SZJy0+XMd2axsZo"
143
+ "Q7fuNhiPiEIE9IdsoYU223nTeTl9Ts+Xniyp0+5w/dM6buymbETfKy1YmUSZQjKjd6mn9ee6"
144
+ "zsLjBR28OdBMa6a0Y5Ccz4Fv7WokAA+KIMgEQVFwCP1TRhB3qN//WOe/z9E77uH6z3WW7AKu"
145
+ "yrjviQevk/EJNj9u4u7urlF5nHs/9w3CC5+LZheHl5vQVhtX764y40c/jrBzulOVaf6C70Vo"
146
+ "qpgDn3QYGAdaOYeCzZiDw8tD7o52YWbZuPZV2UQ0yXOK1RlKlMOvQww+D3J95XI5rp1iY1Rj"
147
+ "WFCYLYoRhQrG4GKg4ZdhOrarOZbKAgoaI6J4Q1l+QwVcktA/7uvs11lW1imWcOPVIwBMgLGB"
148
+ "J8UnCaOfo4gsVl2KqLYLuHS8JmF62V9/Sg0lo1zJgKxGPRJE4faKl3llMHRjDDnhy6BDMfsw"
149
+ "yD4YIBRwGNeRZJVTeZ1XSNBJLqIox4rG+C+fohr4fgXssAAAAABJRU5ErkJggg==")
150
+
151
+ #----------------------------------------------------------------------
152
+ Width = PyEmbeddedImage(
153
+ "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADeUlEQVRIiZWWT2gVVxTGf2cy"
154
+ "L5TEQDA2aUFINmKJjyiUtjQidGHblcsGQRBx1Y3BjRtFXIkLF4ILcRehWmtWQRfWUIpdJC5E"
155
+ "07hJUpAUJWmLpf5pCYS8ez8Xd+78y4vQgeGdmTnz3Xu+Od93njWnmz8Au3nXoS1OH2MhX7vn"
156
+ "Ac9Sama7gX2SZGYGIElGKZZZBJUk82aShDB8wDcfcuRDvrzAQ9p2t+/adQDZXIUv4gguiVRS"
157
+ "DqvsIu60BKjaAspA42/I95vj1DAAEwUVZVrKVNQoCDkFYB6bz+57lSja8gO2oaJEiaQKPfU4"
158
+ "kRRKDisqj1XEPR09Gn1/VHLhen//fnUn3eE9h+QDhpyEoxInJiPSYd4slpeVbCO9I0x+MWkH"
159
+ "PzwYnjk4NHjIbn11i+HeYcNjODBXetdhOExeJHlJWbmxA8wbx3cd59qBa+zs3lnpDgSDPYNc"
160
+ "//o6Rz86SuIT5IWcwBHOsBBJLC+7IXmpr9HH1c+v6uTwSaWWxg8d6HAi6x0aSUOnPjmlK19e"
161
+ "YXvndslJclW6rHm7OYfYhxAeG+0f5fzH57XjvR2F0Mxs5b8VFl8ugtCevj020DVQEeaLtRd2"
162
+ "+qfTzD6bDUIMWvnVmlPNOUl7U1LGh8c5tusYWev+78PLM/F4gsszl2m1WshrPsn4tk46Geoe"
163
+ "ssSSIIzsKMfl63Y5HUmHDfUO0aBhuKCLjv5v+r9FfLDR2uDes3v2av0lnw58RpqkeRlmZiv/"
164
+ "rvDwj4csv1qmq9Fl2zq35QsBrLt1u/DzBS7ev0ir1YrC/DPJv7oD7zw3Fr7nyN0jLL9erpQ/"
165
+ "83yG8R/HOXH3BI9WH1WePf3nKYdvHObm45tFJ7XrIrkgroW/Fxi7Paap36YKjxK50GIXSdLk"
166
+ "/KTGvhtj6a8ltRNsGkVV8RYvrW2s2Zn7Z3jw/IHOHjgbhRiNzt6sv9G56XM2vThd+E9hhBat"
167
+ "IsXVPKTmJXcW7/Bk9Qkj/SN56bO/z3Lpl0usvl6t5tc8TBI2PDE8h9hbBc4mVFsD22J6lRaQ"
168
+ "8nkxn5q3nKJ8QvnqhMIXJctTtesaLRW6JNJM+uAFYbFiJ3Fy1aup77Ru7aUzxZUnkFQCV8ng"
169
+ "VAbK85UNwdhZkXuKCZhGJefDvACMYslLzqdXeCaEmWzTBMz/MCBSHEt1SuSFyaqDvNhpNSfS"
170
+ "QYmawsqW3gIVgl7eufygTQAAAABJRU5ErkJggg==")
171
+
172
+ #----------------------------------------------------------------------
173
+ Height = PyEmbeddedImage(
174
+ "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADXklEQVRIiX1Wz2tcVRT+vjfP"
175
+ "dKE4jNhBI1kISogMxlQZQgKW/gtdtnQZaLclq5Z2kRYyJH9DtyXQLkSxopBBitK6KKmIDBmD"
176
+ "CxeGGLEEIWli7/lc3B/vvb6ZXri8M/eec+493z3fOcPOd50NANN41dCYaVEWZC+tGQDDdk5y"
177
+ "GsAnkkSSACBJREkWGZ1KEo2UJAiEef80ryPz+jIBBuQjbzvm1g00AAEv7EU9Civk6FwScknJ"
178
+ "rcKPeNN0a/Py1Y+uQhLWfllTcBq/Xt/qck4QACgUUJRhiVCcbZ/FxfcvAoAe7z3mwz8fep3C"
179
+ "YZJpYd2EbOxDWjHbE22szK4gYwaCuP3pbbRPtQEX4HDw01CVDcgkeQj8iUqyvJwpw+rcqloT"
180
+ "LUUIWxMtrXZXQVFwkMz7kJPCoUnOKCLCQSNjeCFkLn24hO7pLuMAAJLstrtYmlkiDIQD6Eq2"
181
+ "DoQDPUQlKEI0KdQzb53B5enLY+lx5eMrmHt7LkElV4cri+GFBQWY0Myb6n3WU4MND1cY5Wxr"
182
+ "sKG1z9fUfK3pbZ0kV4UrD7lLCIKBFCGTFt5d4OCfAQYYSBJnWjOYfGMSknRwfMAne08U7LA4"
183
+ "uagHwwfJlhaIJoCdLzpbkmbHkSam28r8Cs5/cB4AsLW3hUtfXUp7r7D7OYcBgdqj89oKTpCM"
184
+ "cBEuRGwsyoe/dbKFCogqDw0Dzr13DvPvzCdezJ6eTY879eYUri1eS3uP/niE/m/9VCYoojjA"
185
+ "lUIKzmXCYH+AW/O30DzVRMjONNqvt3GhcwEk8ezoGe78dKcGT/xWskiuINruv7u6+cPNlDWj"
186
+ "skiSbnx7Q7sHu1WSluQsEkNOnmiODLnMzd83ufHrBlgakWgAcPfpXfaHfcJKRHMFSf0BpbqR"
187
+ "SFIiyvqP6xj+PayRbLg/xHp/vbCz+pSETE5INSRB5NfkpOcnz7H8zbKO/jtKEB2eHGr5y2Uc"
188
+ "nxyPhKUCEY1IsFioIa4a8s7+Dnvf9wj42t7b7HHnr52RtUtSZT2XU3hxAcYawaJ87+k9LEwt"
189
+ "QBLub90vsq7Sm+szhyt3IKnkXKX2Jwi4/vX1Ys87VUxtCEUHRNENPZNDE09s9A4jG1NDPzw6"
190
+ "TB0u6lCsdcD0hwFCDoftlyGpsDE28uKmVZ0IB0rQFLzc/h/4UISz4M1LhAAAAABJRU5ErkJg"
191
+ "gg==")
192
+
193
+ #----------------------------------------------------------------------
194
+ ZoomIn = PyEmbeddedImage(
195
+ "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAELklEQVRIiX1WTWhUVxg95817"
196
+ "GlON2ug0KRiJaJOQBEWarm0F46qLGqhIcZ1EkEYCulBcunAhCLrJSgraRaG0hSyiEXUlGcmk"
197
+ "Tn9MLTb+jEyiScAkxsx47+nivfvmzUQdeMz37vveufc75/t57Bjp+BFACz7003su62xBtmrN"
198
+ "ArCY9Em2ANgjSSQJAJJEJGyRDlSSaElJgkDYEJ829JEN/WUFWMB/52k/dOoQZHUUtmw7cEnw"
199
+ "JcWwim7cSROAqtpAEaj7D/3tatsnCAAUylQ4Wnau34nuhm41fdTEoini/tx9DD8d1uLbRToq"
200
+ "EoCxTRutW4GdI53ZWINoAw+eBlsHeWT7ERCMtQGAuZU5nc6c5p3nd5wWYSQWZQ3Kekyk0t+l"
201
+ "eyF8kqTgVNspROC4VbiFq4+uYmJ2Ag3rGtCwrgHd27pxb/oeni8+j7mONajUZNqjwjNCAC3Z"
202
+ "ur6Vh7cfBgCey53j8bvHsXnNZmZfZtkz0sOxmTEEXsCzn59FRAVhABrSUQMDwoCygpfcWRK6"
203
+ "G7tBELn5HK79ew0yQn9bP7rqu7BcWsaZu2dgrEFzXTP2btkLGAAm5FtG8X20ETxZhVkRLmhb"
204
+ "7TYBwPjLcfW19il3KAdJ6mvvU+7bnPKv8ni2+EwA0L65XTLld2UkmRBPRoIB/IgzQqFQS6Ul"
205
+ "AFD92nrezt8GDNTf2c9MIYPMdAYBAm1au4kAFDBgFL1gQYqxyK5WvCid5CLJzGQEAPs/3a/8"
206
+ "Ql6X71+GJI0VxnQpe0k9O3tQt6ZOAPDf/KN3njpiRDKRBrQMhbLkyJMRPl54jNqglkP7hti1"
207
+ "tQu7f9jNK39c4dG2ozz5xUm4tJ1ZfEGaUFgaEgYVIsMC7PipIwthTxyahF11uzT01RC3rNsC"
208
+ "SVoxK/Q9H77nw/UsSXq18orHfjuG8fx4ZR2UC3AilT6U7oVFQ6yFBWZfz2L40TA3BBvQVNeE"
209
+ "2qCWHj28tW+RX8hjY81GAkBNUMODnx3EX4U/8WT+KV0NuEKDRYHt19qzEHa70q5oXBZIIYX6"
210
+ "mnrQEvPL85ARLhy8gH3N++L+WDIlnPj1BEb/Ga1ugL+n0t+ke2HRKKuwKbhiCUOmjLD0ZolL"
211
+ "b5ZojKExBjce3mDr1hY0f7yDJOnRw4GWA3ww/YBTL6ZcVhIWBS8uiqgwqgtFRqueF0tFfP/L"
212
+ "AG4+vBlHEaQCDH45WBG9JHgyQpxeRgpTLFxzReTs5LNiqYiBnwc0Ojkat/rJ6Ukl0l6wQCr9"
213
+ "dbqXlo0JkakodV02OLriZ9G6NZbX/75OgpianeL5kfN8XXxdflco+DJOWAGWFd1wlehVE0wS"
214
+ "Sirh4s2L751+PkxyAkkJcCXGn5Lgsb+iIRjZ8cRDeQL6rpLjYV4GdHmtRF67UUrnQ7Hiw6Di"
215
+ "gwGCD4PJakqilK0c5OWTVvo4OpCgJp5/mPwf/ayV5rr3q+AAAAAASUVORK5CYII=")
216
+
217
+ #----------------------------------------------------------------------
218
+ ZoomOut = PyEmbeddedImage(
219
+ "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAEE0lEQVRIiX1WTUxUVxT+vjdv"
220
+ "Kj8FbcERmoCh0Q4ESBsT66ZNaE2EVY3tStO4hrgphkQXunbhwkTdsW2kJk2a1oQ0KERdNYEA"
221
+ "StpKbSkqENACqYLIDPd+Xbx737wZqpNM3nn3nXfuud/5vnMe24bavgOQxZt+es3feluQLVmz"
222
+ "ACymQ5JZAB9JEkkCgCQRCVukDypJtKQkQSBsFJ828pGN/GUFWCD832zflHUUZPspbMH2wSUh"
223
+ "lBSHlbvxmSYCqmQDuaD+Gvnb7XZIEAAoFKDwsOx7ex866zrVWNnInMnh/sp9DD4Z1NrWGj0U"
224
+ "iYCxTevWrcD2ofaJuAZugwCB+pr7eGLvCRCMawMAK5srOjd6jncX7vpaRCexKNSgUI/JVObr"
225
+ "TDeEPUkIzrachQuO24u3cW3mGiaXJ1FXXoe68jp0NnRibGkMC2sLMdZxDYprssT2n9snIHcC"
226
+ "S2arsrj+6XUR5IWpCxj4ayDOroxluPrJVR3ac4gz/87o6I2jlFVp1km4JoPkzpLQWd8Jgpha"
227
+ "ncLAnwOQcdkZYCO/gfO/nIexBk3VTThQewAw0TNZRb7u3r8TOsrFrGioaAAAjP8zrp7mHvS0"
228
+ "9CTJi7Zv2zC3NqfGqka0vtOqsbkxD4k8PSEUWOQW6Ba5nl8HANXsqOGd+TuAQSQot00aae3a"
229
+ "sYsAlGaaLpBgQYoxXF4rYUwzl8Xo01Ec23sMh987rCv3rmB0YTTJexzPHkf1W9UCgL9XZxRD"
230
+ "mMja60BWCGABWhImug49HuKjF49Qka5gf0c/D+4+iJRSrAwqebLlJM98fAaetk/XnpEm4jwN"
231
+ "CRMVFwaxzbbv2yIW2bjHYH/1fvV/3s/a8lpI0qbZZBiECIMQvmdJ0vPN5zx14xTG58eLdVAQ"
232
+ "4GQq81WmGxZ1cS0ssPxyGYMzg6xKV6GxuhEV6QoGDLBltzD/Yh47y3YSAMrSZez6oAu/Lf6K"
233
+ "x6tP6DXgKQuLRbYOtE5A+NBjVtS4LJBCCjVlNaAlVjdWISNc6rqEjqaOuD/mTR6nfzqN4T+G"
234
+ "SxvgvVTmy0w3LOplFTUF10fckSkjrL9a5/qrdRpjaIzBrYe32Lw7i6Z33ydJBgxwJHuED5Ye"
235
+ "cPbZrGclYbEYxKJwwigVSsySxPNcPodvfuzFyMOR+BTpVBp9n/UVnV4SAhlBRnLBFEk9WpNx"
236
+ "dHN28lkun0PvD70anh6OW/300rSnp/MFUpkvMt20rE8UmXLU9WzwcMXP3Lo1ljd/v0mCmF2e"
237
+ "5cWhi3yZe1l4V1gMZXxhBVgWdcNtRS+ZYJKQVx6XRy6/dvqFMMkJVFCsV6/rL0oGj/3lhqBX"
238
+ "sp94KEzA0Cs5HuaFgJ7XSvDatxV6H4pFHwZFHwwQQhhMl0LiKFs8yAuZFvt4OJCAJp5/mP4P"
239
+ "yFN2/NjDF0IAAAAASUVORK5CYII=")
240
+