fxri 0.2.0 → 0.3.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 (5) hide show
  1. data/fxri +79 -51
  2. data/fxri.gemspec +24 -24
  3. data/lib/Globals.rb +5 -0
  4. data/lib/Packet_List.rb +2 -2
  5. metadata +12 -12
data/fxri CHANGED
@@ -44,11 +44,12 @@ require 'lib/FoxTextFormatter'
44
44
  require 'lib/fxirb'
45
45
 
46
46
  # Responsible for application initialization
47
- class Main_Window < FXMainWindow
47
+ class FXri < FXHorizontalFrame
48
48
 
49
49
  # Initializes the XDCC-application.
50
- def initialize(app)
51
- super(app, $cfg.app.name, nil, nil, DECOR_ALL, 0, 0, $cfg.app.width, $cfg.app.height)
50
+ def initialize(p, opts=0, x=0 ,y=0 ,w=0 ,h=0 , pl=DEFAULT_SPACING, pr=DEFAULT_SPACING, pt=DEFAULT_SPACING, pb=DEFAULT_SPACING, hs=DEFAULT_SPACING, vs=DEFAULT_SPACING)
51
+ super(p, opts, x ,y ,w ,h , pl, pr, pt, pb, hs, vs)
52
+ @isLoaded = false
52
53
  set_default_font
53
54
  # load icons
54
55
  icon_loader = Icon_Loader.new(FXApp::instance)
@@ -76,11 +77,18 @@ class Main_Window < FXMainWindow
76
77
  # Automatically called when the Fox application is created
77
78
  def create
78
79
  super
79
- show(PLACEMENT_SCREEN)
80
+ show
80
81
  # load items
81
- load_items
82
- @search_engine.update_search_status_text
83
- end
82
+ Thread.new do
83
+ # delayed loading, this speeds up freeride's startup.
84
+ sleep 1 if $cfg.delayed_loading
85
+ @gui.search_field.enabled = false
86
+ load_items
87
+ @isLoaded = true
88
+ @gui.search_field.enabled = true
89
+ @gui.search_field.text = ""
90
+ end
91
+ end
84
92
 
85
93
  def create_data
86
94
  @data.displayer = FoxDisplayer.new(@gui.text)
@@ -110,19 +118,28 @@ class Main_Window < FXMainWindow
110
118
  # build gui
111
119
  def build(parent)
112
120
  FXSplitter.new(parent, SPLITTER_TRACKING|LAYOUT_FILL_X|LAYOUT_FILL_Y) do |base|
113
- FXVerticalFrame.new(base, LAYOUT_FILL_X|LAYOUT_FILL_Y, 0,0,$cfg.packet_list_width,0, DEFAULT_SPACING, 0) do |search_frame|
121
+ FXVerticalFrame.new(base, LAYOUT_FILL_X|LAYOUT_FILL_Y, 0,0,$cfg.packet_list_width,0, 0,0,0,0,0,0) do |search_frame|
114
122
 
115
123
  @gui.search_field = FXTextField.new(search_frame, 1, nil, 0, TEXTFIELD_NORMAL|LAYOUT_FILL_X|FRAME_SUNKEN)
116
- Empty_Text_Field_Handler.new(@gui.search_field, $cfg.text.search_field)
117
124
  @gui.search_field.connect(SEL_CHANGED) do |*args|
118
125
  on_search
119
126
  end
120
127
 
121
128
 
122
129
  FXVerticalFrame.new(search_frame, FRAME_SUNKEN|LAYOUT_FILL_X|LAYOUT_FILL_Y, 0,0,0,0, 0,0,0,0,0,0) do |list_frame|
123
- @gui.packet_list = Packet_List.new(@data, list_frame, nil, 0, HSCROLLER_NEVER|VSCROLLER_ALWAYS|TREELIST_BROWSESELECT|LAYOUT_FILL_X|LAYOUT_FILL_Y) do |packet_list|
130
+ @gui.packet_list = Packet_List.new(@data, list_frame, nil, 0,
131
+ ICONLIST_DETAILED|
132
+ ICONLIST_COLUMNS|
133
+ #ICONLIST_MINI_ICONS|
134
+ HSCROLLER_NEVER|
135
+ VSCROLLER_ALWAYS|
136
+ ICONLIST_BROWSESELECT|
137
+ LAYOUT_FILL_X|
138
+ LAYOUT_FILL_Y) do |packet_list|
124
139
  packet_list.add_header($cfg.text.method_name, $cfg.packet_list_width) { |x| make_sortable(x) }
