if {![exists -command class]} { package require oo } class clipboard { path "/tmp/webif.cb" items {} } class clipboarditem { action "" path "" } clipboarditem method _parse {line} { lassign [split $line "|"] action path } proc {clipboarditem load} {line} { set c [clipboarditem new] $c _parse $line return $c } clipboard method save {} { set fd [open $path w] foreach item $items { puts $fd "[$item get action]|[$item get path]" } $fd close } clipboard method load {} { set items {} set changed 0 if {[file exists $path]} { set fd [open $path r] foreach line [split [$fd read] "\n"] { set ci [clipboarditem load $line] if {[file exists [$ci get path]]} { lappend items $ci } else { set changed 1 } } } if {$changed} { $self save } return $self } clipboard method present {xfile} { foreach item $items { if {[$item get path] eq $xfile} { return 1 } } return 0 } clipboard method index {xfile} { set index -1 foreach item $items { incr index if {[$item get path] eq $xfile} { return $index } } return -1 } clipboard method clear {} { set items {} } clipboard method size {} { return [llength $items] } clipboard method add {xaction xpath} { lappend items [clipboarditem load "$xaction|$xpath"] } clipboard method remove {xpath} { set index [$self index $xpath] if {$index < 0} { return } set items [lreplace $items $index $index] }