Gambas-it

Gambas dal mondo esterno => Spagna => Topic aperto da: shordi - 17 Giugno 2022, 13:46:45

Titolo: Comboseek: una casella combinata che ricerca nell'elenco digitato.
Inserito da: shordi - 17 Giugno 2022, 13:46:45
Ieri ho scoperto che, non sapendo quale versione, il controllo della combobox è stato riscritto in gambas3. Da lì è stato facile modificare questo controllo per creare una casella combinata che viene visualizzata durante la digitazione e ricerca nell'elenco la corrispondenza più vicina al testo digitato, passando il valore selezionato quando si preme invio.
La ricerca è sfocata, quindi non importa se l'elenco è ordinato o meno (non sono sicuro se questo sia preferibile alla ricerca sempre in sequenza... ma penso che lo sia).

L'indizio di dove guardare mi è stato dato dal grande Gianluigi e da qui lo ringrazio.

Come sempre è molto poco testato, che l'impazienza di portarlo qui può farmi venire, quindi se lo provi e trovi dei bug te ne sarò eternamente grato.

Spero che vi piaccia e/o che vi sia utile.

Saluti
Titolo: Re:Comboseeker: una casella combinata che ricerca nell'elenco digitato.
Inserito da: Gianluigi - 17 Giugno 2022, 13:58:06
Scaricato grazie  :)
Titolo: Re:Comboseeker: una casella combinata che ricerca nell'elenco digitato.
Inserito da: Gianluigi - 18 Giugno 2022, 14:27:22
Come sempre è molto poco testato, che l'impazienza di portarlo qui può farmi venire, quindi se lo provi e trovi dei bug te ne sarò eternamente grato.

Spero che vi piaccia e/o che vi sia utile.

Saluti

Per quello che l'ho potuto provare, funziona benissimo, anche se il modo in cui fa la ricerca mi spiazza un pochino.

Mi piace  :ok:
Titolo: Re:Comboseeker: una casella combinata che ricerca nell'elenco digitato.
Inserito da: shordi - 18 Giugno 2022, 20:32:42
Purtroppo noto che funziona solo con QT. Non so cosa c'è di sbagliato in GTK che non consente di digitare nella combobox interna del combo. Mi dicono anche che con XFACE desktop l'elenco viene spostato dalla combobox. Non l'ho ancora provato ma tutto questo mi infastidisce: il codice che utilizzo è lo stesso che arriva nei sorgenti gambas3 scaricati da github, modificando solo la visibilità di alcuni oggetti e il comportamento degli eventi keypress e keyrelease. Non ha niente a che fare con tutto il resto... non funziona. :evil: :evil: :evil:
Titolo: Re:Comboseeker: una casella combinata che ricerca nell'elenco digitato.
Inserito da: Gianluigi - 18 Giugno 2022, 23:02:50
Purtroppo noto che funziona solo con QT. Non so cosa c'è di sbagliato in GTK che non consente di digitare nella combobox interna del combo. Mi dicono anche che con XFACE desktop l'elenco viene spostato dalla combobox. Non l'ho ancora provato ma tutto questo mi infastidisce: il codice che utilizzo è lo stesso che arriva nei sorgenti gambas3 scaricati da github, modificando solo la visibilità di alcuni oggetti e il comportamento degli eventi keypress e keyrelease. Non ha niente a che fare con tutto il resto... non funziona. :evil: :evil: :evil:

Su Ubuntu 20.04 funziona allo stesso modo sia con gb.gui.qt che con gb.gui o gb.gtk3.
L'unica cosa che ho notato è che se ti sposti col mouse sulla lista questa a sua volta si sposta nascondendo la voce trovata, ma accade con tutti i componenti anche qt.

Domani provo su una xubuntu e ti relaziono

 :ciao:
Titolo: Re:Comboseeker: una casella combinata che ricerca nell'elenco digitato.
Inserito da: Gianluigi - 19 Giugno 2022, 12:22:56
Purtroppo noto che funziona solo con QT. Non so cosa c'è di sbagliato in GTK che non consente di digitare nella combobox interna del combo. Mi dicono anche che con XFACE desktop l'elenco viene spostato dalla combobox. Non l'ho ancora provato ma tutto questo mi infastidisce: il codice che utilizzo è lo stesso che arriva nei sorgenti gambas3 scaricati da github, modificando solo la visibilità di alcuni oggetti e il comportamento degli eventi keypress e keyrelease. Non ha niente a che fare con tutto il resto... non funziona. :evil: :evil: :evil:

