From 853149f053f94b029a6b2fe0a0924a90f1ec6156 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 12 Jan 2011 04:22:35 +0000 Subject: made into a dialog_*.tcl panel like the normal onces svn path=/trunk/scripts/guiplugins/search-plugin/; revision=14710 --- search-plugin.tcl | 97 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 60 insertions(+), 37 deletions(-) (limited to 'search-plugin.tcl') 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 \ - {search $searchtext .searchwindow.resultslistbox} - # TODO add history like in the find box - bind .searchwindow.searchtextentry {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 <> \ - {selectline [.searchwindow.resultslistbox get \ - [.searchwindow.resultslistbox curselection]]} - bind .searchwindow.resultslistbox \ - {menu_doc_open $::sys_libdir "$::selected_file"} - bind .searchwindow.resultslistbox \ - {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 {::dialog_search::search $searchtext} + # TODO add history like in the find box + bind .search.searchtextentry {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 <> \ + {::dialog_search::selectline [.search.resultslistbox get \ + [.search.resultslistbox curselection]]} + bind .search.resultslistbox \ + {menu_doc_open $::sys_libdir $::dialog_search::selected_file} + bind .search.resultslistbox \ + {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} -- cgit v1.2.1