Tcl / Tk. Alternativer Datei-Explorer für Linux- und Android-Plattformen

Je länger ich verschiedene Programme auf tcl / tk schreibe , desto mehr bewundere ich seine Fähigkeiten und Nachdenklichkeit. Aber eines hat mich bis vor kurzem nicht ausgeruht. Bei der Entwicklung einer GUI müssen Sie häufig den Datei-Explorer verwenden (tk_getSaveFile, tk_getOpenFile oder tk_chooseDirectory). Und wenn auf Windows- oder OS X-Plattformen der native Datei-Explorer dieser Plattformen geladen ist, wird auf Linux-Plattformen der Explorer von tcl / tk geladen (unter Linux gibt es keinen nativen Explorer):



Was passt nicht zu Ihnen in diesem Explorer? Dieser Mangel an elementaren Operationen mit Ordnern / Dateien darin - erstellen, zerstören, umbenennen. Nein, denken Sie nicht, dass alle diese Mechanismen in tcl selbst implementiert sind. Sie sind einfach nicht in der Explorer-GUI vorhanden. Unter Linux ist dies jedoch nicht so auffällig. Auf der Android-Plattform verursacht der Dirigent von Tcl / Tk jedoch viele Unannehmlichkeiten:



Wenn wir über die Android-Plattform sprechen, meinen wir die Entwicklung von Anwendungen auf Androwish .

Und dann sind solche Zeiten gekommen, Selbstisolation usw. Als Ergebnis wurde eine Balalaika geboren (auch / packages for tcl genannt) tkfe (tk file explorer).

Bei der Entwicklung des tkfe-Pakets haben wir nicht nur berücksichtigt, dass zumindest elementare Operationen mit Dateien / Verzeichnissen erforderlich sind, sondern auch den Wunsch, einen Explorer nicht nur in einem separaten Fenster, sondern auch in einem separaten Frame zu haben, den der Benutzer selbst in seiner GUI platzieren kann. Das Projekt enthält ein umfassendes Beispiel für die Verwendung des Pakets. Laden Sie das Projekt herunter, gehen Sie zum Ordner ~ // TkFileExplorer / samples und führen Sie das folgende Beispiel aus:

$wish tkfe_samplefull.tcl


Das Beispiel zeigt deutlich alle Funktionen des Pakets. Führen Sie beispielsweise Explorer aus, um einen Ordner in einem separaten Fenster auszuwählen: Der



Explorer selbst verfügt über eine Benutzeroberfläche in zwei Sprachen: Russisch und Englisch. Die Übersetzung



erfolgt im laufenden Betrieb , wenn Sie auf die Schaltfläche mit der Flagge klicken: Zusätzlich zur Schaltfläche mit der Flagge gibt es eine Schaltfläche mit Werkzeugen (Werkzeugen). Wenn Sie darauf klicken , wird das Kontextmenü angezeigt, was im aktuellen Verzeichnis (Verzeichnis / Datei erstellen) oder mit einer ausgewählten Datei / einem ausgewählten Ordner ( löschen / umbenennen):



Jede der Funktionen des Datei-Explorers gibt den Namen (Unterstreichung - NAME) der Variablen zurück (siehe Beispiel tkfe_samplefull.tcl), in den der Pfad zur ausgewählten Datei oder zum ausgewählten Verzeichnis geschrieben wird oder der leer ist, wenn die Auswahl abgelehnt wird. Nach Erhalt des Variablennamens muss noch gewartet werden, bis ein Ergebnis erzielt wird, zum Beispiel:

 . . .
#   
#   window -  ; frame -  
set typew "window"
#  
 set msk "*.txt *.doc *.crt * .*"
# 
set tekdir $env(HOME)
#  
 set vrr [FE::fe_getopenfile  $typew $w $tekdir $msk]
# 
 vwait $vrr
. . .

Wenn Sie die Art der Platzierung des Rahmenleiters verwenden, müssen Sie auf die Platzierung in Ihrem Bild achten. Die Platzierung kann in beliebiger Weise erfolgen (Gitter, Packung oder Ort). Die bevorzugte Methode ist immer noch die Platzierungsmethode. Sie müssen sich keine Gedanken über die Neuformatierung des Bildes machen, da Sie im Gegensatz zu Raster und Packung den Rahmen über das vorhandene Bild legen können:



Wenn Sie sich das Bild genau ansehen, werden Sie feststellen, dass sich der rechte Screenshot vom linken durch das Erscheinungsbild versteckter Ordner unterscheidet (Namen beginnen) von diesem Punkt). Um versteckte Schaltflächen anzuzeigen, müssen Sie die Schaltfläche mit einem augenförmigen Symbol aktivieren. Ordner und Dateien können auch alphabetisch sortiert und Dateien nach Größe sortiert werden:



Wenn der Explorer im Rahmen platziert ist, sollten Sie auch darauf achten, überflüssige Schaltflächen zu blockieren (wenn der Explorer im Fenster platziert ist, kümmert sich die tkfe balalaika darum).

Das tkfe-Paket enthält zwei Funktionen, die Widgets innerhalb eines bestimmten Widgets unzugänglich (all_disable) oder verfügbar (all_enable) machen:

  proc all_disable {parent} {
    set widgets [info commands $parent*]
    foreach w $widgets {
	catch {$w configure -state disabled}
    }
  }
  proc all_enable {parent} {
    set widgets [info commands $parent*]
    foreach w $widgets {
	catch {$w configure -state normal}
    }
  }
  namespace export fe_getsavefile
  namespace export fe_getopenfile
  namespace export fe_choosedir
  namespace export all_enable
  namespace export all_disable

Ich bevorzuge jedoch die Verwendung der tk-Funktionen. Dies wird im Beispiel deutlich:



Dies ist eine Theorie. In der Praxis wurde das tkfe-Paket in einer kryptografischen Workstation verwendet, die auf den Standards für öffentliche Schlüssel von cryptoarmpkcs basiert . Die Verwendung des Datei-Explorers in dieser Anwendung für die Linux-Plattform sieht nun folgendermaßen aus:



Aber der Explorer befindet sich im Frame:



Und natürlich wurde es sehr bequem, mit dem Explorer auf der Android-Plattform zu arbeiten:



Jemand könnte fragen: Was ist mit Windows oder OS X? Ja, alles ist großartig. Aber wie immer unter Windows - dies ist das Problem der Russifizierung, in unserem Fall die Verwendung des kyrillischen Alphabets beim Benennen von Dateien und Ordnern sowie die Verwendung eines Backslash. Daher müssen dem Code die folgenden Zeilen hinzugefügt werden:

#    
# MS Win    cp1251
set tekdir [encoding convertfrom cp1251 $tekdir ]
#       
set tekdir [string map {"\\" "/"} $tekdir]

So sieht der tkfe-Explorer auf der Windows-Plattform aus:



Das Paket selbst und Beispiele für seine Verwendung finden Sie hier .

All Articles