arcadia 0.13.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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