arcadia 0.13.0 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. checksums.yaml +7 -0
  2. data/README +19 -15
  3. data/bin/arc +0 -0
  4. data/conf/LC/en-UK.LANG +1 -1
  5. data/conf/LC/ru-RU.LANG +272 -0
  6. data/conf/theme-dark.conf +3 -3
  7. data/ext/ae-dir-projects/ae-dir-projects.rb +5 -5
  8. data/ext/ae-editor/ae-editor.rb +302 -178
  9. data/ext/ae-subprocess-inspector/ae-subprocess-inspector.rb +2 -2
  10. data/ext/ae-term/ae-term.rb +11 -2
  11. data/lib/a-commons.rb +49 -19
  12. data/lib/a-contracts.rb +13 -0
  13. data/lib/a-core.rb +139 -36
  14. data/lib/a-tkcommons.rb +23 -8
  15. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/ArrowButton.html +0 -0
  16. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/BWidget.html +0 -0
  17. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/Button.html +0 -0
  18. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/ButtonBox.html +0 -0
  19. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/ComboBox.html +8 -0
  20. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/Dialog.html +0 -0
  21. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/DragSite.html +0 -0
  22. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/DropSite.html +0 -0
  23. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/DynamicHelp.html +0 -0
  24. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/Entry.html +0 -0
  25. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/Label.html +0 -0
  26. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/LabelEntry.html +0 -0
  27. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/LabelFrame.html +0 -0
  28. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/ListBox.html +0 -0
  29. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/MainFrame.html +28 -23
  30. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/MessageDlg.html +0 -0
  31. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/NoteBook.html +0 -0
  32. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/PagesManager.html +0 -0
  33. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/PanedWindow.html +0 -0
  34. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/PanelFrame.html +0 -0
  35. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/PasswdDlg.html +0 -0
  36. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/ProgressBar.html +0 -0
  37. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/ProgressDlg.html +0 -0
  38. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/ScrollView.html +0 -0
  39. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/ScrollableFrame.html +0 -0
  40. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/ScrolledWindow.html +0 -0
  41. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/SelectColor.html +0 -0
  42. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/SelectFont.html +0 -0
  43. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/Separator.html +0 -0
  44. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/SpinBox.html +0 -0
  45. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/StatusBar.html +0 -0
  46. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/TitleFrame.html +0 -0
  47. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/Tree.html +0 -0
  48. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/Widget.html +0 -0
  49. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/contents.html +0 -0
  50. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/index.html +0 -0
  51. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/navtree.html +0 -0
  52. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/BWman/options.htm +0 -0
  53. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/CHANGES.txt +0 -0
  54. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/ChangeLog +59 -0
  55. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/LICENSE.txt +0 -0
  56. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/README.txt +0 -0
  57. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/arrow.tcl +0 -0
  58. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/bitmap.tcl +0 -0
  59. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/button.tcl +0 -0
  60. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/buttonbox.tcl +0 -0
  61. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/color.tcl +0 -0
  62. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/combobox.tcl +8 -0
  63. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/demo/basic.tcl +0 -0
  64. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/demo/bwidget.xbm +0 -0
  65. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/demo/demo.tcl +0 -0
  66. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/demo/dnd.tcl +0 -0
  67. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/demo/manager.tcl +0 -0
  68. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/demo/select.tcl +0 -0
  69. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/demo/tmpldlg.tcl +0 -0
  70. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/demo/tree.tcl +0 -0
  71. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/demo/x1.xbm +0 -0
  72. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/dialog.tcl +0 -0
  73. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/dragsite.tcl +0 -0
  74. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/dropsite.tcl +0 -0
  75. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/dynhelp.tcl +0 -0
  76. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/entry.tcl +0 -0
  77. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/font.tcl +0 -0
  78. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/bold.gif +0 -0
  79. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/copy.gif +0 -0
  80. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/cut.gif +0 -0
  81. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/dragfile.gif +0 -0
  82. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/dragicon.gif +0 -0
  83. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/error.gif +0 -0
  84. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/file.gif +0 -0
  85. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/folder.gif +0 -0
  86. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/hourglass.gif +0 -0
  87. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/info.gif +0 -0
  88. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/italic.gif +0 -0
  89. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/minus.xbm +0 -0
  90. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/new.gif +0 -0
  91. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/opcopy.xbm +0 -0
  92. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/open.gif +0 -0
  93. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/openfold.gif +0 -0
  94. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/oplink.xbm +0 -0
  95. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/opmove.xbm +0 -0
  96. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/overstrike.gif +0 -0
  97. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/palette.gif +0 -0
  98. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/passwd.gif +0 -0
  99. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/paste.gif +0 -0
  100. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/plus.xbm +0 -0
  101. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/print.gif +0 -0
  102. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/question.gif +0 -0
  103. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/redo.gif +0 -0
  104. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/save.gif +0 -0
  105. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/target.xbm +0 -0
  106. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/underline.gif +0 -0
  107. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/undo.gif +0 -0
  108. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/images/warning.gif +0 -0
  109. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/init.tcl +9 -8
  110. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/label.tcl +0 -0
  111. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/labelentry.tcl +4 -1
  112. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/labelframe.tcl +0 -0
  113. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/lang/da.rc +0 -0
  114. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/lang/de.rc +0 -0
  115. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/lang/en.rc +0 -0
  116. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/lang/es.rc +0 -0
  117. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/lang/fr.rc +0 -0
  118. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/lang/hu.rc +0 -0
  119. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/lang/nl.rc +0 -0
  120. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/lang/no.rc +0 -0
  121. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/lang/pl.rc +0 -0
  122. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/listbox.tcl +0 -0
  123. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/mainframe.tcl +110 -22
  124. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/messagedlg.tcl +0 -0
  125. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/notebook.tcl +13 -3
  126. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/pagesmgr.tcl +0 -0
  127. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/panedw.tcl +0 -0
  128. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/panelframe.tcl +0 -0
  129. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/passwddlg.tcl +0 -0
  130. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/pkgIndex.tcl +2 -3
  131. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/progressbar.tcl +0 -0
  132. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/progressdlg.tcl +0 -0
  133. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/scrollframe.tcl +0 -0
  134. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/scrollview.tcl +0 -0
  135. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/scrollw.tcl +0 -0
  136. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/separator.tcl +0 -0
  137. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/spinbox.tcl +0 -0
  138. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/statusbar.tcl +0 -0
  139. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/tests/entry.test +0 -0
  140. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/titleframe.tcl +0 -0
  141. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/tree.tcl +0 -0
  142. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/utils.tcl +0 -0
  143. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/widget.tcl +15 -2
  144. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/wizard.tcl +0 -0
  145. data/tcl/{bwidget-1.9.6 → bwidget-1.9.7}/xpm2image.tcl +90 -28
  146. metadata +146 -196
  147. data/tcl/fsdialog/de.msg +0 -30
  148. data/tcl/fsdialog/en.msg +0 -31
  149. data/tcl/fsdialog/fsdialog.tcl +0 -1783
  150. data/tcl/fsdialog/fsdlg-gif.tcl +0 -259
  151. data/tcl/fsdialog/fsdlg-png.tcl +0 -265
  152. data/tcl/fsdialog/sv.msg +0 -32
  153. data/tcl/fsdialog/tclIndex +0 -6
  154. data/tcl/ptwidgets-1.1.0/COPYRIGHT +0 -10
  155. data/tcl/ptwidgets-1.1.0/ChangeLog +0 -194
  156. data/tcl/ptwidgets-1.1.0/README +0 -50
  157. data/tcl/ptwidgets-1.1.0/common/stacktrace.tcl +0 -29
  158. data/tcl/ptwidgets-1.1.0/common/tokenframe.tcl +0 -200
  159. data/tcl/ptwidgets-1.1.0/doc/img/toggleswitch_off.png +0 -0
  160. data/tcl/ptwidgets-1.1.0/doc/img/toggleswitch_on.png +0 -0
  161. data/tcl/ptwidgets-1.1.0/doc/img/tokenentry.png +0 -0
  162. data/tcl/ptwidgets-1.1.0/doc/img/tokensearch_popup_example.png +0 -0
  163. data/tcl/ptwidgets-1.1.0/doc/img/tokensearch_popup_example2.png +0 -0
  164. data/tcl/ptwidgets-1.1.0/doc/img/wmarkentry.png +0 -0
  165. data/tcl/ptwidgets-1.1.0/doc/toggleswitch.html +0 -402
  166. data/tcl/ptwidgets-1.1.0/doc/tokenentry.html +0 -1366
  167. data/tcl/ptwidgets-1.1.0/doc/tokensearch.html +0 -1549
  168. data/tcl/ptwidgets-1.1.0/doc/wmarkentry.html +0 -634
  169. data/tcl/ptwidgets-1.1.0/library/toggleswitch.tcl +0 -432
  170. data/tcl/ptwidgets-1.1.0/library/tokenentry.tcl +0 -2208
  171. data/tcl/ptwidgets-1.1.0/library/tokensearch.tcl +0 -2488
  172. data/tcl/ptwidgets-1.1.0/library/wmarkentry.tcl +0 -630
  173. data/tcl/ptwidgets-1.1.0/pkgIndex.tcl +0 -10
  174. data/tcl/ptwidgets-1.1.0/test/Makefile +0 -3
  175. data/tcl/ptwidgets-1.1.0/test/run.tcl +0 -3
  176. data/tcl/ptwidgets-1.1.0/test/test.tcl +0 -89
  177. data/tcl/ptwidgets-1.1.0/test/toggleswitch.test +0 -562
  178. data/tcl/ptwidgets-1.1.0/test/tokenentry.test +0 -1023
  179. data/tcl/ptwidgets-1.1.0/test/tokensearch.test +0 -1023
  180. data/tcl/ptwidgets-1.1.0/test/wmarkentry.test +0 -1325
  181. data/tcl/themes/altTheme.tcl +0 -101
  182. data/tcl/themes/aquaTheme.tcl +0 -59
  183. data/tcl/themes/clamTheme.tcl +0 -140
  184. data/tcl/themes/classicTheme.tcl +0 -108
  185. data/tcl/themes/pkgIndex.tcl +0 -3
  186. data/tcl/themes/ttk.tcl +0 -176
  187. data/tcl/themes/vistaTheme.tcl +0 -224
  188. data/tcl/themes/winTheme.tcl +0 -80
  189. data/tcl/themes/xpTheme.tcl +0 -65
  190. data/tcl/tkfbox/folder.gif +0 -0
  191. data/tcl/tkfbox/textfile.gif +0 -0
  192. data/tcl/tkfbox/tkfbox.tcl +0 -1
  193. data/tcl/tkfbox/tkfbox.tcl~ +0 -1
  194. data/tcl/tkfbox/updir.xbm +0 -1
@@ -22,7 +22,7 @@ class SubProcessInspector < ArcadiaExt
22
22
  @processs.each{|pr|
23
23
  if !pr.nil?
24
24
  message = Arcadia.text("ext.spi.d.exit_query.msg")
25
- r=Arcadia.dialog(self,
25
+ r=Arcadia.hinner_dialog(self,
26
26
  'type'=>'yes_no',
27
27
  'level'=>'warning',
28
28
  'title'=> Arcadia.text("ext.spi.d.exit_query.title"),
@@ -59,7 +59,7 @@ class SubProcessWidget < Tk::BWidget::Button
59
59
  @event = _event
60
60
  b_command = proc{
61
61
  message = Arcadia.text('ext.spi.d.kill.msg', [_event.pid, _event.name])
62
- r=Arcadia.dialog(self,
62
+ r=Arcadia.hinner_dialog(self,
63
63
  'type'=>'yes_no',
64
64
  'level'=>'warning',
65
65
  'title'=> Arcadia.text('ext.spi.d.kill.title'),
@@ -21,6 +21,7 @@ class Term < ArcadiaExtPlus
21
21
  ArcadiaProblemEvent.new(self, "type"=>ArcadiaProblemEvent::DEPENDENCE_MISSING_TYPE,"title"=>Arcadia.text("ext.term.dependences_missing.xdotool.title"), "detail"=>msg).go!
22
22
  end
23
23
  end
24
+ @xterm_class_id = nil
24
25
  end
25
26
 
26
27
  def on_build(_event)
@@ -71,7 +72,10 @@ class Term < ArcadiaExtPlus
71
72
  end
72
73
 
73
74
  def xterm_class
74
- "xarc#{instance_index}"
75
+ if @xterm_class_id.nil?
76
+ @xterm_class_id = "xta#{Time.new.to_i}#{instance_index}"
77
+ end
78
+ @xterm_class_id
75
79
  end
76
80
 
77
81
  def do_run_xterm(_dir='~')
@@ -82,6 +86,7 @@ class Term < ArcadiaExtPlus
82
86
  conf("create",'yes')
83
87
  conf("dir",_dir)
84
88
  id_int = eval(frame.hinner_frame.winfo_id).to_i
89
+
85
90
  #Arcadia.runtime_error_msg("CREO XTERM #{xterm_class} con id #{id_int}")
86
91
  cmd = "cd #{_dir} ; xterm -into #{id_int} -bg '#{conf('color.bg')}' -fg #{conf('color.fg')} -fa '#{conf('font')}' -class #{xterm_class} +sb +hold"
87
92
  fi_pid=-1
@@ -110,9 +115,13 @@ class Term < ArcadiaExtPlus
110
115
  end
111
116
 
112
117
  def do_xterm_exit
118
+ @bind_after_run = false
119
+ frame.hinner_frame.bind_remove("Configure")
120
+ frame.hinner_frame.bind_remove("Map")
113
121
  if main_instance?
114
122
  conf("create",'no')
115
- hide_frame
123
+ # hide_frame
124
+ clean_instance
116
125
  else
117
126
  clean_instance
118
127
  end
@@ -234,6 +234,10 @@ class ArcadiaExt
234
234
  def hide_frame(_n=0)
235
235
  Arcadia.layout.unregister_panel(frame(_n), false, true)
236
236
  end
237
+
238
+ def destroy_frame(_n=0)
239
+ Arcadia.layout.unregister_panel(frame(_n), true, true)
240
+ end
237
241
 
238
242
  def conf_array(_name)
239
243
  # res = []
@@ -281,7 +285,7 @@ class ArcadiaExt
281
285
  end
282
286
 
283
287
  def frame_visible?(_n=0)
284
- @frames[_n] != nil && @frames[_n].hinner_frame && TkWinfo.mapped?(@frames[_n].hinner_frame)
288
+ @frames != nil && @frames[_n] != nil && @frames[_n].hinner_frame && TkWinfo.mapped?(@frames[_n].hinner_frame)
285
289
  end
286
290
 
287
291
  def frame(_n=0,create_if_not_exist=true)
@@ -449,13 +453,18 @@ class ArcadiaExtPlus < ArcadiaExt
449
453
  end
450
454
 
451
455
  def activate(_obj=self, _raise_event=true)
452
- return if @@active_instance[self.class] == _obj
453
- @@active_instance[self.class] = _obj
454
- @@active_instance[self.class].frame.root.shift_on if @@active_instance[self.class].frame != nil
456
+ return if @@active_instance[_obj.class] == _obj
457
+ if _obj.frame_visible?
458
+ @@active_instance[_obj.class] = nil
459
+ else
460
+ @@active_instance[_obj.class] = _obj
461
+ end
462
+ #@@active_instance[self.class].frame.root.shift_on if @@active_instance[self.class].frame != nil
463
+ _obj.frame.root.shift_on if _obj.frame_visible?
455
464
  instances.each{|i|
456
- i.frame.root.shift_off if i != @@active_instance[self.class] && i.frame != nil && i.frame.root != @@active_instance[self.class].frame.root
465
+ i.frame.root.shift_off if i != _obj && i.frame != nil && i.frame.root != _obj.frame.root
457
466
  }
458
- ActivateInstanceEvent.new(Arcadia.instance, 'name'=>self.name).go! if _raise_event
467
+ ActivateInstanceEvent.new(Arcadia.instance, 'name'=>_obj.name).go! if _raise_event
459
468
  end
460
469
 
461
470
  def activate_main
@@ -525,7 +534,9 @@ class ArcadiaExtPlus < ArcadiaExt
525
534
  def on_destroy_instance(_event)
526
535
  Arcadia.detach_listener(self)
527
536
  @arcadia.unregister(self)
528
- @frames.each{|f| f.free }
537
+ # @frames.each{|f| f.free }
538
+ @frames.each_index{|i| destroy_frame(i)}
539
+ @frames.clear
529
540
  end
530
541
 
531
542
  # def on_before_layout_raising_frame(_event)
@@ -535,14 +546,24 @@ class ArcadiaExtPlus < ArcadiaExt
535
546
  # end
536
547
 
537
548
  def clean_instance
538
- activate_main
539
- @@instances[self.class].delete(self) if @@instances[self.class]
540
- Arcadia.del_conf_group(Arcadia['conf'],@name)
541
- Arcadia.del_conf_group(Arcadia['pers'],@name)
542
- #del_from_conf_property("#{main_instance.name}.clones", @name)
543
- main_instance.del_from_conf_property("clones", @name)
544
- Arcadia.process_event(ClearCacheInstanceEvent.new(Arcadia.instance), [self])
545
- Arcadia.process_event(DestroyInstanceEvent.new(Arcadia.instance), [self])
549
+ if main_instance?
550
+ @frames.each_index{|i| destroy_frame(i)}
551
+ @frames.clear
552
+ instances.each{|i|
553
+ if i != self
554
+ activate(i)
555
+ break
556
+ end
557
+ }
558
+ else
559
+ @@instances[self.class].delete(self) if @@instances[self.class]
560
+ Arcadia.del_conf_group(Arcadia['conf'],@name)
561
+ Arcadia.del_conf_group(Arcadia['pers'],@name)
562
+ main_instance.del_from_conf_property("clones", @name)
563
+ Arcadia.process_event(ClearCacheInstanceEvent.new(Arcadia.instance), [self])
564
+ Arcadia.process_event(DestroyInstanceEvent.new(Arcadia.instance), [self])
565
+ activate_main #if main_instance.frame_visible?
566
+ end
546
567
  end
547
568
 
548
569
  def deduplicate
@@ -1058,8 +1079,8 @@ class Application
1058
1079
  @@instance
1059
1080
  end
1060
1081
 
1061
- def Application.conf(_property)
1062
- @@instance['conf'][_property] if @@instance
1082
+ def Application.conf(_property, _value=nil)
1083
+ @@instance.conf(_property, _value) if @@instance
1063
1084
  end
1064
1085
 
1065
1086
  def Application.version
@@ -1070,7 +1091,10 @@ class Application
1070
1091
  @@instance.local_dir if @@instance
1071
1092
  end
1072
1093
 
1073
- def conf(_property)
1094
+ def conf(_property, _value=nil)
1095
+ if !_value.nil?
1096
+ self['conf'][_property] = _value
1097
+ end
1074
1098
  self['conf'][_property]
1075
1099
  end
1076
1100
 
@@ -1202,7 +1226,13 @@ class Application
1202
1226
  def load_theme(_name=nil)
1203
1227
  _theme_file = "conf/theme-#{_name}.conf" if !_name.nil?
1204
1228
  if _theme_file && File.exist?(_theme_file)
1205
- self['conf_theme'] = self.properties_file2hash(_theme_file)
1229
+ thash = self.properties_file2hash(_theme_file)
1230
+ if thash.has_key?('parent')
1231
+ load_theme(thash['parent'])
1232
+ self['conf_theme'].update(thash)
1233
+ else
1234
+ self['conf_theme'] = thash
1235
+ end
1206
1236
  self['conf'].update(self['conf_theme'])
1207
1237
  self['conf_without_local'].update(self['conf_theme'])
1208
1238
  _theme_res_file = "#{Dir.pwd}/conf/theme-#{_name}.res.rb"
@@ -98,6 +98,11 @@ end
98
98
  class LayoutChangedFrameEvent < ArcadiaSysEvent
99
99
  end
100
100
 
101
+ class LayoutChangedDomainEvent < ArcadiaSysEvent
102
+ attr_accessor :old_domain
103
+ attr_accessor :new_domain
104
+ end
105
+
101
106
  # +---------------------------------------------+
102
107
  # Buffer event
103
108
  # +---------------------------------------------+
@@ -361,12 +366,20 @@ class LowerCaseTextEvent < FocusEvent; end
361
366
  # default actions_pattern = 'OK'
362
367
  class DialogEvent < ArcadiaEvent
363
368
  TYPE_PATTERNS = ['ok', 'yes_no', 'ok_cancel', 'yes_no_cancel', 'abort_retry_ignore']
369
+ MSG_MAX_CHARS = 500
364
370
  class Result < Result
365
371
  attr_accessor :value
366
372
  end
367
373
  attr_accessor :title, :msg, :type, :level, :exception
368
374
  end
369
375
 
376
+ class SystemDialogEvent < DialogEvent
377
+ end
378
+
379
+ class HinnerDialogEvent < DialogEvent
380
+ end
381
+
382
+
370
383
  #class QuestionDialogEvent < DialogEvent
371
384
  #end
372
385
  #
@@ -24,7 +24,7 @@ class Arcadia < TkApplication
24
24
  super(
25
25
  ApplicationParams.new(
26
26
  'arcadia',
27
- '0.13.0',
27
+ '0.13.1',
28
28
  'conf/arcadia.conf',
29
29
  'conf/arcadia.pers'
30
30
  )
@@ -561,6 +561,14 @@ class Arcadia < TkApplication
561
561
  self.load_local_config(false)
562
562
  # local config can contain loading conditions
563
563
  self.load_exts_conf
564
+ if @first_run
565
+ myloc = nil
566
+ begin
567
+ myloc = ENV["LANG"].split('.')[0].sub('_','-') if ENV["LANG"]
568
+ rescue Exception => e
569
+ end
570
+ Arcadia.conf('locale', myloc) if myloc != nil
571
+ end
564
572
  self.load_local_config
565
573
  self.load_theme(self['conf']['theme'])
566
574
  self.resolve_properties_link(self['conf'],self['conf'])
@@ -1024,7 +1032,12 @@ class Arcadia < TkApplication
1024
1032
 
1025
1033
 
1026
1034
  def Arcadia.dialog(_sender, _args=Hash.new)
1027
- _event = process_event(DialogEvent.new(_sender, _args))
1035
+ _event = process_event(SystemDialogEvent.new(_sender, _args))
1036
+ return _event.results[0].value if _event
1037
+ end
1038
+
1039
+ def Arcadia.hinner_dialog(_sender, _args=Hash.new)
1040
+ _event = process_event(HinnerDialogEvent.new(_sender, _args))
1028
1041
  return _event.results[0].value if _event
1029
1042
  end
1030
1043
 
@@ -1351,8 +1364,8 @@ class ArcadiaMainToolbar < ArcadiaUserControl
1351
1364
  @item_obj = Tk::BWidget::Button.new(_args['frame'], Arcadia.style('toolbarbutton')){
1352
1365
  image _image if _image
1353
1366
  command _command if _command
1354
- width 20
1355
- height 20
1367
+ width 23
1368
+ height 23
1356
1369
  helptext _hint if _hint
1357
1370
  text _caption if _caption
1358
1371
  }
@@ -1703,7 +1716,7 @@ class RunnerManager < TkFloatTitledFrame
1703
1716
  'compound'=>:left,
1704
1717
  'relief'=>'flat').pack('fill'=>'x','side' =>'left')
1705
1718
  _close_command = proc{
1706
- if (Arcadia.dialog(self, 'type'=>'yes_no',
1719
+ if (Arcadia.hinner_dialog(self, 'type'=>'yes_no',
1707
1720
  'msg'=> Arcadia.text("main.d.confirm_delete_runner.msg", [_runner_hash[:name]]),
1708
1721
  'title' => Arcadia.text("main.d.confirm_delete_runner.title"),
1709
1722
  'level' => 'question')=='yes')
@@ -1967,7 +1980,17 @@ class ArcadiaProblemsShower
1967
1980
  @initialized = true
1968
1981
  if @problems.count > 0
1969
1982
  show_problems
1970
- @ff.show
1983
+ Thread.new do
1984
+ num_sleep = 0
1985
+ while TkWinfo.viewable(Arcadia.layout.root) == false && num_sleep < 20
1986
+ sleep(1)
1987
+ num_sleep += 1
1988
+ end
1989
+ @ff.show
1990
+ end
1991
+ # p TkWinfo.viewable(Arcadia.layout.root)
1992
+ # Tk.after(1000, proc{@ff.show; p TkWinfo.viewable(Arcadia.layout.root)})
1993
+
1971
1994
  end
1972
1995
  end
1973
1996
 
@@ -2390,38 +2413,59 @@ end
2390
2413
 
2391
2414
 
2392
2415
  class ArcadiaDialogManager
2416
+ DialogParams = Struct.new("DialogParams",
2417
+ :type,
2418
+ :res_array,
2419
+ :level,
2420
+ :msg
2421
+ )
2422
+
2393
2423
  def initialize(_arcadia)
2394
2424
  @arcadia = _arcadia
2395
2425
  Arcadia.attach_listener(self, DialogEvent)
2396
2426
  end
2397
2427
 
2398
- def on_dialog(_event)
2399
- type = _event.type
2400
- if !DialogEvent::TYPE_PATTERNS.include?(_event.type)
2401
- type = 'ok'
2402
- end
2403
- res_array = type.split('_')
2404
- if _event.level.nil? || _event.level.length == 0
2405
- icon = 'info'
2406
- else
2407
- icon = _event.level
2428
+ def dialog_params(_event, check_type = true)
2429
+ ret = DialogParams.new
2430
+ if _event
2431
+ ret.type = _event.type
2432
+ if check_type && !_event.class::TYPE_PATTERNS.include?(_event.type)
2433
+ ret.type = 'ok'
2434
+ end
2435
+ ret.res_array = ret.type.split('_')
2436
+ if _event.level.nil? || _event.level.length == 0
2437
+ ret.level = 'info'
2438
+ else
2439
+ ret.level = _event.level
2440
+ end
2441
+ if _event.msg && _event.msg.length > _event.class::MSG_MAX_CHARS
2442
+ ret.msg = _event.msg[0.._event.class::MSG_MAX_CHARS]+' ...'
2443
+ else
2444
+ ret.msg = _event.msg
2445
+ end
2408
2446
  end
2409
- tktype = type.gsub('_','').downcase
2447
+ ret
2448
+ end
2410
2449
 
2411
- if _event.msg && _event.msg.length > 500
2412
- msg = _event.msg[0..500]+' ...'
2413
- else
2414
- msg = _event.msg
2450
+ def on_dialog(_event)
2451
+ case _event
2452
+ when SystemDialogEvent
2453
+ do_system_dialog(_event)
2454
+ when HinnerDialogEvent
2455
+ do_hinner_dialog(_event)
2415
2456
  end
2457
+ end
2416
2458
 
2459
+ def do_system_dialog(_event)
2460
+ par = dialog_params(_event)
2461
+ tktype = par.type.gsub('_','').downcase
2417
2462
  tkdialog = Tk::BWidget::MessageDlg.new(
2418
- 'icon' => icon,
2419
- 'bg' => Arcadia.conf('background'),
2420
- 'fg' => Arcadia.conf('foreground'),
2421
- 'type' => tktype,
2422
- 'title' => _event.title,
2423
- 'message' => msg)
2424
-
2463
+ 'icon' => par.level,
2464
+ 'bg' => Arcadia.conf('background'),
2465
+ 'fg' => Arcadia.conf('foreground'),
2466
+ 'type' => tktype,
2467
+ 'title' => _event.title,
2468
+ 'message' => par.msg)
2425
2469
  tkdialog.configure('font'=>'courier 6')
2426
2470
  res = tkdialog.create
2427
2471
  if _event.level == 'error'
@@ -2431,9 +2475,60 @@ class ArcadiaDialogManager
2431
2475
  Arcadia.runtime_error_msg(_event.msg, _event.title)
2432
2476
  end
2433
2477
  end
2434
- _event.add_result(self, 'value'=>res_array[res.to_i])
2478
+ _event.add_result(self, 'value'=>par.res_array[res.to_i])
2435
2479
  end
2436
2480
 
2481
+ def do_hinner_dialog(_event)
2482
+ par = dialog_params(_event, false)
2483
+ dialog_frame = TkFrame.new(Arcadia.layout.base_frame, Arcadia.style('panel')){
2484
+ #relief 'solid'
2485
+ #borderwidth 3
2486
+ highlightbackground Arcadia.conf('hightlight.link.foreground')
2487
+ #highlightcolor 'red'
2488
+ highlightthickness 1
2489
+ }
2490
+ dialog_frame.pack('side' =>'top','after'=>Arcadia.layout.root, 'anchor'=>'nw','fill'=>'x', 'padx'=>0, 'pady'=>0)
2491
+ max_width = 0
2492
+ par.res_array.each{|v|
2493
+ l = v.length
2494
+ max_width = l if l > max_width
2495
+ }
2496
+ res = nil
2497
+ par.res_array.reverse_each{|value|
2498
+ Tk::BWidget::Button.new(dialog_frame, Arcadia.style('button')){
2499
+ command proc{res = value}
2500
+ text value.capitalize
2501
+ helptext value.capitalize
2502
+ width max_width*2
2503
+ }.pack('side' =>'right','padx'=>5, 'pady'=>5)
2504
+ }
2505
+
2506
+ Tk::BWidget::Label.new(dialog_frame,Arcadia.style('label')){
2507
+ text par.msg
2508
+ helptext _event.msg
2509
+ # }.pack('fill'=>'x','side' =>'left')
2510
+ }.pack('side' =>'right','padx'=>5, 'pady'=>5)
2511
+
2512
+ # Tk::BWidget::Label.new(dialog_frame,Arcadia.style('label')){
2513
+ # compound 'left'
2514
+ # Tk::Anigif.image(self, "#{Dir.pwd}/ext/ae-subprocess-inspector/process.res")
2515
+ # }.pack('side' =>'right','padx'=>10)
2516
+
2517
+
2518
+ Tk.update
2519
+ dialog_frame.grab("set")
2520
+ begin
2521
+ while res == nil do
2522
+ Tk.update
2523
+ sleep(0.1)
2524
+ end
2525
+ ensure
2526
+ dialog_frame.grab("release")
2527
+ end
2528
+ dialog_frame.destroy
2529
+ Tk.update
2530
+ _event.add_result(self, 'value'=>res)
2531
+ end
2437
2532
 
2438
2533
  def on_dialog_old(_event)
2439
2534
  type = _event.type
@@ -2454,6 +2549,7 @@ end
2454
2549
 
2455
2550
 
2456
2551
  class ArcadiaLayout
2552
+
2457
2553
  # include Observable
2458
2554
  # ArcadiaPanelInfo = Struct.new( "ArcadiaPanelInfo",
2459
2555
  # :name,
@@ -2461,18 +2557,25 @@ class ArcadiaLayout
2461
2557
  # :frame,
2462
2558
  # :ffw
2463
2559
  # )
2560
+ attr_reader :base_frame
2464
2561
  HIDDEN_DOMAIN = '-1.-1'
2465
2562
  def initialize(_arcadia, _frame, _autotab=true)
2466
2563
  @arcadia = _arcadia
2467
2564
  @frames = Array.new
2468
2565
  @frames[0] = Array.new
2469
- @frames[0][0] = _frame
2566
+ @base_frame = _frame
2567
+ @content_frame = TkFrame.new(_frame).pack('fill'=>'both', :padx=>0, :pady=>0, :expand => 'yes')
2568
+ # @dialog_frame = TkFrame.new(_frame)
2569
+
2570
+ @frames[0][0] = @content_frame
2470
2571
  # @domains = Array.new
2471
2572
  # @domains[0] = Array.new
2472
2573
  # @domains[0][0] = '_domain_root_'
2574
+
2575
+
2473
2576
  @panels = Hash.new
2474
2577
  @panels['_domain_root_']= Hash.new
2475
- @panels['_domain_root_']['root']= _frame
2578
+ @panels['_domain_root_']['root']= @content_frame
2476
2579
  @panels['_domain_root_']['sons'] = Hash.new
2477
2580
  @panels['_domain_root_'][:raised_stack] = []
2478
2581
 
@@ -2484,7 +2587,7 @@ class ArcadiaLayout
2484
2587
  @splitters=Array.new
2485
2588
  @tabbed = Arcadia.conf('layout.tabbed')=='true'
2486
2589
  end
2487
-
2590
+
2488
2591
  def root
2489
2592
  @panels['_domain_root_']['root']
2490
2593
  end
@@ -2954,7 +3057,6 @@ class ArcadiaLayout
2954
3057
  ret
2955
3058
  end
2956
3059
 
2957
-
2958
3060
  def domains_on_frame(_frame)
2959
3061
  ret_doms = Array.new
2960
3062
  frame_found = false
@@ -2991,7 +3093,6 @@ class ArcadiaLayout
2991
3093
  ret_doms
2992
3094
  end
2993
3095
 
2994
-
2995
3096
  def find_splitted_frame(_start_frame)
2996
3097
  splitted_frame = _start_frame
2997
3098
  while splitted_frame != nil && !splitted_frame.kind_of?(AGTkSplittedFrames)
@@ -3252,6 +3353,8 @@ class ArcadiaLayout
3252
3353
  end
3253
3354
  # refresh -----
3254
3355
  build_invert_menu
3356
+ Tk.update
3357
+ LayoutChangedDomainEvent.new(self, 'old_domain'=>source_domain, 'new_domain'=>_target_domain).go!
3255
3358
  end
3256
3359
 
3257
3360
  # def change_domain_old(_dom1, _dom2, _name2)
@@ -3722,7 +3825,7 @@ class ArcadiaLayout
3722
3825
  dr,dc=d.split('.')
3723
3826
  if dc.to_i >= _c && dr.to_i == _r
3724
3827
  #shift_domain_column(_r,dc.to_i+1,_dom)
3725
- p "== #{d} --> #{domain_name(_r,dc.to_i+1)}"
3828
+ #p "== #{d} --> #{domain_name(_r,dc.to_i+1)}"
3726
3829
  _dom[k]= domain_name(_r,dc.to_i+1)
3727
3830
  end
3728
3831
  }
@@ -3733,7 +3836,7 @@ class ArcadiaLayout
3733
3836
  dr,dc=d.split('.')
3734
3837
  if dr.to_i >= _r && dc.to_i == _c
3735
3838
  #shift_domain_row(dr.to_i+1,_c,_dom)
3736
- p "shift_domain_row == #{d} --> #{domain_name(dr.to_i+1,_c)}"
3839
+ #p "shift_domain_row == #{d} --> #{domain_name(dr.to_i+1,_c)}"
3737
3840
  _dom[k]=domain_name(dr.to_i+1,_c)
3738
3841
  end
3739
3842
  }