Ho fatto un po di prove, il problema con le gtk esiste solo con la stabile se si usa la master il tuo progetto funziona bene.  :ok:
Occorre attendere oppure chiedere a Benoit di aggiornare la stabile.

Io preferisco la ricerca così (vedi progetto allegato) forse potresti inserire una nuova proprietà con più scelte da poter passare alla finestra popup con Open

 :ciao:
Titolo: Re:Comboseeker: una casella combinata che ricerca nell'elenco digitato.
Inserito da: shordi - 19 Giugno 2022, 20:10:05
È un sollievo per GTK. Devo ancora testare il risultato sui desktop XFACE, che mi dicono che l'elenco è stato spostato.

Ti confesso che questa ricerca da te proposta era quella che usavo nel primo schizzo del controllo, ma poi ho pensato che forse era più "elastica" se si faceva il contrario. Tuttavia, penso che tu abbia ragione. Cerca sempre per stringa iniziale dà più sicurezza quando hai trovato l'oggetto che stai cercando e quando no.
Penso che userò la tua proposta.

Grazie mille per l'interessamento e la collaborazione.

Saluti
Titolo: Re:Comboseeker: una casella combinata che ricerca nell'elenco digitato.
Inserito da: Gianluigi - 19 Giugno 2022, 22:53:01
È un sollievo per GTK. Devo ancora testare il risultato sui desktop XFACE, che mi dicono che l'elenco è stato spostato.
Se ti riferisci a XFCE l'ho provato su Xubuntu 20.04, con la stabile e le gtk non funziona ma con le QT va alla grande.
Vedi immagini allegate
Citazione
Ti confesso che questa ricerca da te proposta era quella che usavo nel primo schizzo del controllo, ma poi ho pensato che forse era più "elastica" se si faceva il contrario. Tuttavia, penso che tu abbia ragione. Cerca sempre per stringa iniziale dà più sicurezza quando hai trovato l'oggetto che stai cercando e quando no.
Penso che userò la tua proposta.

Grazie mille per l'interessamento e la collaborazione.

Saluti

Figurati, sono interessato anche io e mi fa piacere imparare nuovi trucchi dal maestro  :)

 :ciao:

PS Ricorda che se uno ha una versione con ancora il vecchio ComboBox è normale che non funzioni in quel caso forse ComboFind potrebbe...
Titolo: Re:Comboseeker: una casella combinata che ricerca nell'elenco digitato.
Inserito da: shordi - 21 Giugno 2022, 08:40:16
Grazie Vuott, ieri non ho avuto tempo di aggiornare qui. Le nuove modifiche sono:
-Ho aggiunto più comportamenti alla tastiera (up, down, pgUp, pgDown), che non erano stati considerati in precedenza.
-Ho adattato la modalità .Readonly, che penso funzioni bene ora.
-Ho impostato la modalità suggerita da GianLuigi per cercare solo l'inizio delle voci. È più "umano".
-Ho cambiato il nome in ComboSeek, che è più breve e significa la stessa cosa.
A parte le modifiche, l'ho provato nelle diverse versioni di Ubuntu e Debian e con le diverse librerie GTK e QT... e la parte interna funziona bene in tutte (l'elenco appare al suo posto, quello che viene digitato è visualizzato nella casella di testo e la ricerca è riuscita) ma il display non lo è. In alcuni il pulsante con la freccia non viene disegnato e sembra una casella di testo e in altri non viene disegnato nulla e sembra che tu stia scrivendo direttamente in un pannello.
Questo mi porta ad ammirare ancora di più Benoît, che riesce a far funzionare bene Gambas in tutti gli ambienti.
Vorrei poter presentare questo controllo come valido per tutti gli utenti Gambas3... ma temo che rimarrà una cosa "casalinga" se qualcuno con più conoscenze di me non affronta il problema.

Hai anche la nuova versione al Gambas Farm.

