Xׯdh,<ddlZddlZGddejZdS)NcNeZdZdZdiffd ZdZdZdZdZdZ d Z xZ S) DatabaseSchemaSelectoraqWidget to select database schemata within a collection of catalogs (optional) and schemata This wigdet will help you to display a set of schemata in a nice tree structure, grouping them by catalogs (if the catalog information is supported/available). Next to each listed schema is a checkbox for the selection/unselection of the schema. The user can quickly select all of the schemata for a given catalog by clicking on the checkbox next to the catalog name. .. image:: ../../../library/python/workbench/doc/images/schema_selection_widget.png :param database_objects: Pass a list/tuple of schema names if you don't use catalogs. If you do use catalogs then pass a list of tuples of the form ``(catalog_name, schema_list)`` where :attr:`schema_list` is a list/tuple with the schemata that belongs to the given :attr:`catalog_name`. :type database_objects: list/tuple :param tree_checked_callback: A function object that will be called by this widget whenever a schema is checked/unchecked. It should accept an integer argument with the number of selected schemata. :type tree_checked_callback: callable :param ui_settings: A dictionary to customize the appearance of the widget. In case you need to customize something, just pass the relevant modifications in this dict. The other (default) settings are kept. Check the definition of :attr:`self.ui_settings` in the class implementation to see the configurable settings. :type ui_settings: dict .. rubric:: Sample usage: :: db_objects = [ ('catalog1', ('schema1', 'schema2')), ('catalog2', ('schema3', 'schema4')) ] content = mforms.newBox() object_selector = DatabaseObjectSelector(db_objects) content.add(object_selector, True) cdSN)ns /..\workbench\database_schema_selector_widget.pyzDatabaseSchemaSelector.Csctt|d||_||_t |t tfo+t|dkotd|D|_ dddddid |j dd d |_ t |trft | D]D\}}||j vst |ts$|j ||E|j r3td |D|_t||_nd |_||_g|_g|_|dt)jt(j|_|jd|jt(jddd|jt(j|j rdnddd|j|j|j|jd| |jddt)j!d}|dt)j"d|_#|j#d| |j#dd|j ddrt)j$|_%|j%&d|j%'tQj)|j*d|+|j%d|j ddrt)j$|_,|j,&d|j,'tQj)|j*d|+|j,d| |dd|-d S)zConstructor. Frc3K|]p}t|ttfoOt|dkoz2DatabaseSchemaSelector.__init__..Ms!!$( !+4$ ? ?!B"4yyA~!B)$q'377!B *$q'D%=AA!!!!!!r z"workbench.physical.Layer.16x16.pngT)icon should_expandrzdb.Schema.16x16.pngz%(nSchemata)d schemas selected) summary_textshow_select_all_buttonshow_unselect_all_button)catalogsschemasgeneralc3&K|] }|dV dSrNrrs r rz2DatabaseSchemaSelector.__init__..ks&"H"Ht47"H"H"H"H"H"Hr Nz Schema ListInclude<zCatalog/SchemaSchemai, Summaryr rz Unselect All)checkedrz Select All).superr__init__database_objectstree_checked_callbackrrrrall use_catalogs ui_settingsdictitemsupdate _catalogs _schemata _schema_nodes_catalog_nodes set_spacingmforms newTreeView TreeDefaultschema_list_treeset_name add_columnCheckColumnTypeIconColumnType end_columnsset_cell_edited_callback_schema_tree_checkedset_allow_sortingaddnewBoxnewLabelselect_summary_label newButtonunselect_all_btnset_textadd_clicked_callback functoolspartial_mark_all_schemataadd_endselect_all_btn_fill_schema_tree)selfr-r.r1keyvaluehelper_buttons_box __class__s r r,zDatabaseSchemaSelector.__init__CsQ $d++44U;;; 0%:"))9D%=II!/0014!!!,< !!!!! $H,0"#8+K9=9J5J7;    k4 ( ( 4";#4#4#6#677 4 4 Ud...j6M6M. %,,U3333   .""H"H7G"H"H"HHHDN!"233DNN!DN-DN   & 263E F F &&}555 (()?BPTUUU (()>TXTe@s@P@Pksuxz A A A ))+++ 66t7PQQQ //666 &d333#]400&&r***$*OB$7$7! !**9555t8%FFF  I &'A B E$*$4$6$6D !  ! * *> : : :  ! 6 6y7HI`jo7p7p7p q q q  & &t'z.J6.RSSS''<888$$\222#**<888#'>,#?;;K"."8"8":":K((E222--a1A)1LV1TUUU**1k:::'' s(:[(HIII&--k::::#J/@* '')))# *& $~ 7 7 "3<<>> $$Q...))!T-=i-H-PQQQ&&q+666##K000"))+66664>""a''%11+>>> !**4+;I+F~+VZefgYh+hiiiiir c t t|ts|g}|D]*}|dkr |dk}|d||jr| |jk}|r|dn d}t|j |}|rDatabaseSchemaSelector._schema_tree_checked..sR@l@l]hAUAUVWAXAX@l@l@l@l@l@lr c3BK|]}|VdSr) get_child)ridx parent_nodes r rz>DatabaseSchemaSelector._schema_tree_checked..slmjmjNQnyoDoDEHoIoImjmjmjmjmjmjr c3DK|]}|d|VdSr"rlrns r rz>DatabaseSchemaSelector._schema_tree_checked..s7)w)w+_j_s_stu_v_v)w+)w)w)w)w)w)wr r rr[)rrr]r0 get_parentr= root_node get_stringrr6rangerpr/rr7rIrLr1r.) rT node_listcoldatanoder* is_catalogre schema_countrqselected_schema_countrrs @r rDz+DatabaseSchemaSelector._schema_tree_checkeds+)T** $" I n nDaxx#+ a)))$ n"&//"3"3K!,0E0O0O0Q0Q!QJ9C#b4??1#5#5#5I_I_`aIbIbL#&t~l'C#D#DL!n#(#6#6EEC NN3//88GDDDDE$,,Q1lC@l@lmjmjmjmjUZ[gUhUhmjmjmj@l@l@l=l=lnnn #E)w)wI[)w)w)w$w$w x x !**4+;I+F~+VZef{Y|+|}}} ""#899999r c0|jr|i}|jD]p}|dkr|d\}}}||g|q|Sfd|jDS)NrrZclg|]0}|dk|d1S)rr)rmrv)rrhr*s r z:DatabaseSchemaSelector._select_objects..sB|||;XcXlXlmnXoXoszXzXz[++A..XzXzXzr )r0r7rmget_tag rpartition setdefaultra)rTr*catalog_schematarhredotrgs ` r _select_objectsz&DatabaseSchemaSelector._select_objectss   }! #1 R R ''**g551<1D1D1F1F1Q1QRU1V1V. c; ++L"==DD[QQQQ# #||||$BT||| |r c,|dS)NTrrTs r get_selectedz#DatabaseSchemaSelector.get_selecteds##D)))r c,|dS)NFrrs r get_ignoredz"DatabaseSchemaSelector.get_ignoreds##E***r cf|jr|jn|j}||d|rdnddS)Nrrj0)r0r8r7rD)rTr*nodess r rPz)DatabaseSchemaSelector._mark_all_schematasA'+'8P##d>P !!%7,CCCDDDDDr ) __name__ __module__ __qualname____doc__r,rSrDrrrrP __classcell__)rXs@r rrs&&P@M}Z\S!S!S!S!S!S!j!j!j!jF:::0 } } }***+++EEEEEEEr r)rNr:Boxrrr r rsf, MEMEMEMEMEVZMEMEMEMEMEr