arcadia 0.13.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/{README → README.md} +60 -53
- data/conf/LC/en-UK.LANG +10 -4
- data/conf/arcadia.conf +221 -83
- data/conf/arcadia.res.rb +165 -175
- data/conf/theme-dark.conf +1 -1
- data/conf/theme-dark.res.rb +0 -123
- data/ext/ae-breakpoints/ae-breakpoints.rb +4 -3
- data/ext/ae-dir-projects/ae-dir-projects.conf +27 -1
- data/ext/ae-dir-projects/ae-dir-projects.rb +120 -70
- data/ext/ae-editor/ae-editor.conf +2 -2
- data/ext/ae-editor/ae-editor.rb +610 -303
- data/ext/ae-file-history/ae-file-history.rb +60 -39
- data/ext/ae-output/ae-output.rb +52 -27
- data/ext/ae-ruby-debug/ae-ruby-debug.conf +3 -1
- data/ext/ae-ruby-debug/ae-ruby-debug.rb +18 -11
- data/ext/ae-search-in-files/ae-search-in-files.conf +2 -2
- data/ext/ae-search-in-files/ae-search-in-files.rb +124 -77
- data/ext/ae-shell/ae-shell.conf +1 -1
- data/ext/ae-shell/ae-shell.rb +18 -81
- data/ext/ae-subprocess-inspector/ae-subprocess-inspector.rb +78 -81
- data/ext/ae-term/ae-term.rb +9 -7
- data/lib/a-commons.rb +125 -17
- data/lib/a-contracts.rb +6 -2
- data/lib/a-core.rb +441 -405
- data/lib/a-tkcommons.rb +1237 -45
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ArrowButton.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/BWidget.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/Button.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ButtonBox.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ComboBox.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/Dialog.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/DragSite.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/DropSite.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/DynamicHelp.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/Entry.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/Label.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/LabelEntry.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/LabelFrame.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ListBox.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/MainFrame.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/MessageDlg.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/NoteBook.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/PagesManager.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/PanedWindow.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/PanelFrame.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/PasswdDlg.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ProgressBar.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ProgressDlg.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ScrollView.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ScrollableFrame.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/ScrolledWindow.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/SelectColor.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/SelectFont.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/Separator.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/SpinBox.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/StatusBar.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/TitleFrame.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/Tree.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/Widget.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/contents.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/index.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/navtree.html +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/BWman/options.htm +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/CHANGES.txt +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/ChangeLog +65 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/LICENSE.txt +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/README.txt +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/arrow.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/bitmap.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/button.tcl +0 -2
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/buttonbox.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/color.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/combobox.tcl +40 -16
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/basic.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/bwidget.xbm +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/demo.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/dnd.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/manager.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/select.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/tmpldlg.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/tree.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/demo/x1.xbm +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/dialog.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/dragsite.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/dropsite.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/dynhelp.tcl +3 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/entry.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/font.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/bold.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/copy.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/cut.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/dragfile.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/dragicon.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/error.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/file.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/folder.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/hourglass.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/info.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/italic.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/minus.xbm +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/new.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/opcopy.xbm +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/open.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/openfold.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/oplink.xbm +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/opmove.xbm +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/overstrike.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/palette.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/passwd.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/paste.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/plus.xbm +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/print.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/question.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/redo.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/save.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/target.xbm +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/underline.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/undo.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/images/warning.gif +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/init.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/label.tcl +0 -2
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/labelentry.tcl +0 -3
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/labelframe.tcl +0 -2
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/da.rc +1 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/de.rc +1 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/en.rc +1 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/es.rc +1 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/fr.rc +1 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/hu.rc +1 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/nl.rc +1 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/no.rc +59 -58
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/lang/pl.rc +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/listbox.tcl +17 -4
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/mainframe.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/messagedlg.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/notebook.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/pagesmgr.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/panedw.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/panelframe.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/passwddlg.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/pkgIndex.tcl +2 -2
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/progressbar.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/progressdlg.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/scrollframe.tcl +6 -6
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/scrollview.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/scrollw.tcl +1 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/separator.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/spinbox.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/statusbar.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/tests/entry.test +2 -2
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/titleframe.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/tree.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/utils.tcl +0 -0
- data/tcl/bwidget-1.9.8/widget-old.tcl +1651 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/widget.tcl +64 -36
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/wizard.tcl +0 -0
- data/tcl/{bwidget-1.9.7 → bwidget-1.9.8}/xpm2image.tcl +0 -0
- metadata +196 -195
data/lib/a-contracts.rb
CHANGED
@@ -255,6 +255,9 @@ class SubProcessEvent < ArcadiaEvent
|
|
255
255
|
attr_accessor :abort_action, :alive_check, :name, :pid, :timeout, :timecheck
|
256
256
|
end
|
257
257
|
|
258
|
+
class SubProcessProgressEvent < SubProcessEvent
|
259
|
+
attr_accessor :max, :varprogress
|
260
|
+
end
|
258
261
|
|
259
262
|
#class DebugMsgEvent < MsgEvent
|
260
263
|
#end
|
@@ -315,7 +318,8 @@ end
|
|
315
318
|
class InputKeyboardQueryEvent < ArcadiaEvent
|
316
319
|
class Result < Result
|
317
320
|
attr_accessor :input
|
318
|
-
end
|
321
|
+
end
|
322
|
+
attr_accessor :pid
|
319
323
|
end
|
320
324
|
|
321
325
|
class InputEvent < ArcadiaEvent
|
@@ -367,6 +371,7 @@ class LowerCaseTextEvent < FocusEvent; end
|
|
367
371
|
class DialogEvent < ArcadiaEvent
|
368
372
|
TYPE_PATTERNS = ['ok', 'yes_no', 'ok_cancel', 'yes_no_cancel', 'abort_retry_ignore']
|
369
373
|
MSG_MAX_CHARS = 500
|
374
|
+
TITLE_MAX_CHARS = 100
|
370
375
|
class Result < Result
|
371
376
|
attr_accessor :value
|
372
377
|
end
|
@@ -379,7 +384,6 @@ end
|
|
379
384
|
class HinnerDialogEvent < DialogEvent
|
380
385
|
end
|
381
386
|
|
382
|
-
|
383
387
|
#class QuestionDialogEvent < DialogEvent
|
384
388
|
#end
|
385
389
|
#
|
data/lib/a-core.rb
CHANGED
@@ -16,15 +16,17 @@ require "observer"
|
|
16
16
|
|
17
17
|
class Arcadia < TkApplication
|
18
18
|
include Observable
|
19
|
+
include OS
|
19
20
|
attr_reader :layout
|
20
21
|
attr_reader :wf
|
21
22
|
attr_reader :mf_root
|
22
23
|
attr_reader :localization
|
23
24
|
def initialize
|
25
|
+
@initialized=false
|
24
26
|
super(
|
25
27
|
ApplicationParams.new(
|
26
28
|
'arcadia',
|
27
|
-
'0.
|
29
|
+
'1.0.0',
|
28
30
|
'conf/arcadia.conf',
|
29
31
|
'conf/arcadia.pers'
|
30
32
|
)
|
@@ -56,18 +58,19 @@ class Arcadia < TkApplication
|
|
56
58
|
title _title
|
57
59
|
withdraw
|
58
60
|
protocol( "WM_DELETE_WINDOW", proc{Arcadia.process_event(QuitEvent.new(self))})
|
59
|
-
iconphoto(Arcadia.image_res(
|
61
|
+
iconphoto(Arcadia.image_res(A_LOGO_STRIP_GIF)) if Arcadia.instance.tcltk_info.level >= '8.4.9'
|
60
62
|
}
|
61
63
|
@on_event = Hash.new
|
62
64
|
|
63
|
-
@main_menu_bar = TkMenubar.new(
|
64
|
-
|
65
|
-
).pack('fill'=>'x')
|
65
|
+
# @main_menu_bar = TkMenubar.new(
|
66
|
+
# 'background'=> self['conf']['background']
|
67
|
+
# ).pack('fill'=>'x')
|
68
|
+
|
66
69
|
@mf_root = Tk::BWidget::MainFrame.new(@root,
|
67
70
|
'background'=> self['conf']['background'],
|
68
71
|
'height'=> 0
|
69
72
|
){
|
70
|
-
menu @main_menu_bar
|
73
|
+
#menu @main_menu_bar
|
71
74
|
}.pack(
|
72
75
|
'anchor'=> 'center',
|
73
76
|
'fill'=> 'both',
|
@@ -82,7 +85,7 @@ class Arcadia < TkApplication
|
|
82
85
|
@mf_root.show_toolbar(0,@is_toolbar_show)
|
83
86
|
@use_splash = self['conf']['splash.show']=='yes'
|
84
87
|
@splash = ArcadiaAboutSplash.new if @use_splash
|
85
|
-
@splash.set_progress(
|
88
|
+
@splash.set_progress(62) if @splash
|
86
89
|
@splash.deiconify if @splash
|
87
90
|
Tk.update
|
88
91
|
@screenwidth=TkWinfo.screenwidth(@root)
|
@@ -113,7 +116,7 @@ class Arcadia < TkApplication
|
|
113
116
|
else
|
114
117
|
start_width = (@screenwidth-4)
|
115
118
|
start_height = (@screenheight-20)
|
116
|
-
if
|
119
|
+
if OS.windows? # on doze don't go below the start gar
|
117
120
|
start_height -= 50
|
118
121
|
start_width -= 20
|
119
122
|
end
|
@@ -150,16 +153,17 @@ class Arcadia < TkApplication
|
|
150
153
|
Arcadia.runtime_error(e)
|
151
154
|
end
|
152
155
|
if self['conf']['geometry.state'] == 'zoomed'
|
153
|
-
if Arcadia.is_windows?
|
156
|
+
if Arcadia.is_windows? || OS.mac?
|
154
157
|
@root.state('zoomed')
|
155
158
|
else
|
156
159
|
@root.wm_attributes('zoomed',1)
|
157
160
|
end
|
158
161
|
end
|
159
162
|
#sleep(1)
|
163
|
+
@splash.last_step if @splash
|
160
164
|
@splash.destroy if @splash
|
161
165
|
if @first_run # first ARCADIA ever
|
162
|
-
Arcadia.process_event(OpenBufferEvent.new(self,'file'=>'README'))
|
166
|
+
Arcadia.process_event(OpenBufferEvent.new(self,'file'=>'README.md'))
|
163
167
|
elsif ARGV.length > 0
|
164
168
|
ARGV.each{|_f|
|
165
169
|
if $pwd != File.dirname(__FILE__) && !File.exist?(_f)
|
@@ -171,6 +175,12 @@ class Arcadia < TkApplication
|
|
171
175
|
Arcadia.attach_listener(self, QuitEvent)
|
172
176
|
Arcadia.persistent("version", self['applicationParams'].version)
|
173
177
|
@@last_input_keyboard_query_event=nil
|
178
|
+
@initialized=true
|
179
|
+
# @focus_event_manager = FocusEventManager.new
|
180
|
+
end
|
181
|
+
|
182
|
+
def initialized?
|
183
|
+
@initialized
|
174
184
|
end
|
175
185
|
|
176
186
|
def on_quit(_event)
|
@@ -577,13 +587,14 @@ class Arcadia < TkApplication
|
|
577
587
|
end
|
578
588
|
|
579
589
|
def load_sysdefaultproperty
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
590
|
+
if !OS.mac?
|
591
|
+
Tk.tk_call "eval","option add *background #{self['conf']['background']}"
|
592
|
+
Tk.tk_call "eval","option add *foreground #{self['conf']['foreground']}"
|
593
|
+
Tk.tk_call "eval","option add *activebackground #{self['conf']['activebackground']}"
|
594
|
+
Tk.tk_call "eval","option add *activeforeground #{self['conf']['activeforeground']}"
|
595
|
+
Tk.tk_call "eval","option add *highlightcolor #{self['conf']['background']}"
|
596
|
+
Tk.tk_call "eval","option add *relief #{self['conf']['relief']}"
|
597
|
+
end
|
587
598
|
if !Arcadia.is_windows? && File.basename(Arcadia.ruby) != 'ruby'
|
588
599
|
begin
|
589
600
|
if !FileTest.exist?("#{local_dir}/bin")
|
@@ -611,7 +622,8 @@ class Arcadia < TkApplication
|
|
611
622
|
publish('action.test.keys', proc{@keytest.show})
|
612
623
|
publish('action.get.font', proc{Tk::BWidget::SelectFont::Dialog.new.create})
|
613
624
|
publish('action.show_about', proc{ArcadiaAboutSplash.new.deiconify})
|
614
|
-
self['menubar'] = ArcadiaMainMenu.new(@main_menu_bar)
|
625
|
+
# self['menubar'] = ArcadiaMainMenu.new(@main_menu_bar)
|
626
|
+
self['menubar'] = ArcadiaMainMenu.new(@root)
|
615
627
|
@splash.next_step(Arcadia.text('main.splash.building_extensions')) if @splash
|
616
628
|
self.do_build
|
617
629
|
publish('objic.action.raise_active_obj',
|
@@ -634,6 +646,14 @@ class Arcadia < TkApplication
|
|
634
646
|
}
|
635
647
|
load_user_control(self['toolbar'],"","e")
|
636
648
|
load_user_control(self['menubar'],"","e")
|
649
|
+
# Platform menus
|
650
|
+
if OS.mac?
|
651
|
+
apple = TkSysMenu_Apple.new(self['menubar'].menubar)
|
652
|
+
self['menubar'].menubar.add :cascade, :menu => apple
|
653
|
+
elsif OS.windows?
|
654
|
+
sysmenu = TkSysMenu_System.new(self['menubar'].menubar)
|
655
|
+
self['menubar'].menubar.add :cascade, :menu => sysmenu
|
656
|
+
end
|
637
657
|
@splash.next_step(Arcadia.text('main.splash.loading_runners')) if @splash
|
638
658
|
load_runners
|
639
659
|
do_make_clones
|
@@ -662,6 +682,11 @@ class Arcadia < TkApplication
|
|
662
682
|
run = Hash.new.update(self['runners'][run[:runner]]).update(run)
|
663
683
|
#self['runners'][name]=run
|
664
684
|
end
|
685
|
+
if run[:image]
|
686
|
+
image = Arcadia.image_res(run[:image])
|
687
|
+
else
|
688
|
+
image = Arcadia.file_icon(run[:file_exts])
|
689
|
+
end
|
665
690
|
_run_title = run[:title]
|
666
691
|
run[:title] = nil
|
667
692
|
run[:runner_name] = name
|
@@ -670,15 +695,20 @@ class Arcadia < TkApplication
|
|
670
695
|
RunCmdEvent.new(self, run)
|
671
696
|
)
|
672
697
|
}
|
673
|
-
|
674
|
-
|
675
|
-
|
698
|
+
if run[:pos]
|
699
|
+
pos = run[:pos]
|
700
|
+
else
|
701
|
+
pos = '0'
|
702
|
+
end
|
703
|
+
args = {
|
704
|
+
:image => image,
|
676
705
|
:label => _run_title,
|
677
|
-
:font => Arcadia.conf('menu.font'),
|
678
706
|
:compound => 'left',
|
679
707
|
:command => _command
|
680
708
|
}
|
681
|
-
)
|
709
|
+
args[:font] = Arcadia.conf('menu.font') #if !OS.mac?
|
710
|
+
|
711
|
+
mr.insert(pos, :command , args)
|
682
712
|
}
|
683
713
|
|
684
714
|
insert_runner_instance_item = proc{|name, run|
|
@@ -689,23 +719,28 @@ class Arcadia < TkApplication
|
|
689
719
|
_run_title = run[:title]
|
690
720
|
run[:title] = nil
|
691
721
|
run[:runner_name] = name
|
722
|
+
if run[:image]
|
723
|
+
image = Arcadia.image_res(run[:image])
|
724
|
+
else
|
725
|
+
image = Arcadia.file_icon(run[:file_exts])
|
726
|
+
end
|
727
|
+
|
692
728
|
_command = proc{
|
693
729
|
_event = Arcadia.process_event(
|
694
730
|
RunCmdEvent.new(self, run)
|
695
731
|
)
|
696
732
|
}
|
697
|
-
|
698
|
-
|
699
|
-
:image => Arcadia.file_icon(run[:file_exts]),
|
733
|
+
args = {
|
734
|
+
:image => image,
|
700
735
|
:label => _run_title,
|
701
|
-
:font => Arcadia.conf('menu.font'),
|
702
736
|
:compound => 'left',
|
703
737
|
:command => _command
|
704
738
|
}
|
705
|
-
)
|
739
|
+
args[:font] = Arcadia.conf('menu.font') #if !OS.mac?
|
740
|
+
mr.insert('0', :command , args)
|
706
741
|
}
|
707
742
|
|
708
|
-
#
|
743
|
+
#conf runner
|
709
744
|
runs=Arcadia.conf_group('runners')
|
710
745
|
mr.insert('0', :separator) if runs && !runs.empty?
|
711
746
|
|
@@ -717,6 +752,22 @@ class Arcadia < TkApplication
|
|
717
752
|
insert_runner_item.call(name, run)
|
718
753
|
}
|
719
754
|
|
755
|
+
|
756
|
+
#conf exts runner
|
757
|
+
@exts.each{|ext|
|
758
|
+
if ext_active?(ext)
|
759
|
+
ext_runs=Arcadia.conf_group("#{ext}.runners")
|
760
|
+
mr.insert(self['runners'].count, :separator) if ext_runs && !ext_runs.empty?
|
761
|
+
ext_runs.each{|name, hash_string|
|
762
|
+
self['runners'][name]=eval hash_string
|
763
|
+
self['runners'][name][:pos]=self['runners'].count
|
764
|
+
insert_runner_item.call(name, self['runners'][name])
|
765
|
+
}
|
766
|
+
end
|
767
|
+
}
|
768
|
+
|
769
|
+
|
770
|
+
|
720
771
|
# pers runner instance
|
721
772
|
runs=Arcadia.pers_group('runners')
|
722
773
|
mr.insert('0', :separator) if runs && !runs.empty?
|
@@ -725,8 +776,6 @@ class Arcadia < TkApplication
|
|
725
776
|
begin
|
726
777
|
pers_runner[name]=eval hash_string
|
727
778
|
rescue Exception => e
|
728
|
-
p Arcadia("main.e.loading_runner.title", [name])
|
729
|
-
p Arcadia("main.e.loading_runner.msg", [hash_string, e.message])
|
730
779
|
Arcadia.unpersistent("runners.#{name}")
|
731
780
|
end
|
732
781
|
}
|
@@ -887,7 +936,7 @@ class Arcadia < TkApplication
|
|
887
936
|
def save_layout
|
888
937
|
self['conf']['geometry']= geometry_refine(TkWinfo.geometry(@root))
|
889
938
|
begin
|
890
|
-
if Arcadia.is_windows?
|
939
|
+
if Arcadia.is_windows? || OS.mac?
|
891
940
|
self['conf']['geometry.state'] = @root.state.to_s
|
892
941
|
else
|
893
942
|
if @root.wm_attributes('zoomed') == '1'
|
@@ -984,14 +1033,14 @@ class Arcadia < TkApplication
|
|
984
1033
|
_event.mark
|
985
1034
|
end
|
986
1035
|
|
987
|
-
def Arcadia.console_input(_sender)
|
1036
|
+
def Arcadia.console_input(_sender, _pid=nil)
|
988
1037
|
@@input_ready = true if !defined?(@@input_ready)
|
989
1038
|
while !@@input_ready && !@@input_ready.nil?
|
990
1039
|
sleep(0.1)
|
991
1040
|
end
|
992
1041
|
begin
|
993
1042
|
@@input_ready=false
|
994
|
-
@@last_input_keyboard_query_event = InputKeyboardQueryEvent.new(_sender)
|
1043
|
+
@@last_input_keyboard_query_event = InputKeyboardQueryEvent.new(_sender, :pid => _pid)
|
995
1044
|
@@last_input_keyboard_query_event.go!
|
996
1045
|
ret = @@last_input_keyboard_query_event.results.length > 0 ? @@last_input_keyboard_query_event.results[0].input : nil
|
997
1046
|
ensure
|
@@ -1032,8 +1081,12 @@ class Arcadia < TkApplication
|
|
1032
1081
|
|
1033
1082
|
|
1034
1083
|
def Arcadia.dialog(_sender, _args=Hash.new)
|
1035
|
-
|
1036
|
-
|
1084
|
+
if @@instance && @@instance.initialized?
|
1085
|
+
Arcadia.hinner_dialog(_sender, _args)
|
1086
|
+
else
|
1087
|
+
_event = process_event(SystemDialogEvent.new(_sender, _args))
|
1088
|
+
return _event.results[0].value if _event
|
1089
|
+
end
|
1037
1090
|
end
|
1038
1091
|
|
1039
1092
|
def Arcadia.hinner_dialog(_sender, _args=Hash.new)
|
@@ -1115,12 +1168,37 @@ class Arcadia < TkApplication
|
|
1115
1168
|
end
|
1116
1169
|
end
|
1117
1170
|
|
1118
|
-
def Arcadia.
|
1171
|
+
def Arcadia.open_system_file_dialog
|
1119
1172
|
Tk.getOpenFile 'initialdir' => MonitorLastUsedDir.get_last_dir
|
1120
1173
|
end
|
1121
1174
|
|
1175
|
+
def Arcadia.open_file_dialog(_initial_dir=MonitorLastUsedDir.get_last_dir)
|
1176
|
+
HinnerFileDialog.new.file(_initial_dir)
|
1177
|
+
end
|
1178
|
+
|
1179
|
+
def Arcadia.select_dir_dialog(_initial_dir=MonitorLastUsedDir.get_last_dir, must_exist = nil)
|
1180
|
+
HinnerFileDialog.new(HinnerFileDialog::SELECT_DIR_MODE, must_exist).dir(_initial_dir)
|
1181
|
+
end
|
1182
|
+
|
1183
|
+
def Arcadia.save_file_dialog(_initial_dir=MonitorLastUsedDir.get_last_dir)
|
1184
|
+
file = HinnerFileDialog.new(HinnerFileDialog::SAVE_FILE_MODE).file(_initial_dir)
|
1185
|
+
if !file.nil? && File.exists?(file)
|
1186
|
+
if (Arcadia.dialog(self, 'type'=>'yes_no',
|
1187
|
+
'msg'=>Arcadia.text('main.d.confirm_override_file.msg', [file]),
|
1188
|
+
'title' => Arcadia.text('main.d.confirm_override_file.title'),
|
1189
|
+
'level' => 'question')=='yes')
|
1190
|
+
return file
|
1191
|
+
else
|
1192
|
+
return nil
|
1193
|
+
end
|
1194
|
+
else
|
1195
|
+
return file
|
1196
|
+
end
|
1197
|
+
end
|
1198
|
+
|
1122
1199
|
def Arcadia.is_windows?
|
1123
|
-
|
1200
|
+
OS.windows?
|
1201
|
+
#RUBY_PLATFORM =~ /mingw|mswin/
|
1124
1202
|
end
|
1125
1203
|
|
1126
1204
|
def Arcadia.ruby
|
@@ -1145,13 +1223,17 @@ class Arcadia < TkApplication
|
|
1145
1223
|
end
|
1146
1224
|
# $PATH check
|
1147
1225
|
if _ret.nil?
|
1148
|
-
|
1149
|
-
|
1150
|
-
|
1151
|
-
|
1152
|
-
|
1153
|
-
|
1154
|
-
|
1226
|
+
begin
|
1227
|
+
ENV['PATH'].split(File::PATH_SEPARATOR).each{|_path|
|
1228
|
+
_file = File.join(_path, _command)
|
1229
|
+
if FileTest.exist?(_file)
|
1230
|
+
_ret = _file
|
1231
|
+
break
|
1232
|
+
end
|
1233
|
+
}
|
1234
|
+
rescue RuntimeError => e
|
1235
|
+
Arcadia.runtime_error(e)
|
1236
|
+
end
|
1155
1237
|
end
|
1156
1238
|
# gem path check
|
1157
1239
|
gem_path = Gem.path
|
@@ -1361,28 +1443,52 @@ class ArcadiaMainToolbar < ArcadiaUserControl
|
|
1361
1443
|
_hint = @hint
|
1362
1444
|
_font = @font
|
1363
1445
|
_caption = @caption
|
1364
|
-
@item_obj =
|
1446
|
+
@item_obj = Arcadia.wf.toolbutton(_args['frame']){
|
1365
1447
|
image _image if _image
|
1366
1448
|
command _command if _command
|
1449
|
+
# height 23
|
1367
1450
|
width 23
|
1368
|
-
|
1369
|
-
helptext _hint if _hint
|
1451
|
+
padding "5 0"
|
1370
1452
|
text _caption if _caption
|
1371
1453
|
}
|
1454
|
+
return if @item_obj.nil?
|
1455
|
+
@item_obj.hint=_hint
|
1456
|
+
|
1457
|
+
# @item_obj = Tk::BWidget::Button.new(_args['frame'], Arcadia.style('toolbarbutton')){
|
1458
|
+
# image _image if _image
|
1459
|
+
# command _command if _command
|
1460
|
+
# width 23
|
1461
|
+
# height 23
|
1462
|
+
# helptext _hint if _hint
|
1463
|
+
# #compound 'left'
|
1464
|
+
# }
|
1372
1465
|
if _args['context_path'] && _args['last_item_for_context']
|
1373
1466
|
@item_obj.pack('after'=>_args['last_item_for_context'].item_obj, 'side' =>'left', :padx=>2, :pady=>0)
|
1374
1467
|
else
|
1375
1468
|
@item_obj.pack('side' =>'left', :padx=>2, :pady=>0)
|
1376
1469
|
end
|
1377
1470
|
if _args['menu_button'] && _args['menu_button'] == 'yes'
|
1378
|
-
|
1379
|
-
|
1380
|
-
|
1381
|
-
|
1382
|
-
|
1383
|
-
|
1471
|
+
|
1472
|
+
# item_menu = TkMenu.new(mb)
|
1473
|
+
# if !OS.mac?
|
1474
|
+
# item_menu.configure(Arcadia.style('menu'))
|
1475
|
+
# end
|
1476
|
+
item_menu = Arcadia.wf.menu(mb)
|
1477
|
+
@menu_button = Arcadia.wf.menubutton(_args['frame']){|mb|
|
1478
|
+
menu item_menu
|
1479
|
+
# image Arcadia.image_res(MENUBUTTON_ARROW_DOWN_GIF)
|
1384
1480
|
pack('side'=> 'left','anchor'=> 's','pady'=>3)
|
1385
1481
|
}
|
1482
|
+
|
1483
|
+
|
1484
|
+
# @menu_button = TkMenuButton.new(_args['frame'], Arcadia.style('toolbarbutton')){|mb|
|
1485
|
+
# indicatoron false
|
1486
|
+
# menu TkMenu.new(mb, Arcadia.style('menu'))
|
1487
|
+
# image Arcadia.image_res(MENUBUTTON_ARROW_DOWN_GIF)
|
1488
|
+
# padx 0
|
1489
|
+
# pady 0
|
1490
|
+
# pack('side'=> 'left','anchor'=> 's','pady'=>3)
|
1491
|
+
# }
|
1386
1492
|
Arcadia.menu_root(_args['name'], @menu_button.cget('menu'))
|
1387
1493
|
end
|
1388
1494
|
#Tk::BWidget::Separator.new(@frame, :orient=>'vertical').pack('side' =>'left', :padx=>2, :pady=>2, :fill=>'y',:anchor=> 'w')
|
@@ -1392,7 +1498,7 @@ class ArcadiaMainToolbar < ArcadiaUserControl
|
|
1392
1498
|
if _value
|
1393
1499
|
@item_obj.state='normal'
|
1394
1500
|
else
|
1395
|
-
@item_obj.state='
|
1501
|
+
@item_obj.state='disabled' if !OS.mac? # Workaround for #1100117 on mac
|
1396
1502
|
end
|
1397
1503
|
end
|
1398
1504
|
end
|
@@ -1413,7 +1519,6 @@ class ArcadiaMainToolbar < ArcadiaUserControl
|
|
1413
1519
|
def new_item(_sender, _args= nil)
|
1414
1520
|
_context = _args['context']
|
1415
1521
|
_context_path = _args['context_path']
|
1416
|
-
|
1417
1522
|
if @last_context && _context != @last_context && _context_path.nil?
|
1418
1523
|
new_separator
|
1419
1524
|
end
|
@@ -1443,6 +1548,7 @@ end
|
|
1443
1548
|
|
1444
1549
|
class ArcadiaMainMenu < ArcadiaUserControl
|
1445
1550
|
SUF='user_menu'
|
1551
|
+
attr_reader :menubar
|
1446
1552
|
class UserItem < UserItem
|
1447
1553
|
attr_accessor :menu
|
1448
1554
|
attr_accessor :underline
|
@@ -1452,7 +1558,7 @@ class ArcadiaMainMenu < ArcadiaUserControl
|
|
1452
1558
|
item_args = Hash.new
|
1453
1559
|
item_args[:image]=Arcadia.image_res(@image_data) if @image_data
|
1454
1560
|
item_args[:label]=@caption
|
1455
|
-
item_args[:font]=Arcadia.conf('menu.font')
|
1561
|
+
item_args[:font]=Arcadia.conf('menu.font') if !OS.mac?
|
1456
1562
|
item_args[:underline]=@underline.to_i if @underline != nil
|
1457
1563
|
item_args[:compound]='left'
|
1458
1564
|
item_args[:command]=@command
|
@@ -1474,34 +1580,40 @@ class ArcadiaMainMenu < ArcadiaUserControl
|
|
1474
1580
|
end
|
1475
1581
|
end
|
1476
1582
|
end
|
1477
|
-
|
1478
|
-
def initialize(
|
1479
|
-
#
|
1480
|
-
@
|
1481
|
-
|
1583
|
+
|
1584
|
+
def initialize(root)
|
1585
|
+
# Creating Menubar
|
1586
|
+
@menubar = Arcadia.wf.menu(root)
|
1587
|
+
# @menubar = TkMenu.new(root)
|
1482
1588
|
begin
|
1483
|
-
|
1589
|
+
# if !OS.mac?
|
1590
|
+
# @menubar.configure(Arcadia.style('menu').delete_if {|key, value| key=='tearoff'})
|
1591
|
+
# @menubar.extend(TkAutoPostMenu)
|
1592
|
+
# @menubar.event_posting_on
|
1593
|
+
# end
|
1594
|
+
root['menu'] = @menubar
|
1595
|
+
@menu_contexts = {}
|
1484
1596
|
rescue RuntimeError => e
|
1485
|
-
#p "RuntimeError : #{e.message}"
|
1486
1597
|
Arcadia.runtime_error(e)
|
1487
1598
|
end
|
1488
1599
|
end
|
1489
|
-
|
1600
|
+
|
1490
1601
|
def get_menu_context(_menubar, _context, _underline=nil)
|
1491
|
-
|
1492
|
-
|
1493
|
-
|
1494
|
-
menubuttons.each_with_index{|mb, i|
|
1495
|
-
_t = mb[0].cget('text')
|
1496
|
-
if _t==_context
|
1497
|
-
m_i = i
|
1498
|
-
break
|
1499
|
-
end
|
1500
|
-
}
|
1501
|
-
if m_i > -1
|
1502
|
-
_menubar[m_i][1]
|
1602
|
+
m = @menu_contexts[_context]
|
1603
|
+
if !m.nil?
|
1604
|
+
m
|
1503
1605
|
else
|
1504
|
-
|
1606
|
+
topmenu = Arcadia.wf.menu(_menubar)
|
1607
|
+
# topmenu = TkMenu.new(_menubar)
|
1608
|
+
# if !OS.mac?
|
1609
|
+
# topmenu.configure(Arcadia.style('menu'))
|
1610
|
+
# topmenu.extend(TkAutoPostMenu)
|
1611
|
+
# end
|
1612
|
+
opt = {:menu => topmenu, :label => _context}
|
1613
|
+
opt[:underline]=_underline if _underline
|
1614
|
+
_menubar.add(:cascade, opt)
|
1615
|
+
@menu_contexts[_context] = topmenu
|
1616
|
+
topmenu
|
1505
1617
|
end
|
1506
1618
|
end
|
1507
1619
|
|
@@ -1533,12 +1645,14 @@ class ArcadiaMainMenu < ArcadiaUserControl
|
|
1533
1645
|
def get_sub_menu(menu_context, folder=nil)
|
1534
1646
|
sub = ArcadiaMainMenu.sub_menu(menu_context, folder)
|
1535
1647
|
if sub.nil?
|
1536
|
-
sub =
|
1537
|
-
|
1538
|
-
:tearoff=>0
|
1539
|
-
)
|
1540
|
-
|
1541
|
-
|
1648
|
+
sub = Arcadia.wf.menu(:tearoff=>0)
|
1649
|
+
# sub = TkMenu.new(
|
1650
|
+
# :tearoff=>0
|
1651
|
+
# )
|
1652
|
+
# if !OS.mac?
|
1653
|
+
# sub.configure(Arcadia.style('menu'))
|
1654
|
+
# sub.extend(TkAutoPostMenu)
|
1655
|
+
# end
|
1542
1656
|
#update_style(sub)
|
1543
1657
|
menu_context.insert('end',
|
1544
1658
|
:cascade,
|
@@ -1566,13 +1680,14 @@ class ArcadiaMainMenu < ArcadiaUserControl
|
|
1566
1680
|
|
1567
1681
|
def new_item(_sender, _args= nil)
|
1568
1682
|
return if _args.nil?
|
1683
|
+
|
1569
1684
|
if _args['context_caption']
|
1570
1685
|
conte = _args['context_caption']
|
1571
1686
|
else
|
1572
1687
|
conte = _args['context']
|
1573
1688
|
end
|
1574
1689
|
if _args['rif'] == 'main'
|
1575
|
-
_args['menu']=make_menu_in_menubar(@
|
1690
|
+
_args['menu']=make_menu_in_menubar(@menubar, conte, _args['context_path'], _args['context_underline'])
|
1576
1691
|
else
|
1577
1692
|
if Arcadia.menu_root(_args['rif'])
|
1578
1693
|
_args['menu']=make_menu(Arcadia.menu_root(_args['rif']), _args['context_path'], _args['context_underline'])
|
@@ -1584,122 +1699,12 @@ class ArcadiaMainMenu < ArcadiaUserControl
|
|
1584
1699
|
'msg'=>msg,
|
1585
1700
|
'level'=>'error')
|
1586
1701
|
|
1587
|
-
_args['menu']=make_menu_in_menubar(@
|
1702
|
+
_args['menu']=make_menu_in_menubar(@menubar, conte, _args['context_path'], _args['context_underline'])
|
1588
1703
|
end
|
1589
1704
|
end
|
1590
1705
|
super(_sender, _args)
|
1591
1706
|
end
|
1592
1707
|
|
1593
|
-
|
1594
|
-
def build
|
1595
|
-
menu_spec_file = [
|
1596
|
-
[Arcadia.text('main.menu.file'), 0],
|
1597
|
-
[Arcadia.text('main.menu.file.open'), proc{Arcadia.process_event(OpenBufferEvent.new(self,'file'=>Arcadia.open_file_dialog))}, 0],
|
1598
|
-
[Arcadia.text('main.menu.file.new'), proc{Arcadia.process_event(NewBufferEvent.new(self))}, 0],
|
1599
|
-
#['Save', proc{EditorContract.instance.save_file_raised(self)},0],
|
1600
|
-
[Arcadia.text('main.menu.file.save'), proc{Arcadia.process_event(SaveBufferEvent.new(self))},0],
|
1601
|
-
[Arcadia.text('main.menu.file.save_as'), proc{Arcadia.process_event(SaveAsBufferEvent.new(self))},0],
|
1602
|
-
'---',
|
1603
|
-
[Arcadia.text('main.menu.file.quit'), proc{Arcadia.process_event(QuitEvent.new(self))}, 0]]
|
1604
|
-
|
1605
|
-
menu_spec_edit = [[Arcadia.text('main.menu.edit'), 0],
|
1606
|
-
[Arcadia.text('main.menu.edit.cut'), proc{Arcadia.process_event(CutTextEvent.new(self))}, 2],
|
1607
|
-
[Arcadia.text('main.menu.edit.copy'), proc{Arcadia.process_event(CopyTextEvent.new(self))}, 0],
|
1608
|
-
[Arcadia.text('main.menu.edit.paste'), proc{Arcadia.process_event(PasteTextEvent.new(self))}, 0],
|
1609
|
-
[Arcadia.text('main.menu.edit.undo'), proc{Arcadia.process_event(UndoTextEvent.new(self))}, 0],
|
1610
|
-
[Arcadia.text('main.menu.edit.redo'), proc{Arcadia.process_event(RedoTextEvent.new(self))}, 0],
|
1611
|
-
[Arcadia.text('main.menu.edit.select_all'), proc{Arcadia.process_event(SelectAllTextEvent.new(self))}, 0],
|
1612
|
-
[Arcadia.text('main.menu.edit.invert_selection'), proc{Arcadia.process_event(InvertSelectionTextEvent.new(self))}, 0],
|
1613
|
-
[Arcadia.text('main.menu.edit.uppercase'), proc{Arcadia.process_event(UpperCaseTextEvent.new(self))}, 0],
|
1614
|
-
[Arcadia.text('main.menu.edit.lowercase'), proc{Arcadia.process_event(LowerCaseTextEvent.new(self))}, 0],
|
1615
|
-
[Arcadia.text('main.menu.edit.prettify_current'), proc{Arcadia.process_event(PrettifyTextEvent.new(self))}, 0],
|
1616
|
-
'---',
|
1617
|
-
[Arcadia.text('main.menu.edit.preferences'), proc{}, 0]]
|
1618
|
-
|
1619
|
-
menu_spec_search = [[Arcadia.text('main.menu.search'), 0],
|
1620
|
-
[Arcadia.text('main.menu.search.find_replace'), proc{Arcadia.process_event(SearchBufferEvent.new(self))}, 2],
|
1621
|
-
[Arcadia.text('main.menu.search.find_in_files'), proc{Arcadia.process_event(SearchInFilesEvent.new(self))}, 2],
|
1622
|
-
[Arcadia.text('main.menu.search.ack_im_file'), proc{Arcadia.process_event(AckInFilesEvent.new(self))}, 2],
|
1623
|
-
[Arcadia.text('main.menu.search.go_to_line'), proc{Arcadia.process_event(GoToLineBufferEvent.new(self))}, 2]]
|
1624
|
-
|
1625
|
-
menu_spec_view = [[Arcadia.text('main.menu.view'), 0],
|
1626
|
-
[Arcadia.text('main.menu.view.show_hide_toolbar'), proc{$arcadia.show_hide_toolbar}, 2],
|
1627
|
-
[Arcadia.text('main.menu.view.close_current_tab'), proc{Arcadia.process_event(CloseCurrentTabEvent.new(self))}, 0],
|
1628
|
-
]
|
1629
|
-
|
1630
|
-
menu_spec_tools = [[Arcadia.text('main.menu.tools'), 0],
|
1631
|
-
[Arcadia.text('main.menu.tools.keys_test'), $arcadia['action.test.keys'], 2],
|
1632
|
-
[Arcadia.text('main.menu.tools.edit_prefs'), proc{Arcadia.process_event(OpenBufferEvent.new(self,'file'=>$arcadia.local_file_config))}, 0],
|
1633
|
-
[Arcadia.text('main.menu.tools.load_from_edited_prefs'), proc{$arcadia.load_local_config}, 0]
|
1634
|
-
]
|
1635
|
-
menu_spec_help = [[Arcadia.text('main.menu.help'), 0],
|
1636
|
-
[Arcadia.text('main.menu.help.about'), $arcadia['action.show_about'], 2],]
|
1637
|
-
begin
|
1638
|
-
@menu.add_menu(menu_spec_file)
|
1639
|
-
@menu.add_menu(menu_spec_edit)
|
1640
|
-
@menu.add_menu(menu_spec_search)
|
1641
|
-
@menu.add_menu(menu_spec_view)
|
1642
|
-
@menu.add_menu(menu_spec_tools)
|
1643
|
-
@menu.add_menu(menu_spec_help)
|
1644
|
-
rescue RuntimeError => e
|
1645
|
-
#p "RuntimeError : #{e.message}"
|
1646
|
-
Arcadia.runtime_error(e)
|
1647
|
-
end
|
1648
|
-
# #@menu.bind_append("1", proc{
|
1649
|
-
# chs = TkWinfo.children(@menu)
|
1650
|
-
# hh = 25
|
1651
|
-
# @last_post = nil
|
1652
|
-
# chs.each{|ch|
|
1653
|
-
# ch.bind_append("Enter", proc{|x,y,rx,ry|
|
1654
|
-
# @last_post.unpost if @last_post && @last_post != ch.menu
|
1655
|
-
# ch.menu.post(x-rx,y-ry+hh)
|
1656
|
-
# @last_post=ch.menu}, "%X %Y %x %y")
|
1657
|
-
# ch.bind_append("Leave", proc{
|
1658
|
-
# @last_post.unpost if @last_post
|
1659
|
-
# @last_post=nil
|
1660
|
-
# })
|
1661
|
-
# }
|
1662
|
-
#
|
1663
|
-
# #})
|
1664
|
-
|
1665
|
-
# @menu.bind_append("Leave", proc{
|
1666
|
-
# if Tk.focus != @last_menu_posted
|
1667
|
-
# @last_post.unpost if @last_post
|
1668
|
-
# @last_post=nil
|
1669
|
-
# end
|
1670
|
-
# })
|
1671
|
-
#
|
1672
|
-
|
1673
|
-
|
1674
|
-
# chs = TkWinfo.children(@menu)
|
1675
|
-
# hh = 25
|
1676
|
-
# @last_post = nil
|
1677
|
-
# chs.each{|ch|
|
1678
|
-
# ch.bind_append("Enter", proc{|x,y,rx,ry|
|
1679
|
-
# @last_post.unpost if @last_post && @last_post != ch.menu
|
1680
|
-
# ch.menu.post(x-rx,y-ry+hh)
|
1681
|
-
# chmenus = TkWinfo.children(ch)
|
1682
|
-
# @last_menu_posted = chmenus[0]
|
1683
|
-
# @last_menu_posted.set_focus
|
1684
|
-
# #@last_post=ch.menu
|
1685
|
-
# }, "%X %Y %x %y")
|
1686
|
-
# ch.bind_append("Leave", proc{
|
1687
|
-
# @last_post.unpost if @last_post
|
1688
|
-
# #@last_post=nil
|
1689
|
-
# @last_post=ch.menu
|
1690
|
-
# })
|
1691
|
-
# }
|
1692
|
-
# @menu.bind_append("Leave", proc{
|
1693
|
-
# if Tk.focus != @last_menu_posted
|
1694
|
-
# @last_post.unpost if @last_post
|
1695
|
-
# @last_post=nil
|
1696
|
-
# end
|
1697
|
-
# })
|
1698
|
-
|
1699
|
-
@menu.extend(TkAutoPostMenu)
|
1700
|
-
@menu.event_posting_on
|
1701
|
-
end
|
1702
|
-
|
1703
1708
|
end
|
1704
1709
|
|
1705
1710
|
class RunnerManager < TkFloatTitledFrame
|
@@ -1743,12 +1748,16 @@ class RunnerManager < TkFloatTitledFrame
|
|
1743
1748
|
self.destroy
|
1744
1749
|
end
|
1745
1750
|
}
|
1746
|
-
Tk::BWidget::Button.new(self,
|
1747
|
-
|
1748
|
-
|
1749
|
-
|
1750
|
-
|
1751
|
-
|
1751
|
+
#Tk::BWidget::Button.new(self,
|
1752
|
+
b = Arcadia.wf.toolbutton(self,
|
1753
|
+
'command'=>_close_command,
|
1754
|
+
# 'helptext'=>@runner_hash[:file],
|
1755
|
+
# 'background'=>'white',
|
1756
|
+
'image'=> Arcadia.image_res(TRASH_GIF)
|
1757
|
+
# 'relief'=>'flat'
|
1758
|
+
).pack('side' =>'right','padx'=>0)
|
1759
|
+
b.hint=@runner_hash[:file]
|
1760
|
+
|
1752
1761
|
pack('side' =>'top','anchor'=>'nw','fill'=>'x','padx'=>5, 'pady'=>5)
|
1753
1762
|
end
|
1754
1763
|
|
@@ -1825,7 +1834,7 @@ class ArcadiaAboutSplash < TkToplevel
|
|
1825
1834
|
}
|
1826
1835
|
|
1827
1836
|
@tkLabel2 = TkLabel.new(self){
|
1828
|
-
text 'Arcadia
|
1837
|
+
text 'Arcadia IDE'
|
1829
1838
|
background _bgcolor
|
1830
1839
|
foreground '#ffffff'
|
1831
1840
|
font Arcadia.instance['conf']['splash.subtitle.font']
|
@@ -1841,7 +1850,7 @@ class ArcadiaAboutSplash < TkToplevel
|
|
1841
1850
|
place('x' => 100,'y' => 65,'height' => 19)
|
1842
1851
|
}
|
1843
1852
|
@tkLabel21 = TkLabel.new(self){
|
1844
|
-
text Arcadia.text("main.about.by", ['Antonio Galeone - 2004/
|
1853
|
+
text Arcadia.text("main.about.by", ['Antonio Galeone - 2004/2014'])
|
1845
1854
|
background _bgcolor
|
1846
1855
|
foreground '#ffffff'
|
1847
1856
|
font Arcadia.instance['conf']['splash.credits.font']
|
@@ -1863,7 +1872,7 @@ class ArcadiaAboutSplash < TkToplevel
|
|
1863
1872
|
@tkLabelStep = TkLabel.new(self){
|
1864
1873
|
text ''
|
1865
1874
|
background _bgcolor
|
1866
|
-
foreground '
|
1875
|
+
foreground '#666666'
|
1867
1876
|
font Arcadia.instance['conf']['splash.banner.font']
|
1868
1877
|
justify 'left'
|
1869
1878
|
anchor 'w'
|
@@ -1883,6 +1892,19 @@ class ArcadiaAboutSplash < TkToplevel
|
|
1883
1892
|
info = TkApplication.sys_info
|
1884
1893
|
set_sysinfo(info)
|
1885
1894
|
Arcadia.attach_listener(self, ArcadiaProblemEvent)
|
1895
|
+
Arcadia.attach_listeners_listener(self, BuildEvent)
|
1896
|
+
end
|
1897
|
+
|
1898
|
+
def on_build(_event, _listener)
|
1899
|
+
next_step("... building #{_listener.class}")
|
1900
|
+
end
|
1901
|
+
|
1902
|
+
def on_before_build(_event, _listener)
|
1903
|
+
next_step("... pre building #{_listener.class}")
|
1904
|
+
end
|
1905
|
+
|
1906
|
+
def on_after_build(_event, _listener)
|
1907
|
+
next_step("... after building #{_listener.class}")
|
1886
1908
|
end
|
1887
1909
|
|
1888
1910
|
def problem_str
|
@@ -1896,7 +1918,7 @@ class ArcadiaAboutSplash < TkToplevel
|
|
1896
1918
|
@tkAlert = TkLabel.new(self){
|
1897
1919
|
image Arcadia.image_res(ALERT_GIF)
|
1898
1920
|
background 'black'
|
1899
|
-
place('x'=> 10,'y' =>
|
1921
|
+
place('x'=> 10,'y' => 152)
|
1900
1922
|
}
|
1901
1923
|
|
1902
1924
|
@tkLabelProblems = TkLabel.new(self){
|
@@ -1935,7 +1957,12 @@ class ArcadiaAboutSplash < TkToplevel
|
|
1935
1957
|
|
1936
1958
|
def next_step(_txt = nil)
|
1937
1959
|
@progress.numeric += 1
|
1938
|
-
labelStep(_txt)
|
1960
|
+
labelStep("#{perc}% #{_txt}")
|
1961
|
+
end
|
1962
|
+
|
1963
|
+
def perc
|
1964
|
+
ret = @progress.numeric*100/@max
|
1965
|
+
ret > 100 ? 100:ret
|
1939
1966
|
end
|
1940
1967
|
|
1941
1968
|
def labelStep(_txt)
|
@@ -1947,9 +1974,11 @@ class ArcadiaAboutSplash < TkToplevel
|
|
1947
1974
|
@progress.numeric = @max
|
1948
1975
|
labelStep(_txt) if _txt
|
1949
1976
|
Arcadia.detach_listener(self, ArcadiaProblemEvent)
|
1977
|
+
Arcadia.detach_listeners_listener(self, BuildEvent)
|
1950
1978
|
end
|
1951
1979
|
end
|
1952
1980
|
|
1981
|
+
|
1953
1982
|
class ArcadiaProblemsShower
|
1954
1983
|
def initialize(_arcadia)
|
1955
1984
|
@arcadia = _arcadia
|
@@ -1971,7 +2000,7 @@ class ArcadiaProblemsShower
|
|
1971
2000
|
show_problems
|
1972
2001
|
else
|
1973
2002
|
append_problem(_event)
|
1974
|
-
|
2003
|
+
#@b_err.configure('text'=> button_text)
|
1975
2004
|
end
|
1976
2005
|
end
|
1977
2006
|
end
|
@@ -2000,12 +2029,12 @@ class ArcadiaProblemsShower
|
|
2000
2029
|
@problems.each{|e|
|
2001
2030
|
append_problem(e)
|
2002
2031
|
}
|
2003
|
-
if @tree.exist?('dependences_missing_node')
|
2004
|
-
@tree.open_tree('dependences_missing_node', true)
|
2005
|
-
end
|
2006
|
-
if @tree.exist?('runtime_error_node')
|
2007
|
-
@tree.open_tree('runtime_error_node', true)
|
2008
|
-
end
|
2032
|
+
# if @tree.exist?('dependences_missing_node')
|
2033
|
+
# @tree.open_tree('dependences_missing_node', true)
|
2034
|
+
# end
|
2035
|
+
# if @tree.exist?('runtime_error_node')
|
2036
|
+
# @tree.open_tree('runtime_error_node', true)
|
2037
|
+
# end
|
2009
2038
|
@showed=true
|
2010
2039
|
rescue RuntimeError => e
|
2011
2040
|
Arcadia.detach_listener(self, ArcadiaProblemEvent)
|
@@ -2020,71 +2049,66 @@ class ArcadiaProblemsShower
|
|
2020
2049
|
|
2021
2050
|
def initialize_gui
|
2022
2051
|
# float_frame
|
2023
|
-
args = {'width'=>600, 'height'=>300, 'x'=>400, 'y'=>100}
|
2024
|
-
@ff = @arcadia.layout.add_float_frame(args).hide
|
2025
|
-
@ff.title(Arcadia.text("main.ps.title"))
|
2026
|
-
|
2027
|
-
#tree
|
2028
|
-
@tree = BWidgetTreePatched.new(@ff.frame, Arcadia.style('treepanel')){
|
2029
|
-
showlines false
|
2030
|
-
deltay 22
|
2031
|
-
|
2032
|
-
|
2033
|
-
|
2034
|
-
|
2035
|
-
|
2036
|
-
|
2037
|
-
|
2038
|
-
|
2039
|
-
|
2040
|
-
|
2041
|
-
|
2042
|
-
|
2043
|
-
|
2044
|
-
|
2045
|
-
|
2046
|
-
|
2047
|
-
|
2048
|
-
|
2049
|
-
|
2050
|
-
|
2051
|
-
|
2052
|
-
|
2053
|
-
|
2054
|
-
|
2055
|
-
|
2056
|
-
|
2057
|
-
|
2058
|
-
|
2059
|
-
|
2060
|
-
|
2061
|
-
|
2062
|
-
|
2063
|
-
|
2064
|
-
|
2065
|
-
|
2066
|
-
|
2067
|
-
|
2068
|
-
|
2069
|
-
|
2070
|
-
|
2071
|
-
|
2072
|
-
|
2073
|
-
|
2074
|
-
|
2075
|
-
|
2076
|
-
|
2077
|
-
|
2078
|
-
|
2079
|
-
|
2080
|
-
|
2081
|
-
|
2082
|
-
|
2083
|
-
#width 100
|
2084
|
-
#height 20
|
2085
|
-
#helptext _hint if _hint
|
2086
|
-
text b_text
|
2087
|
-
}.pack('side' =>'left','before'=>@arcadia['toolbar'].items.values[0].item_obj, :padx=>2, :pady=>0)
|
2052
|
+
# args = {'width'=>600, 'height'=>300, 'x'=>400, 'y'=>100}
|
2053
|
+
# @ff = @arcadia.layout.add_float_frame(args).hide
|
2054
|
+
# @ff.title(Arcadia.text("main.ps.title"))
|
2055
|
+
#
|
2056
|
+
# #tree
|
2057
|
+
# @tree = BWidgetTreePatched.new(@ff.frame, Arcadia.style('treepanel')){
|
2058
|
+
# showlines false
|
2059
|
+
# deltay 22
|
2060
|
+
# }
|
2061
|
+
# @tree.extend(TkScrollableWidget).show(0,0)
|
2062
|
+
#
|
2063
|
+
# do_double_click = proc{
|
2064
|
+
# _selected = @tree.selected
|
2065
|
+
# _selected_text = @tree.itemcget(_selected, 'text')
|
2066
|
+
# if _selected_text
|
2067
|
+
# _file, _row, _other = _selected_text.split(':')
|
2068
|
+
# if File.exist?(_file)
|
2069
|
+
# begin
|
2070
|
+
# r = _row.strip.to_i
|
2071
|
+
# integer = true
|
2072
|
+
# rescue Exception => e
|
2073
|
+
# integer = false
|
2074
|
+
# end
|
2075
|
+
# if integer
|
2076
|
+
# OpenBufferTransientEvent.new(self,'file'=>_file, 'row'=>r).go!
|
2077
|
+
# end
|
2078
|
+
# end
|
2079
|
+
# end
|
2080
|
+
# }
|
2081
|
+
# @tree.textbind_append('Double-1',do_double_click)
|
2082
|
+
#
|
2083
|
+
#
|
2084
|
+
# # call button
|
2085
|
+
# command = proc{
|
2086
|
+
# if @ff.visible?
|
2087
|
+
# @ff.hide
|
2088
|
+
# #@visible = false
|
2089
|
+
# else
|
2090
|
+
# @ff.show
|
2091
|
+
# #@visible = true
|
2092
|
+
# end
|
2093
|
+
# }
|
2094
|
+
#
|
2095
|
+
# b_style = Arcadia.style('toolbarbutton')
|
2096
|
+
# b_style["relief"]='groove'
|
2097
|
+
# # b_style["borderwidth"]=2
|
2098
|
+
# b_style["highlightbackground"]='red'
|
2099
|
+
#
|
2100
|
+
# b_text = button_text
|
2101
|
+
#
|
2102
|
+
# @b_err = Tk::BWidget::Button.new(@arcadia['toolbar'].frame, b_style){
|
2103
|
+
# image Arcadia.image_res(ALERT_GIF)
|
2104
|
+
# compound 'left'
|
2105
|
+
# padx 2
|
2106
|
+
# command command if command
|
2107
|
+
# #width 100
|
2108
|
+
# #height 20
|
2109
|
+
# #helptext _hint if _hint
|
2110
|
+
# text b_text
|
2111
|
+
# }.pack('side' =>'left','before'=>@arcadia['toolbar'].items.values[0].item_obj, :padx=>2, :pady=>0)
|
2088
2112
|
|
2089
2113
|
end
|
2090
2114
|
|
@@ -2094,78 +2118,85 @@ class ArcadiaProblemsShower
|
|
2094
2118
|
end
|
2095
2119
|
|
2096
2120
|
def append_problem(e)
|
2097
|
-
parent_node='root'
|
2121
|
+
# parent_node='root'
|
2098
2122
|
case e.type
|
2099
2123
|
when ArcadiaProblemEvent::DEPENDENCE_MISSING_TYPE
|
2100
|
-
parent_node='dependences_missing_node'
|
2124
|
+
# parent_node='dependences_missing_node'
|
2101
2125
|
text = Arcadia.text("main.ps.dependences_missing")
|
2102
|
-
if !@tree.exist?(parent_node)
|
2103
|
-
@tree.insert('end', 'root' ,parent_node, {
|
2104
|
-
'text' => text ,
|
2105
|
-
'helptext' => text,
|
2106
|
-
'drawcross'=>'auto',
|
2107
|
-
'deltax'=>-1,
|
2108
|
-
'image'=> Arcadia.image_res(BROKEN_GIF)
|
2109
|
-
}.update(Arcadia.style('treeitem'))
|
2110
|
-
)
|
2126
|
+
# if !@tree.exist?(parent_node)
|
2127
|
+
# @tree.insert('end', 'root' ,parent_node, {
|
2128
|
+
# 'text' => text ,
|
2129
|
+
# 'helptext' => text,
|
2130
|
+
# 'drawcross'=>'auto',
|
2131
|
+
# 'deltax'=>-1,
|
2132
|
+
# 'image'=> Arcadia.image_res(BROKEN_GIF)
|
2133
|
+
# }.update(Arcadia.style('treeitem'))
|
2134
|
+
# )
|
2135
|
+
#
|
2136
|
+
# end
|
2137
|
+
# @dmc+=1
|
2138
|
+
# @tree.itemconfigure('dependences_missing_node','text'=>"#{text} (#{@dmc})" )
|
2111
2139
|
|
2112
|
-
end
|
2113
|
-
@dmc+=1
|
2114
|
-
@tree.itemconfigure('dependences_missing_node','text'=>"#{text} (#{@dmc})" )
|
2115
2140
|
when ArcadiaProblemEvent::RUNTIME_ERROR_TYPE
|
2116
|
-
parent_node='runtime_error_node'
|
2141
|
+
# parent_node='runtime_error_node'
|
2117
2142
|
text = Arcadia.text("main.ps.runtime_errors")
|
2118
|
-
if !@tree.exist?(parent_node)
|
2119
|
-
@tree.insert('end', 'root' ,parent_node, {
|
2120
|
-
'text' => text ,
|
2121
|
-
'helptext' => text,
|
2122
|
-
'drawcross'=>'auto',
|
2123
|
-
'deltax'=>-1,
|
2124
|
-
'image'=> Arcadia.image_res(ERROR_GIF)
|
2125
|
-
}.update(Arcadia.style('treeitem')) #.update({'fill'=>Arcadia.conf('inactiveforeground')}))
|
2126
|
-
)
|
2127
|
-
end
|
2128
|
-
@rec+=1
|
2129
|
-
@tree.itemconfigure('runtime_error_node','text'=>"#{text} (#{@rec})" )
|
2130
|
-
end
|
2143
|
+
# if !@tree.exist?(parent_node)
|
2144
|
+
# @tree.insert('end', 'root' ,parent_node, {
|
2145
|
+
# 'text' => text ,
|
2146
|
+
# 'helptext' => text,
|
2147
|
+
# 'drawcross'=>'auto',
|
2148
|
+
# 'deltax'=>-1,
|
2149
|
+
# 'image'=> Arcadia.image_res(ERROR_GIF)
|
2150
|
+
# }.update(Arcadia.style('treeitem')) #.update({'fill'=>Arcadia.conf('inactiveforeground')}))
|
2151
|
+
# )
|
2152
|
+
# end
|
2153
|
+
# @rec+=1
|
2154
|
+
# @tree.itemconfigure('runtime_error_node','text'=>"#{text} (#{@rec})" )
|
2155
|
+
end
|
2156
|
+
|
2157
|
+
output_mark = Arcadia.console(self,'msg'=>"#{text} : ", 'level'=>'system_error', 'mark'=>output_mark)
|
2158
|
+
|
2131
2159
|
title_node="node_#{new_sequence_value}"
|
2132
2160
|
detail_node="detail_of_#{title_node}"
|
2133
2161
|
|
2134
|
-
@tree.insert('end', parent_node ,title_node, {
|
2135
|
-
'text' => e.title ,
|
2136
|
-
'helptext' => e.title,
|
2137
|
-
'drawcross'=>'auto',
|
2138
|
-
'deltax'=>-1,
|
2139
|
-
'image'=> Arcadia.image_res(ITEM_GIF)
|
2140
|
-
}.update(Arcadia.style('treeitem'))
|
2141
|
-
)
|
2142
|
-
if e.detail.kind_of?(Array)
|
2143
|
-
e.detail.each_with_index{|line,i|
|
2144
|
-
@tree.insert('end', title_node , "#{detail_node}_#{i}" , {
|
2145
|
-
'text' => line ,
|
2146
|
-
'helptext' => i.to_s,
|
2147
|
-
'drawcross'=>'auto',
|
2148
|
-
'deltax'=>-1,
|
2149
|
-
'image'=> Arcadia.image_res(ITEM_DETAIL_GIF)
|
2150
|
-
}.update(Arcadia.style('treeitem')) #.update({'fill'=>Arcadia.conf('inactiveforeground')}))
|
2151
|
-
)
|
2162
|
+
# @tree.insert('end', parent_node ,title_node, {
|
2163
|
+
# 'text' => e.title ,
|
2164
|
+
# 'helptext' => e.title,
|
2165
|
+
# 'drawcross'=>'auto',
|
2166
|
+
# 'deltax'=>-1,
|
2167
|
+
# 'image'=> Arcadia.image_res(ITEM_GIF)
|
2168
|
+
# }.update(Arcadia.style('treeitem'))
|
2169
|
+
# )
|
2152
2170
|
|
2153
|
-
|
2171
|
+
|
2172
|
+
if e.detail.kind_of?(Array)
|
2173
|
+
# e.detail.each_with_index{|line,i|
|
2174
|
+
# @tree.insert('end', title_node , "#{detail_node}_#{i}" , {
|
2175
|
+
# 'text' => line ,
|
2176
|
+
# 'helptext' => i.to_s,
|
2177
|
+
# 'drawcross'=>'auto',
|
2178
|
+
# 'deltax'=>-1,
|
2179
|
+
# 'image'=> Arcadia.image_res(ITEM_DETAIL_GIF)
|
2180
|
+
# }.update(Arcadia.style('treeitem'))
|
2181
|
+
# )
|
2182
|
+
# }
|
2154
2183
|
else
|
2155
|
-
@tree.insert('end', title_node , detail_node , {
|
2156
|
-
'text' => e.detail ,
|
2157
|
-
'helptext' => e.title,
|
2158
|
-
'drawcross'=>'auto',
|
2159
|
-
'deltax'=>-1,
|
2160
|
-
'image'=> Arcadia.image_res(ITEM_DETAIL_GIF)
|
2161
|
-
}.update(Arcadia.style('treeitem'))
|
2162
|
-
)
|
2184
|
+
# @tree.insert('end', title_node , detail_node , {
|
2185
|
+
# 'text' => e.detail ,
|
2186
|
+
# 'helptext' => e.title,
|
2187
|
+
# 'drawcross'=>'auto',
|
2188
|
+
# 'deltax'=>-1,
|
2189
|
+
# 'image'=> Arcadia.image_res(ITEM_DETAIL_GIF)
|
2190
|
+
# }.update(Arcadia.style('treeitem'))
|
2191
|
+
# )
|
2163
2192
|
end
|
2164
2193
|
|
2194
|
+
output_mark = Arcadia.console(self,'msg'=>"#{e.title}\n> #{e.detail}", 'level'=>'system_error', 'mark'=>output_mark, 'append'=>true)
|
2165
2195
|
|
2166
2196
|
end
|
2167
2197
|
end
|
2168
2198
|
|
2199
|
+
|
2169
2200
|
class ArcadiaActionDispatcher
|
2170
2201
|
|
2171
2202
|
def initialize(_arcadia)
|
@@ -2322,7 +2353,7 @@ class ArcadiaSh < TkToplevel
|
|
2322
2353
|
@text.delete('0.0','end')
|
2323
2354
|
else
|
2324
2355
|
begin
|
2325
|
-
if
|
2356
|
+
if OS.windows?
|
2326
2357
|
p = IO::popen("#{_cmd} 2>&1")
|
2327
2358
|
out(p.read, 'response')
|
2328
2359
|
@result = true
|
@@ -2411,13 +2442,13 @@ class ArcadiaGemsWizard
|
|
2411
2442
|
|
2412
2443
|
end
|
2413
2444
|
|
2414
|
-
|
2415
2445
|
class ArcadiaDialogManager
|
2416
2446
|
DialogParams = Struct.new("DialogParams",
|
2417
2447
|
:type,
|
2418
2448
|
:res_array,
|
2419
2449
|
:level,
|
2420
|
-
:msg
|
2450
|
+
:msg,
|
2451
|
+
:title
|
2421
2452
|
)
|
2422
2453
|
|
2423
2454
|
def initialize(_arcadia)
|
@@ -2443,6 +2474,11 @@ class ArcadiaDialogManager
|
|
2443
2474
|
else
|
2444
2475
|
ret.msg = _event.msg
|
2445
2476
|
end
|
2477
|
+
if _event.title && _event.title.length > _event.class::TITLE_MAX_CHARS
|
2478
|
+
ret.title = _event.title[0.._event.class::TITLE_MAX_CHARS]+' ...'
|
2479
|
+
else
|
2480
|
+
ret.title = _event.title
|
2481
|
+
end
|
2446
2482
|
end
|
2447
2483
|
ret
|
2448
2484
|
end
|
@@ -2480,14 +2516,7 @@ class ArcadiaDialogManager
|
|
2480
2516
|
|
2481
2517
|
def do_hinner_dialog(_event)
|
2482
2518
|
par = dialog_params(_event, false)
|
2483
|
-
dialog_frame =
|
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)
|
2519
|
+
dialog_frame = HinnerDialog.new
|
2491
2520
|
max_width = 0
|
2492
2521
|
par.res_array.each{|v|
|
2493
2522
|
l = v.length
|
@@ -2495,38 +2524,27 @@ class ArcadiaDialogManager
|
|
2495
2524
|
}
|
2496
2525
|
res = nil
|
2497
2526
|
par.res_array.reverse_each{|value|
|
2498
|
-
|
2499
|
-
|
2527
|
+
# Tk::BWidget::Button.new(dialog_frame, Arcadia.style('button')){
|
2528
|
+
Arcadia.wf.button(dialog_frame){
|
2529
|
+
command proc{res = value;dialog_frame.release}
|
2500
2530
|
text value.capitalize
|
2501
|
-
helptext value.capitalize
|
2531
|
+
#helptext value.capitalize
|
2502
2532
|
width max_width*2
|
2503
|
-
|
2533
|
+
pack('side' =>'right','padx'=>5, 'pady'=>5)
|
2534
|
+
}.hint=value.capitalize
|
2504
2535
|
}
|
2505
2536
|
|
2506
2537
|
Tk::BWidget::Label.new(dialog_frame,Arcadia.style('label')){
|
2507
2538
|
text par.msg
|
2508
|
-
helptext _event.
|
2509
|
-
# }.pack('fill'=>'x','side' =>'left')
|
2539
|
+
helptext _event.title
|
2510
2540
|
}.pack('side' =>'right','padx'=>5, 'pady'=>5)
|
2511
2541
|
|
2512
|
-
|
2513
|
-
|
2514
|
-
|
2515
|
-
|
2542
|
+
Tk::BWidget::Label.new(dialog_frame,Arcadia.style('label')){
|
2543
|
+
compound 'left'
|
2544
|
+
Tk::Anigif.image(self, "#{Dir.pwd}/ext/ae-subprocess-inspector/process.res")
|
2545
|
+
}.pack('side' =>'right','padx'=>10)
|
2516
2546
|
|
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
|
2547
|
+
dialog_frame.show_modal
|
2530
2548
|
_event.add_result(self, 'value'=>res)
|
2531
2549
|
end
|
2532
2550
|
|
@@ -2557,13 +2575,13 @@ class ArcadiaLayout
|
|
2557
2575
|
# :frame,
|
2558
2576
|
# :ffw
|
2559
2577
|
# )
|
2560
|
-
attr_reader :
|
2578
|
+
attr_reader :parent_frame
|
2561
2579
|
HIDDEN_DOMAIN = '-1.-1'
|
2562
2580
|
def initialize(_arcadia, _frame, _autotab=true)
|
2563
2581
|
@arcadia = _arcadia
|
2564
2582
|
@frames = Array.new
|
2565
2583
|
@frames[0] = Array.new
|
2566
|
-
@
|
2584
|
+
@parent_frame = _frame
|
2567
2585
|
@content_frame = TkFrame.new(_frame).pack('fill'=>'both', :padx=>0, :pady=>0, :expand => 'yes')
|
2568
2586
|
# @dialog_frame = TkFrame.new(_frame)
|
2569
2587
|
|
@@ -3318,7 +3336,7 @@ class ArcadiaLayout
|
|
3318
3336
|
def change_domain(_target_domain, _source_name)
|
3319
3337
|
source_domain = @wrappers[_source_name].domain
|
3320
3338
|
source_has_domain = !source_domain.nil?
|
3321
|
-
if @arcadia.conf('layout.exchange_panel_if_no_tabbed')=='true' && source_has_domain && @panels[source_domain]['sons'].length ==1 && @panels[_target_domain]['sons'].length > 0
|
3339
|
+
if @arcadia.conf('layout.exchange_panel_if_no_tabbed')=='true' && source_has_domain && @panels[source_domain]['sons'].length == 1 && @panels[_target_domain]['sons'].length > 0
|
3322
3340
|
# change ------
|
3323
3341
|
ffw1 = raised_fixed_frame(_target_domain)
|
3324
3342
|
ffw2 = @panels[source_domain]['sons'].values[0]
|
@@ -3331,7 +3349,7 @@ class ArcadiaLayout
|
|
3331
3349
|
@panels[_target_domain]['root'].save_caption(ffw2.name, @panels[source_domain]['root'].last_caption(ffw2.name), @panels[source_domain]['root'].last_caption_image(ffw2.name))
|
3332
3350
|
@panels[source_domain]['root'].save_caption(ffw1.name, @panels[_target_domain]['root'].last_caption(ffw1.name), @panels[_target_domain]['root'].last_caption_image(ffw1.name))
|
3333
3351
|
@panels[_target_domain]['root'].restore_caption(ffw2.name)
|
3334
|
-
|
3352
|
+
@panels[source_domain]['root'].restore_caption(ffw1.name)
|
3335
3353
|
@panels[_target_domain]['root'].change_adapters(ffw2.name, @panels[source_domain]['root'].forge_transient_adapter(ffw2.name))
|
3336
3354
|
@panels[source_domain]['root'].change_adapters(ffw1.name, @panels[_target_domain]['root'].forge_transient_adapter(ffw1.name))
|
3337
3355
|
elsif source_has_domain && @panels[source_domain]['sons'].length >= 1
|
@@ -3342,6 +3360,7 @@ class ArcadiaLayout
|
|
3342
3360
|
@panels[_target_domain]['root'].save_caption(ffw2.name, @panels[source_domain]['root'].last_caption(ffw2.name), @panels[source_domain]['root'].last_caption_image(ffw2.name))
|
3343
3361
|
@panels[_target_domain]['root'].restore_caption(ffw2.name)
|
3344
3362
|
@panels[_target_domain]['root'].change_adapters(ffw2.name, @panels[source_domain]['root'].forge_transient_adapter(ffw2.name))
|
3363
|
+
#Tk.event_generate(ffw2.hinner_frame, "Map")
|
3345
3364
|
elsif !source_has_domain
|
3346
3365
|
ffw2 = @wrappers[_source_name]
|
3347
3366
|
ffw2.domain = _target_domain
|
@@ -3357,33 +3376,6 @@ class ArcadiaLayout
|
|
3357
3376
|
LayoutChangedDomainEvent.new(self, 'old_domain'=>source_domain, 'new_domain'=>_target_domain).go!
|
3358
3377
|
end
|
3359
3378
|
|
3360
|
-
# def change_domain_old(_dom1, _dom2, _name2)
|
3361
|
-
# tt1= @panels[_dom1]['root'].top_text
|
3362
|
-
# tt2= @panels[_dom2]['root'].top_text
|
3363
|
-
# if @panels[_dom2]['sons'].length ==1 && @panels[_dom1]['sons'].length > 0
|
3364
|
-
# # change ------
|
3365
|
-
# ffw1 = raised_fixed_frame(_dom1)
|
3366
|
-
# ffw2 = @panels[_dom2]['sons'].values[0]
|
3367
|
-
# unregister_panel(ffw1,false,false) if ffw1
|
3368
|
-
# unregister_panel(ffw2,false,false)
|
3369
|
-
# ffw1.domain = _dom2 if ffw1
|
3370
|
-
# ffw2.domain = _dom1
|
3371
|
-
# register_panel(ffw1, ffw1.hinner_frame) if ffw1
|
3372
|
-
# register_panel(ffw2, ffw2.hinner_frame)
|
3373
|
-
# @panels[_dom1]['root'].top_text(tt2)
|
3374
|
-
# @panels[_dom2]['root'].top_text(tt1)
|
3375
|
-
# elsif @panels[_dom2]['sons'].length > 1
|
3376
|
-
# ffw2 = @panels[_dom2]['sons'][_name2]
|
3377
|
-
# unregister_panel(ffw2, false, false)
|
3378
|
-
# ffw2.domain = _dom1
|
3379
|
-
# register_panel(ffw2, ffw2.hinner_frame)
|
3380
|
-
# @panels[_dom1]['root'].top_text(tt2)
|
3381
|
-
# @panels[_dom2]['root'].top_text('')
|
3382
|
-
# end
|
3383
|
-
# # refresh -----
|
3384
|
-
# build_invert_menu
|
3385
|
-
# end
|
3386
|
-
|
3387
3379
|
def sorted_menu_index(_menu, _label)
|
3388
3380
|
index = '0'
|
3389
3381
|
i_end = _menu.index('end').to_i - 4
|
@@ -3435,13 +3427,15 @@ class ArcadiaLayout
|
|
3435
3427
|
submenu = ArcadiaMainMenu.sub_menu(_menu, submenu_title)
|
3436
3428
|
end
|
3437
3429
|
if submenu.nil?
|
3438
|
-
|
3430
|
+
|
3431
|
+
#submenu = TkMenu.new(
|
3432
|
+
submenu = Arcadia.wf.menu(
|
3439
3433
|
:parent=>_menu,
|
3440
3434
|
:tearoff=>0,
|
3441
3435
|
:title => submenu_title
|
3442
3436
|
)
|
3443
|
-
submenu.extend(TkAutoPostMenu)
|
3444
|
-
submenu.configure(Arcadia.style('menu'))
|
3437
|
+
#submenu.extend(TkAutoPostMenu)
|
3438
|
+
#submenu.configure(Arcadia.style('menu'))
|
3445
3439
|
_menu.insert(ind,
|
3446
3440
|
:cascade,
|
3447
3441
|
:image=>Arcadia.image_res(ARROW_LEFT_GIF),
|
@@ -3479,7 +3473,7 @@ class ArcadiaLayout
|
|
3479
3473
|
end
|
3480
3474
|
|
3481
3475
|
def process_frame(_ffw)
|
3482
|
-
#p "
|
3476
|
+
#p "process frame #{_ffw.title}"
|
3483
3477
|
#-------
|
3484
3478
|
is_plus = Arcadia.extension(_ffw.name).kind_of?(ArcadiaExtPlus)
|
3485
3479
|
#-------
|
@@ -3749,7 +3743,20 @@ class ArcadiaLayout
|
|
3749
3743
|
def view_panel
|
3750
3744
|
end
|
3751
3745
|
|
3752
|
-
def hide_panel
|
3746
|
+
def hide_panel(_domain, _extension)
|
3747
|
+
pan = @panels[_domain]
|
3748
|
+
if @tabbed
|
3749
|
+
if pan && pan['notebook'] != nil
|
3750
|
+
pan['notebook'].unpack
|
3751
|
+
end
|
3752
|
+
elsif pan
|
3753
|
+
pan['sons'].each{|k,v|
|
3754
|
+
if k == _extension
|
3755
|
+
v.hide
|
3756
|
+
break
|
3757
|
+
end
|
3758
|
+
}
|
3759
|
+
end
|
3753
3760
|
end
|
3754
3761
|
|
3755
3762
|
def [](_row, _col)
|
@@ -3757,7 +3764,7 @@ class ArcadiaLayout
|
|
3757
3764
|
end
|
3758
3765
|
|
3759
3766
|
def frame(_domain_name, _name)
|
3760
|
-
@panels[_domain_name]['sons'][_name].
|
3767
|
+
@panels[_domain_name]['sons'][_name].hinner_frame
|
3761
3768
|
end
|
3762
3769
|
|
3763
3770
|
# def domain_for_frame(_domain_name, _name)
|
@@ -3782,6 +3789,21 @@ class ArcadiaLayout
|
|
3782
3789
|
return _frame
|
3783
3790
|
end
|
3784
3791
|
|
3792
|
+
def add_hinner_dialog(side='top', args=nil)
|
3793
|
+
hd = HinnerDialog.new(side, args)
|
3794
|
+
return hd
|
3795
|
+
end
|
3796
|
+
|
3797
|
+
def add_hinner_splitted_dialog(side='top', height=100, args=nil)
|
3798
|
+
hd = HinnerSplittedDialog.new(side, height, args)
|
3799
|
+
return hd
|
3800
|
+
end
|
3801
|
+
|
3802
|
+
def add_hinner_splitted_dialog_titled(title=nil, side='top', height=100, args=nil)
|
3803
|
+
hd = HinnerSplittedDialogTitled.new(title, side, height, args)
|
3804
|
+
return hd
|
3805
|
+
end
|
3806
|
+
|
3785
3807
|
def dump_splitter(_splitter)
|
3786
3808
|
ret = ''
|
3787
3809
|
if _splitter.instance_of?(AGTkVSplittedFrames)
|
@@ -4112,4 +4134,18 @@ class ArcadiaUtils
|
|
4112
4134
|
}
|
4113
4135
|
ret.concat(subpids)
|
4114
4136
|
end
|
4137
|
+
|
4138
|
+
def ArcadiaUtils.exec(_cmd_=nil)
|
4139
|
+
return nil if _cmd_.nil?
|
4140
|
+
to_ret = ''
|
4141
|
+
begin
|
4142
|
+
open("|#{_cmd_}", "r"){|f|
|
4143
|
+
#to_ret = f.readlines
|
4144
|
+
to_ret = f.read
|
4145
|
+
}
|
4146
|
+
rescue RuntimeError => e
|
4147
|
+
Arcadia.runtime_error(e)
|
4148
|
+
end
|
4149
|
+
to_ret
|
4150
|
+
end
|
4115
4151
|
end
|