Saluti
Titolo: Re:Comboseek: una casella combinata che ricerca nell'elenco digitato.
Inserito da: shordi - 21 Giugno 2022, 10:09:01
P.S.: Vecchio come me, ieri ho fatto un pasticcio con le versioni e ho caricato la penultima invece dell'ultima. Ho caricato il numero, l'ultimo è 0.1.3 e l'ho aggiornato nell'intestazione di questo thread e nella Farm.
Mi scuso se questo ha causato problemi.
Titolo: Re:Comboseek: una casella combinata che ricerca nell'elenco digitato.
Inserito da: shordi - 21 Giugno 2022, 10:39:22
Visto l'errore e il disastro di cui vi ho parlato sopra (versione errata: caricata sul forum spagnolo, caricata sulla farm, caricata sul forum italiano, scusate ovunque, ecc.  :evil: :evil:) ho deciso di caricarla su gitlab:
https://gitlab.com/shordi/ComboSeek (https://gitlab.com/shordi/ComboSeek)

D'ora in poi se ci sono modifiche le metterò solo lì e così saprai sempre che se le scarichi da lì hai l'ultima versione.
Naturalmente, se qualcuno vuole collaborare, Gitlab è stato inventato per questo.

Saluti
Titolo: Re:Comboseek: una casella combinata che ricerca nell'elenco digitato.
Inserito da: Gianluigi - 22 Giugno 2022, 11:16:36
Visto l'errore e il disastro di cui vi ho parlato sopra (versione errata: caricata sul forum spagnolo, caricata sulla farm, caricata sul forum italiano, scusate ovunque, ecc.  :evil: :evil:) ho deciso di caricarla su gitlab:
https://gitlab.com/shordi/ComboSeek (https://gitlab.com/shordi/ComboSeek)
:D
Citazione
D'ora in poi se ci sono modifiche le metterò solo lì e così saprai sempre che se le scarichi da lì hai l'ultima versione.
Naturalmente, se qualcuno vuole collaborare, Gitlab è stato inventato per questo.

Saluti

 :ok:

Volevo segnalare anche qui che dall'ultima versione Master:
https://www.gambas-it.org/smf/index.php?topic=9272.msg51840#msg51840
Benoit ha aggiunto questo nuovo comportamento, occorre cliccare sulla freccia e digitare quello che cerchi (funziona bene solo con le QT).

Forse può ispirarti qualcosa...
Titolo: Re:Comboseek: una casella combinata che ricerca nell'elenco digitato.
Inserito da: kicco - 22 Giugno 2022, 12:07:54

Benoit ha aggiunto questo nuovo comportamento, occorre cliccare sulla freccia e digitare quello che cerchi (funziona bene solo con le QT).


"...occorre cliccare sulla freccia e digitare quello che cerchi". Cosa deve succedere? Perchè a me (QT5) non succede niente!
 :ciao:
Titolo: Re:Comboseek: una casella combinata che ricerca nell'elenco digitato.
Inserito da: kicco - 22 Giugno 2022, 12:11:27
 ;D
Ho capito, si evidenzia la voce nella Popup list!
 :ciao:
Titolo: Re:Comboseek: una casella combinata che ricerca nell'elenco digitato.
Inserito da: Gianluigi - 22 Giugno 2022, 12:15:45
;D
Ho capito, si evidenzia la voce nella Popup list!
 :ciao:

 ;D si, anch'io ci ho messo un po a capire come funzionava  :ciao:
Titolo: Re:Comboseek: una casella combinata che ricerca nell'elenco digitato.
Inserito da: kicco - 22 Giugno 2022, 12:29:34
 :ciao:
Qui sembra funzionare anche con le "famigerate" GTK+3  :rolleyes:

 :ciao:
Titolo: Re:Comboseek: una casella combinata che ricerca nell'elenco digitato.
Inserito da: shordi - 22 Giugno 2022, 12:34:00


Volevo segnalare anche qui che dall'ultima versione Master:
https://www.gambas-it.org/smf/index.php?topic=9272.msg51840#msg51840
Benoit ha aggiunto questo nuovo comportamento, occorre cliccare sulla freccia e digitare quello che cerchi (funziona bene solo con le QT).

Forse può ispirarti qualcosa...
Aaarrghhh!!! Tutto il mio lavoro al diavolo perché il diavolo viene e lo fa molto meglio... Penso che piangerò, ma è quello che hanno quelli che hanno davvero un livello da guru. Possiamo solo inginocchiare e lodarli.  ;D ;D ;D
Titolo: Re:Comboseek: una casella combinata che ricerca nell'elenco digitato.
Inserito da: Gianluigi - 22 Giugno 2022, 13:15:36

Aaarrghhh!!! Tutto il mio lavoro al diavolo perché il diavolo viene e lo fa molto meglio... Penso che piangerò, ma è quello che hanno quelli che hanno davvero un livello da guru. Possiamo solo inginocchiare e lodarli.  ;D ;D ;D