125
140
  end
141
+
142
+ @gui.packet_list.setHeaderSize(0, 1000)
126
143
  end
127
144
 
128
145
  @gui.search_label = FXLabel.new(search_frame, "", nil, LAYOUT_FILL_X|LABEL_NORMAL|JUSTIFY_RIGHT, 0,0,0,0, 0,0,0,0)
@@ -133,22 +150,19 @@ class Main_Window < FXMainWindow
133
150
  end
134
151
  end
135
152
 
136
-
137
- FXSplitter.new(base, SPLITTER_TRACKING|LAYOUT_FILL_X|LAYOUT_FILL_Y|SPLITTER_VERTICAL) do |split|
138
- FXHorizontalFrame.new(split, FRAME_SUNKEN|LAYOUT_FILL_X|LAYOUT_FILL_Y, 0,0,0,0, 0,0,0,0,0,0) do |right|
139
- @gui.text = FXText.new(right, nil, 0, TEXT_READONLY|TEXT_WORDWRAP|LAYOUT_FILL_X|LAYOUT_FILL_Y)
140
- end
141
-
142
- FXHorizontalFrame.new(split, FRAME_SUNKEN|LAYOUT_FILL_X|LAYOUT_FILL_Y, 0,0,0,0, 0,0,0,0,0,0) do |irb_frame|
143
- @irb_frame = irb_frame
144
- @gui.irb = FXIrb.init(irb_frame, nil, 0, LAYOUT_FILL_X|LAYOUT_FILL_Y|TEXT_WORDWRAP|TEXT_SHOWACTIVE)
145
- @gui.irb.setFont(@font) if @font
146
- end
147
- split.setSplit(0, $cfg.irb_height)
148
- end
153
+ split = FXSplitter.new(base, SPLITTER_TRACKING|LAYOUT_FILL_X|LAYOUT_FILL_Y|SPLITTER_VERTICAL) if $cfg.launch_irb
154
+ right = FXHorizontalFrame.new(($cfg.launch_irb ? split : base), FRAME_SUNKEN|LAYOUT_FILL_X|LAYOUT_FILL_Y, 0,0,0,0, 0,0,0,0,0,0)
155
+ @gui.text = FXText.new(right, nil, 0, TEXT_READONLY|TEXT_WORDWRAP|LAYOUT_FILL_X|LAYOUT_FILL_Y)
156
+ if $cfg.launch_irb
157
+ irb_frame = FXHorizontalFrame.new(split, FRAME_SUNKEN|LAYOUT_FILL_X|LAYOUT_FILL_Y, 0,0,0,0, 0,0,0,0,0,0)
158
+ @irb_frame = irb_frame
159
+ @gui.irb = FXIrb.init(irb_frame, nil, 0, LAYOUT_FILL_X|LAYOUT_FILL_Y|TEXT_WORDWRAP|TEXT_SHOWACTIVE)
160
+ @gui.irb.setFont(@font) if @font
161
+ split.setSplit(0, $cfg.irb_height)
162
+ end
149
163
  font = load_font($cfg.ri_font)
150
164
  @gui.text.font = font if font
151
- font.create
165
+ font.create
152
166
  @gui.text_width = font.fontWidth
153
167
 
154
168
  @gui.text.connect(SEL_CONFIGURE) do
@@ -231,27 +245,35 @@ class Main_Window < FXMainWindow
231
245
 
232
246
  # loads all ri items
233
247
  def load_items
234
- @data.ri_manager.all_names.each do |name|
235
- icon = case name.type
236
- when NameDescriptor::CLASS
237
- $cfg.icons.klass
238
- when NameDescriptor::INSTANCE_METHOD
239
- $cfg.icons.instance_method
240
- when NameDescriptor::CLASS_METHOD
241
- $cfg.icons.class_method
242
- end
243
- item = Packet_Item.new(@gui.packet_list, icon, name.to_s)
244
- item.data = name
245
- @data.items.push item
246
- end
247
- # quick hack to sort in right order :-)
248
- @gui.packet_list.on_cmd_header(0)
249
- @gui.packet_list.on_cmd_header(0)
250
- @gui.packet_list.update_header_width
251
- recalc
248
+ @gui.search_field.text = "loading..."
249
+ @data.ri_manager.all_names.each do |name|
250
+ icon = case name.type
251
+ when NameDescriptor::CLASS
252
+ $cfg.icons.klass
253
+ when NameDescriptor::INSTANCE_METHOD
254
+ $cfg.icons.instance_method
255
+ when NameDescriptor::CLASS_METHOD
256
+ $cfg.icons.class_method
257
+ end
258
+ item = Packet_Item.new(@gui.packet_list, icon, name.to_s)
259
+ @search_engine.update_search_status_text
260
+ item.data = name
261
+ @data.items.push item
262
+ end
263
+ @gui.search_field.text = "sorting..."
264
+ @gui.packet_list.on_cmd_header(0)
265
+ @gui.packet_list.update_header_width
266
+ recalc
267
+ end
268
+
269
+ def go_search(string)
270
+ @gui.search_field.text = string
271
+ on_search
252
272
  end
