Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - shordi

Pagine: [1] 2 3
1
Spagna / Re:Un nuovo Controllo: GvColumnFixer
« il: 12 Luglio 2022, 10:56:35 »
Ho aggiornato gitlab e farm con la versione 1.0.3, che aggiunge alle proprietà della classe ( FixedColumns, FixedForeground e FixedBackground), più proprietà della classe Gridview, ovvero:

ShowCursor, Mode, Header, ScrollBar, Row, Column, Grid, Padding, Font, Rows, Columns, Current e Data.

Oltre agli eventi:

Data, Change, Select, Activate, Click, Scroll y Font.

Non ci sono tutte le proprietà o tutti gli eventi, ma con questi il ​​90% della gestione di un GridView è risolto. Se qualcuno vuole aggiungere qualcos'altro o modificarlo, me lo faccia sapere, sarò felice di aggiungerlo o, meglio ancora, lo faccia aggiungere e me lo passerà in seguito.

L'idea è che possa essere gestita e si comporti come una normale visualizzazione della griglia con steroidi, che sia gestita come al solito e che sia possibile impostare le colonne... oppure no.

Saluti

2
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

Saluti

3
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

4
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

5


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

6
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

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

7
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.

8
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

9
È 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

10
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:

11
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

12
Infatti, GianLuigi, questo è il comportamento che cerco... ma senza il pulsante ausiliario né la necessità di cliccarci sopra. Dovrebbe semplicemente attivarsi alla pressione di un tasto e accettare il contenuto digitato se non corrisponde a nulla nell'elenco (incluso nell'elenco la prossima volta che il controllo viene visualizzato, ovviamente).
Per quello che è basta la versione che ho caricato... ma mi rimane l'amaro in bocca di non averlo realizzato. Combobox non è scritto in gambas3, penso che provenga direttamente dalla libreria grafica gtk(3 o 4) o qt(4 o 5) e non penso che possa essere modificato. Tuttavia, mi è appena venuto in mente che se cambio la casella combinata in una casella dei pulsanti che mostra il tuo controllo ComboFind con il suo pulsante ... forse otterrò quello che sto cercando. È un'idea e ti farò sapere se riesco a farla funzionare.
Grazie mille per il tuo interesse.

Ti auguro il meglio

13
Vi presento una tecnica che ho sviluppato qualche tempo fa e che abbiamo usato nella mia azienda per gestire le macchine client.
Il caso è che distribuisci o installi da solo il tuo pacchetto di installazione sui computer dei client e all'inizio molto bene, ma poi, ad esempio, carichi nuove versioni nel repository e scopri che i client non hanno aggiornato il macchinari.

Devi aggiornare, ma questa è una questione di root

O per qualsiasi motivo, si desidera che la password immessa dall'utente nella propria applicazione corrisponda a quella presente nel sistema operativo.

Ma consultare quella chiave è una questione di root

Oppure hai sviluppato un "programma ausiliario" (copie di backup, ad esempio) che desideri installare anche sul computer del Cliente, che non sa come installare nulla e non comprende semplici istruzioni per telefono (non parliamo per iscritto).

Devi installarlo, ma è una questione di root.

Oppure vuoi controllare quale software è stato installato e ciò sta ostacolando il funzionamento del tuo programma e disinstallarlo se ciò viola il contratto che hai stipulato con esso.

Ma la disinstallazione è root

Bene, ti mostrerò come, dai miei programmi, eseguo azioni di root con sudo senza che mi venga mai chiesta la password.

Il trucco è:
Il sistema sudo consente il rilassamento di alcuni comandi in modo da non richiedere la password. Il più semplice che vedi ogni giorno: se esegui "apt update" sulla console, il sistema non lo consente e se lo fai con sudo ti chiede la password. Quindi, come diavolo fa il gestore degli aggiornamenti per dirti che ci sono aggiornamenti in sospeso? In che modo a quel programma non viene chiesta la chiave?

La spiegazione è: Sudo consente ad alcuni comandi specifici di avere "autorizzazioni speciali" quando eseguiti. Non darò ulteriori spiegazioni sull'argomento che San Gúgul ne sia pieno. Sappi solo che se individuiamo un file chiamato "sidi" con questo contenuto

Cmnd_Alias SIDI = /tmp/sididar
ALL ALL = (root) NOPASSWD:SIDI

Nella cartella /etc/sudoers.d, stiamo dicendo al sistema che il comando /tmp/sididar viene eseguito come root e la password non è richiesta. Sì, so che questo comando non esiste, ma lo faremo.
(A proposito, SIDI per Simón Dice e sididar per SImon DIce Do As Root)

Sulla base di ciò facciamo quanto segue:

A) FILE SIDI:

Creiamo questo file "sidi" con il contenuto sopra nella cartella .hidden del nostro progetto.
Quando creiamo il pacchetto di installazione .deb, sullo schermo 8 inseriamo questo:



Con questo, quando installi il nostro programma (a quel punto ti verrà richiesta la chiave di root, ovviamente), oltre a installare il nostro progetto, copierai sidi nella cartella di destinazione.

B) COMANDO / tmp / sididar
Una volta installato sidi, questo comando, chiamato con sudo, verrà eseguito senza password.
Questo comando è in realtà uno script di shell con il seguente contenuto:

#/bin/bash
$1

Cioè, basta semplicemente lanciare il primo parametro che riceve nella shell.

Immagino che tu abbia già l'idea: se crei in /tmp il file sididar con permessi di esecuzione e, ad esempio, digita

sudo /tmp/sididar apt update

Il sistema verrà aggiornato senza richiedere una password.

Di seguito è riportato un esempio che confronta la chiave digitata con la password dell'utente nel file /etc/shadow system che è root con 640 autorizzazioni

La copia di sidi in /etc/sudoers.d, è fatta al momento dell'installazione del programma tramite .deb sul computer (ovviamente per testarlo nell'IDE dovrai copiarlo tu stesso in quella cartella)

/tmp/sididar viene creato in fase di esecuzione per l'esecuzione del comando che ci interessa e viene rimosso immediatamente dopo per non lasciare "buchi" di sicurezza aperti.

Questo viene fatto da una funzione che ti ha passato all'interno di un modulo nel progetto di esempio e che ti consente di eseguire comandi ricevendo l'output della console in una variabile; esegui comandi ignorando l'output della console ed esegui i comandi in background (&) e continua con l'esecuzione del nostro progetto.

Questa tecnica è senza dubbio un buco nella sicurezza della macchina installata, ma non così grave come potrebbe sembrare.

Prima di tutto, se il comando /tmp/sididar non viene richiesto per la password, ciò non significa che possa essere utilizzato da qualcuno che non appartiene al gruppo sudo, quindi tutto ciò che viene eseguito con questa tecnica è qualcosa che lui Avrebbe potuto correre tranquillamente se stesso. Lo spazio risiede in quegli utenti che, appartenenti al gruppo di sudoer, hanno la loro sessione impostata in modo che non chiedano la password all'inizio, il che lascia il computer aperto a chiunque inizi a rovistare.
Può anche essere un problema per i computer fisicamente accessibili che un utente lascia sbloccato mentre va a colazione o altro.

D'altra parte, è una tecnica che ho inventato e che sto pubblicando qui per la prima volta, e quindi non nota al momento (anche se sospetto di aver reinventato la ruota) sebbene qualsiasi utente avanzato nel funzionamento di Linux (e caricato con cattive intenzioni il figlio di puttana) può indovinare guardando la cartella /etc/sudoers.d

In sintesi, una volta installato il sistema, la responsabilità della sicurezza ricade ancora di più sull'utente, che dovrà istruire e minacciare le pene dell'inferno se trascura la sua password o lascia aperto il dispositivo.

Naturalmente, i nostri programmi, con questo, diventano onnipotenti nella macchina in cui sono installati.

Scusa per il mattone.

14
Progetti degli utenti / Un nuovo controllo: TreeTable
« il: 17 Settembre 2019, 10:52:31 »
È un mix tra Gridview e TreeView che fa ... beh fa questo:



Cioè, riceve una query ordinata con "order by" e tratta il primo campo come una vista ad albero e il resto come una vista a griglia.

Ne avevo bisogno per un programma e l'ho fatto sotto forma di controllo ... anche se penso che non lo userò per nient'altro (non lo saprai mai)
Ho una versione modificabile all'ordine del giorno che supporta più livelli di Tree, non solo il primo campo.

Spero che lo trovi utile.

15
Interessante, quando ho realizzato l'editor basato su webview, non mi è nemmeno venuto in mente di mettere tabelle. Il mio obiettivo era solo quello di scrivere del testo ... e ho aggiunto le immagini quasi all'ultimo minuto. Tuttavia, dico, ho finito molto stufo di WebView e del suo diavolo execCommand. Non credo che prenderò di nuovo quel controllo.
Comunque ci sei. Per creare le tabelle (e modificare righe e colonne) è molto semplice creare una griglia in modo dinamico, sfruttando la possibilità di espandere graficamente la larghezza e l'altezza di righe e colonne. La conversione quindi in HTML è piuttosto banale ...
Ora sono immerso in un altro progetto che, credo, sarà l'ultimo che faccio. Ti passo la torcia.

Saluti

Pagine: [1] 2 3