Gambas-it

Gambas3 => Programmazione => Topic aperto da: mondo - 08 Maggio 2021, 19:44:12

Titolo: mouse e desktop
Inserito da: mondo - 08 Maggio 2021, 19:44:12
Per prima cosa un Saluto a tutti.

E' il mio primo post, spero di aver capito tutto il regolamento, ma scusatemi e correggetemi
senza indugio nel caso sbagliassi qualcosa.

Sono un ex programmatore (C, vb6 , altri), non programmo ormai da molti anni, circa 13, ho 
abbandonato il mondo WIN per Linux, alcuni anni fa' ho scoperto l'esistenza di gambas ma
senza mai approfondirne la conoscenza, mancavano il tempo e l'occasione.

Premetto che per il problema che vi esporro' non cerco una soluzione, ma piuttosto informazioni
che mi diano una direzione di ricerca delle informazioni che mi sono necessarie, dopo aver cercato
a lungo in rete, non ne vengo fuori, e' evidente che non so' fare le domande giuste.

Il mio obbiettivo e creare una specie di desktop-spy, in pratica, cio' che vorrei ottenere e' questo:

Sorvolando col mouse un'icona sul desktop, avere in un form le informazioni su quell'icona, ad esempio
il suo nome, il percorso a cui punta, i diritti, fino ad ora sono arrivato a capire e stampare la
posizione del mouse sul desktop (lo so' sono scarso!), da li' non sono piu' riuscito a muovermi, mi manca
la familiarita' con gli strumenti, sia con il sistema (linux mint 19.3/mate) che con gambas3.

Nel mondo Win, con VB6 era una cosa piuttosto 'semplice', ma sono passati anni e non sono piu' abituato a
pensare in termini di programmazione.

Saro' grato  :2birre: a chiunque sia in grado di darmi indicazioni utili a trovare queste informazioni, senza le quali
non posso nemmeno sperare di trovare soluzioni.

Ora ho piu' tempo per studiare e spero di rimettermi in pista, per poter dare, in futuro, il mio contributo
a chi iniziera',come sto facendo io ora.


 
Titolo: Re:mouse e desktop
Inserito da: vuott - 08 Maggio 2021, 22:39:16
...fino ad ora sono arrivato a capire e stampare la posizione del mouse sul desktop
Ciao,
andiamo per gradi.
Puoi dire come ottieni la posizione x,y del mouse sul desktop ?
Eventualmente puoi inserire un breve e semplice codice esemplificativo ?
Titolo: Re:mouse e desktop
Inserito da: mondo - 08 Maggio 2021, 23:47:41
per ora con un semplice timer (old style VB6)

Public Sub Form_Open()
End

Public Sub Timer1_Timer()
  Label1.Text = "X: " & Mouse.ScreenX & " Y: " & Mouse.ScreenY
End
 e' solo una prova , ho visto che ci sono modi migliori per implementare un timer, e sicuramente altre logiche

Ho provato anche cosi' senza usare un componente e funziona:

Public T As Timer

Public Sub Form_Open()
  T = New Timer As "Tmr"
  T.Delay = 50
  T.Start
End

Public Sub Tmr_Timer()
  Label1.text = "X: " & Mouse.ScreenX & " Y:" & Mouse.ScreenY
End

Ho anche visto che si possono utilizzare le api di x11, usavo con disinvoltura le api Win , ma sono passati anni, e credo che per il momento le lascero' in un angolo , le vedo mooolto al di la' dei miei mezzi.

comunque, Ti ringrazio per la sollecita risposta


Titolo: Re:mouse e desktop
Inserito da: vuott - 09 Maggio 2021, 00:16:34
per ora con un semplice timer
Bravo.

Ora, dunque, resta la fase: " Sorvolando col mouse un'icona sul desktop, avere in un form le informazioni su quell'icona, ad esempio
il suo nome, il percorso a cui punta, i diritti
".

Quindi se si passa semplicemente sopra l'icona di un file, posto sul desktop, bisognerebbe ottenere alcune informazioni dell'icona (del file) medesima.

Titolo: Re:mouse e desktop
Inserito da: mondo - 09 Maggio 2021, 00:25:43
e qui casca l'asino (io) :hard:

comunque si, e' quello che ho scritto, ma come dicevo aprendo questo post, cerco di imparare nuovamente a programmare , dopo 13 anni di buio, non cerco una soluzione fatta da altri, vorrei arrivarci io, ma mi accorgo che mi mancano le informazioni necessarie ad affrontare questi ambienti che sono nuovi per me, piu' che altro ho bisogno di essere indirizzato da chi ne sa' di piu'.
il problema che ho proposto non ha uno scopo preciso al momento , e' solo l'obbiettivo che mi propongo di raggiungere per cominciare a fare qualcosa e imparare

Titolo: Re:mouse e desktop
Inserito da: vuott - 09 Maggio 2021, 00:29:28
eh ! Appunto !
Perché se avessimo un Evento che si sollevasse, quando appunto si passa sull'icona.... allora sarebbe facile.  ;D
Titolo: Re:mouse e desktop
Inserito da: vuott - 09 Maggio 2021, 00:36:04
Forse una base per un'ipotesi di lavoro potrebbe essere :-\ il fatto che il desktop, dove vengono mostrate le icone dei file presenti, è una finestra come un'altra e avente un proprio numero identificativo (ID).
....eh... però poi da questo a individuare le icone dei file sulle quali si passa (senza cliccarci sopra) con il mouse............  ;D
Titolo: Re:mouse e desktop
Inserito da: vuott - 09 Maggio 2021, 00:37:53
...... cerco di imparare nuovamente a programmare , .........e' solo l'obbiettivo che mi propongo di raggiungere per cominciare a fare qualcosa e imparare

Eh... ma sei partito in quinta !   :D
Titolo: Re:mouse e desktop
Inserito da: mondo - 09 Maggio 2021, 00:38:39
con vb6 avrei potuto usare l'hooking o OLE, nelle mie ricerche sono anche andato a vedere D-BUS, ma e' stato
un buco nell'acqua


Cavoli! .... e' vero , una finestra come un'altra, sei un grande
sono proprio arrugginito , ai bei tempi l'avrei pensata come prima cosa, grazie
mi si apre un mondo

Titolo: Re:mouse e desktop
Inserito da: vuott - 09 Maggio 2021, 00:46:43
Cavoli! .... e' vero , una finestra come un'altra
Se vuoi vedere, il numero del suo ID, puoi lanciare da terminale questo comando:
 :~$ wmctrl -l

o, se lo preferisci in puro Gambas:
   https://www.gambas-it.org/wiki/index.php?title=Individuare_ID_e_nome_delle_finestre_attive,_nonch%C3%A9_il_PID_dei_loro_programmi_con_le_risorse_del_Componente_gb.desktop.x11
Titolo: Re:mouse e desktop
Inserito da: mondo - 09 Maggio 2021, 00:57:10
e' possibile che la mia installazione di Gambas abbia qualche problema
ho copiato l'esempio e ho flaggato gb.desktop.x11 nei components (esiste, e'elencato)

quando eseguo mi risponde: component not found: gb.desktop.x11
con questa cosa mi ci sono gia' scontrato diverse volte