253
273
 
254
274
  def on_search
275
+ # do nothing if not fully loaded
276
+ return if !@isLoaded
255
277
  @search_engine.on_search
256
278
  end
257
279
 
@@ -275,18 +297,24 @@ class Main_Window < FXMainWindow
275
297
  # This creates a sortable representation. First class, then class methods, then instance.
276
298
  def make_sortable(x)
277
299
  [ x.downcase.gsub("::", " 1 ").gsub("#", " 2 "),
278
- x.downcase,
279
- x]
300
+ x.downcase,
301
+ x]
280
302
  end
281
303
 
282
304
  end
283
305
 
284
- Thread.abort_on_exception= true
306
+ if __FILE__ == $0
307
+ Thread.abort_on_exception= true
285
308
 
286
- # move to directory of this file, so that icons can load correctly.
287
- Dir.chdir(File.dirname(File.expand_path(__FILE__)))
309
+ # move to directory of this file, so that icons can load correctly.
310
+ Dir.chdir(File.dirname(File.expand_path(__FILE__)))
288
311
 
289
- $app = FXApp.new($cfg.app.name, $cfg.app.name)
290
- $main_window = Main_Window.new($app)
291
- $app.create
292
- $app.run
312
+ application = FXApp.new($cfg.app.name, $cfg.app.name)
313
+ application.threadsEnabled = true
314
+ #application.init(ARGV)
315
+ window = FXMainWindow.new(application, $cfg.app.name, nil, nil, DECOR_ALL, 0, 0, $cfg.app.width, $cfg.app.height)
316
+ FXri.new(window,FRAME_NONE|LAYOUT_FILL_X|LAYOUT_FILL_Y,0,0,0,0,0,0,0,0,0,0)
317
+ application.create
318
+ window.show(PLACEMENT_SCREEN)
319
+ application.run
320
+ end
@@ -1,24 +1,24 @@
1
- #!/bin/env ruby
2
- require 'rubygems'
3
-
4
- spec = Gem::Specification.new do |s|
5
- s.name = "fxri"
6
- s.add_dependency('fxruby', '>= 1.2.0')
7
- s.version = "0.2.0"
8
- s.date = "2005-02-20"
9
- s.summary = "Graphical interface to the RI documentation, with search engine."
10
- s.require_paths = ["lib"]
11
- s.email = "martin.ankerl@gmail.com"
12
- s.homepage = "http://fxri.rubyforge.org/"
13
- s.rubyforge_project = "fxri"
14
- s.description = "FxRi is an FXRuby interface to the RI documentation, with a search engine that allows for search-on-typing."
15
- s.has_rdoc = false
16
- s.files = Dir.glob("**/*")
17
- s.bindir = "."
18
- s.executables = ["fxri"]
19
- end
20
-
21
- if __FILE__ == $0
22
- Gem.manage_gems
23
- Gem::Builder.new(spec).build
24
- end
1
+ #!/bin/env ruby
2
+ require 'rubygems'
3
+
4
+ spec = Gem::Specification.new do |s|
5
+ s.name = "fxri"
6
+ s.add_dependency('fxruby', '>= 1.2.0')
7
+ s.version = "0.3.0"
8
+ s.date = "2005-04-16"
9
+ s.summary = "Graphical interface to the RI documentation, with search engine."
10
+ s.require_paths = ["lib"]
11
+ s.email = "martin.ankerl@gmail.com"
12
+ s.homepage = "http://fxri.rubyforge.org/"
13
+ s.rubyforge_project = "fxri"
14
+ s.description = "FxRi is an FXRuby interface to the RI documentation, with a search engine that allows for search-on-typing."
15
+ s.has_rdoc = false
16
+ s.files = Dir.glob("**/*")
17
+ s.bindir = "."
18
+ s.executables = ["fxri"]
19
+ end
20
+
21
+ if __FILE__ == $0
22
+ Gem.manage_gems
23
+ Gem::Builder.new(spec).build
24
+ end
@@ -4,6 +4,8 @@ $cfg = Recursive_Open_Struct.new
4
4
 