Circoscritto al componente ComboBox non sono d'accordo, il tuo funziona meglio è più intuitivo ecc.  :ok:

@kicco
in Ubuntu 20.04 se p.e. vado all'ultimo dato della lista e se do backspace non posso tornare indietro, con le qt lo posso fare  :-\
Titolo: Re:Comboseek: una casella combinata che ricerca nell'elenco digitato.
Inserito da: kicco - 22 Giugno 2022, 13:29:55
Penso che piangerò, ma è quello che hanno quelli che hanno davvero un livello da guru. Possiamo solo inginocchiare e lodarli.
Mi capita spesso.
Capita, ovviamente, se ti circondi di persone capaci!
 :D
Titolo: Re:Comboseek: una casella combinata che ricerca nell'elenco digitato.
Inserito da: Gianluigi - 22 Giugno 2022, 13:36:03

@kicco
in Ubuntu 20.04 se p.e. vado all'ultimo dato della lista e se do backspace non posso tornare indietro, con le qt lo posso fare  :-\

Come non detto, non so cosa sia successo.
Ho disinstallato l'ultima master per fare una prova con una precedente.
Dopo aver reinstallato l'ultima master ora ComboBox funziona bene anche con le gtk.

Se capisco bene a voi la ricerca così come l'ha concepita Benoit piace, dico bene?
Titolo: Re:Comboseek: una casella combinata che ricerca nell'elenco digitato.
Inserito da: kicco - 22 Giugno 2022, 14:32:22
Dopo aver reinstallato l'ultima master ora ComboBox funziona bene anche con le gtk.
Bene, le vie del Signore...

Citazione
Se capisco bene a voi la ricerca così come l'ha concepita Benoit piace, dico bene?
Se nel "voi" sono compreso anch'io, non saprei, non ho approfondito il tema, non ho mai usato (credo) ComboBox.  :-\
Che differenza sostanziale c'è tra quello di Minisini e quello di Shordi?
 :ciao:
Titolo: Re:Comboseek: una casella combinata che ricerca nell'elenco digitato.
Inserito da: shordi - 22 Giugno 2022, 20:16:38
Dopo lo spavento, ho confrontato la soluzione di Benoit e la mia e ho notato che praticamente abbiamo fatto la stessa cosa, ma con quella di Benoit:
-Devi ancora premere il pulsante per cercare
-Le stringhe della lingua non sono ordinate correttamente, in particolare i caratteri accentati
-I caratteri accentati non vengono cercati correttamente
-I caratteri digitati nell'elenco non si riflettono nella casella di testo

D'altra parte, ho caricato la versione 0.1.4 su gitlab, che ha una nuova proprietà MaxItems, che imposta il numero di elementi visibili nell'elenco (ovvero la dimensione del menu a discesa), prima che fosse una costante fissa di 10 articoli.
Ho anche rimosso la proprietà Password, che penso non abbia senso in una casella combinata.

Ho anche modificato un po' l'aspetto, in modo che la piccola freccia sulla destra abbia uno sfondo che imita un pulsante... ma non sono sicuro di come apparirà su altri desktop.

In breve: tengo il mio... in attesa che appaiano dei bug, cosa che sono sicuro.

Saluti
Titolo: Re:Comboseek: una casella combinata che ricerca nell'elenco digitato.
Inserito da: shordi - 23 Giugno 2022, 10:20:25
Per avvicinare le due versioni, quella di Benoit e la mia, ho cambiato i nomi delle due variabili relative alla ricerca, $str, $hCtrl e la funzione di ricerca SearchList(), in modo che abbiano lo stesso nome di quelle che hai creato Benoít, $sFind, $hCombo e FindItem(), che sono molto più esplicativi di quelli che ho scelto.

Saluti
Titolo: Re:Comboseek: una casella combinata che ricerca nell'elenco digitato.
Inserito da: shordi - 24 Giugno 2022, 11:10:29
Oggi ho apportato una piccola modifica: premendo il tasto Esc con l'elenco visualizzato viene ripristinato il valore che era nella casella di testo al momento di ottenere lo stato attivo. Questo è così nel caso in cui hai dimenticato quale valore aveva prima di iniziare a cercare nell'elenco e non vuoi aggiungerne nessuno e lasciarlo com'era.

Ce l'hai su https://gitlab.com/shordi/ComboSeek (https://gitlab.com/shordi/ComboSeek)

Saluti