arcadia 0.13.1 → 1.0.0

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 (159) hide show
  1. checksums.yaml +4 -4
  2. data/{README → README.md} +60 -53
  3. data/conf/LC/en-UK.LANG +10 -4
  4. data/conf/arcadia.conf +221 -83
  5. data/conf/arcadia.res.rb +165 -175
  6. data/conf/theme-dark.conf +1 -1
  7. data/conf/theme-dark.res.rb +0 -123
  8. data/ext/ae-breakpoints/ae-breakpoints.rb +4 -3
  9. data/ext/ae-dir-projects/ae-dir-projects.conf +27 -1
  10. data/ext/ae-dir-projects/ae-dir-projects.rb +120 -70
  11. data/ext/ae-editor/ae-editor.conf +2 -2
  12. data/ext/ae-editor/ae-editor.rb +610 -303
  13. data/ext/ae-file-history/ae-file-history.rb +60 -39
  14. data/ext/ae-output/ae-output.rb +52 -27
  15. data/ext/ae-ruby-debug/ae-ruby-debug.conf +3 -1
  16. data/ext/ae-ruby-debug/ae-ruby-debug.rb +18 -11
  17. data/ext/ae-search-in-files/ae-search-in-files.conf +2 -2
  18. data/ext/ae-search-in-files/ae-search-in-files.rb +124 -77
  19. data/ext/ae-shell/ae-shell.conf +1 -1
  20. data/ext/ae-shell/ae-shell.rb +18 -81
  21. data/ext/ae-subprocess-inspector/ae-subprocess-inspector.rb +78 -81
  22. data/ext/ae-term/ae-term.rb +9 -7
  23. data/lib/a-commons.rb +125 -17
  24. data/lib/a-contracts.rb +6 -2
  25. data/lib/a-core.rb +441 -405
  26. data/lib/a-tkcommons.rb +1237 -45
  27. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ArrowButton.html +0 -0
  28. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/BWidget.html +0 -0
  29. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/Button.html +0 -0
  30. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ButtonBox.html +0 -0
  31. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ComboBox.html +0 -0
  32. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/Dialog.html +0 -0
  33. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/DragSite.html +0 -0
  34. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/DropSite.html +0 -0
  35. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/DynamicHelp.html +0 -0
  36. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/Entry.html +0 -0
  37. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/Label.html +0 -0
  38. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/LabelEntry.html +0 -0
  39. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/LabelFrame.html +0 -0
  40. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ListBox.html +0 -0
  41. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/MainFrame.html +0 -0
  42. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/MessageDlg.html +0 -0
  43. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/NoteBook.html +0 -0
  44. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/PagesManager.html +0 -0
  45. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/PanedWindow.html +0 -0
  46. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/PanelFrame.html +0 -0
  47. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/PasswdDlg.html +0 -0
  48. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ProgressBar.html +0 -0
  49. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ProgressDlg.html +0 -0
  50. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ScrollView.html +0 -0
  51. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ScrollableFrame.html +0 -0
  52. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ScrolledWindow.html +0 -0
  53. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/SelectColor.html +0 -0
  54. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/SelectFont.html +0 -0
  55. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/Separator.html +0 -0
  56. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/SpinBox.html +0 -0
  57. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/StatusBar.html +0 -0
  58. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/TitleFrame.html +0 -0
  59. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/Tree.html +0 -0
  60. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/Widget.html +0 -0
  61. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/contents.html +0 -0
  62. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/index.html +0 -0
  63. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/navtree.html +0 -0
  64. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/options.htm +0 -0
  65. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/CHANGES.txt +0 -0
  66. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/ChangeLog +65 -0
  67. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/LICENSE.txt +0 -0
  68. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/README.txt +0 -0
  69. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/arrow.tcl +0 -0
  70. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/bitmap.tcl +0 -0
  71. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/button.tcl +0 -2
  72. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/buttonbox.tcl +0 -0
  73. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/color.tcl +0 -0
  74. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/combobox.tcl +40 -16
  75. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/basic.tcl +0 -0
  76. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/bwidget.xbm +0 -0
  77. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/demo.tcl +0 -0
  78. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/dnd.tcl +0 -0
  79. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/manager.tcl +0 -0
  80. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/select.tcl +0 -0
  81. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/tmpldlg.tcl +0 -0
  82. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/tree.tcl +0 -0
  83. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/x1.xbm +0 -0
  84. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/dialog.tcl +0 -0
  85. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/dragsite.tcl +0 -0
  86. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/dropsite.tcl +0 -0
  87. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/dynhelp.tcl +3 -0
  88. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/entry.tcl +0 -0
  89. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/font.tcl +0 -0
  90. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/bold.gif +0 -0
  91. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/copy.gif +0 -0
  92. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/cut.gif +0 -0
  93. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/dragfile.gif +0 -0
  94. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/dragicon.gif +0 -0
  95. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/error.gif +0 -0
  96. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/file.gif +0 -0
  97. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/folder.gif +0 -0
  98. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/hourglass.gif +0 -0
  99. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/info.gif +0 -0
  100. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/italic.gif +0 -0
  101. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/minus.xbm +0 -0
  102. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/new.gif +0 -0
  103. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/opcopy.xbm +0 -0
  104. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/open.gif +0 -0
  105. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/openfold.gif +0 -0
  106. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/oplink.xbm +0 -0
  107. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/opmove.xbm +0 -0
  108. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/overstrike.gif +0 -0
  109. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/palette.gif +0 -0
  110. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/passwd.gif +0 -0
  111. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/paste.gif +0 -0
  112. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/plus.xbm +0 -0
  113. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/print.gif +0 -0
  114. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/question.gif +0 -0
  115. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/redo.gif +0 -0
  116. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/save.gif +0 -0
  117. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/target.xbm +0 -0
  118. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/underline.gif +0 -0
  119. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/undo.gif +0 -0
  120. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/warning.gif +0 -0
  121. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/init.tcl +0 -0
  122. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/label.tcl +0 -2
  123. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/labelentry.tcl +0 -3
  124. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/labelframe.tcl +0 -2
  125. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/da.rc +1 -0
  126. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/de.rc +1 -0
  127. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/en.rc +1 -0
  128. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/es.rc +1 -0
  129. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/fr.rc +1 -0
  130. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/hu.rc +1 -0
  131. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/nl.rc +1 -0
  132. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/no.rc +59 -58
  133. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/pl.rc +0 -0
  134. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/listbox.tcl +17 -4
  135. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/mainframe.tcl +0 -0
  136. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/messagedlg.tcl +0 -0
  137. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/notebook.tcl +0 -0
  138. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/pagesmgr.tcl +0 -0
  139. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/panedw.tcl +0 -0
  140. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/panelframe.tcl +0 -0
  141. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/passwddlg.tcl +0 -0
  142. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/pkgIndex.tcl +2 -2
  143. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/progressbar.tcl +0 -0
  144. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/progressdlg.tcl +0 -0
  145. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/scrollframe.tcl +6 -6
  146. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/scrollview.tcl +0 -0
  147. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/scrollw.tcl +1 -0
  148. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/separator.tcl +0 -0
  149. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/spinbox.tcl +0 -0
  150. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/statusbar.tcl +0 -0
  151. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/tests/entry.test +2 -2
  152. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/titleframe.tcl +0 -0
  153. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/tree.tcl +0 -0
  154. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/utils.tcl +0 -0
  155. data/tcl/bwidget-1.9.8/widget-old.tcl +1651 -0
  156. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/widget.tcl +64 -36
  157. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/wizard.tcl +0 -0
  158. data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/xpm2image.tcl +0 -0
  159. metadata +196 -195
@@ -51,10 +51,59 @@ class SubProcessInspector < ArcadiaExt
51
51
 
52
52
  end
53
53
 
54
- class SubProcessWidget < Tk::BWidget::Button
54
+ #class SubProcessWidget < Tk::BWidget::Button
55
+ # attr_reader :event
56
+ # def initialize(_parent=nil, _event=nil, *args)
57
+ # super(Arcadia['toolbar'].frame, Arcadia.style('button').update("compound"=>'left', "background"=>Arcadia.conf("background"),"activebackground"=>'black', 'relief'=>'groove'))
58
+ # @parent = _parent
59
+ # @event = _event
60
+ # b_command = proc{
61
+ # message = Arcadia.text('ext.spi.d.kill.msg', [_event.pid, _event.name])
62
+ # r=Arcadia.hinner_dialog(self,
63
+ # 'type'=>'yes_no',
64
+ # 'level'=>'warning',
65
+ # 'title'=> Arcadia.text('ext.spi.d.kill.title'),
66
+ # 'msg'=>message)
67
+ # if r=="yes"
68
+ # _event.abort_action.call
69
+ # end
70
+ # }
71
+ # command b_command
72
+ # begin
73
+ # text File.basename(_event.name)
74
+ # rescue
75
+ # text _event.name
76
+ # end
77
+ # helptext "#{_event.name} [pid #{_event.pid}]"
78
+ # pack('side' =>'left', :padx=>2, :pady=>0)
79
+ # Tk::Anigif.image(self, "#{Dir.pwd}/ext/ae-subprocess-inspector/process.res")
80
+ # start_check
81
+ # end
82
+ #
83
+ # def start_check
84
+ # if @event.timecheck
85
+ # timecheck = @event.timecheck
86
+ # else
87
+ # timecheck = 1000
88
+ # end
89
+ # @timer = TkAfter.new
90
+ # proc_check = proc{
91
+ # alive = @event.alive_check.call
92
+ # #p "ALIVE=#{alive}"
93
+ # if !alive
94
+ # @timer.stop
95
+ # @parent.do_delete_process(self)
96
+ # self.destroy
97
+ # end
98
+ # }
99
+ # @timer.set_procs(timecheck,-1,proc_check)
100
+ # @timer.start
101
+ # end
102
+ #end
103
+
104
+ class SubProcessWidget
55
105
  attr_reader :event
56
106
  def initialize(_parent=nil, _event=nil, *args)
57
- super(Arcadia['toolbar'].frame, Arcadia.style('button').update("compound"=>'left', "background"=>'black',"activebackground"=>'black', 'relief'=>'groove'))
58
107
  @parent = _parent
59
108
  @event = _event
60
109
  b_command = proc{
@@ -68,17 +117,37 @@ class SubProcessWidget < Tk::BWidget::Button
68
117
  _event.abort_action.call
69
118
  end
70
119
  }
71
- command b_command
120
+ #command b_command
72
121
  begin
73
- text File.basename(_event.name)
122
+ l_text = File.basename(_event.name)
74
123
  rescue
75
- text _event.name
124
+ l_text = _event.name
76
125
  end
77
- helptext "#{_event.name} [pid #{_event.pid}]"
78
- pack('side' =>'left', :padx=>2, :pady=>0)
79
- Tk::Anigif.image(self, "#{Dir.pwd}/ext/ae-subprocess-inspector/process.res")
126
+ helptext = "#{_event.name} [pid #{_event.pid}]"
127
+
128
+
129
+ @label = TkLabel.new(Arcadia['toolbar'].frame, Arcadia.style('label')){
130
+ compound 'left'
131
+ text l_text
132
+ pack('side' =>'left', :padx=>2, :pady=>0)
133
+ }
134
+ Tk::Anigif.image(@label, "#{Dir.pwd}/ext/ae-subprocess-inspector/process.res")
135
+
136
+ @button = Arcadia.wf.toolbutton(Arcadia['toolbar'].frame){
137
+ command b_command
138
+ image Arcadia.image_res(CLOSE_FRAME_GIF)
139
+ pack('side' =>'left', :padx=>2, :pady=>0)
140
+ }
141
+ @button.hint=helptext
142
+
80
143
  start_check
81
144
  end
145
+
146
+ def destroy
147
+ # @img.destroy
148
+ @label.destroy
149
+ @button.destroy
150
+ end
82
151
 
83
152
  def start_check
84
153
  if @event.timecheck
@@ -99,76 +168,4 @@ class SubProcessWidget < Tk::BWidget::Button
99
168
  @timer.set_procs(timecheck,-1,proc_check)
100
169
  @timer.start
101
170
  end
102
- end
103
-
104
-
105
- #class SubProcessWidget < TkFrame
106
- # attr_reader :event
107
- # def initialize(_parent=nil, _event=nil, *args)
108
- # super(_parent.frame.hinner_frame, Arcadia.style('panel'))
109
- # @parent = _parent
110
- # @event = _event
111
- # @progress = TkVariable.new
112
- # @pb = Tk::BWidget::ProgressBar.new(
113
- # self, Arcadia.style('progress').update({
114
- # :variable=>@progress,
115
- # :type=>'infinite',
116
- # :maximum=>500})).place('width'=>-30,'relwidth' => '1','x' => 0,'y' => 2,'height' => 18)
117
- # #.pack('side' =>'left','fill'=>'x')
118
- #
119
- # icon_button = TkButton.new(@pb){
120
- # background Arcadia.style('panel')['background']
121
- # relief 'flat'
122
- # image Arcadia.file_icon(_event.name)
123
- # }.pack
124
- #
125
- # b_command = proc{
126
- # message = "Really kill pid #{_event.pid} #{_event.name} ?"
127
- # r=Arcadia.dialog(self,
128
- # 'type'=>'yes_no',
129
- # 'level'=>'warning',
130
- # 'title'=> 'Confirm kill',
131
- # 'msg'=>message)
132
- # if r=="yes"
133
- # _event.abort_action.call
134
- # end
135
- # }
136
- #
137
- #
138
- # _b = Tk::BWidget::Button.new(self,
139
- # #_b = TkButton.new(self,
140
- # 'command'=>b_command,
141
- # 'borderwidth'=>0,
142
- # 'background'=>Arcadia.conf('background'),
143
- # 'helptext'=>"#{_event.name} [pid #{_event.pid}]",
144
- # 'image'=> TkPhotoImage.new('data' => PROCESS_KILL_GIF),
145
- # 'relief'=>'flat').pack('side' =>'right','padx'=>0)
146
- # #.pack('side' =>'left','padx'=>5)
147
- # #.place('x' => 2, 'width'=>20)
148
- # pack('side' =>'top','anchor'=>'nw','fill'=>'x','padx'=>5, 'pady'=>5)
149
- # #place('relwidth' => '1')
150
- # start_check
151
- # end
152
- #
153
- # def start_check
154
- # @progress.numeric=0
155
- # if @event.timecheck
156
- # timecheck = @event.timecheck
157
- # else
158
- # timecheck = 1000
159
- # end
160
- # @timer = TkAfter.new
161
- # proc_check = proc{
162
- # alive = @event.alive_check.call
163
- # #p "ALIVE=#{alive}"
164
- # if !alive
165
- # @timer.stop
166
- # @parent.do_delete_process(self)
167
- # self.destroy
168
- # end
169
- # @progress.numeric += 1
170
- # }
171
- # @timer.set_procs(timecheck,-1,proc_check)
172
- # @timer.start
173
- # end
174
- #end
171
+ end
@@ -10,8 +10,8 @@ class Term < ArcadiaExtPlus
10
10
  def on_before_build(_event)
11
11
  @has_xterm = !Arcadia.which("xterm").nil?
12
12
  @has_xdotool = !Arcadia.which("xdotool").nil?
13
- @can_run = @has_xterm || Arcadia.is_windows?
14
- if !Arcadia.is_windows?
13
+ @can_run = @has_xterm || OS.windows? || OS.mac?
14
+ if !(OS.windows? || OS.mac?)
15
15
  if !@has_xterm
16
16
  msg = Arcadia.text("ext.term.dependences_missing.xterm.msg")
17
17
  ArcadiaProblemEvent.new(self, "type"=>ArcadiaProblemEvent::DEPENDENCE_MISSING_TYPE,"title"=>Arcadia.text("ext.term.dependences_missing.xterm.title"), "detail"=>msg).go!
@@ -32,7 +32,7 @@ class Term < ArcadiaExtPlus
32
32
 
33
33
  def on_initialize(_event)
34
34
  # called at startup
35
- return if Arcadia.is_windows?
35
+ return if OS.windows? || OS.mac?
36
36
  @xterm_pid = -1
37
37
  @finalizing = false
38
38
  @bind_after_run = false
@@ -46,7 +46,7 @@ class Term < ArcadiaExtPlus
46
46
  end
47
47
 
48
48
  def on_finalize(_event)
49
- return if Arcadia.is_windows?
49
+ return if OS.windows? || OS.mac?
50
50
  @finalizing = true
51
51
  killall_xterm if @has_xterm && @has_xdotool
52
52
  end
@@ -88,7 +88,7 @@ class Term < ArcadiaExtPlus
88
88
  id_int = eval(frame.hinner_frame.winfo_id).to_i
89
89
 
90
90
  #Arcadia.runtime_error_msg("CREO XTERM #{xterm_class} con id #{id_int}")
91
- cmd = "cd #{_dir} ; xterm -into #{id_int} -bg '#{conf('color.bg')}' -fg #{conf('color.fg')} -fa '#{conf('font')}' -class #{xterm_class} +sb +hold"
91
+ cmd = "cd #{_dir} ; xterm -into #{id_int} -bg '#{conf('color.bg')}' -fg '#{conf('color.fg')}' -fa '#{conf('font')}' -class #{xterm_class} +sb +hold"
92
92
  fi_pid=-1
93
93
  Thread.new do
94
94
  #open("|#{cmd}"){|f| @xterm_pid = f.read.strip if f }
@@ -138,15 +138,17 @@ class Term < ArcadiaExtPlus
138
138
  end
139
139
 
140
140
  def do_run_external_term(_dir)
141
- if Arcadia.is_windows?
141
+ if OS.windows?
142
142
  system("cd #{_dir} & start cmd")
143
+ elsif OS.mac?
144
+ system("open -a Terminal '#{_dir}'")
143
145
  else
144
146
  system("cd #{_dir}; xterm &")
145
147
  end
146
148
  end
147
149
 
148
150
  def on_term(_event)
149
- if !@has_xdotool || Arcadia.is_windows?
151
+ if !@has_xdotool || OS.windows? || OS.mac?
150
152
  do_run_external_term(_event.dir)
151
153
  else
152
154
  if xterm_running?
@@ -121,7 +121,7 @@ class FixedFrameWrapper < AbstractFrameWrapper
121
121
  end
122
122
 
123
123
  def hide
124
- Arcadia.layout.hide_panel(@domain, @name)
124
+
125
125
  end
126
126
 
127
127
  def raised?
@@ -224,6 +224,7 @@ class ArcadiaExt
224
224
  @float_frames = Array.new
225
225
  @float_geometries = conf_array("float_frames")
226
226
  @float_labels = conf_array("float_labels")
227
+ @hinner_dialogs = []
227
228
  Arcadia.attach_listener(self, BuildEvent)
228
229
  Arcadia.attach_listener(self, InitializeEvent)
229
230
  Arcadia.attach_listener(self, ExitQueryEvent)
@@ -287,6 +288,10 @@ class ArcadiaExt
287
288
  def frame_visible?(_n=0)
288
289
  @frames != nil && @frames[_n] != nil && @frames[_n].hinner_frame && TkWinfo.mapped?(@frames[_n].hinner_frame)
289
290
  end
291
+
292
+ def frame_raised?(_n=0)
293
+ @arcadia.layout.raised?(frame_domain(_n), @name)
294
+ end
290
295
 
291
296
  def frame(_n=0,create_if_not_exist=true)
292
297
  if @frames_points[_n].nil?
@@ -297,10 +302,34 @@ class ArcadiaExt
297
302
  (@frames_labels[_n].nil?)? _label = @name : _label = @frames_labels[_n]
298
303
  (@frames_names[_n].nil?)? _name = @name : _name = @frames_names[_n]
299
304
  @frames[_n] = FixedFrameWrapper.new(self, @frames_points[_n], _name, _label, _n)
305
+ @frames[_n].hinner_frame.bind_append("Enter", proc{self.frame.root.shift_on if self.frame_visible?})
300
306
  end
301
307
  return @frames[_n]
302
308
  end
303
309
 
310
+ def hinner_dialog(_n=0, side='top', args=nil)
311
+ if @hinner_dialogs[0].nil?
312
+ @hinner_dialogs[_n] = @arcadia.layout.add_hinner_dialog(side, args)
313
+ @hinner_dialogs[_n].pack('side' =>side,'padx'=>0, 'pady'=>0, 'fill'=>'x', 'expand'=>'1')
314
+ end
315
+ @hinner_dialogs[_n]
316
+ end
317
+
318
+ def hinner_splitted_dialog(_n=0, _side='top', _height=100, _args=nil)
319
+ if @hinner_dialogs[0].nil?
320
+ @hinner_dialogs[_n] = @arcadia.layout.add_hinner_splitted_dialog(_side, _height, _args)
321
+ end
322
+ @hinner_dialogs[_n]
323
+ end
324
+
325
+ def hinner_splitted_dialog_titled(_title=nil, _n=0, _side='top', _height=100, _args=nil)
326
+ if @hinner_dialogs[0].nil?
327
+ @hinner_dialogs[_n] = @arcadia.layout.add_hinner_splitted_dialog_titled(_title, _side, _height, _args)
328
+ end
329
+ @hinner_dialogs[_n]
330
+ end
331
+
332
+
304
333
  def frame_domain(_n=0, _value=nil)
305
334
  if conf('frames')
306
335
  frs = conf('frames').split(',')
@@ -454,15 +483,15 @@ class ArcadiaExtPlus < ArcadiaExt
454
483
 
455
484
  def activate(_obj=self, _raise_event=true)
456
485
  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
486
+ @@active_instance[_obj.class] = _obj #if @arcadia.initialized?
487
+ # if _obj.frame_visible?
488
+ # @@active_instance[_obj.class] = nil
489
+ # else
490
+ # @@active_instance[_obj.class] = _obj
491
+ # end
463
492
  _obj.frame.root.shift_on if _obj.frame_visible?
464
493
  instances.each{|i|
465
- i.frame.root.shift_off if i != _obj && i.frame != nil && i.frame.root != _obj.frame.root
494
+ i.frame.root.shift_off if i != _obj && i.frame != nil && i.frame.root != _obj.frame.root && i.frame_raised?
466
495
  }
467
496
  ActivateInstanceEvent.new(Arcadia.instance, 'name'=>_obj.name).go! if _raise_event
468
497
  end
@@ -547,7 +576,10 @@ class ArcadiaExtPlus < ArcadiaExt
547
576
 
548
577
  def clean_instance
549
578
  if main_instance?
550
- @frames.each_index{|i| destroy_frame(i)}
579
+ @frames.each_index{|i|
580
+ LayoutChangedDomainEvent.new(self, 'old_domain'=>self.frame_domain(i), 'new_domain'=>nil).go!
581
+ destroy_frame(i)
582
+ }
551
583
  @frames.clear
552
584
  instances.each{|i|
553
585
  if i != self
@@ -661,43 +693,44 @@ module EventBus #(or SourceEvent)
661
693
  def process_event(_event, _listeners=nil)
662
694
  # _listener rapresent a filter on @@listeners if != nil
663
695
  return _event if !defined?(@@listeners)
696
+ @@listeners_listeners = {} unless defined? @@listeners_listeners
664
697
  event_classes = _event_class_stack(_event.class)
665
698
  #before fase
666
699
  event_classes.each do |_c|
667
700
  if _listeners.nil?
668
- _process_fase(_c, _event, @@listeners[_c], 'before')
701
+ _process_fase(_c, _event, @@listeners[_c], @@listeners_listeners[_c], 'before')
669
702
  else
670
703
  listeners_to_process = []
671
704
  _listeners.each{|lis|
672
705
  listeners_to_process << lis if @@listeners[_c] && @@listeners[_c].include?(lis)
673
706
  }
674
- _process_fase(_c, _event, listeners_to_process, 'before')
707
+ _process_fase(_c, _event, listeners_to_process, @@listeners_listeners[_c], 'before')
675
708
  end
676
709
  break if _event.is_breaked? # not responding to this means "you need to pass in an instance, not a class name
677
710
  end unless _event.is_breaked?
678
711
  # fase
679
712
  event_classes.each do |_c|
680
713
  if _listeners.nil?
681
- _process_fase(_c, _event, @@listeners[_c])
714
+ _process_fase(_c, _event, @@listeners[_c], @@listeners_listeners[_c])
682
715
  else
683
716
  listeners_to_process = []
684
717
  _listeners.each{|lis|
685
718
  listeners_to_process << lis if @@listeners[_c] && @@listeners[_c].include?(lis)
686
719
  }
687
- _process_fase(_c, _event, listeners_to_process)
720
+ _process_fase(_c, _event, listeners_to_process, @@listeners_listeners[_c])
688
721
  end
689
722
  break if _event.is_breaked?
690
723
  end unless _event.is_breaked?
691
724
  #after fase
692
725
  event_classes.each do |_c|
693
726
  if _listeners.nil?
694
- _process_fase(_c, _event, @@listeners[_c], 'after')
727
+ _process_fase(_c, _event, @@listeners[_c], @@listeners_listeners[_c], 'after')
695
728
  else
696
729
  listeners_to_process = []
697
730
  _listeners.each{|lis|
698
731
  listeners_to_process << lis if @@listeners[_c] && @@listeners[_c].include?(lis)
699
732
  }
700
- _process_fase(_c, _event, listeners_to_process, 'after')
733
+ _process_fase(_c, _event, listeners_to_process, @@listeners_listeners[_c], 'after')
701
734
  end
702
735
  break if _event.is_breaked?
703
736
  end unless _event.is_breaked?
@@ -725,7 +758,7 @@ module EventBus #(or SourceEvent)
725
758
  end
726
759
  private :_event_class_stack
727
760
 
728
- def _process_fase(_class, _event, _listeners=nil, _fase_name = nil)
761
+ def _process_fase(_class, _event, _listeners=nil, _listeners_listeners=nil, _fase_name = nil)
729
762
  return if _listeners.nil?
730
763
  _fase_name.nil?? suf = '':suf = _fase_name
731
764
  method_name = _method_name(_class, suf)
@@ -738,12 +771,26 @@ module EventBus #(or SourceEvent)
738
771
  elsif _listener.respond_to?(method_name)
739
772
  _listener.send(method_name, _event)
740
773
  end
774
+ if _listeners_listeners
775
+ _listeners_listeners.each do |ll|
776
+ if ll.respond_to?(sub_method_name)
777
+ ll.send(sub_method_name, _event, _listener)
778
+ elsif ll.respond_to?(method_name)
779
+ ll.send(method_name, _event, _listener)
780
+ end
781
+ end
782
+ end
741
783
  break if _event.is_breaked?
742
784
  end
743
785
  else
744
786
  _listeners.each do|_listener|
745
787
  next if _listener.kind_of?(ArcadiaExtPlus) && !(_listener.active? || (_event.kind_of?(ArcadiaSysEvent)))
746
788
  _listener.send(method_name, _event) if _listener.respond_to?(method_name)
789
+ if _listeners_listeners
790
+ _listeners_listeners.each do |ll|
791
+ ll.send(method_name, _event, _listener) if ll.respond_to?(method_name)
792
+ end
793
+ end
747
794
  break if _event.is_breaked?
748
795
  end
749
796
  end
@@ -758,6 +805,7 @@ module EventBus #(or SourceEvent)
758
805
  return 'on_'+(_suf+_pre+_in.gsub(/[A-Z]/){|s| '_'+s.to_s}).downcase.gsub('_event','')
759
806
  end
760
807
  private :_method_name
808
+
761
809
  def _broadcast_fase(_class, _event)
762
810
  return if @@listeners[_class].nil?
763
811
  method_name = _method_name(_class)
@@ -799,6 +847,25 @@ module EventBus #(or SourceEvent)
799
847
  @@listeners[_class_event] << _listener
800
848
  end
801
849
 
850
+ def attach_listeners_listener(_listener, _class_event)
851
+ @@listeners_listeners = {} unless defined? @@listeners_listeners
852
+ @@listeners_listeners[_class_event] = [] unless @@listeners_listeners.has_key?(_class_event)
853
+ @@listeners_listeners[_class_event] << _listener
854
+ end
855
+
856
+ def detach_listeners_listener(_listener, _class_event=nil)
857
+ if _class_event != nil
858
+ if @@listeners_listeners[_class_event]
859
+ @@listeners_listeners[_class_event].delete(_listener)
860
+ end
861
+ else
862
+ #delete all the issues of listenere
863
+ @@listeners_listeners.each{|klass, header|
864
+ header.delete(_listener)
865
+ }
866
+ end
867
+ end
868
+
802
869
  end
803
870
 
804
871
 
@@ -844,7 +911,21 @@ module Configurable
844
911
  if (_strip_line.length > 0)&&(_strip_line[0,1]!='#')
845
912
  var_plat = _line.split('::')
846
913
  if var_plat.length > 1
847
- if (RUBY_PLATFORM =~ Regexp::new(var_plat[0]))
914
+ case var_plat[0]
915
+ when 'WINDOWS'
916
+ plat_enabled = OS.windows?
917
+ when 'MAC'
918
+ plat_enabled = OS.mac?
919
+ when 'LINUX'
920
+ plat_enabled = OS.linux?
921
+ when 'FREEBSD'
922
+ plat_enabled = OS.freebsd?
923
+ when 'UNIX'
924
+ plat_enabled = OS.unix?
925
+ when 'ARM'
926
+ plat_enabled = OS.arm?
927
+ end
928
+ if plat_enabled
848
929
  _line = var_plat[1]
849
930
  var_plat[2..-1].collect{|x| _line=_line+'::'+x} if var_plat.length > 2
850
931
  else
@@ -1289,4 +1370,31 @@ class Application
1289
1370
 
1290
1371
  def run
1291
1372
  end
1373
+ end
1374
+
1375
+ module OS
1376
+ def OS.windows?
1377
+ (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
1378
+ end
1379
+
1380
+ def OS.mac?
1381
+ (/darwin/ =~ RUBY_PLATFORM) != nil
1382
+ end
1383
+
1384
+ def OS.unix?
1385
+ !OS.windows?
1386
+ end
1387
+
1388
+ def OS.linux?
1389
+ OS.unix? and not OS.mac?
1390
+ end
1391
+
1392
+ def OS.freebsd?
1393
+ (/freebsd/ =~ RUBY_PLATFORM) != nil
1394
+ end
1395
+
1396
+ def OS.arm?
1397
+ (/arm/ =~ RUBY_PLATFORM) != nil
1398
+ end
1399
+
1292
1400
  end