aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Christoph Steiner <eighthave@users.sourceforge.net>2011-01-12 04:22:35 +0000
committerHans-Christoph Steiner <eighthave@users.sourceforge.net>2011-01-12 04:22:35 +0000
commit853149f053f94b029a6b2fe0a0924a90f1ec6156 (patch)
tree752d7aeb0b957872d973fd18d5e0280cb9e2ce0f
parent82d1e1591037c2371773466874fc28a73f1e19b2 (diff)
made into a dialog_*.tcl panel like the normal onces
svn path=/trunk/scripts/guiplugins/search-plugin/; revision=14710
-rw-r--r--search-plugin.tcl97
1 files changed, 60 insertions, 37 deletions
diff --git a/search-plugin.tcl b/search-plugin.tcl
index 378979b..4482c5c 100644
--- a/search-plugin.tcl
+++ b/search-plugin.tcl
@@ -1,14 +1,17 @@
package require Tk 8.5
package require tile
+package require pd_bindings
package require pd_menucommands
-set selected_file {}
+namespace eval ::dialog_search:: {
+ variable selected_file {}
+}
# findFiles
# basedir - the directory to start looking in
# pattern - A pattern, as defined by the glob command, that the files must match
-proc findFiles { basedir pattern } {
+proc ::dialog_search::findFiles { basedir pattern } {
# Fix the directory name, this ensures the directory name is in the
# native format for the platform and contains a final directory seperator
@@ -36,48 +39,29 @@ proc findFiles { basedir pattern } {
return $fileList
}
-proc ui {} {
- toplevel .searchwindow
- wm title .searchwindow [_ "Search Window"]
- entry .searchwindow.searchtextentry -bg white -textvar searchtext
- bind .searchwindow.searchtextentry <Return> \
- {search $searchtext .searchwindow.resultslistbox}
- # TODO add history like in the find box
- bind .searchwindow.searchtextentry <Up> {set searchtext ""}
- listbox .searchwindow.resultslistbox -yscrollcommand ".searchwindow.yscrollbar set" \
- -bg white -height 20 -width 40
- scrollbar .searchwindow.yscrollbar -command ".searchwindow.resultslistbox yview"
- bind .searchwindow.resultslistbox <<ListboxSelect>> \
- {selectline [.searchwindow.resultslistbox get \
- [.searchwindow.resultslistbox curselection]]}
- bind .searchwindow.resultslistbox <Key-Return> \
- {menu_doc_open $::sys_libdir "$::selected_file"}
- bind .searchwindow.resultslistbox <Double-ButtonRelease-1> \
- {menu_doc_open $::sys_libdir "$::selected_file"}
-
- grid .searchwindow.searchtextentry - -sticky ew
- grid .searchwindow.resultslistbox .searchwindow.yscrollbar -sticky news
- grid columnconfig . 0 -weight 1
- grid rowconfig . 1 -weight 1
-}
-proc selectline {line} {
- set ::selected_file [string replace $line [string first ":" $line] end]
+proc ::dialog_search::selectline {line} {
+ variable selected_file
+ set selected_file [string replace $line [string first ":" $line] end]
}
-proc readfile {file varName} {
+
+proc ::dialog_search::readfile {file varName} {
upvar \#0 $varName data
set fp [open $file]
set data [split [read $fp] \n]
close $fp
}
-proc search {searchtext widget} {
+
+proc ::dialog_search::search {searchtext} {
+ set widget .search.resultslistbox
$widget delete 0 end
- foreach docfile $::allDocFiles {
+ foreach docfile [findFiles $::sys_libdir "*.pd"] {
readfile $docfile data
searchfile $searchtext $widget \
[string replace $docfile 0 [string length $::sys_libdir]]
}
}
-proc searchfile {searchtext widget filename} {
+
+proc ::dialog_search::searchfile {searchtext widget filename} {
global data
set n 0
foreach line $data {
@@ -90,12 +74,51 @@ proc searchfile {searchtext widget filename} {
$widget see end
}
-#set sys_libdir "/home/hans/code/pure-data/trunk/pd/doc"
-set allDocFiles [findFiles $sys_libdir "*.pd"]
-#readfile $f data
-#ui
+proc ::dialog_search::ok {mytoplevel} {
+ pdtk_post "::dialog_search::ok\n"
+}
+
+proc ::dialog_search::cancel {mytoplevel} {
+ wm withdraw .search
+}
+
+proc ::dialog_search::open_search_dialog {mytoplevel} {
+ if {[winfo exists .search]} {
+ wm deiconify .search
+ raise .search
+ } else {
+ create_dialog
+ }
+}
+
+proc ::dialog_search::create_dialog {} {
+ variable selected_file
+ toplevel .search
+ wm title .search [_ "Search Window"]
+ entry .search.searchtextentry -bg white -textvar searchtext
+ bind .search.searchtextentry <Return> {::dialog_search::search $searchtext}
+ # TODO add history like in the find box
+ bind .search.searchtextentry <Up> {set searchtext ""}
+ listbox .search.resultslistbox -yscrollcommand ".search.yscrollbar set" \
+ -bg white -height 20 -width 40
+ scrollbar .search.yscrollbar -command ".search.resultslistbox yview"
+ bind .search.resultslistbox <<ListboxSelect>> \
+ {::dialog_search::selectline [.search.resultslistbox get \
+ [.search.resultslistbox curselection]]}
+ bind .search.resultslistbox <Key-Return> \
+ {menu_doc_open $::sys_libdir $::dialog_search::selected_file}
+ bind .search.resultslistbox <Double-ButtonRelease-1> \
+ {menu_doc_open $::sys_libdir $::dialog_search::selected_file}
+ ::pd_bindings::dialog_bindings .search "search"
+
+ grid .search.searchtextentry - -sticky ew
+ grid .search.resultslistbox .search.yscrollbar -sticky news
+ grid columnconfig . 0 -weight 1
+ grid rowconfig . 1 -weight 1
+}
set mymenu .menubar.help
set inserthere [$mymenu index [_ "Report a bug"]]
$mymenu insert $inserthere separator
-$mymenu insert $inserthere command -label [_ " Search"] -command ui
+$mymenu insert $inserthere command -label [_ " Search"] \
+ -command {::dialog_search::open_search_dialog .search}