Available only on level 1, i. e. not available when in group editing mode etc.
obj method canvaseditor buildFileMenu menu { $menu add cascade -label File -menu [menu $menu.file] $menu.file add command -label New -command [list apply { self { if { [llength [$self private undoStack]] == 0 || [tk_messageBox\ -title "Empty Workspace"\ -message "Sure?"\ -type okcancel] eq "ok" } then { destroy [$self private canvas].info $self canvas delete all $self initUndoRedo reset $self setting filename "" width 400 height 300 background gray95 $self canvas configure\ -width [$self setting width]\ -height [$self setting height]\ -bg [$self setting background] $self zoom original } } } $self] $menu.file add separator $menu.file add command -label Open -command [list apply [list self { if { [llength [$self private undoStack]] == 0 || [tk_messageBox\ -title "Empty Workspace"\ -message "Sure?"\ -type okcancel] eq "ok" } then { set directory [file normalize [file dirname [info script]]] set file [tk_getOpenFile\ -initialdir $directory\ -title "Load from library"\ -defaultextension .vectorleaf\ -filetypes {{Vectorleaf .vectorleaf}}] if {$file ne ""} then { $self select set ch [open $file r] set xml [read $ch] close $ch $self canvas delete all $self processXML $xml set initUndoRedo reset $self private settings filename $file # variable filename set filename([$self private canvas])\ [file rootname [file tail $file]] } } } [namespace current]] $self] $menu.file add command -label Save\ -command [list apply { {self menu} { set file [dict get [$self private settings] filename] if {$file eq ""} then { $menu.file invoke "Save as" } else { set ch [open $file w] puts $ch [$self canvasToXML] close $ch } } } $self $menu] $menu.file add command -label "Save as"\ -command [list apply [list self { set directory\ [file normalize [file dirname [info script]]] set file [tk_getSaveFile\ -initialdir $directory\ -title "Save Selection"\ -defaultextension .vectorleaf\ -filetypes {{Vectorleaf .vectorleaf}}] if {$file ne ""} then { $self private settings filename $file set ch [open $file w] puts $ch [$self canvasToXML] close $ch # variable filename set filename([$self private canvas])\ [file rootname [file tail $file]] } } [namespace current]] $self] $menu.file add cascade -label Export\ -menu [menu $menu.file.export -tearoff no] $menu.file.export add command -label Postscript\ -command [list apply { self { set file [dict get [$self private settings] filename] if {$file eq ""} then { set ps [file join [file dirname [info script]] vectorleaf.ps] } else { set ps [file rootname $file].ps } $self selected blink off $self elements hide $self canvas postscript -file $ps\ -pagewidth [[$self private canvas] cget -width] $self elements hide no $self selected blink on } } $self] $menu.file.export add command -label PNG\ -command [list apply { self { set file [dict get [$self private settings] filename] if {$file eq ""} then { set file1 [file join [file dirname [info script]] vectorleaf.png] } else { set file1 [file rootname $file].png } $self selected blink off $self elements hide canvasToBitmap [$self private canvas] $file1 [$self canvas cget -bg] $self elements hide no $self selected blink on } } $self] $menu.file.export add command -label ImageMagick\ -command [list apply { self { set file [dict get [$self private settings] filename] if {$file eq ""} then { set file1 [file join [file dirname [info script]] vectorleaf.mvg] } else { set file1 [file rootname $file].mvg } $self selected blink off $self elements hide set ch [open $file1 w] puts $ch [canvasexport mvg [$self private canvas]] close $ch $self elements hide no $self selected blink on } } $self] $menu.file.export add command -label "Scalable Vector Graphics"\ -command [list apply { self { set file [dict get [$self private settings] filename] if {$file eq ""} then { set file1 [file join [file dirname [info script]] vectorleaf.svg] } else { set file1 [file rootname $file].svg } $self selected blink off $self elements hide set ch [open $file1 w] puts $ch [canvasexport svg [$self private canvas]] close $ch $self elements hide no $self selected blink on } } $self] $menu.file add separator $menu.file add command -label Info\ -command "$self buildInfoWindow" }
© Wolf-Dieter Busch | Home | Sitemap | Urheber | A-Z