Tcl / Tk. Penjelajah file alternatif untuk platform Linux dan Android

Semakin lama saya menulis berbagai program di tcl / tk , semakin saya mengagumi kemampuan dan perhatiannya. Tapi ada satu hal yang tidak memberiku istirahat sampai saat ini. Saat mengembangkan GUI, Anda sering harus menggunakan file explorer (tk_getSaveFile, tk_getOpenFile atau tk_chooseDirectory). Dan jika pada platform Windows atau OS X, explorer file asli dari platform ini dimuat, maka pada platform Linux explorer dari tcl / tk dimuat (well, tidak ada explorer asli di Linux):



Apa yang tidak cocok dengan Anda dalam penjelajah ini? Kurangnya operasi dasar dengan folder / file di dalamnya - buat, hancurkan, ganti nama. Tidak, jangan berpikir bahwa semua mekanisme ini, tentu saja, dilaksanakan, mereka tidak ada di Explorer GUI. Tetapi di Linux, ini tidak begitu terlihat. Tetapi pada platform Android, konduktor dari Tcl / Tk menyebabkan banyak ketidaknyamanan:



Ketika kita berbicara tentang platform Android, yang kita maksudkan adalah pengembangan aplikasi di Androwish .

Dan saat -saat seperti itu telah tiba, isolasi diri, dll. Akibatnya, balalaika lahir (juga disebut / paket untuk tcl) tkfe (tk file explorer).

Ketika mengembangkan paket tkfe, kami memperhitungkan tidak hanya bahwa setidaknya operasi dasar dengan file / direktori diperlukan, tetapi juga keinginan untuk memiliki seorang penjelajah tidak hanya dalam jendela terpisah, tetapi juga dalam bingkai terpisah, yang dapat ditempatkan oleh pengguna sendiri sesuai keinginannya dalam GUI-nya. Proyek ini memiliki contoh komprehensif menggunakan paket. Jadi, unduh proyeknya, buka folder ~ // TkFileExplorer / samples dan jalankan contohnya:

$wish tkfe_samplefull.tcl


Sebenarnya, contoh tersebut dengan jelas menunjukkan semua fitur dari paket. Misalnya, jalankan Explorer untuk memilih folder di jendela terpisah:



Explorer sendiri memiliki antarmuka dalam dua bahasa: Rusia dan Inggris. Penerjemahan dilakukan dengan cepat ketika Anda mengklik tombol dengan bendera:



Selain tombol dengan bendera, ada tombol dengan alat (alat), ketika diklik, menu konteks ditampilkan, apa yang dapat dilakukan dalam direktori saat ini (membuat direktori / file) atau dengan file / folder yang dipilih ( hapus / ganti nama):



Salah satu fungsi dari file explorer mengembalikan nama (garis bawah - NAME) dari variabel (lihat contoh tkfe_samplefull.tcl), di mana jalur ke file atau direktori yang dipilih akan ditulis, atau yang akan kosong jika pilihan ditolak. Setelah menerima nama variabel, tetap menunggu ketika hasil apa pun diperoleh, misalnya:

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

Jika Anda menggunakan jenis penempatan konduktor bingkai, maka Anda harus berhati-hati penempatannya dalam gambar Anda. Penempatan bisa dengan cara apa pun (kisi, bungkus, atau tempat). Metode yang disukai masih merupakan metode tempat. Anda tidak perlu khawatir tentang memformat ulang gambar, karena tempat, tidak seperti kisi dan paket, memungkinkan Anda untuk overlay bingkai di atas gambar yang ada:



Jika Anda hati-hati melihat gambar, Anda akan melihat bahwa tangkapan layar kanan berbeda dari kiri oleh penampilan folder tersembunyi di atasnya (nama dimulai dari titik). Untuk menampilkan tombol tersembunyi, Anda harus mengaktifkan tombol dengan ikon berbentuk mata. Folder dan file juga dapat disortir berdasarkan abjad, dan file berdasarkan ukuran:



Ketika explorer ditempatkan dalam bingkai, Anda juga harus berhati-hati dalam memblokir tombol-tombol asing (ketika explorer ditempatkan di jendela, tkfe balalaika menangani ini).

Paket tkfe mencakup dua fungsi yang membuat widget tidak dapat diakses (all_disable) atau tersedia (all_enable) dalam widget yang diberikan:

  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

Namun, saya lebih suka menggunakan fitur tk busy. Ini terlihat jelas dalam contoh:



Ini adalah teori. Dalam praktiknya, paket tkfe digunakan dalam workstation kriptografi berdasarkan standar kunci publik cryptoarmpkcs . Sekarang penggunaan file explorer dalam aplikasi ini untuk platform Linux terlihat seperti ini:



Tetapi explorer, yang terletak di bingkai:



Dan, tentu saja, menjadi sangat nyaman untuk bekerja dengan explorer pada platform Android:



Seseorang mungkin bertanya: Bagaimana dengan Windows atau OS X? Ya, semuanya bagus. Tapi seperti biasa di Windows - ini adalah masalah Russification, dalam kasus kami ini adalah penggunaan alfabet Cyrillic dalam penamaan file dan folder, serta penggunaan backslash. Oleh karena itu, baris berikut harus ditambahkan ke kode:

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

Inilah yang tampak seperti penjelajah tkfe di platform Windows:



Paket itu sendiri dan contoh penggunaannya ada di sini .

All Articles