Autore Topic: Desktop.Open ma non troppo  (Letto 1088 volte)

Offline alcresio

  • Grande Gambero
  • ***
  • Post: 100
    • Mostra profilo
Desktop.Open ma non troppo
« il: 08 Gennaio 2014, 17:44:46 »
Dopo un periodo di lavoro trascorso all'estero, mi riaffaccio al forum con una domanda insolita (e quando mai ne faccio una normale):  ???
poniamo che abbia una serie di file di vario tipo (per lo più video immagini raw, tif e jpg) che stanno venendo trasferiti da un pc remoto ad un server con cartelle condivise posto in locale.
Bene,  fintanto che il trasferimento non è completo i file che vedo hanno l'estenzione ".part"... se voglio vedere un'anteprima del file devo aprirlo con il programma adatto, per esempio vlc per il video, e lightzone per le immagini raw.

Ovviamente il doppio click sul file non funziona in quanto l'estenzione ".part", giustamente non è associata a nessun programma e non può esserlo in quanto il file parziale potrebbe essere di qualsiasi tipo.
Fare ogni volta "apri con" è un supplizio!  :'( Quindi vorrei creare una piccola applicazione da associare al ".part" la quale capisca cosa debba lanciare e farlo con, per esempio, shell o
desktop.open o chissà che cos'altro...

Facile dirà qualcuno, basta usare  Desktop.Open(miofile), grazie, ma mio file è per esempio pippo.avi.part e .part è associato all'applicazione stessa...
Contorto?
Si, lo so...
Esiste il modo di capire quale applicazione sia predefinita per aprire/visualizzare un tipo di file?
Una volta scoperto potrei fare una cosa del genere:

shell (`which programma_predefinito`) Left(Com, Len(Com) - 5

ecco tutto li....
 ;D

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Desktop.Open ma non troppo
« Risposta #1 il: 08 Gennaio 2014, 18:14:58 »
Esiste il modo di capire quale applicazione sia predefinita per aprire/visualizzare un tipo di file?

Ci sarà un file di sistema, nel quale sono registrati i vari tipi di file associati a determinate applicazioni ?
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline alcresio

  • Grande Gambero
  • ***
  • Post: 100
    • Mostra profilo
Re: Desktop.Open ma non troppo
« Risposta #2 il: 08 Gennaio 2014, 18:19:43 »
Ci sarà un file di sistema, nel quale sono registrati i vari tipi di file associati a determinate applicazioni ?
si, ma in questo modo non si ha una uniformità tra le varie distro/DE. se ci fosse l sistema da gambas non coi sarebbero problemi al cambio dei de o delle distro...

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Desktop.Open ma non troppo
« Risposta #3 il: 08 Gennaio 2014, 18:25:36 »
si, ma in questo modo non si ha una uniformità tra le varie distro/DE. se ci fosse l sistema da gambas non coi sarebbero problemi al cambio dei de o delle distro...

...è vero. Ma magari.... almeno per l'immediato....   :-\
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Desktop.Open ma non troppo
« Risposta #4 il: 08 Gennaio 2014, 18:40:41 »
Ci sarà un file di sistema, nel quale sono registrati i vari tipi di file associati a determinate applicazioni ?

Per esempio, per Linux Mint dovrebbe essere questo file:   :-\
 
  /usr/share/applications/mimeinfo.cache

ed anche:

  ~/.local/share/applications/mimeapps.list
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline alcresio

  • Grande Gambero
  • ***
  • Post: 100
    • Mostra profilo
Re: Desktop.Open ma non troppo
« Risposta #5 il: 08 Gennaio 2014, 18:45:05 »
si, ma in questo modo non si ha una uniformità tra le varie distro/DE. se ci fosse l sistema da gambas non coi sarebbero problemi al cambio dei de o delle distro...

...è vero. Ma magari.... almeno per l'immediato....   :-\

infatti, ora vedo di fare un accrocchio.... :-)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Desktop.Open ma non troppo
« Risposta #6 il: 08 Gennaio 2014, 18:52:36 »

