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/History.txt +539 -93
- data/Manifest.txt +1 -0
- data/README.txt +6 -2
- data/Rakefile +25 -1
- data/TODO +4 -23
- data/bin/clevic +10 -10
- data/lib/clevic/db_options.rb +5 -3
- data/lib/clevic/model_builder.rb +2 -0
- data/lib/clevic/ui/browser_ui.rb +1 -1
- data/lib/clevic/ui/search_dialog_ui.rb +1 -1
- data/template/jamis.rb +589 -0
- metadata +26 -4
data/Manifest.txt
CHANGED
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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 )
|
data/lib/clevic/db_options.rb
CHANGED
|
@@ -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] ||= '
|
|
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
|
data/lib/clevic/model_builder.rb
CHANGED
data/lib/clevic/ui/browser_ui.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
=begin
|
|
2
2
|
** Form generated from reading ui file 'browser.ui'
|
|
3
3
|
**
|
|
4
|
-
** Created:
|
|
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:
|
|
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
|
+
(<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
|
+
(<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> </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
|
+
[ <a href="%codeurl%" target="SOURCE_CODE" onclick="javascript:openCode('%codeurl%'); return false;">source</a> ]
|
|
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
|
+
|