2 if {![
winfo exists ".$id.popup"]} {
3 image create cairoSurface $id -surface $id.popup
5 wm title .$id "Godley Table:[$id.table.title]"
6 $id.deleteCallback "destroy .$id"
9 button .$id.controls.run -image runButton -height 25 -width 25 -command runstop -takefocus 0
10 button .$id.controls.reset -image resetButton -height 25 -width 25 -command reset -takefocus 0
11 button .$id.controls.step -image stepButton -height 25 -width 25 -command {step} -takefocus 0
12 bind .$id.controls.step <ButtonPress-1> "set buttonPressed 1; autoRepeatButton .$id.controls.step"
13 bind .$id <ButtonRelease-1> {set buttonPressed 0}
14 tooltip .$id.controls.run "Run/Stop"
15 tooltip .$id.controls.reset "Reset simulation"
16 tooltip .$id.controls.step "Step simulation"
18 label .$id.controls.slowSpeed -text "slow" -takefocus 0
19 label .$id.controls.fastSpeed -text "fast" -takefocus 0
20 scale .$id.controls.simSpeed -variable delay -command setSimulationDelay -to 0 -from 12 -length 150 -label "Simulation Speed" -orient horizontal -showvalue 0 -takefocus 0
22 button .$id.controls.zoomOut -image zoomOutImg -height 24 -width 37 -command "zoomOut $id" -takefocus 0
23 tooltip .$id.controls.zoomOut "Zoom Out"
24 button .$id.controls.zoomIn -image zoomInImg -height 24 -width 37 -command "zoomIn $id" -takefocus 0
25 tooltip .$id.controls.zoomIn "Zoom In"
26 button .$id.controls.zoomOrig -image zoomOrigImg -height 24 -width 37 \
27 -command "$id.popup.zoomFactor 1; $id.popup.requestRedraw" -takefocus 0
28 tooltip .$id.controls.zoomOrig "Reset Zoom"
29 pack .$id.controls.run .$id.controls.reset .$id.controls.step .$id.controls.slowSpeed .$id.controls.simSpeed .$id.controls.fastSpeed .$id.controls.zoomOut .$id.controls.zoomIn .$id.controls.zoomOrig -side left
33 label .$id.table -image $id -width 800 -height 200 -takefocus 1
34 bind .$id.table <Configure> "$id.popup.requestRedraw"
36 bind .$id.table <ButtonPress-1> "moveAssetClass $id %x %y %X %Y"
37 bind .$id.table <ButtonRelease-1> "defaultCursor .$id.table; swapAssetClass $id %x %y"
38 bind .$id.table <B1-Motion> "motionCursor .$id.table; $id.popup.mouseMoveB1 %x %y"
39 bind .$id.table <Motion> "$id.popup.mouseMove %x %y; $id.popup.requestRedraw"
40 bind .$id.table <Leave> "$id.popup.mouseMove -1 -1; $id.update; $id.popup.requestRedraw"
41 bind .$id.table <Enter> "$id.popup.adjustWidgets; $id.popup.update; $id.popup.requestRedraw"
43 bind .$id.table <<contextMenu>> "godleyContext $id %x %y %X %Y"
44 bind .$id.table <Key> "$id.popup.keyPress %N [encoding convertto utf-8 %A] 0 0 0; $id.popup.requestRedraw"
46 bind .$id.table <$meta-y> "$id.popup.undo -1; $id.popup.requestRedraw"
47 bind .$id.table <$meta-z> "$id.popup.undo 1; $id.popup.requestRedraw"
48 bind .$id <$meta-y> "$id.popup.undo -1; $id.popup.requestRedraw"
49 bind .$id <$meta-z> "$id.popup.undo 1; $id.popup.requestRedraw"
51 bind .$id <$meta-plus> "zoomIn $id"
52 bind .$id <$meta-minus> "zoomOut $id"
53 bind .$id.table <Key-KP_Add> "zoomIn $id"
54 bind .$id.table <Key-KP_Subtract> "zoomOut $id"
55 bind .$id <Key-KP_Add> "zoomIn $id"
56 bind .$id <Key-KP_Subtract> "zoomOut $id"
58 bind .$id.table <Button-4> "zoomIn $id"
59 bind .$id.table <Button-5> "zoomOut $id"
61 bind .$id.table <MouseWheel> "if {%D>=0} {zoomIn $id} {zoomOut $id}"
63 menu .$id.context -tearoff 0
64 menu .$id.context.import -tearoff 0
66 frame .$id.vscrollFrame
67 scrollbar .$id.vscroll -orient vertical -command "scrollGodley $id row"
68 .$id.vscroll set 0 0.25
69 pack .$id.vscroll -in .$id.vscrollFrame -anchor n -fill y -side top -expand 1
70 ttk::sizegrip .$id.sizegrip
71 pack .$id.sizegrip -in .$id.vscrollFrame -anchor s -side bottom
72 pack .$id.vscrollFrame -side right -anchor s -fill y
74 scrollbar .$id.hscroll -orient horiz -command "scrollGodley $id col"
75 pack .$id.hscroll -side bottom -fill x
76 .$id.hscroll set 0 0.25
77 pack .$id.table -fill both -expand 1
79 menu .$id.menubar -type menubar
81 if {[tk windowingsystem] == "aqua"} {
82 menu .$id.menubar.apple
83 .$id.menubar.apple add command -label "About Minsky" -command aboutMinsky
84 .$id.menubar add cascade -menu .$id.menubar.apple
87 menu .$id.menubar.file
88 .$id.menubar.file add command -label "Export" -command "exportGodley $id"
90 menu .$id.menubar.edit -postcommand "toggleGodleyPaste $id"
91 .$id configure -menu .$id.menubar
92 .$id.menubar.edit add command -label Undo -command "$id.popup.undo 1" -accelerator $meta_menu-Z
93 .$id.menubar.edit add command -label Redo -command "$id.popup.undo -1" -accelerator $meta_menu-Y
94 .$id.menubar.edit add command -label Title -command "textEntryPopup .godleyTitle {[$id.table.title]} {setGodleyTitleOK $id}"
95 .$id.menubar.edit add command -label Cut -command "$id.popup.cut; $id.popup.requestRedraw" -accelerator $meta_menu-X
96 .$id.menubar.edit add command -label Copy -command "$id.popup.copy" -accelerator $meta_menu-C
97 .$id.menubar.edit add command -label Paste -command "$id.popup.paste; $id.popup.requestRedraw" -accelerator $meta_menu-V
99 menu .$id.menubar.view
100 .$id.menubar.view add command -label "Zoom in" -command "zoomIn $id" -accelerator $meta_menu-+
101 .$id.menubar.view add command -label "Zoom out" -command "zoomOut $id" -accelerator $meta_menu--
102 .$id.menubar.view add command -label "Reset zoom" -command "$id.popup.zoomFactor 1; $id.popup.requestRedraw"
104 menu .$id.menubar.options
105 .$id.menubar.options add checkbutton -label "Show Values" -variable preferences(godleyDisplay) -command setGodleyDisplay
106 .$id.menubar.options add checkbutton -label "DR/CR style" -variable preferences(godleyDisplayStyle) -onvalue DRCR -offvalue sign -command setGodleyDisplay
107 .$id.menubar.options add checkbutton -label "Enable multiple equity columns" -variable preferences(multipleEquities) -command setGodleyDisplay
109 .$id.menubar add cascade -label File -menu .$id.menubar.file -underline 0
110 .$id.menubar add cascade -label Edit -menu .$id.menubar.edit -underline 0
111 .$id.menubar add cascade -label View -menu .$id.menubar.view -underline 0
112 .$id.menubar add cascade -label Options -menu .$id.menubar.options -underline 0
113 .$id.menubar add command -label Help -command {help GodleyTable} -underline 0