5
5
  $cfg.app.name = "fxri - Instant Ruby Enlightenment"
6
6
 
7
+ $cfg.delayed_loading = false
8
+
7
9
  # uses the first font that is available
8
10
  $cfg.app.font.name = ["Bitstream Vera Sans", "Verdana", "Trebuchet MS", "Tahoma", "Arial"]
9
11
  $cfg.ri_font = ["Bitstream Vera Sans Mono", "Courier New", "Courier"]
@@ -20,6 +22,7 @@ $cfg.status_line_update_interval = 0.1
20
22
  $cfg.list.opts = ICONLIST_SINGLESELECT|ICONLIST_DETAILED|LAYOUT_FILL_X|LAYOUT_FILL_Y|ICONLIST_AUTOSIZE
21
23
 
22
24
  # icons, are automatically loaded from Icon_Loader.
25
+ $cfg.icons_path = File.join("lib","icons")
23
26
  $cfg.icons.klass = "class.png"
24
27
  $cfg.icons.class_method = "module.png"
25
28
  $cfg.icons.instance_method = "method.png"
@@ -29,6 +32,8 @@ $cfg.text.search = "%d / %d entries"
29
32
  $cfg.text.search_field = "What do you want to know?"
30
33
  $cfg.text.method_name = "name"
31
34
 
35
+ # IRB
36
+ $cfg.launch_irb = true
32
37
 
33
38
  $cfg.text.help = %|This is <b>fxri</b>, a graphical interface to the <em>Ruby</em> documentation. Fxri comes with a search engine with quite a few features. Here are several examples:
34
39
  '<em>Array</em>': Lists all classes with the name <em>Array</em>. Note that upcase words are treated case sensitive, lowercase words insensitive.
@@ -18,7 +18,7 @@ class Packet_List < FXIconList
18
18
  end
19
19
 
20
20
  @header_item_index = 0
21
- @reversed = false
21
+ @reversed = true
22
22
  @conversions = Array.new
23
23
  @items = Set.new
24
24
  super(*args)
@@ -53,7 +53,7 @@ class Packet_List < FXIconList
53
53
  if @header_item_index == header_item_index
54
54
  @reversed = !@reversed
55
55
  else
56
- @reversed = false
56
+ @reversed = true
57
57
  end
58
58
  @header_item_index = header_item_index
59
59
  header.setArrowDir(@header_item_index, @reversed)
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.6
3
3
  specification_version: 1
4
4
  name: fxri
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.2.0
7
- date: 2005-02-20
6
+ version: 0.3.0
7
+ date: 2005-04-16
8
8
  summary: "Graphical interface to the RI documentation, with search engine."
9
9
  require_paths:
10
10
  - lib
@@ -27,24 +27,24 @@ required_ruby_version: !ruby/object:Gem::Version::Requirement
27
27
  platform: ruby
28
28
  authors: []
29
29
  files:
30
+ - lib
30
31
  - fxri
31
32
  - fxri.gemspec
32
- - lib
33
- - lib/Empty_Text_Field_Handler.rb
34
33
  - lib/FoxDisplayer.rb
35
- - lib/FoxTextFormatter.rb
36
- - lib/fxirb.rb
37
- - lib/Globals.rb
38
34
  - lib/icons
39
- - lib/Icon_Loader.rb
40
- - lib/Packet_Item.rb
41
- - lib/Packet_List.rb
42
35
  - lib/Recursive_Open_Struct.rb
43
36
  - lib/RiManager.rb
37
+ - lib/Globals.rb
38
+ - lib/fxirb.rb
39
+ - lib/Packet_Item.rb
44
40
  - lib/Search_Engine.rb
45
- - lib/icons/class.png
46
- - lib/icons/method.png
41
+ - lib/Empty_Text_Field_Handler.rb
42
+ - lib/FoxTextFormatter.rb
43
+ - lib/Packet_List.rb
44
+ - lib/Icon_Loader.rb
47
45
  - lib/icons/module.png
46
+ - lib/icons/method.png
47
+ - lib/icons/class.png
48
48
  test_files: []
49
49
  rdoc_options: []
50
50
  extra_rdoc_files: []