gambas 3.16.90 eng
Titolo: Re:mouse e desktop
Inserito da: vuott - 09 Maggio 2021, 01:00:09
quando eseguo mi risponde: component not found: gb.desktop.x11
con questa cosa mi ci sono gia' scontrato diverse volte
Uno fra coloro che possono aiutarti su questo è Gianluigi.
Titolo: Re:mouse e desktop
Inserito da: mondo - 09 Maggio 2021, 01:05:18
ho visto l'ora tarda, e mi vedo costretto a sospendere, ti ringrazio per la tua disponibilita e per le informazioni, resterei tutta la notte, ma non si puo', spero si possa riprendere al piu' presto, seguiro' il tuo consiglio.
per il momento ti auguro la buona notte, grazie.
Titolo: Re:mouse e desktop
Inserito da: vuott - 09 Maggio 2021, 01:09:01
ho visto l'ora tarda, e mi vedo costretto a sospendere, ti ringrazio per la tua disponibilita e per le informazioni, resterei tutta la notte, ma non si puo', spero si possa riprendere al piu' presto, seguiro' il tuo consiglio.
per il momento ti auguro la buona notte, grazie.
Domani stesso !

ciao
Titolo: Re:mouse e desktop
Inserito da: mondo - 09 Maggio 2021, 01:10:16
ci saro' !
Titolo: Re:mouse e desktop
Inserito da: vuott - 09 Maggio 2021, 05:29:17
Dunque... ti do questa prima informazione:
in via generale per ottenere informazioni inerenti alle icone sul desktop bisogna usare il comando da Terminale
  ~$ gio info '/percorso/del/file'
l'attributo " metadata::nemo-icon-position: ", riportato dal risultato nel Terminale, restituisce le coordinate x,y dell'angolo in alto a sinistra dell'icona sullo schermo.

In Gambas un comando bash o un programma va lanciato con la risorsa "Shell", e il risultato immediato viene raccolto usando la parola-chiave "To", come segue:

Codice: [Seleziona]
Dim nomefile, s As String

nomefile = "il_nome_del_file"

Shell "gio info " & User.Home &/ "Scrivania" &/ nomefile To s

Print s

Se vuoi ottenere dell'icona soltanto l'attributo della sua posizione sullo schermo, imposterai l'opzione "-a" specificando anche l'attributo da mostrare:
 
Codice: [Seleziona]
Shell "gio info -a metadata::nemo-icon-position " & User.Home &/ "Scrivania" &/ nomefile To s


...'sta "Shell", non si può guardare...  :-X


Titolo: Re:mouse e desktop
Inserito da: Gianluigi - 09 Maggio 2021, 10:36:00
Per prima cosa un Saluto a tutti.
Un caro saluto anche da parte mia  :ciao:
Citazione

Il mio obbiettivo e creare una specie di desktop-spy, in pratica, cio' che vorrei ottenere e' questo:

Sorvolando col mouse un'icona sul desktop, avere in un form le informazioni su quell'icona, ad esempio
il suo nome, il percorso a cui punta, i diritti, fino ad ora sono arrivato a capire e stampare la
posizione del mouse sul desktop (lo so' sono scarso!)...

Io non direi affatto scarso visto che sei partito da un problema che danno ai corsi di specializzazione post laurea  ;D

quando eseguo mi risponde: component not found: gb.desktop.x11
con questa cosa mi ci sono gia' scontrato diverse volte
Uno fra coloro che possono aiutarti su questo è Gianluigi.

Insomma... intanto mi scuso con te perché oggi ho poco tempo, ma se nel frattempo mi dai i tuoi dati incollandoli fra i cancelletti di "inserisci codice"...
I dati li ottieni dalla IDE menu Help (quello con il punto interrogativo) > Informazioni di sistema... si apre una finestra da cui copi i tuoi dati e li incolli come detto.

 :ciao:

P.S. Dimenticavo: se ricordo bene, fsurfing aveva fatto qualcosa per il desktop, per ottenere delle informazioni di sistema, se fai una ricerca magari trovi ispirazione, credo fosse ancora Gambas2
Titolo: Re:mouse e desktop
Inserito da: vuott - 10 Maggio 2021, 02:15:50
Va bene........
propongo questo codice commentato.
E' necessario attivare anche il Componente "gb.desktop" .
Codice: [Seleziona]
Public Struct IconaFileDesktop
  nome As String
  x As Short
  y As Short
  rt As Rect
End Struct
Private icone As New IconaFileDesktop[]
Private PERCORSO As String = User.home &/ "Scrivania"
Private T As Timer


Public Sub Form_Open()
 
  Dim nomefile, s As String
  Dim ifd As IconaFileDesktop
 
' Carica tutti i file corrispondenti alle icone presenti sulla Scrivania:
  For Each nomefile In Dir(PERCORSO, "*", gb.File)
' Usa a malincuore la funzione "Shell" per lanciare il comando "GIO":
    Shell "gio info '" & PERCORSO &/ nomefile & "'" To s
    If IsNull(s) Then Continue
' Carica nella "Struttura" i dati utili del file individuato dalla funzione "Dir()":
    With ifd = New IconaFileDesktop
      .nome = nomefile
      .x = Val(Scan(s, "*::nemo-icon-position: *,*\n*")[1])
      .y = Val(Scan(s, "*::nemo-icon-position: *,*\n*")[2])
' Stabilisce un'area quadrata standard di 48 pixel per ciascuna icona di file individuato:
      .rt = New Rect(.x, .y, 48, 48)
    End With
    icone.Push(ifd)
  Next
 
  T = New Timer As "Tmr"
  T.Delay = 50
  T.Start

End

Public Sub Tmr_Timer()
 
  Dim c As Short
 
  TextArea1.Clear
 
  For c = 0 To icone.Max
' Se le coordinate x,y in pixel correnti in cui si trova il puntatore del mouse rientrano in un'area quadrata caricata, va a vedere a quale icona e file appartiene:
    If icone[c].rt.Contains(Mouse.ScreenX, Mouse.ScreenY) Then
' Mostra alcune caratteristiche del file al quale corrisponde l'icona sorvolata dal puntatore del mouse:
      TextArea1.Text = "== Caratteristiche del file ==\n" &
                       "\nPercorso:        " & Stat(PERCORSO &/ icone[c].nome).Path &
                       "\nDimensione:      " & Stat(PERCORSO &/ icone[c].nome).Size & " Byte" &
                       "\nUltimo Accesso:  " & Stat(PERCORSO &/ icone[c].nome).LastAccess &
                       "\nUltima modifica: " & Stat(PERCORSO &/ icone[c].nome).LastModified &
                       "\nPermessi:        " & Stat(PERCORSO &/ icone[c].nome).Auth &
                       "\nUtente:          " & Stat(PERCORSO &/ icone[c].nome).User &
                       "\nGruppo:          " & Stat(PERCORSO &/ icone[c].nome).Group &
                       "\nMimetype icona:  " & DesktopMime.FromFile(Stat(PERCORSO &/ icone[c].nome).Path).Type
    Endif
  Next
 
End


Titolo: Re:mouse e desktop
Inserito da: mondo - 10 Maggio 2021, 17:32:43
ero gia' passato da qui:
gvfs-info -a metadata::annotation nomefile
ma gvfs-info e' deprecato, quindi ero passato a:
gio info nomefile | grep metadata::annotation
in questo caso leggo solo le note (una prova)

ho gia' usato comandi bash via Shell ""

tipo .... notify-send $(gio info NomeFile | grep metadata::annotation | cut -f 4 -d : )

per inviare le note associate ad un'icona al popup di notifiche del sistema

mi scuso per l'assenza, sto combattendo con un'altro problema, probabilmente la mia installazione di gambas e' 'bacata'
mi succede che pur selezionando alcuni components (presenti nella lista ProjectsProperties/components) ottengo in esecuzione un errore di Component not found: bla bla bla

ovviamente quelli in errore sono anche gli stessi su cui vorrei concentrare i miei sforzi

gb.desktop
gb.desktop.x11
gb.AlcuniAltri .......

ho cercato in rete se esistono altre soluzioni a questo problema, ma, o non le ho trovate o non le ho riconosciute
tentero' (bovinamente) una disinstallazione pulita a cui seguira' una re-installazione, spero che questo possa risolvere.

naturalmente accetto consigli e torno a ringraziarvi per la vostra disponibilita'

Codice: [Seleziona]
[System]
Gambas=3.16.90
OperatingSystem=Linux
Kernel=4.15.0-142-generic
Architecture=x86_64
Distribution=Linux Mint 19.3 Tricia
Desktop=MATE
Font=Noto Sans,9
Scale=7
Theme=mint-x-teal
Language=en_US.UTF-8
Memory=7683M

[Libraries]
Cairo=libcairo.so.2.11510.0
Curl=libcurl.so.4.5.0
DBus=libdbus-1.so.3.19.4
GDK2=libgdk-x11-2.0.so.0.2400.32
GDK3=libgdk-3.so.0.2200.30
GStreamer=libgstreamer-0.10.so.0.30.0
GStreamer=libgstreamer-1.0.so.0.1405.0
GTK+2=libgtk-x11-2.0.so.0.2400.32
GTK+3=libgtk-3.so.0.2200.30
OpenGL=libGL.so.1.0.0
Poppler=libpoppler.so.73.0.0
QT4=libQtCore.so.4.8.7
QT5=libQt5Core.so.5.9.5
SDL=libSDL-1.2.so.0.11.4
SQLite=libsqlite3.so.0.8.6

[Environment]
CLUTTER_BACKEND=x11
COMPIZ_CONFIG_PROFILE=mate
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-xh0Ojda4Lj,guid=422db3b7c329df6c84aafa30609949fd
DEFAULTS_PATH=/usr/share/gconf/mate.default.path
DESKTOP_AUTOSTART_ID=10827bdb02312e4c04162065868797671400000035670005
DESKTOP_SESSION=mate
DISPLAY=:0
GB_GUI=gb.gtk3
GDMSESSION=mate
GDM_LANG=en_US
GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1
GTK_MODULES=gail:atk-bridge
GTK_OVERLAY_SCROLLING=0
HOME=<home>
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_ADDRESS=it_IT.UTF-8
LC_ALL=en_US.UTF-8
LC_IDENTIFICATION=it_IT.UTF-8
LC_MEASUREMENT=it_IT.UTF-8
LC_MONETARY=it_IT.UTF-8
LC_NAME=it_IT.UTF-8
LC_NUMERIC=it_IT.UTF-8
LC_PAPER=it_IT.UTF-8
LC_TELEPHONE=it_IT.UTF-8
LOGNAME=<user>
MANDATORY_PATH=/usr/share/gconf/mate.mandatory.path
MATE_DESKTOP_SESSION_ID=this-is-deprecated
PATH=<home>/bin:<home>/.local/bin:<home>/Scripts:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
PWD=<home>
QT_ACCESSIBILITY=1
QT_AUTO_SCREEN_SCALE_FACTOR=0
QT_LOGGING_RULES=*.debug=false
QT_SCALE_FACTOR=1
SESSION_MANAGER=local/<hostname>:@/tmp/.ICE-unix/3567,unix/<hostname>:/tmp/.ICE-unix/3567
SHELL=/bin/bash
SHLVL=0
SSH_AGENT_PID=3682
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
TZ=:/etc/localtime
USER=<user>
XAUTHORITY=<home>/.Xauthority
XDG_CONFIG_DIRS=/etc/xdg/xdg-mate:/etc/xdg
XDG_CURRENT_DESKTOP=MATE
XDG_DATA_DIRS=<home>/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share/:/usr/share/mate:<home>/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share:/var/lib/snapd/desktop
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/<user>
XDG_RUNTIME_DIR=/run/user/1000
XDG_SEAT=seat0
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
XDG_SESSION_DESKTOP=mate
XDG_SESSION_ID=c2
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
XDG_SESSION_TYPE=x11
XDG_VTNR=7


dopo aver soddisfatto questa richiesta mi viene il sospetto che sia meglio attendere prima di fare l'ennesima cavolata

( incollandoli fra i cancelletti di "inserisci codice"..)
perdona questo poveruomo col cervello fossile, ammetto di non aver capito come farlo.

Titolo: Re:mouse e desktop
Inserito da: Gianluigi - 10 Maggio 2021, 18:24:16
Questa volta l'ho fatto io (ho evidenziato lo scritto e premuto sul pulsante con disegnato il cancelletto).

Allora sembrerebbe tutto in ordine, prima di fare altre prove, dovresti spiegare come lanci l'IDE di Gambas lo fai con le librerie QT4, le QT5 oppure GTK?


Titolo: Re:mouse e desktop
Inserito da: mondo - 10 Maggio 2021, 21:35:48
lo avvio con un launcher del menu che punta a /usr/bin/gambas3

onestamente non so come rispondere alla seconda parte della domanda, lo lancio cosi' come parte
default ?

si puo' essere degradati da gamberetto ?  :o

forse prima di correre e' meglio che imparo a camminare, devo prima conoscere il mezzo, poi potro' guidarlo
Titolo: Re:mouse e desktop
Inserito da: Gianluigi - 10 Maggio 2021, 22:47:35
lo avvio con un launcher del menu che punta a /usr/bin/gambas3

onestamente non so come rispondere alla seconda parte della domanda, lo lancio cosi' come parte
default ?
Io non ho Mint ma se ricordo bene tu per avviare usi un menu Sviluppo e da li clicchi su Gambas.
Gambas adesso di default (prima era diverso) si avvia in base alle librerie del desktop che per Mint (come per Ubuntu) sono le GTK o almeno credo.
Dovresti poter scegliere di avviare Gambas con le librerie che desideri se, al posto di cliccare col tasto sinistro sul menu Gambas, clicassi col tasto destro.
Non è detto ma, se lo fai e scegli le librerie QT4 potrebbe essere che il tuo Gambas si metta a funzionare bene.
Dovresti anche fare una ricerca su QT Configuration.

Però se fossi in te aggiornerei all'ultimo Mint che non usa più le QT4 ma le QT5 e forse vuott che ha l'ultimo Mint può consigliarti su come configurarlo al meglio.
Citazione

si puo' essere degradati da gamberetto ?  :o
:rotfl:
Citazione
forse prima di correre e' meglio che imparo a camminare, devo prima conoscere il mezzo, poi potro' guidarlo

Beh sicuramente non sarebbe una cattiva idea, puoi fare entrambe le cose l'una non esclude l'altra solo sappi, che come è normale con un nuovo linguaggio, avrai difficoltà e andrai a sbattere, per rimanere in metafora.

Ricordati bene questo, anche se sembra VB non lo è affatto e Linux non è Windows.

Titolo: Re:mouse e desktop
Inserito da: vuott - 10 Maggio 2021, 23:56:52
.... forse vuott che ha l'ultimo Mint può consigliarti su come configurarlo al meglio.
(https://i.gifer.com/Ko7r.gif)



Ricordati bene questo, anche se sembra VB non lo è affatto e Linux non è Windows.
Sante parole ! 
Titolo: Re:mouse e desktop
Inserito da: vuott - 11 Maggio 2021, 02:37:01
Codice: [Seleziona]
' Usa a malincuore la funzione "Shell" per lanciare il comando "GIO":
    Shell "gio info '" & PERCORSO &/ nomefile & "'" To s

...e rapidamente abbandono quella vergognosa e indegna chiamata del programma "GIO" con il comando "Shell", sostituendola con una beeeen più accettabile chiamata delle funzioni esterne della libreria "libgio-2.0" mediante la parola-chiave "Extern":  :)

Codice: [Seleziona]
Public Struct IconaFileDesktop
  nome As String
  x As Short
  y As Short
  rt As Rect
End Struct
Private icone As New IconaFileDesktop[]
Private PERCORSO As String = Desktop.GetDirectory("DESKTOP")
Private T As Timer


Public Sub Form_Open()
 
  Dim nomefile, s As String
  Dim ifd As IconaFileDesktop
 
' Carica tutti i file corrispondenti alle icone presenti sulla Scrivania:
  For Each nomefile In Dir(PERCORSO, "*", gb.File)
' Usa con "Extern" alcune funzioni esterne della libreria "libgio-2.0":
    s = EstraeInfo(PERCORSO &/ nomefile)
    If IsNull(s) Then Continue
' Carica nella "Struttura" i dati utili del file individuato dalla funzione "Dir()":
    With ifd = New IconaFileDesktop
      .nome = nomefile
      .x = Val(Scan(s, "*,*")[0])
      .y = Val(Scan(s, "*,*")[1])
' Stabilisce un'area quadrata standard di 48x48 pixel per ciascuna icona di file individuato:
      .rt = New Rect(.x, .y, 48, 48)
    End With
    icone.Push(ifd)
  Next
 
  T = New Timer As "Tmr"
  T.Delay = 50
  T.Start

End

Public Sub Tmr_Timer()
 
  Dim c As Short
 
  TextArea1.Clear
 
  For c = 0 To icone.Max
' Se le coordinate x,y in pixel correnti in cui si trova il puntatore del mouse rientrano in un'area quadrata caricata, va a vedere a quale icona e file appartiene:
    If icone[c].rt.Contains(Mouse.ScreenX, Mouse.ScreenY) Then
' Mostra alcune caratteristiche del file al quale corrisponde l'icona sorvolata dal puntatore del mouse:
      TextArea1.Text = "== Caratteristiche del file ==\n" &
                       "\nPercorso:        " & Stat(PERCORSO &/ icone[c].nome).Path &
                       "\nDimensione:      " & Stat(PERCORSO &/ icone[c].nome).Size & " Byte" &
                       "\nUltimo Accesso:  " & Stat(PERCORSO &/ icone[c].nome).LastAccess &
                       "\nUltima modifica: " & Stat(PERCORSO &/ icone[c].nome).LastModified &
                       "\nPermessi:        " & Stat(PERCORSO &/ icone[c].nome).Auth &
                       "\nUtente:          " & Stat(PERCORSO &/ icone[c].nome).User &
                       "\nGruppo:          " & Stat(PERCORSO &/ icone[c].nome).Group &
                       "\nMimetype icona:  " & DesktopMime.FromFile(Stat(PERCORSO &/ icone[c].nome).Path).Type
    Endif
  Next
 
End


Library "libgio-2.0"

' GFile * g_file_new_for_commandline_arg (const char *arg)
' Creates a GFile with the given argument from the command line.
Private Extern g_file_new_for_commandline_arg(arg As String) As Pointer

' GFileInfo * g_file_query_info (GFile *file, const char *attributes, GFileQueryInfoFlags flags, GCancellable *cancellable, GError **error )
' Gets the requested information about specified file.
Private Extern g_file_query_info(gfile As Pointer, attributes As String, flags As Integer, cancellable As Pointer, gerror As Pointer) As Pointer

' char ** g_file_info_list_attributes (GFileInfo *info, const char *name_space)
' Lists the file info structure's attributes.
Private Extern g_file_info_list_attributes(info As Pointer, name_space As String) As Pointer

' char * g_file_info_get_attribute_as_string (GFileInfo *info, const char *attribute)
' Gets the value of a attribute, formatted as a string.
Private Extern g_file_info_get_attribute_as_string(info As Pointer, attribute As String) As Pointer

' void g_object_unref (gpointer object)
' Decreases the reference count of object.
Private Extern g_object_unref(gobject As Pointer)


Private Function EstraeInfo(percfile As String) As String
 
  Dim fl, info As Pointer
 
  fl = g_file_new_for_commandline_arg(percfile)
  If fl == 0 Then Error.Raise("Errore !")
   
  info = g_file_query_info(fl, "*", 0, Null, Null)
  If info == 0 Then Error.Raise("Errore !")
   
  percfile = EstraeAttributi(info)
   
  g_object_unref(info)
  g_object_unref(fl)
 
  Return percfile

End


Private Function EstraeAttributi(inf As Pointer) As String
 
  Dim attr, p As Pointer
  Dim i As Integer = -1
  Dim s As String
 
  attr = g_file_info_list_attributes(inf, Null)

  Repeat
    Inc i
    s = String@(Pointer@(attr + (i * SizeOf(gb.Pointer))))
    p = g_file_info_get_attribute_as_string(inf, s)
  Until s == Trim("metadata::nemo-icon-position")

  Return String@(p)
 
End
Titolo: Re:mouse e desktop
Inserito da: mondo - 22 Maggio 2021, 00:24:39
mi scuso per la lunga assenza, ho dovuto trovare il tempo per rinnovare il pc
la nuova situazione e' ora questa:
Codice: [Seleziona]
[System]
Gambas=3.16
OperatingSystem=Linux
Kernel=5.4.0-73-generic
Architecture=x86_64
Distribution=Linux Mint 20.1 Ulyssa
Desktop=MATE
Font=Ubuntu,10
Scale=7
Theme=mint-x-orange
Language=en_US.UTF-8
Memory=7668M

[Libraries]
Cairo=libcairo.so.2.11600.0
Curl=libcurl.so.4.6.0
DBus=libdbus-1.so.3.19.11
GDK2=libgdk-x11-2.0.so.0.2400.32
GDK3=libgdk-3.so.0.2404.16
GStreamer=libgstreamer-1.0.so.0.1602.0
GTK+2=libgtk-x11-2.0.so.0.2400.32
GTK+3=libgtk-3.so.0.2404.16
OpenGL=libGL.so.1.7.0
Poppler=libpoppler.so.97.0.0
QT5=libQt5Core.so.5.12.8
SDL=libSDL-1.2.so.0.11.4
SQLite=libsqlite3.so.0.8.6

[Environment]
CLUTTER_BACKEND=x11
COMPIZ_CONFIG_PROFILE=mint
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus,guid=0cd8a38795f2ab50a3b8d10c60a8fcc6
DBUS_STARTER_ADDRESS=unix:path=/run/user/1000/bus,guid=0cd8a38795f2ab50a3b8d10c60a8fcc6
DBUS_STARTER_BUS_TYPE=session
DEFAULTS_PATH=/usr/share/gconf/mate.default.path
DESKTOP_SESSION=mate
DISPLAY=:0
GB_GUI=gb.gtk3
GDMSESSION=mate
GDM_LANG=en_US
GIO_LAUNCHED_DESKTOP_FILE=<home>/.local/share/applications/gambas3.desktop
GIO_LAUNCHED_DESKTOP_FILE_PID=26088
GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1
GTK3_MODULES=xapp-gtk3-module
GTK_MODULES=gail:atk-bridge
GTK_OVERLAY_SCROLLING=0
HOME=<home>
IM_CONFIG_PHASE=1
INVOCATION_ID=eab5bf71ff4443fe9729371ca01967a2
JOURNAL_STREAM=9:31678
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_ADDRESS=it_IT.UTF-8
LC_ALL=en_US.UTF-8
LC_IDENTIFICATION=it_IT.UTF-8
LC_MEASUREMENT=it_IT.UTF-8
LC_MONETARY=it_IT.UTF-8
LC_NAME=it_IT.UTF-8
LC_NUMERIC=it_IT.UTF-8
LC_PAPER=it_IT.UTF-8
LC_TELEPHONE=it_IT.UTF-8
LOGNAME=<user>
MANAGERPID=1058
MANDATORY_PATH=/usr/share/gconf/mate.mandatory.path
MATE_DESKTOP_SESSION_ID=this-is-deprecated
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
PWD=<home>
QT_ACCESSIBILITY=1
QT_AUTO_SCREEN_SCALE_FACTOR=0
QT_LOGGING_RULES=*.debug=false
QT_QPA_PLATFORMTHEME=qt5ct
QT_SCALE_FACTOR=1
SESSION_MANAGER=local/<hostname>:@/tmp/.ICE-unix/1092,unix/<hostname>:/tmp/.ICE-unix/1092
SHELL=/bin/bash
SHLVL=0
SSH_AGENT_PID=1288
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
TZ=:/etc/localtime
USER=<user>
XAUTHORITY=<home>/.Xauthority
XDG_CONFIG_DIRS=/etc/xdg/xdg-mate:/etc/xdg
XDG_CURRENT_DESKTOP=MATE
XDG_DATA_DIRS=/usr/share/mate:<home>/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/<user>
XDG_RUNTIME_DIR=/run/user/1000
XDG_SEAT=seat0
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
XDG_SESSION_CLASS=user
XDG_SESSION_DESKTOP=mate
XDG_SESSION_ID=c2
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
XDG_SESSION_TYPE=x11
XDG_VTNR=7
_=/usr/bin/dbus-update-activation-environment
Spero che tutto funzioni ma ho appena finito le installazioni e devo ancora provare.

ho visto che nel frattempo avete lasciato esempi ed informazioni, di cui vi ringrazio
appena collaudato il sistema mi metto a studiare e provare quanto mi avete fornito
Titolo: Re:mouse e desktop
Inserito da: mondo - 22 Maggio 2021, 23:37:11
Ciao Vuott e un saluto a tutti quanti

Sembra che dopo aver aggiornato il sistema alla mint 20.1 e installato nuovamente gambas3 tutto abbia ricominciato a funzionare come si deve, finalmente. :D

Ho immediatamente cominciato a studiare il codice di esempio che mi hai gentilmente fornito (Rif. Risposta #17 il: 10 Maggio 2021, 02:15:50)

Ho dovuto adattare qualche cosa, marginale, in relazione al fatto che usiamo strumenti differenti, io uso il sistema in inglese e Mate, Tu per quanto ho potuto capire lo usi in italiano con Cinnamon, quindi per me cambia il percorso del Desktop ed invece di Nemo uso Caja
 
La logica del codice mi e' chiara, anche se mi sono scontrato con alcune cose, non legate alla logica ma alla mia scarsa confidenza con gli strumenti.

Inizialmente non capivo  ???  l'utilizzo dell'istruzione SCAN, guardando l'help mi pare di intendere che questa istruzione 'inscatola' in una sorta di array parti di una stringa in base ad un pattern specificato, la sua utilita' l'ho compresa in seguito, analizzando l'output dell'istruzione SHELL con GIO INFO, l'output in questione e' una variabile contenente una lunghissima stringa intervallata da numerosi "\n", difficilmente trattabile con altri mezzi

Approfondiro' in seguito la questione relativa all'utilizzo di SCAN

         .x = Val(Scan(s, "*::nemo-icon-position: *,*\n*")[1])
         
Qui tratto la stringa s, dalla quale estraggo "::nemo-icon-position: " ignorando cio' che la precede (il primo *), prelevando qualsiasi cosa seguente che contenga una virgola preceduta e seguita da qualsiasi stringa (secondo e terzo *) fino al NewLine, poi nuovamente ignorando cio' che segue (quarto *), l'indice [1] preleva la stringa che precede la virgola (quindi la coordinata x)
       
         .y = Val(Scan(s, "*::nemo-icon-position: *,*\n*")[2])
         
Nella seconda istruzione succedono le stesse cose ma prelevando, indice [2], quello che segue la virgola  (quindi la coordinata y)

Spero di aver compreso correttamente come funziona, anche se la mia esposizione e' piuttosto contorta, nel caso cosi' non fosse, abbi la bonta' di correggermi, sappi comunque che Hannibal Lecter e' diventato cannibale dopo aver ascoltato tre mie spiegazioni.

Mi si presenta un ulteriore disagio, alla prima SCAN, mi becco un bel OUT OF BOUNDS, sembra che io cerchi di puntare ad un elemento inesistente di un array, da stamattina remo intorno a questa cosa ma non ne vengo fuori, per me ,vecchio VB6-ers, gli array intesi come oggetti appaiono ancora come cose soprannaturali

(https://www.gambas-it.org/home/luca/Desktop/CrashTest.png)

Noto comunque, che in uscita da ogni ciclo viene aggiunto un elemento all'oggetto array con "icone.Push(ifd)", quindi al ciclo successivo dovrebbe essere disponibile il nuovo indice a cui puntare

Ho letto con attenzione:
https://www.gambas-it.org/wiki/index.php?title=Array:_creazione,_modifica_e_riempimento

Allego il codice da me massacrato:

Codice: [Seleziona]
' Gambas class file

Public Struct IconaFileDesktop                                             ' Struttura per l'icona
   nome As String                                                          ' Nome dell'icona
   x As Short                                                              ' Per posizione x
   y As Short                                                              ' Per posizione y
   rt As Rect                                                              ' Rettangolo per icona
End Struct

Private icone As New IconaFileDesktop[]                                    ' Array (tipo definito dall'utente) per le le informazioni delle icone
''Private PERCORSO As String = User.home &/ "Scrivania"                    ' Uso il sistema in inglese USA, questo non va' bene per me
Private PERCORSO As String = User.home &/ "Desktop"                        ' Il percorso da analizzare
Private T As Timer                                                         ' Per timer


Public Sub Form_Open()
   Dim nomefile As String                                                 ' Temporanea per i nomi file
   Dim s As String                                                         ' Temporanea per l'output shell
   Dim ifd As IconaFileDesktop

   For Each nomefile In Dir(PERCORSO, "*", gb.File)                        ' Ciclo per tutti i file corrispondenti alle icone presenti sulla Scrivania:
      Shell "gio info '" & PERCORSO &/ nomefile & "'" To s                 ' Usa a malincuore la funzione "Shell" per lanciare il comando "GIO":

      If IsNull(s) Then Continue                                           ' Se s non contiene qualcosa salta il ciclo, altrimenti ...

      With ifd = New IconaFileDesktop                                      ' ... Carica nella "Struttura" i dati utili del file individuato dalla
                                                                           ' funzione "Dir()":
         .nome = nomefile
         ''.x = Val(Scan(s, "*::nemo-icon-position: *,*\n*")[1])           ' Uso Mate, quindi Caja, questo non va' bene per me
         ''.y = Val(Scan(s, "*::nemo-icon-position: *,*\n*")[2])           ' Uso Mate, quindi Caja, questo non va' bene per me

         ''.x = Val(Scan(s, "*-icon-position: *,*\n*")[1])                 ' Forse potrei arrangiare cosi' per generalizzare, poi provero'
         ''.y = Val(Scan(s, "*-icon-position: *,*\n*")[2])                 ' se non mi esplode la cabesa

         .x = Val(Scan(s, "*::caja-icon-position: *,*\n*")[1])             '' Qui mi pianto come in un crash-test
         .y = Val(Scan(s, "*::caja-icon-position: *,*\n*")[2])
         .rt = New Rect(.x, .y, 48, 48)                                    ' Stabilisce un'area standard di 48x48 pixel per ciascuna icona di file
      End With

      icone.Push(ifd)                                                      ' Incrementa gli elementi del vettore
   Next

   T = New Timer As "Tmr"                                                  ' Crea il Timer
   T.Delay = 50                                                            ' Imposta il ritardo dell'evento
   T.Start                                                                 ' Lo avvia
 End

''-------------------------------------------------------------------------------------------------------------------------------------------------------
'' EVENTO del timer
''-------------------------------------------------------------------------------------------------------------------------------------------------------
Public Sub Tmr_Timer()
   Dim c As Short                                                           ' Per scorrere il vettore delle icone

   TextArea1.Clear                                                          ' Pulisce la TextArea

   For c = 0 To icone.Max                                                   ' Scorre il vettore
      ''-----------------------------------------------------------------------------------------'
      '' Se le coordinate x,y in pixel correnti in cui si trova il puntatore del mouse rientrano '
      '' in un'area quadrata caricata, va a vedere a quale icona e file appartiene:              '
      ''-----------------------------------------------------------------------------------------'
      If icone[c].rt.Contains(Mouse.ScreenX, Mouse.ScreenY) Then
         ''--------------------------------------------------------------------------------------------------------'
         '' Mostra alcune caratteristiche del file al quale corrisponde l'icona sorvolata dal puntatore del mouse: '
         ''--------------------------------------------------------------------------------------------------------'
         TextArea1.Text = "== Caratteristiche del file ==\n" &
                          "\nPercorso:        " & Stat(PERCORSO &/ icone[c].nome).Path &
                          "\nDimensione:      " & Stat(PERCORSO &/ icone[c].nome).Size & " Byte" &
                          "\nUltimo Accesso:  " & Stat(PERCORSO &/ icone[c].nome).LastAccess &
                          "\nUltima modifica: " & Stat(PERCORSO &/ icone[c].nome).LastModified &
                          "\nPermessi:        " & Stat(PERCORSO &/ icone[c].nome).Auth &
                          "\nUtente:          " & Stat(PERCORSO &/ icone[c].nome).User &
                          "\nGruppo:          " & Stat(PERCORSO &/ icone[c].nome).Group &
                          "\nMimetype icona:  " & DesktopMime.FromFile(Stat(PERCORSO &/ icone[c].nome).Path).Type
       Endif
   Next
End


Noterai sicuramente che a parte le modifiche precedentemente descritte ed i commenti non ho modificato altro, ho passato il mio tempo a leggerlo e comprenderlo, prendedolo come spunto per orientarmi nella ricerca degli help e della documentazione relativa, poi ore di esecuzioni step to step per vedere in funzione ogni singola parte, riusciro' a districarmi anche dal problema dell'array


Titolo: Re:mouse e desktop
Inserito da: vuott - 23 Maggio 2021, 02:24:42
La logica, che sottende i due miei programmi, si deduce agevolmente dai commenti al codice.
Ad ogni modo, se riscontri dei problemi, è meglio che ne poni uno alla volta in modo chiaro, affinché i membri di questo forum possano aiutarti.

Ad esempio questa riga:
 
Codice: [Seleziona]
Private PERCORSO As String = User.home &/ "Scrivania"
che effettivamente - come tu stesso hai rilevato - può dare problemi, nel secondo mio codice (quello con le chiamate a funzioni esterne della libreria "libgio-2.0") l'ho sostituito con il più preciso ed elegante:
 
Codice: [Seleziona]
Desktop.GetDirectory("DESKTOP")
Titolo: Re:mouse e desktop
Inserito da: mondo - 30 Maggio 2021, 16:58:00
Sono riuscito a fare un piccolo passo avanti, nel tuo primo esempio, quello che utilizza
l'istruzione shell, il problema era causato dal fatto che non tutte le icone presenti sul desktop
hanno gli stessi metadata, il programma si inceppava in caso di assenza dell'informazione da me cercata

Con la gestione errori (Try) ed una IF per controllare lo stato di errore, sono stato in grado di vederlo
in funzione, quindi posso considerare questa parte del problema risolta.

Ora mi trovo in difficolta' con la versione che usa le funzioni esterne di libgio-2.0.so
L'esempio si pianta nella funzione utente 'EstraeInfo'

Codice: [Seleziona]
Private Function EstraeInfo(percfile As String) As String
 
  Dim fl, info As Pointer
 
  fl = g_file_new_for_commandline_arg(percfile)    <- si blocca qui con questo errore:
 
  Cannot find dynamic library 'libgio-2.0.so': Cannot open shared object file: No such file or directory (FMain:93)


Sembra che sul mio sistema non sia presente questa libreria, ho provato ad cercarla nel mio filesystem, poi nei
repository, sia con Synaptic che con con apt-get, per poterla installare, ma non sono riuscito a trovarla.

Potrebbe essere una parte contenuta in un pacchetto con un nome diverso ?

potete aiutarmi a risolvere questo problema ?
Titolo: Re:mouse e desktop
Inserito da: Gianluigi - 30 Maggio 2021, 17:34:29

...


Sembra che sul mio sistema non sia presente questa libreria, ho provato ad cercarla nel mio filesystem, poi nei
repository, sia con Synaptic che con con apt-get, per poterla installare, ma non sono riuscito a trovarla.

Potrebbe essere una parte contenuta in un pacchetto con un nome diverso ?

potete aiutarmi a risolvere questo problema ?

E cercando in Ubuntu Packages search?:
https://packages.ubuntu.com/
https://packages.ubuntu.com/search?searchon=contents&keywords=libgio-2.0.so&mode=exactfilename&suite=hirsute&arch=any

 :ciao:
Titolo: Re:mouse e desktop
Inserito da: vuott - 30 Maggio 2021, 20:39:16
Prova anche richiamando GLIB, dato che fanno parte della medesima famiglia.

( https://developer.gnome.org/references )
Titolo: Re:mouse e desktop
Inserito da: mondo - 01 Giugno 2021, 00:22:23
Ho cercato qui come da voi indicato:
https://packages.ubuntu.com/

Ho trovato:
file: /usr/lib/x86_64-linux-gnu/libgio-2.0.so    nel packages: libglib2.0-dev [amd64]

Quindi ho scaricato:
libglib2.0-dev_2.68.0-1_amd64.deb

Cercando di installarlo con gdebi incontro l'errore:
Error: Dependency is not satisfiable: libglib2.0-0 (= 2.68.0-1)

Dopo aver letto questo (e' stato illuminante :ok:)
http://freedom.dicea.unifi.it/pub/pluto/ildp/HOWTO/Program-Library-HOWTO/shared-libraries.html
Ho cercato nuovamente e potrei averle trovate. (se ho capito cio' che ho letto :-\)

Codice: [Seleziona]
luca@Isaac-Newton:~$ sudo find / -name libgio* -print
(estratto)
/usr/lib/i386-linux-gnu/libgio-2.0.so.0                     <- potrebbe essere questo (32) ?
/usr/lib/x86_64-linux-gnu/libgio-2.0.so.0                   <- potrebbe essere questo (64) ?

/usr/lib/i386-linux-gnu (estratto)
lrwxrwxrwx   1 root root       14 Apr 16  2020 libgd.so.3 -> libgd.so.3.0.5
-rw-r--r--   1 root root   407360 Apr 16  2020 libgd.so.3.0.5
lrwxrwxrwx   1 root root       22 Mar 12 17:38 libgio-2.0.so.0 -> libgio-2.0.so.0.6400.6     <- Permessi OK
-rw-r--r--   1 root root  2263132 Mar 12 17:38 libgio-2.0.so.0.6400.6                        <- Permessi OK
lrwxrwxrwx   1 root root       17 Dec 18 09:35 libglapi.so.0 -> libglapi.so.0.0.0
-rw-r--r--   1 root root   159736 Dec 18 09:35 libglapi.so.0.0.0

/usr/lib/x86_64-linux-gnu (estratto)
lrwxrwxrwx   1 root root        15 May 21 19:24 libgif.so.7 -> libgif.so.7.1.0
-rw-r--r--   1 root root     38904 Dec  8  2019 libgif.so.7.1.0
lrwxrwxrwx   1 root root        22 Mar 12 17:38 libgio-2.0.so.0 -> libgio-2.0.so.0.6400.6    <- Permessi OK
-rw-r--r--   1 root root   1957200 Mar 12 17:38 libgio-2.0.so.0.6400.6                       <- Permessi OK
lrwxrwxrwx   1 root root        21 May 21 19:24 libgiomm-2.4.so.1 -> libgiomm-2.4.so.1.3.0
-rw-r--r--   1 root root   1972560 Mar 30  2020 libgiomm-2.4.so.1.3.0

Ho provato a lanciare gambas3 con i privilegi di root, nel caso fossero problemi di autorizzazioni,stesso problema.

Citazione
Ho tentato danze propiziatorie attorno al pc vestito da mamuttones, offrendo bottarga e birra Ichnusa alle divinita' del computer  :hatecomputer:
non so' piu a cosa pensare, tenete conto che sono un esordiente totale.

aiuto, per favore
Titolo: Re:mouse e desktop
Inserito da: Gianluigi - 01 Giugno 2021, 11:17:53
Se io nel terminale scrivo:

Codice: [Seleziona]
$ sudo apt install libglib2.0-dev

ottengo questa risposta:

Codice: [Seleziona]
[sudo] password di gian: 
Lettura elenco dei pacchetti... Fatto
Generazione albero delle dipendenze       
Lettura informazioni sullo stato... Fatto
libglib2.0-dev è già alla versione più recente (2.64.6-1~ubuntu20.04.3).
0 aggiornati, 0 installati, 0 da rimuovere e 0 non aggiornati.

tu cosa ottieni?
Titolo: Re:mouse e desktop
Inserito da: mondo - 01 Giugno 2021, 17:11:58
Ottengo che installa libglib2

E ottengo che l'esempio suggerito da Vuott funziona  :yeah: .... all'incirca, ora si pianta per un altro errore, vedro' dopo di cosa si tratta.

Evidentemente devo capire come documentarmi in proposito, mi accanivo sul fatto che l'esempio dichiara:
     
      Library "libgio-2.0"
     
Ed io continuavo :bad:  a cercare di installare una fantomatica libreria libgio-2.0, anche se nel post del 30 Maggio 2021, 16:58:00 manifestavo il sospetto che questa potesse trovarsi contetenuta in un diverso 'pacchetto'

Citazione
...
Sembra che sul mio sistema non sia presente questa libreria, ho provato ad cercarla nel mio filesystem, poi nei
repository, sia con Synaptic che con con apt-get, per poterla installare, ma non sono riuscito a trovarla.

Potrebbe essere una parte contenuta in un pacchetto con un nome diverso ?
...

E' probabile che me lo abbiate anche detto, ma mi mancavano le basi per comprendere la risposta, mi rileggero' tutti i post

Immagino che ci siano dei mezzi per capire 'chi contiene cosa', certamente ci sara' della documentazione e degli standard a questo proposito

Saresti cosi' gentile da suggerirmi qualche lettura in proposito ? (magari ITA altrimenti va' bene ENG)

Ti ringrazio per il tuo tempo
Titolo: Re:mouse e desktop
Inserito da: Gianluigi - 01 Giugno 2021, 18:23:09

...
Saresti cosi' gentile da suggerirmi qualche lettura in proposito ? (magari ITA altrimenti va' bene ENG)

Ti ringrazio per il tuo tempo

Non saprei proprio che letture suggerire.
Posso solo dire cosa ho fatto io i primi tempi in Linux.
Per prima cosa ho subito evitato l'uso di programmi grafici che aiutino nell'installazione e rimozione di librerie e programmi.
Sono quasi subito partito con il terminale, pertanto di direi di googlare su cose tipo "i principali comandi da terminale per linux".
Poi ho cercato di capire come si compila un programma, anche qui googlando.
Con Linux troverai valanghe di aiuto ma tutto l'aiuto prevede l'uso del terminale, prima ti ci abitui, meglio sarà per te.
C'è tanto anche in italiano ma l'aiuto maggiore lo trovi in inglese.

Per capire un po cosa significa compilare un programma, puoi leggere questi file pdf che ho scritto per Gambas:
https://www.gambas-it.org/smf/index.php?topic=8049.msg49120#msg49120
https://www.gambas-it.org/smf/index.php?topic=6424.0

Sono la seconda e la prima voce in Domande tecniche

Se hai domande più specifiche, sono a disposizione per quel poco che conosco.
Titolo: Re:mouse e desktop
Inserito da: vuott - 01 Giugno 2021, 20:25:43
Con riferimento strettamente al linguaggio Gambas suggerisco i seguenti siti ove trovare informazioni:

Sito ufficiale di Gambas:
 - http://gambas.sourceforge.net/en/main.html

Wiki ufficiale di Gambas:
 - https://gambaswiki.org/wiki?l=it

Mailing List ufficiale di Gambas:
 - https://lists.gambas-basic.org/pipermail/user/

Forum, Wiki ed altri siti esistenti su Gambas:
 - https://gambas-es.org/
 - https://foro.gambas-es.org/forum.php
 - http://www.gambas-club.de/index.php
 - https://forum.gambas.one/
 - http://www.gambaslinux.fr/
 - http://89.234.156.109/
 - http://www.gambas-it.org/wiki/index.php?title=Pagina_principale
 - https://gambas-buch.de/dwen/doku.php
 - https://de.wikibooks.org/wiki/Gambas
 - http://sologambas.blogspot.com/p/indice.html
 - https://jsbsan.blogspot.com/
 - http://captainbodgit.blogspot.com/search/label/Gambas
 - https://pigalore.miraheze.org/wiki/Main_Page
 - http://icculus.org/piga/
 - http://novatocodegambas.blogspot.com/

Testi, manuali e corsi esistenti:
 - https://cursogambas.blogspot.com/p/indice.html
 - https://github.com/jsbsan/Ejemplos-del-Curso-De-Gambas3
 - http://gambaswiki.org/wiki/doc/book?nh&l=en
 - https://en.wikibooks.org/wiki/Programming_Gambas_from_Zip
 - https://wordpress.gambas.one/a-book-by-gerry-buzolic/
 - https://wordpress.gambas.one/2020/04/10/the-gap-bg-project/
Titolo: Re:mouse e desktop
Inserito da: mondo - 02 Giugno 2021, 01:18:37
sono un vecchietto, ho cominciato, come tanti della mia generazione con un commodore 64, le mie prime esperienze su pc iniziano con MS-Dos 2
preferisco in ogni caso la linea comando, per quanto riguarda il resto, sono stato (molti anni fa', in una galassia lontana lontana), consolista su mainframe 3090, poi sistemista su as/400 e sistemista junior su macchine DEC digital con Ultrix e su ALPHA, mi sono occupato di rete e sono stato programmatore, diversi linguaggi, prevalentemente C (borland e microsoft) e VB6, nell'azienda presso la quale lavoravo. Poi la vita ha deciso per me altre strade, per circa 15/20 anni, non ho toccato un pc, facevo altro
Quello che so' o ricordo e' obsoleto al punto tale che sarebbe meglio non saperlo.
Ora che ho piu' tempo (non moltissimo) e non devo piu' fare queste cose per lavoro, ho pensato che posso tornare ad occuparmi di cio' che mi piace come hobby, la cosa piu' logica da fare e' ripartire da zero
Mi rimettero in pista, nel piu' breve tempo possibile
comincio subito a visionare l'elenco che mi hai inviato, del quale ti ringrazio
Titolo: Re:mouse e desktop
Inserito da: vuott - 02 Giugno 2021, 01:49:16
preferisco in ogni caso la linea comando
Anche io senz'altro, però per alcuni risultati ovviamente è necessario il supporto grafico.


programmatore, diversi linguaggi, prevalentemente C
Il C è per palati fini.



Mi rimettero in pista, nel piu' breve tempo possibile
comincio subito a visionare l'elenco che mi hai inviato, del quale ti ringrazio
Ricorda sempre che questo forum è a disposizione per ogni domanda e problema.
Titolo: Re:mouse e desktop
Inserito da: mondo - 05 Giugno 2021, 01:16:15
Il secondo programma di esempio che mi hai inviato si bloccava a causa di files hidden presenti nella directory Desktop e non riconosceva le directories, nulla di grave, e' stato semplice rimetterlo in quadro ho modificato da cosi':

'' Carica tutti i file corrispondenti alle icone presenti sulla Scrivania:
''For Each nomefile In Dir(PERCORSO, "*", gb.File)

A cosi': 

' Carico tutti i file e le directories corrispondenti alle icone presenti sulla Scrivania, ignorando quelli invisibili
' che causano il blocco del programma e oltretutto non mi servono
  For Each nomefile In Dir(PERCORSO, "[^.]*", gb.File + gb.Directory)
 
Talmente semplice che non ti avrei nemmeno disturbato, ma questa cosa ha sollevato un nuovo interrogativo ???

Sul desktop ho anche altre icone:

Computer  -  Home  -  Network  -  Trash -- eventuali periferiche USB montate

Tutte queste icone non vengono trattate dalla funzione Dir, anche perche' non sono presenti nella directory Desktop, sicuramente hanno necessita' di essere trattate diversamente.

Su Windows succedeva lo stesso ma le avrei trovate interrogando il registry, cosa fatta nel Pleistocene in VB6 (lacrime e sangue) , non ho idea di come le tratta linux, sareste cosi' pazienti da fornirmi una traccia con la quale cercarmi le informazioni ?
Titolo: Re:mouse e desktop
Inserito da: vuott - 05 Giugno 2021, 01:59:55
Tutte queste icone non vengono trattate dalla funzione Dir, anche perche' non sono presenti nella directory Desktop, sicuramente hanno necessita' di essere trattate diversamente.
Evidentemente perché non sono File né Cartelle.
Qui ed ora non saprei come fare: non ho mai avuto interesse ad occuparmene.  :-\
Titolo: Re:mouse e desktop
Inserito da: mondo - 05 Giugno 2021, 02:12:27
ti ringrazio comunque e continuo a cercare informazioni, se ne vengo fuori e risolvo qualcosa le metto a disposizione di tutti
naturalmente ogni suggerimento e' ben accetto, ma ora  :sleepy:

alla prossima, ciao
Titolo: Re:mouse e desktop
Inserito da: mondo - 05 Giugno 2021, 22:37:26
Per ora sono risalito a queste informazioni, le icone "Speciali" sul desktop:

Computer
Home
Network
Trash
Periferiche montate

Sono descritte in un DB, una sorta di registry (concettualmente simile a win), a cui si puo' accedere con 'dconf' (editor grafico, analogo a regedit di win), oppure  oppure da CLI con il comando 'gsettings'

Qui:
https://qastack.it/ubuntu/22313/what-is-dconf-what-is-its-function-and-how-do-i-use-it (https://qastack.it/ubuntu/22313/what-is-dconf-what-is-its-function-and-how-do-i-use-it)
E' spiegato cosa e' e come si usa

Spero di non essere l'unico che non lo sapeva, ora devo capire come gestire questa cosa nel codice.

Citazione
Mi sono cercato una bella grana per iniziare con Gambas3  :mad:
Titolo: Re:mouse e desktop
Inserito da: vuott - 05 Giugno 2021, 23:29:41
Citazione
Mi sono cercato una bella grana per iniziare con Gambas3  :mad:
I pazzi iniziano sempre con argomenti impossibili.  :rotfl:

Io per esempio iniziai cercando di creare un Sequencer Midi:
  https://www.gambas-it.org/smf/index.php?topic=1098

Titolo: Re:mouse e desktop
Inserito da: mondo - 06 Giugno 2021, 00:20:24
ho visto il link :rolleyes:, ora comprendo perche' non ti sei scomposto piu' di tanto in seguito alla mia iniziativa ;D

stavo guardando la wiki, e ho visto nella sezione Desktop - Scrivania gli stessi argomenti di cui stiamo parlando

ci sono due possibilita:

Anche i  :mad: alle volte fanno la domanda giusta ?  :rotfl:
Titolo: Re:mouse e desktop
Inserito da: vuott - 06 Giugno 2021, 00:39:02

ci sono due possibilita:

La prima che hai detto.  :ok:
Titolo: Re:mouse e desktop
Inserito da: mondo - 06 Giugno 2021, 01:11:48
Citazione
Uno è lieto di poter servire. (L'uomo bicentenario:Robin Williams)
Titolo: Re:mouse e desktop
Inserito da: vuott - 07 Giugno 2021, 11:09:29
Un buon metodo per apprendere è tentare di risolvere i problemi sollevati dagli altri programmatori nei forum.