clevic 0.5.1 → 0.5.2

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.
data/Manifest.txt CHANGED
@@ -27,4 +27,5 @@ lib/clevic/ui/search_dialog.ui
27
27
  lib/clevic/ui/search_dialog_ui.rb
28
28
  sql/accounts.sql
29
29
  sql/times.sql
30
+ template/jamis.rb
30
31
  times_models.rb
data/README.txt CHANGED
@@ -45,7 +45,7 @@ Right now, models must be defined in Ruby. The framework provides
45
45
  an easy Rails-migrations-like syntax for that.
46
46
  Start with account_models.rb and times_models.rb, with associated SQL
47
47
  schemas in the sql subdirectory. For implementation and more extensive
48
- comments, see Browser and EntryBuilder.
48
+ comments, see Clevic::Browser and Clevic::ModelBuilder.
49
49
 
50
50
  == PROBLEMS:
51
51
 
@@ -57,10 +57,14 @@ See TODO file.
57
57
 
58
58
  == REQUIREMENTS:
59
59
 
60
+ === Gems
60
61
  * fastercsv
61
62
  * ruby-qt4
62
- * bsearch
63
63
  * active_record
64
+
65
+ === Other
66
+
67
+ * bsearch (http://0xcc.net/ruby-bsearch)
64
68
  * active_record/dirty (included)
65
69
  * db driver (ie postgres-pr)
66
70
  * rdbms (ie postgres)
data/Rakefile CHANGED
@@ -4,9 +4,16 @@ require 'hoe'
4
4
  require 'lib/clevic/version.rb'
5
5
  require 'pathname'
6
6
 
7
- Hoe.new( 'clevic', Clevic::VERSION ) do |s|
7
+ $hoe = Hoe.new( 'clevic', Clevic::VERSION ) do |s|
8
8
  s.author = "John Anderson"
9
9
  s.email = "john at semiosix dot com"
10
+ s.rubyforge_name = 'clevic'
11
+ s.extra_deps = [
12
+ ['qtext', '>=0.2.0'],
13
+ ['activerecord', '>=2.0.2']
14
+ # This isn't always installed from gems
15
+ #~ ['qtruby4', '>=1.4.9']
16
+ ]
10
17
  end
11
18
 
12
19
  # generate a _ui.rb filename from a .ui filename
@@ -98,3 +105,20 @@ MODELS_LIST.each do |model_file|
98
105
  end
99
106
 
100
107
  task :package => :ui
108
+
109
+ # redefine this from the Hoe-1.7.0 sources to use
110
+ # the jamis template.
111
+ Rake::RDocTask.new(:docs) do |rd|
112
+ rd.main = "README.txt"
113
+ rd.options << '-d' if RUBY_PLATFORM !~ /win32/ and `which dot` =~ /\/dot/ and not ENV['NODOT']
114
+ rd.rdoc_dir = 'doc'
115
+ rd.template = 'template/jamis.rb'
116
+ files = $hoe.spec.files.grep($hoe.rdoc_pattern)
117
+ files -= ['Manifest.txt']
118
+ rd.rdoc_files.push(*files)
119
+
120
+ title = "#{$hoe.name}-#{$hoe.version} Documentation"
121
+ title = "#{$hoe.rubyforge_name}'s " + title if $hoe.rubyforge_name != $hoe.name
122
+
123
+ rd.options << "-t #{title}"
124
+ end
data/TODO CHANGED
@@ -4,13 +4,13 @@ Times look up invoice for project leaves the wrong fields highlighted, and focus
4
4
 
5
5
  Using F4 to open list, and then selecting from the combo and exiting using Return (or tab?) doesn't set the correct value
6
6
  wrap description, and allow Access-style zooming
7
- Undo deletes and other commands. Possibly via ActiveRecord callbacks.
7
+ Undo deletes and other commands. Possibly via ActiveRecord callbacks?
8
8
 
9
9
  Keep a history of changes, ie xy, new. xy, changed. x,y copied etc.
10
10
 
11
11
  OSX
12
12
  ---
13
- Check that qtruby4 runs on OSX and so does Clevic. It does. Very slowly on Leilani's Mini.
13
+ Check that qtruby4 runs on OSX and so does Clevic. It does. Very slowly on Mac Mini with Motorola.
14
14
 
15
15
  windows
16
16
  -------
@@ -89,16 +89,16 @@ preferences
89
89
  -----------
90
90
  store previous searches, by model & app
91
91
 
92
-
93
92
  maybe
94
93
  -----
95
- use rubigen for creating apps
94
+ use rubigen for creating model definition files
96
95
  allow moving of rows
97
96
  discontiguous copying of entities/csv
98
97
  multi-row copying
99
98
  pasting of csv, into rectangular regions
100
99
  collect a set of data requests to the model, and do them in one SQL query. See EntryTableView#moveCursor
101
100
  Use SQL cursors for find & find_next?
101
+ Use roo to parse spreadsheets?
102
102
 
103
103
  Accounts
104
104
  --------
@@ -110,22 +110,3 @@ Times
110
110
 
111
111
  warnings on overlap times (in status bar)
112
112
  warnings on large intervals (in status bar)
113
-
114
- db
115
- --
116
-
117
- times
118
-
119
- alter table invoices rename column type to billing;
120
- alter table entries add primary key (id);
121
- alter table entries alter column id set not null
122
- select max(id) from entries;
123
- create sequence entries_id_seq start with 11694;
124
- alter table entries alter column id set default nextval('entries_id_seq');
125
- update entries set module = null where module = '';
126
- update entries set module = 'admin' where module = 'Admin';
127
-
128
- alter table projects rename active to old_active;
129
- alter table projects add column active boolean;
130
- update projects set active = ( old_active = 1 );
131
- alter table projects drop column old_active;
data/bin/clevic CHANGED
@@ -3,7 +3,6 @@
3
3
  require 'clevic/browser.rb'
4
4
  require 'ruby-debug'
5
5
 
6
- # fetch command line options
7
6
  require 'optparse'
8
7
 
9
8
  # find and require variations on file_path
@@ -13,6 +12,15 @@ end
13
12
 
14
13
  $options = {}
15
14
  oparser = OptionParser.new
15
+ oparser.banner = <<BANNER
16
+ Usage: #{File.basename($0)} [options] model_definition_file
17
+
18
+ model_definition_file, \#{model_definition_file}_models.rb will be searched for.
19
+
20
+ Options are:
21
+ BANNER
22
+ oparser.separator ''
23
+
16
24
  oparser.on( '-H', '--host HOST', 'RDBMS host', String ) { |o| $options[:host] = o }
17
25
  oparser.on( '-u', '--user USERNAME', String ) { |o| $options[:user] = o }
18
26
  oparser.on( '-p', '--pass PASSWORD', String ) { |o| $options[:password] = o }
@@ -37,21 +45,13 @@ end
37
45
 
38
46
  app = Qt::Application.new( args )
39
47
 
40
- if $options[:debug]
41
- require 'pp'
42
- #~ puts "$options: #{$options.inspect}"
43
- #~ puts args.inspect
44
- end
45
-
46
- if !$options.has_key?( :database )
48
+ unless $options.has_key? :database
47
49
  raise "Please define $options[:database]"
48
50
  end
49
51
 
50
52
  # connect to db
51
53
  require 'clevic/db_options.rb'
52
54
 
53
- puts "using database #{ActiveRecord::Base.connection.raw_connection.db}" if $options[:debug]
54
-
55
55
  # show UI
56
56
  main_window = Qt::MainWindow.new
57
57
  browser = Clevic::Browser.new( main_window )
@@ -1,17 +1,19 @@
1
- # set up defaults
2
- # $options[:database] to be defined with the models
3
1
  require 'active_record'
4
2
 
3
+ # these will normally be defined fully in the model definition file
4
+ # $options[:database] to be defined with the models
5
5
  $options ||= {}
6
6
  $options[:adapter] ||= 'postgresql'
7
7
  $options[:host] ||= 'localhost'
8
- $options[:username] ||= 'panic'
8
+ $options[:username] ||= ''
9
9
  $options[:password] ||= ''
10
10
 
11
11
  ActiveRecord::Base.establish_connection( $options )
12
12
  ActiveRecord::Base.logger = Logger.new(STDOUT) if $options[:verbose]
13
13
  #~ ActiveRecord.colorize_logging = false
14
14
 
15
+ puts "using database #{ActiveRecord::Base.connection.raw_connection.db}" if $options[:debug]
16
+
15
17
  # workaround for the date freeze issue
16
18
  class Date
17
19
  def freeze
@@ -1,3 +1,5 @@
1
+ require 'activerecord'
2
+
1
3
  require 'clevic/table_model.rb'
2
4
  require 'clevic/delegates.rb'
3
5
  require 'clevic/cache_table.rb'
@@ -1,7 +1,7 @@
1
1
  =begin
2
2
  ** Form generated from reading ui file 'browser.ui'
3
3
  **
4
- ** Created: Thu Jun 26 18:01:14 2008
4
+ ** Created: Fri Jul 4 22:17:08 2008
5
5
  ** by: Qt User Interface Compiler version 4.3.3
6
6
  **
7
7
  ** WARNING! All changes made in this file will be lost when recompiling ui file!
@@ -1,7 +1,7 @@
1
1
  =begin
2
2
  ** Form generated from reading ui file 'search_dialog.ui'
3
3
  **
4
- ** Created: Thu Jun 26 18:01:14 2008
4
+ ** Created: Fri Jul 4 22:17:08 2008
5
5
  ** by: Qt User Interface Compiler version 4.3.3
6
6
  **
7
7
  ** WARNING! All changes made in this file will be lost when recompiling ui file!
data/template/jamis.rb ADDED
@@ -0,0 +1,589 @@
1
+ module RDoc
2
+ module Page
3
+
4
+ FONTS = "\"Bitstream Vera Sans\", Verdana, Arial, Helvetica, sans-serif"
5
+
6
+ STYLE = <<CSS
7
+ a {
8
+ color: #00F;
9
+ text-decoration: none;
10
+ }
11
+
12
+ a:hover {
13
+ color: #77F;
14
+ text-decoration: underline;
15
+ }
16
+
17
+ body, td, p {
18
+ font-family: %fonts%;
19
+ background: #FFF;
20
+ color: #000;
21
+ margin: 0px;
22
+ font-size: small;
23
+ }
24
+
25
+ #content {
26
+ margin: 2em;
27
+ }
28
+
29
+ #description p {
30
+ margin-bottom: 0.5em;
31
+ }
32
+
33
+ .sectiontitle {
34
+ margin-top: 1em;
35
+ margin-bottom: 1em;
36
+ padding: 0.5em;
37
+ padding-left: 2em;
38
+ background: #005;
39
+ color: #FFF;
40
+ font-weight: bold;
41
+ border: 1px dotted black;
42
+ }
43
+
44
+ .attr-rw {
45
+ padding-left: 1em;
46
+ padding-right: 1em;
47
+ text-align: center;
48
+ color: #055;
49
+ }
50
+
51
+ .attr-name {
52
+ font-weight: bold;
53
+ }
54
+
55
+ .attr-desc {
56
+ }
57
+
58
+ .attr-value {
59
+ font-family: monospace;
60
+ }
61
+
62
+ .file-title-prefix {
63
+ font-size: large;
64
+ }
65
+
66
+ .file-title {
67
+ font-size: large;
68
+ font-weight: bold;
69
+ background: #005;
70
+ color: #FFF;
71
+ }
72
+
73
+ .banner {
74
+ background: #005;
75
+ color: #FFF;
76
+ border: 1px solid black;
77
+ padding: 1em;
78
+ }
79
+
80
+ .banner td {
81
+ background: transparent;
82
+ color: #FFF;
83
+ }
84
+
85
+ h1 a, h2 a, .sectiontitle a, .banner a {
86
+ color: #FF0;
87
+ }
88
+
89
+ h1 a:hover, h2 a:hover, .sectiontitle a:hover, .banner a:hover {
90
+ color: #FF7;
91
+ }
92
+
93
+ .dyn-source {
94
+ display: none;
95
+ background: #FFE;
96
+ color: #000;
97
+ border: 1px dotted black;
98
+ margin: 0.5em 2em 0.5em 2em;
99
+ padding: 0.5em;
100
+ }
101
+
102
+ .dyn-source .cmt {
103
+ color: #00F;
104
+ font-style: italic;
105
+ }
106
+
107
+ .dyn-source .kw {
108
+ color: #070;
109
+ font-weight: bold;
110
+ }
111
+
112
+ .method {
113
+ margin-left: 1em;
114
+ margin-right: 1em;
115
+ margin-bottom: 1em;
116
+ }
117
+
118
+ .description pre {
119
+ padding: 0.5em;
120
+ border: 1px dotted black;
121
+ background: #FFE;
122
+ }
123
+
124
+ .method .title {
125
+ font-family: monospace;
126
+ font-size: large;
127
+ border-bottom: 1px dashed black;
128
+ margin-bottom: 0.3em;
129
+ padding-bottom: 0.1em;
130
+ }
131
+
132
+ .method .description, .method .sourcecode {
133
+ margin-left: 1em;
134
+ }
135
+
136
+ .description p, .sourcecode p {
137
+ margin-bottom: 0.5em;
138
+ }
139
+
140
+ .method .sourcecode p.source-link {
141
+ text-indent: 0em;
142
+ margin-top: 0.5em;
143
+ }
144
+
145
+ .method .aka {
146
+ margin-top: 0.3em;
147
+ margin-left: 1em;
148
+ font-style: italic;
149
+ text-indent: 2em;
150
+ }
151
+
152
+ h1 {
153
+ padding: 1em;
154
+ border: 1px solid black;
155
+ font-size: x-large;
156
+ font-weight: bold;
157
+ color: #FFF;
158
+ background: #007;
159
+ }
160
+
161
+ h2 {
162
+ padding: 0.5em 1em 0.5em 1em;
163
+ border: 1px solid black;
164
+ font-size: large;
165
+ font-weight: bold;
166
+ color: #FFF;
167
+ background: #009;
168
+ }
169
+
170
+ h3, h4, h5, h6 {
171
+ padding: 0.2em 1em 0.2em 1em;
172
+ border: 1px dashed black;
173
+ color: #000;
174
+ background: #AAF;
175
+ }
176
+
177
+ .sourcecode > pre {
178
+ padding: 0.5em;
179
+ border: 1px dotted black;
180
+ background: #FFE;
181
+ }
182
+
183
+ CSS
184
+
185
+ XHTML_PREAMBLE = %{<?xml version="1.0" encoding="%charset%"?>
186
+ <!DOCTYPE html
187
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
188
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
189
+ }
190
+
191
+ XHTML_FRAMESET_PREAMBLE = %{
192
+ <!DOCTYPE html
193
+ PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
194
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
195
+ }
196
+
197
+ HEADER = XHTML_PREAMBLE + <<ENDHEADER
198
+ <html>
199
+ <head>
200
+ <title>%title%</title>
201
+ <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
202
+ <link rel="stylesheet" href="%style_url%" type="text/css" media="screen" />
203
+
204
+ <script language="JavaScript" type="text/javascript">
205
+ // <![CDATA[
206
+
207
+ function toggleSource( id )
208
+ {
209
+ var elem
210
+ var link
211
+
212
+ if( document.getElementById )
213
+ {
214
+ elem = document.getElementById( id )
215
+ link = document.getElementById( "l_" + id )
216
+ }
217
+ else if ( document.all )
218
+ {
219
+ elem = eval( "document.all." + id )
220
+ link = eval( "document.all.l_" + id )
221
+ }
222
+ else
223
+ return false;
224
+
225
+ if( elem.style.display == "block" )
226
+ {
227
+ elem.style.display = "none"
228
+ link.innerHTML = "show source"
229
+ }
230
+ else
231
+ {
232
+ elem.style.display = "block"
233
+ link.innerHTML = "hide source"
234
+ }
235
+ }
236
+
237
+ function openCode( url )
238
+ {
239
+ window.open( url, "SOURCE_CODE", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=480,width=750" ).focus();
240
+ }
241
+ // ]]>
242
+ </script>
243
+ </head>
244
+
245
+ <body>
246
+ ENDHEADER
247
+
248
+ FILE_PAGE = <<HTML
249
+ <table border='0' cellpadding='0' cellspacing='0' width="100%" class='banner'>
250
+ <tr><td>
251
+ <table width="100%" border='0' cellpadding='0' cellspacing='0'><tr>
252
+ <td class="file-title" colspan="2"><span class="file-title-prefix">File</span><br />%short_name%</td>
253
+ <td align="right">
254
+ <table border='0' cellspacing="0" cellpadding="2">
255
+ <tr>
256
+ <td>Path:</td>
257
+ <td>%full_path%
258
+ IF:cvsurl
259
+ &nbsp;(<a href="%cvsurl%">CVS</a>)
260
+ ENDIF:cvsurl
261
+ </td>
262
+ </tr>
263
+ <tr>
264
+ <td>Modified:</td>
265
+ <td>%dtm_modified%</td>
266
+ </tr>
267
+ </table>
268
+ </td></tr>
269
+ </table>
270
+ </td></tr>
271
+ </table><br />
272
+ HTML
273
+
274
+ ###################################################################
275
+
276
+ CLASS_PAGE = <<HTML
277
+ <table width="100%" border='0' cellpadding='0' cellspacing='0' class='banner'><tr>
278
+ <td class="file-title"><span class="file-title-prefix">%classmod%</span><br />%full_name%</td>
279
+ <td align="right">
280
+ <table cellspacing="0" cellpadding="2">
281
+ <tr valign="top">
282
+ <td>In:</td>
283
+ <td>
284
+ START:infiles
285
+ HREF:full_path_url:full_path:
286
+ IF:cvsurl
287
+ &nbsp;(<a href="%cvsurl%">CVS</a>)
288
+ ENDIF:cvsurl
289
+ END:infiles
290
+ </td>
291
+ </tr>
292
+ IF:parent
293
+ <tr>
294
+ <td>Parent:</td>
295
+ <td>
296
+ IF:par_url
297
+ <a href="%par_url%">
298
+ ENDIF:par_url
299
+ %parent%
300
+ IF:par_url
301
+ </a>
302
+ ENDIF:par_url
303
+ </td>
304
+ </tr>
305
+ ENDIF:parent
306
+ </table>
307
+ </td>
308
+ </tr>
309
+ </table>
310
+ HTML
311
+
312
+ ###################################################################
313
+
314
+ METHOD_LIST = <<HTML
315
+ <div id="content">
316
+ IF:diagram
317
+ <table cellpadding='0' cellspacing='0' border='0' width="100%"><tr><td align="center">
318
+ %diagram%
319
+ </td></tr></table>
320
+ ENDIF:diagram
321
+
322
+ IF:description
323
+ <div class="description">%description%</div>
324
+ ENDIF:description
325
+
326
+ IF:requires
327
+ <div class="sectiontitle">Required Files</div>
328
+ <ul>
329
+ START:requires
330
+ <li>HREF:aref:name:</li>
331
+ END:requires
332
+ </ul>
333
+ ENDIF:requires
334
+
335
+ IF:toc
336
+ <div class="sectiontitle">Contents</div>
337
+ <ul>
338
+ START:toc
339
+ <li><a href="#%href%">%secname%</a></li>
340
+ END:toc
341
+ </ul>
342
+ ENDIF:toc
343
+
344
+ IF:methods
345
+ <div class="sectiontitle">Methods</div>
346
+ <ul>
347
+ START:methods
348
+ <li>HREF:aref:name:</li>
349
+ END:methods
350
+ </ul>
351
+ ENDIF:methods
352
+
353
+ IF:includes
354
+ <div class="sectiontitle">Included Modules</div>
355
+ <ul>
356
+ START:includes
357
+ <li>HREF:aref:name:</li>
358
+ END:includes
359
+ </ul>
360
+ ENDIF:includes
361
+
362
+ START:sections
363
+ IF:sectitle
364
+ <div class="sectiontitle"><a name="%secsequence%">%sectitle%</a></div>
365
+ IF:seccomment
366
+ <div class="description">
367
+ %seccomment%
368
+ </div>
369
+ ENDIF:seccomment
370
+ ENDIF:sectitle
371
+
372
+ IF:classlist
373
+ <div class="sectiontitle">Classes and Modules</div>
374
+ %classlist%
375
+ ENDIF:classlist
376
+
377
+ IF:constants
378
+ <div class="sectiontitle">Constants</div>
379
+ <table border='0' cellpadding='5'>
380
+ START:constants
381
+ <tr valign='top'>
382
+ <td class="attr-name">%name%</td>
383
+ <td>=</td>
384
+ <td class="attr-value">%value%</td>
385
+ </tr>
386
+ IF:desc
387
+ <tr valign='top'>
388
+ <td>&nbsp;</td>
389
+ <td colspan="2" class="attr-desc">%desc%</td>
390
+ </tr>
391
+ ENDIF:desc
392
+ END:constants
393
+ </table>
394
+ ENDIF:constants
395
+
396
+ IF:attributes
397
+ <div class="sectiontitle">Attributes</div>
398
+ <table border='0' cellpadding='5'>
399
+ START:attributes
400
+ <tr valign='top'>
401
+ <td class='attr-rw'>
402
+ IF:rw
403
+ [%rw%]
404
+ ENDIF:rw
405
+ </td>
406
+ <td class='attr-name'>%name%</td>
407
+ <td class='attr-desc'>%a_desc%</td>
408
+ </tr>
409
+ END:attributes
410
+ </table>
411
+ ENDIF:attributes
412
+
413
+ IF:method_list
414
+ START:method_list
415
+ IF:methods
416
+ <div class="sectiontitle">%type% %category% methods</div>
417
+ START:methods
418
+ <div class="method">
419
+ <div class="title">
420
+ IF:callseq
421
+ <a name="%aref%"></a><b>%callseq%</b>
422
+ ENDIF:callseq
423
+ IFNOT:callseq
424
+ <a name="%aref%"></a><b>%name%</b>%params%
425
+ ENDIF:callseq
426
+ IF:codeurl
427
+ [&nbsp;<a href="%codeurl%" target="SOURCE_CODE" onclick="javascript:openCode('%codeurl%'); return false;">source</a>&nbsp;]
428
+ ENDIF:codeurl
429
+ </div>
430
+ IF:m_desc
431
+ <div class="description">
432
+ %m_desc%
433
+ </div>
434
+ ENDIF:m_desc
435
+ IF:aka
436
+ <div class="aka">
437
+ This method is also aliased as
438
+ START:aka
439
+ <a href="%aref%">%name%</a>
440
+ END:aka
441
+ </div>
442
+ ENDIF:aka
443
+ IF:sourcecode
444
+ <div class="sourcecode">
445
+ <p class="source-link">[ <a href="javascript:toggleSource('%aref%_source')" id="l_%aref%_source">show source</a> ]</p>
446
+ <div id="%aref%_source" class="dyn-source">
447
+ <pre>
448
+ %sourcecode%
449
+ </pre>
450
+ </div>
451
+ </div>
452
+ ENDIF:sourcecode
453
+ </div>
454
+ END:methods
455
+ ENDIF:methods
456
+ END:method_list
457
+ ENDIF:method_list
458
+ END:sections
459
+ </div>
460
+ HTML
461
+
462
+ FOOTER = <<ENDFOOTER
463
+ </body>
464
+ </html>
465
+ ENDFOOTER
466
+
467
+ BODY = HEADER + <<ENDBODY
468
+ !INCLUDE! <!-- banner header -->
469
+
470
+ <div id="bodyContent">
471
+ #{METHOD_LIST}
472
+ </div>
473
+
474
+ #{FOOTER}
475
+ ENDBODY
476
+
477
+ ########################## Source code ##########################
478
+
479
+ SRC_PAGE = XHTML_PREAMBLE + <<HTML
480
+ <html>
481
+ <head><title>%title%</title>
482
+ <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
483
+ <style type="text/css">
484
+ .ruby-comment { color: green; font-style: italic }
485
+ .ruby-constant { color: #4433aa; font-weight: bold; }
486
+ .ruby-identifier { color: #222222; }
487
+ .ruby-ivar { color: #2233dd; }
488
+ .ruby-keyword { color: #3333FF; font-weight: bold }
489
+ .ruby-node { color: #777777; }
490
+ .ruby-operator { color: #111111; }
491
+ .ruby-regexp { color: #662222; }
492
+ .ruby-value { color: #662222; font-style: italic }
493
+ .kw { color: #3333FF; font-weight: bold }
494
+ .cmt { color: green; font-style: italic }
495
+ .str { color: #662222; font-style: italic }
496
+ .re { color: #662222; }
497
+ </style>
498
+ </head>
499
+ <body bgcolor="white">
500
+ <pre>%code%</pre>
501
+ </body>
502
+ </html>
503
+ HTML
504
+
505
+ ########################## Index ################################
506
+
507
+ FR_INDEX_BODY = <<HTML
508
+ !INCLUDE!
509
+ HTML
510
+
511
+ FILE_INDEX = XHTML_PREAMBLE + <<HTML
512
+ <html>
513
+ <head>
514
+ <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
515
+ <title>Index</title>
516
+ <style type="text/css">
517
+ <!--
518
+ body {
519
+ background-color: #EEE;
520
+ font-family: #{FONTS};
521
+ color: #000;
522
+ margin: 0px;
523
+ }
524
+ .banner {
525
+ background: #005;
526
+ color: #FFF;
527
+ padding: 0.2em;
528
+ font-size: small;
529
+ font-weight: bold;
530
+ text-align: center;
531
+ }
532
+ .entries {
533
+ margin: 0.25em 1em 0 1em;
534
+ font-size: x-small;
535
+ }
536
+ a {
537
+ color: #00F;
538
+ text-decoration: none;
539
+ white-space: nowrap;
540
+ }
541
+ a:hover {
542
+ color: #77F;
543
+ text-decoration: underline;
544
+ }
545
+ -->
546
+ </style>
547
+ <base target="docwin" />
548
+ </head>
549
+ <body>
550
+ <div class="banner">%list_title%</div>
551
+ <div class="entries">
552
+ START:entries
553
+ <a href="%href%">%name%</a><br />
554
+ END:entries
555
+ </div>
556
+ </body></html>
557
+ HTML
558
+
559
+ CLASS_INDEX = FILE_INDEX
560
+ METHOD_INDEX = FILE_INDEX
561
+
562
+ INDEX = XHTML_FRAMESET_PREAMBLE + <<HTML
563
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
564
+ <head>
565
+ <title>%title%</title>
566
+ <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
567
+ </head>
568
+
569
+ <frameset cols="20%,*">
570
+ <frameset rows="15%,35%,50%">
571
+ <frame src="fr_file_index.html" title="Files" name="Files" />
572
+ <frame src="fr_class_index.html" name="Classes" />
573
+ <frame src="fr_method_index.html" name="Methods" />
574
+ </frameset>
575
+ <frame src="%initial_page%" name="docwin" />
576
+ <noframes>
577
+ <body bgcolor="white">
578
+ Click <a href="html/index.html">here</a> for a non-frames
579
+ version of this page.
580
+ </body>
581
+ </noframes>
582
+ </frameset>
583
+
584
+ </html>
585
+ HTML
586
+
587
+ end
588
+ end
589
+