j(,jRddlmZmZmZddlmZmZddlmZGddeZ dS)) QLineEdit QListWidgetQListWidgetItem)Qt pyqtSignal)loggerceZdZdZeeeZdZdfd Zde e eeffdZ defdZ d Z d Zd Zd Zd efdZdefdZfdZfdZxZS)SearchableCombou Campo testo con popup filtrato. Il popup è un child widget della finestra contenitore — funziona anche dentro dialog modali. Emette item_selected(name, item_id) quando l'utente sceglie una voce. Nct|g|_d|_d|_|j|jdSN)super__init___items _selected_id_popup textEditedconnect_on_text_edited)selfparent __class__s -C:\PYTHON\GemmaClient\app\searchable_combo.pyrzSearchableCombo.__init__sP    -/ !#*.   455555itemsc"||_d|_dSr )rr)rrs r set_itemszSearchableCombo.set_itemss rreturnc|jSN)rrs r selected_idzSearchableCombo.selected_ids   rcd|d|_|dSr )clearr _hide_popupr"s rresetzSearchableCombo.reset!s/  rc|}|j|j|ur|jr2|j|jt ||_|jtjj |jj |j |jdSdSr!) windowrrhide deleteLaterrsetFocusPolicyr FocusPolicyNoFocus itemClickedr_on_item_clicked)rwins r _ensure_popupzSearchableCombo._ensure_popup(skkmm ; $+"4"4"6"6c"A"A{ *   """ '')))%c**DK K & &r~'= > > > K # + +D,A B B B K       #B"Arct|}|||}|j||jt|d|j dpd}t|j d}|j ||zdz|j |jdS)Ni,r )r)mapTorect bottomLeftrmove setFixedWidthmaxwidthsizeHintForRowmincountsetFixedHeightraise_show)rr1posrow_hns r _show_popupzSearchableCombo._show_popup5skkmmjjdiikk446677  !!#djjllC"8"8999 **1--3  !!##R ( ( ""1u9q=111  rcJ|jr|jdSdSr!)rr*r"s rr&zSearchableCombo._hide_popupAs0 ;  K         rtextcnd|_t||jkr|dS|fd|jD}|s|dS||j|D]S\}}t|}| tj j ||j|T|t!jdt|d|ddS)NrcJg|]\}}|v||f S)lower).0rFi text_lowers r z3SearchableCombo._on_text_edited..Ns3MMMdaZ177995L5LAq65L5L5LrzSearchableCombo: z risultati per '')rlen MIN_CHARSr&rMrr2rr%rsetDatar ItemDataRoleUserRoleaddItemrGrdebug)rrImatchesnameitem_iditemrPs @rrzSearchableCombo._on_text_editedGs6 t99t~ % %       FZZ\\ MMMMdkMMM        F  $ & &MD'"4((D LL17 ; ; ; K   % % % %  NWNNtNNNOOOOOrr]c@|}|tjj}||_||||j ||tj d|d|dS)NzSearchableCombo: selezionato 'z' id=) rIdatarrVrWrsetTextr& item_selectedemitrrY)rr]r[r\s rr0z SearchableCombo._on_item_clicked^syy{{))BO455# T  g... JdJJJJKKKKKrc|jr|jr|tjjkr5|j|jddS|tjjkr| dSt |dS)Nr) r isVisiblekeyrKeyKey_DownsetFocus setCurrentRow Key_Escaper&r keyPressEventreventrs rrkzSearchableCombo.keyPressEventis ; 4;0022 yy{{bfo-- $$&&& ))!,,,yy{{bf///  """ e$$$$$rcr|t|dSr!)r&r hideEventrls rrozSearchableCombo.hideEventts3  %     rr!)__name__ __module__ __qualname____doc__rstrrarTrlisttuplerr#r'r2rGr&rrr0rkro __classcell__)rs@rr r sPJsC((MI666666tE#s(O4!S!!!!       PCPPPP.L_LLLL % % % % %!!!!!!!!!rr N) PyQt6.QtWidgetsrrr PyQt6.QtCorerrlogururr rLrrr{sCCCCCCCCCC''''''''p!p!p!p!p!ip!p!p!p!p!r