Pattern regexp search (Tcl/Tk ) code

引用网址:http://hi.baidu.com/yy73/blog/item/96b005fab52e329159ee9012.html

 

 

  if {1} {
        set wsrh [frame $wf.srh -bd 0 -bg $backColor]
        pack $wsrh -side top -fill x -expand false -pady 0 -padx 0
        tixComboBox $wsrh.ins -label " Search in" -dropdown true -relief raised /
                            -editable true -variable kindOfProbe -selectmode browse /
                            -disablecallback true -browsecmd "kindOfProbeFromCombo"
      [$wsrh.ins subwidget entry] config -width 10 -font $fontMenu -takefocus 0 /
                   -fg red -selectforeground red -bg black -selectbackground black
      [$wsrh.ins subwidget listbox] config -font $fontMenu -height 6 -width 10 /
                      -selectforeground red -highlightthickness 1 -bg black -fg green
      set lst { instance net input output inout}
     foreach i $lst {
             $wsrh.ins insert end $i
      }
    set kindOfProbe [lindex $lst 0]

    frame $wsrh.pat -bd 0 -bg $backColor
     uiProbeNetPatternSearch "Pattern" $wsrh.pat "xyz"
     pack $wsrh.ins $wsrh.pat -side left -padx .1c -pady 0
    }

 

proc uiPatternPressKey {entryW k} {
    global patternList patternCurrentIdx
    switch $k {
"Up" {
     set patternCurrentIdx [expr $patternCurrentIdx - 1]
     if {$patternCurrentIdx eq -1} {
   set patternCurrentIdx [expr [llength $patternList] - 1]
     }
     $entryW delete 0 [string length [$entryW get]]
     $entryW insert 0 [lindex $patternList $patternCurrentIdx]
}
"Down" {
     incr patternCurrentIdx
     if {$patternCurrentIdx >= [llength $patternList]} {
   set patternCurrentIdx 0
     }
     $entryW delete 0 [string length [$entryW get]]
     $entryW insert 0 [lindex $patternList $patternCurrentIdx]
}
"Escape" {
     $entryW delete 0 [string length [$entryW get]]
}
default {}
    }
}

proc kindOfProbeFromCombo {sel} {
    global kindOfProbe
    set kindOfProbe $sel
}

proc uiFindProbePatternSignal {pattern} {
    global uiTopDispModuleInfoW kindOfProbe patternList patternCurrentIdx
    if {$pattern != "" && [lsearch -exact $patternList $pattern] eq -1} {
        lappend patternList $pattern
        incr patternCurrentIdx
    }
    if {[winfo exists $uiTopDispModuleInfoW($kindOfProbe)]} {
        set hlist $uiTopDispModuleInfoW($kindOfProbe)
        set data [$hlist info children]
for {set i 0} {$i < [llength $data]} {incr i} {
     set signalstr [$hlist item cget [lindex $data $i] 0 -text]
     if {[string match -nocase $pattern $signalstr]==0} {
   $hlist hide entry [lindex $data $i]
   # $hlist yview $i
     } else {
   $hlist show entry [lindex $data $i]
     }
}
    }
}


proc uiProbeNetPatternSearch {label w pattern} {
    global patternList patternCurrentIdx
    set patternList {}
    set patternCurrentIdx -1

    set len [string length $label]
    uiLabEntry $w.search $label $len 24 $pattern
    [$w.search subwidget entry] config -bg black -fg green -insertbackground green
    uiButton $w.filt Filter "uiFindProbePatternSignal $$pattern"
    $w.filt configure -width 4

    bind [$w.search subwidget entry] <Return> "uiFindProbePatternSignal $$pattern"
    bind <Key> "uiPatternPressKey %W %K"
    pack $w.search -side left -expand 0 -padx 1m -pady 0
    pack $w.filt -side left -padx 1m -pady 0
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值