infatti, ora vedo di fare un accrocchio.... :-)

...alto 1,80 ?  :-X
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline alcresio

  • Grande Gambero
  • ***
  • Post: 100
    • Mostra profilo
Re: Desktop.Open ma non troppo
« Risposta #7 il: 08 Gennaio 2014, 19:09:19 »
...alto 1,80 ?  :-X

te caro Vuott non stai bene!  ;D
Dai, fatti un salto di là dalla pozzanghera adriatica e vieni a trovarmi, così ti presento "l'accrocchio" e la facciamo finita!  :P
Non a nuoto però, non è stagione!  :rotfl:

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Desktop.Open ma non troppo
« Risposta #8 il: 08 Gennaio 2014, 19:53:14 »
Non a nuoto però, non è stagione!


Ma ogni stagione va bene per dare una risposta utile.   :-\


se ci fosse l sistema da gambas non coi sarebbero problemi al cambio dei de o delle distro...

La soluzione universale - tutta Gambas - è la seguente: attivato il componente gb.desktop, devi utilizzare le sue Classi DesktopMime e DesktopFile:
Codice: gambas [Seleziona]

Public Sub Form_Open()

  Dim dm As New DesktopMime
  Dim df As DesktopFile
  Dim percorso As String


   percorso = "/percorso/del/mioFile"


   With df = New DesktopFile(percorso)
     Print "Il file '"; percorso; "' è associato con il programma: "; .FromMime(dm.FromFile(percorso).Type)[0].ProgramName
   End With

End
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline alcresio

  • Grande Gambero
  • ***
  • Post: 100
    • Mostra profilo
Re: Desktop.Open ma non troppo
« Risposta #9 il: 08 Gennaio 2014, 20:27:43 »
Non a nuoto però, non è stagione!


Ma ogni stagione va bene per dare una risposta utile.   :-\


se ci fosse l sistema da gambas non coi sarebbero problemi al cambio dei de o delle distro...
La soluzione universale - tutta Gambas - è la seguente: attivato il componente gb.desktop, devi utilizzare le sue Classi DesktopMime e DesktopFile:
Codice: gambas [Seleziona]

Public Sub Form_Open()

  Dim dm As New DesktopMime
  Dim df As DesktopFile
  Dim percorso As String


   percorso = "/percorso/del/mioFile"


   With df = New DesktopFile(percorso)
     Print "Il file '"; percorso; "' è associato con il programma: "; .FromMime(dm.FromFile(percorso).Type)[0].ProgramName
   End With

End


Grande!!! ora lo provo
in verità ci ero riuscito facendo un poco elegante parsing del file  ~/.local/share/applications/mimeapps.list... una vergogna, però funzionante... ahhaah Grazie mille!

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Desktop.Open ma non troppo
« Risposta #10 il: 09 Gennaio 2014, 03:45:10 »
Puoi anche ad esempio ottenere contemporaneamente:
* il nome dell'applicazione associata al tipo di file;
* l'icona dell'applicazione associata al tipo di file;
* l'icona di quel tipo di file.

L'esempio prevede che sul Form siano posti un Button e due PictureBox:
Codice: gambas [Seleziona]

Public Sub Button1_Click()

  Dim df As DesktopFile
  Dim percorso As String


   percorso = "/percorso/del/file"

   With df = DesktopFile.FromMime(DesktopMime.FromFile(percorso).Type)[0]
     Print "Il file '"; percorso; "' è associato con il programma: "; .ProgramName
     PictureBox1.Picture = .GetIcon(48).Picture
   End With


   PictureBox2.Picture = DesktopMime.FromFile(percorso).GetIcon(48).Picture

End



In vero, puoi ottenere l'icona associata ad un tipo di file più semplicemente mediante il metodo ''Desktop.GetFileIcon()'':
Codice: gambas [Seleziona]
Public Sub Form_Open()

  PictureBox1.Picture = Desktop.GetFileIcon("/percorso/del/file", 48)

End
« Ultima modifica: 09 Gennaio 2014, 13:57:59 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »