ctioga 1.11.1
Sign up to get free protection for your applications and to get access to all the features.
- data/COPYING +340 -0
- data/ctioga/bin/ctable +28 -0
- data/ctioga/bin/ctioga +37 -0
- data/ctioga/doc/ctable.1 +156 -0
- data/ctioga/doc/ctioga.1 +2363 -0
- data/ctioga/examples/README +46 -0
- data/ctioga/examples/ctioga.gnuplot +4 -0
- data/ctioga/examples/ctioga_within_tioga.rb +53 -0
- data/ctioga/examples/ctiogarc.rb +24 -0
- data/ctioga/examples/include_1.rb +15 -0
- data/ctioga/examples/noise.dat +100 -0
- data/ctioga/examples/noise.rb +13 -0
- data/ctioga/examples/trig.csv +100 -0
- data/ctioga/examples/trig.dat +100 -0
- data/ctioga/examples/trig.rb +14 -0
- data/ctioga/examples/trigh.dat +100 -0
- data/ctioga/examples/trigh.rb +10 -0
- data/ctioga/examples/tutorial +763 -0
- data/ctioga/examples/tutorial.sh +269 -0
- data/ctioga/tests/README +14 -0
- data/ctioga/tests/axes.sh +40 -0
- data/ctioga/tests/basic.sh +11 -0
- data/ctioga/tests/draw.sh +24 -0
- data/ctioga/tests/histograms.sh +14 -0
- data/ctioga/tests/insets.sh +41 -0
- data/ctioga/tests/layouts.sh +29 -0
- data/ctioga/tests/legends.sh +113 -0
- data/ctioga/tests/styles.sh +43 -0
- data/ctioga/tests/test_style.sh +8 -0
- data/ctioga/tests/tests.sh +24 -0
- data/ctioga/tests/text_backend.sh +83 -0
- data/ctioga/tests/tioga_defaults.rb +18 -0
- data/lib/CTioga/axes.rb +904 -0
- data/lib/CTioga/backends.rb +88 -0
- data/lib/CTioga/boundaries.rb +224 -0
- data/lib/CTioga/ctable.rb +134 -0
- data/lib/CTioga/curve_style.rb +246 -0
- data/lib/CTioga/debug.rb +199 -0
- data/lib/CTioga/dimension.rb +133 -0
- data/lib/CTioga/elements.rb +17 -0
- data/lib/CTioga/elements/base.rb +84 -0
- data/lib/CTioga/elements/containers.rb +578 -0
- data/lib/CTioga/elements/curves.rb +368 -0
- data/lib/CTioga/elements/tioga_primitives.rb +440 -0
- data/lib/CTioga/layout.rb +595 -0
- data/lib/CTioga/legends.rb +29 -0
- data/lib/CTioga/legends/cmdline.rb +187 -0
- data/lib/CTioga/legends/item.rb +164 -0
- data/lib/CTioga/legends/style.rb +257 -0
- data/lib/CTioga/log.rb +73 -0
- data/lib/CTioga/movingarrays.rb +131 -0
- data/lib/CTioga/partition.rb +271 -0
- data/lib/CTioga/plot_style.rb +230 -0
- data/lib/CTioga/plotmaker.rb +1677 -0
- data/lib/CTioga/shortcuts.rb +69 -0
- data/lib/CTioga/structures.rb +82 -0
- data/lib/CTioga/styles.rb +140 -0
- data/lib/CTioga/themes.rb +581 -0
- data/lib/CTioga/themes/classical.rb +82 -0
- data/lib/CTioga/themes/demo.rb +63 -0
- data/lib/CTioga/themes/fits.rb +91 -0
- data/lib/CTioga/themes/mono.rb +33 -0
- data/lib/CTioga/tioga.rb +32 -0
- data/lib/CTioga/utils.rb +173 -0
- data/lib/MetaBuilder/Parameters/dates.rb +38 -0
- data/lib/MetaBuilder/Parameters/lists.rb +132 -0
- data/lib/MetaBuilder/Parameters/numbers.rb +69 -0
- data/lib/MetaBuilder/Parameters/strings.rb +86 -0
- data/lib/MetaBuilder/Parameters/styles.rb +75 -0
- data/lib/MetaBuilder/Qt4/Parameters/dates.rb +51 -0
- data/lib/MetaBuilder/Qt4/Parameters/numbers.rb +65 -0
- data/lib/MetaBuilder/Qt4/Parameters/strings.rb +106 -0
- data/lib/MetaBuilder/Qt4/parameter.rb +172 -0
- data/lib/MetaBuilder/Qt4/parameters.rb +9 -0
- data/lib/MetaBuilder/descriptions.rb +603 -0
- data/lib/MetaBuilder/factory.rb +101 -0
- data/lib/MetaBuilder/group.rb +57 -0
- data/lib/MetaBuilder/metabuilder.rb +10 -0
- data/lib/MetaBuilder/parameter.rb +374 -0
- data/lib/MetaBuilder/parameters.rb +11 -0
- data/lib/MetaBuilder/qt4.rb +8 -0
- data/lib/SciYAG/Backends/backend.rb +379 -0
- data/lib/SciYAG/Backends/binner.rb +168 -0
- data/lib/SciYAG/Backends/cache.rb +102 -0
- data/lib/SciYAG/Backends/dataset.rb +158 -0
- data/lib/SciYAG/Backends/descriptions.rb +469 -0
- data/lib/SciYAG/Backends/filters.rb +25 -0
- data/lib/SciYAG/Backends/filters/average.rb +134 -0
- data/lib/SciYAG/Backends/filters/cumulate.rb +37 -0
- data/lib/SciYAG/Backends/filters/filter.rb +70 -0
- data/lib/SciYAG/Backends/filters/norm.rb +39 -0
- data/lib/SciYAG/Backends/filters/smooth.rb +63 -0
- data/lib/SciYAG/Backends/filters/sort.rb +43 -0
- data/lib/SciYAG/Backends/filters/strip.rb +34 -0
- data/lib/SciYAG/Backends/filters/trim.rb +64 -0
- data/lib/SciYAG/Backends/gnuplot.rb +131 -0
- data/lib/SciYAG/Backends/math.rb +108 -0
- data/lib/SciYAG/Backends/mdb.rb +462 -0
- data/lib/SciYAG/Backends/multitext.rb +96 -0
- data/lib/SciYAG/Backends/source.rb +64 -0
- data/lib/SciYAG/Backends/text.rb +339 -0
- data/lib/SciYAG/backends.rb +16 -0
- metadata +191 -0
@@ -0,0 +1,82 @@
|
|
1
|
+
# theme/classical.rb, copyright (c) 2007 by Vincent Fourmond:
|
2
|
+
# The "classical" theme
|
3
|
+
|
4
|
+
# This program is free software; you can redistribute it and/or modify
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
6
|
+
# the Free Software Foundation; either version 2 of the License, or
|
7
|
+
# (at your option) any later version.
|
8
|
+
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
# GNU General Public License for more details (in the COPYING file).
|
13
|
+
|
14
|
+
|
15
|
+
require 'Tioga/tioga'
|
16
|
+
require 'CTioga/themes'
|
17
|
+
require 'CTioga/movingarrays'
|
18
|
+
|
19
|
+
|
20
|
+
module CTioga
|
21
|
+
|
22
|
+
module Themes
|
23
|
+
|
24
|
+
class ClassicalTheme < BaseTheme
|
25
|
+
|
26
|
+
include Tioga::FigureConstants
|
27
|
+
|
28
|
+
# Mainly for listing purposes:
|
29
|
+
attr_reader :sets
|
30
|
+
|
31
|
+
def initialize(color_set = 'standard',
|
32
|
+
marker_set = 'standard',
|
33
|
+
# By default, the marker color will match
|
34
|
+
# the line color, even if the latter is set
|
35
|
+
# manually.
|
36
|
+
marker_color_set = :"=>color",
|
37
|
+
linestyle_set = Line_Type_Solid)
|
38
|
+
@sets = {
|
39
|
+
:colors => MovingArray.new(Styles::COLORS, color_set),
|
40
|
+
:markers => MovingArray.new(Styles::MARKERS, marker_set),
|
41
|
+
:markers_colors => MovingArray.new(Styles::COLORS,
|
42
|
+
marker_color_set),
|
43
|
+
:linestyle => MovingArray.new(Styles::LINES, linestyle_set)
|
44
|
+
}
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
def next_curve_style(name)
|
49
|
+
style = CurveStyle.new(@sets[:colors].value,
|
50
|
+
@sets[:markers].value,
|
51
|
+
@sets[:markers_colors].value,
|
52
|
+
@sets[:linestyle].value,
|
53
|
+
name,
|
54
|
+
1.0,
|
55
|
+
false, # Does not interpolate by default
|
56
|
+
0.5)
|
57
|
+
return style
|
58
|
+
end
|
59
|
+
|
60
|
+
def choose_set(type, set)
|
61
|
+
@sets[type].choose_current_set(set)
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
# Some pastel colors... Just a demonstration of what you can
|
67
|
+
# actually do.
|
68
|
+
class PastelTheme < ClassicalTheme
|
69
|
+
|
70
|
+
def initialize
|
71
|
+
super('pastel1')
|
72
|
+
end
|
73
|
+
|
74
|
+
def cmdline_extra_args
|
75
|
+
return ["--background", "FloralWhite"]
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# theme/demo.rb, copyright (c) 2007 by Vincent Fourmond:
|
2
|
+
# The "demo" theme, a theme that demonstrates some
|
3
|
+
# possibilities of the theme stuff.
|
4
|
+
|
5
|
+
# This program is free software; you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation; either version 2 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details (in the COPYING file).
|
14
|
+
|
15
|
+
|
16
|
+
# This file is intended as a small display of the possibilities
|
17
|
+
# of the theme thing. Please have a look at this code and also
|
18
|
+
# make sure you understand how the classical (default) theme is
|
19
|
+
# working, and then play around with this file.
|
20
|
+
#
|
21
|
+
# bod_hook and cmdline_extra_args can both do similar things,
|
22
|
+
# although not completely equivalent. Moreover, I find it is
|
23
|
+
# always good to have several ways to do things.
|
24
|
+
|
25
|
+
require 'CTioga/themes/classical'
|
26
|
+
|
27
|
+
module CTioga
|
28
|
+
|
29
|
+
module Themes
|
30
|
+
|
31
|
+
class DemoTheme < ClassicalTheme
|
32
|
+
|
33
|
+
def initialize
|
34
|
+
super # We don't want to use more for now
|
35
|
+
end
|
36
|
+
|
37
|
+
# To understand the following code, I can only encourage
|
38
|
+
# you to have a look at Tioga's rdoc documentation, which
|
39
|
+
# can be generated on your tioga source tree or
|
40
|
+
# browsed online at
|
41
|
+
#
|
42
|
+
# http://tioga.rubyforge.org/doc/
|
43
|
+
#
|
44
|
+
# The _t_ argument is a Tioga::FigureMaker object that
|
45
|
+
# is in charge of actually drawing the plots.
|
46
|
+
def bod_hook(t)
|
47
|
+
t.tex_fontfamily = 'sfdefault' # Sans serif fonts
|
48
|
+
t.tex_xaxis_numeric_label = '$x = #1$'
|
49
|
+
t.tex_yaxis_numeric_label = '$y = #1$'
|
50
|
+
end
|
51
|
+
|
52
|
+
# This function pushes back some arguments to the command
|
53
|
+
# line. No further processing happens, so you need to
|
54
|
+
# make sure that you did correct splitting:
|
55
|
+
# ['--marker auto'] is wrong: use ['--marker', 'auto'] instead.
|
56
|
+
def cmdline_extra_args
|
57
|
+
return ["--background", "Cornsilk"]
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
# theme/fits.rb, copyright (c) 2007 by Vincent Fourmond:
|
2
|
+
# The "fits" theme
|
3
|
+
|
4
|
+
# This program is free software; you can redistribute it and/or modify
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
6
|
+
# the Free Software Foundation; either version 2 of the License, or
|
7
|
+
# (at your option) any later version.
|
8
|
+
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
# GNU General Public License for more details (in the COPYING file).
|
13
|
+
|
14
|
+
|
15
|
+
require 'Tioga/tioga'
|
16
|
+
require 'CTioga/themes'
|
17
|
+
require 'CTioga/movingarrays'
|
18
|
+
|
19
|
+
|
20
|
+
module CTioga
|
21
|
+
|
22
|
+
module Themes
|
23
|
+
|
24
|
+
# A theme where marker-only curves (data) alternate with
|
25
|
+
# lines-only curves (fits)
|
26
|
+
class FitsTheme < BaseTheme
|
27
|
+
|
28
|
+
include Tioga::FigureConstants
|
29
|
+
|
30
|
+
# Mainly for listing purposes:
|
31
|
+
attr_reader :sets
|
32
|
+
|
33
|
+
def initialize(color_set = 'standard',
|
34
|
+
marker_set = 'standard',
|
35
|
+
# By default, the marker color will match
|
36
|
+
# the line color, even if the latter is set
|
37
|
+
# manually.
|
38
|
+
marker_color_set = :"=>color",
|
39
|
+
linestyle_set = Line_Type_Solid)
|
40
|
+
@sets = {
|
41
|
+
:colors => MovingArray.new(Styles::COLORS, color_set),
|
42
|
+
:markers => MovingArray.new(Styles::MARKERS, marker_set),
|
43
|
+
:markers_colors => MovingArray.new(Styles::COLORS,
|
44
|
+
marker_color_set),
|
45
|
+
:linestyle => MovingArray.new(Styles::LINES, linestyle_set)
|
46
|
+
}
|
47
|
+
|
48
|
+
@data = true
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
def next_curve_style(name)
|
53
|
+
if @data
|
54
|
+
@last_color = @sets[:colors].value
|
55
|
+
style = CurveStyle.new(@last_color,
|
56
|
+
@sets[:markers].value,
|
57
|
+
@last_color,
|
58
|
+
false,
|
59
|
+
name,
|
60
|
+
1.0,
|
61
|
+
false, # Does not interpolate by default
|
62
|
+
0.5)
|
63
|
+
@data = false
|
64
|
+
else
|
65
|
+
style = CurveStyle.new(@last_color,
|
66
|
+
false,
|
67
|
+
@last_color,
|
68
|
+
@sets[:linestyle].value,
|
69
|
+
name,
|
70
|
+
1.0,
|
71
|
+
true, # Data is interpolated by default
|
72
|
+
0.5)
|
73
|
+
@data = true
|
74
|
+
end
|
75
|
+
return style
|
76
|
+
end
|
77
|
+
|
78
|
+
def choose_set(type, set)
|
79
|
+
@sets[type].choose_current_set(set)
|
80
|
+
end
|
81
|
+
|
82
|
+
def cmdline_extra_args
|
83
|
+
return ["--marker", "auto"]
|
84
|
+
end
|
85
|
+
|
86
|
+
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# theme/mono.rb, copyright (c) 2007 by Vincent Fourmond:
|
2
|
+
# The "mono" theme
|
3
|
+
|
4
|
+
# This program is free software; you can redistribute it and/or modify
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
6
|
+
# the Free Software Foundation; either version 2 of the License, or
|
7
|
+
# (at your option) any later version.
|
8
|
+
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
# GNU General Public License for more details (in the COPYING file).
|
13
|
+
|
14
|
+
|
15
|
+
require 'CTioga/themes/classical'
|
16
|
+
|
17
|
+
module CTioga
|
18
|
+
|
19
|
+
module Themes
|
20
|
+
|
21
|
+
class MonoTheme < ClassicalTheme
|
22
|
+
|
23
|
+
def initialize
|
24
|
+
super(Tioga::FigureConstants::Black, 'standard',
|
25
|
+
Tioga::FigureConstants::Black, 'standard')
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
data/lib/CTioga/tioga.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# tioga.rb, copyright (c) 2006 by Vincent Fourmond:
|
2
|
+
# The interface between Tioga and CTioga (to use CTioga from within
|
3
|
+
# Tioga code)
|
4
|
+
|
5
|
+
# This program is free software; you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation; either version 2 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details (in the COPYING file).
|
14
|
+
|
15
|
+
require 'Tioga/FigureMaker'
|
16
|
+
require 'CTioga/plotmaker'
|
17
|
+
require 'shellwords'
|
18
|
+
|
19
|
+
CTioga::Version::register_svn_info('$Revision: 653 $', '$Date: 2007-11-15 21:58:42 +0100 (Thu, 15 Nov 2007) $')
|
20
|
+
|
21
|
+
class FigureMaker
|
22
|
+
|
23
|
+
|
24
|
+
def def_figure_ctioga(name, cmdline)
|
25
|
+
CTioga.define_tioga_figure(self, 'CTioga', *Shellwords.shellwords(cmdline))
|
26
|
+
end
|
27
|
+
|
28
|
+
def show_plot_ctioga(cmdline)
|
29
|
+
CTioga.show_tioga_plot(self, *Shellwords.shellwords(cmdline))
|
30
|
+
end
|
31
|
+
|
32
|
+
end # FigureMaker
|
data/lib/CTioga/utils.rb
ADDED
@@ -0,0 +1,173 @@
|
|
1
|
+
# utils.rb, copyright (c) 2006 by Vincent Fourmond:
|
2
|
+
# Some small utility functions
|
3
|
+
|
4
|
+
# This program is free software; you can redistribute it and/or modify
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
6
|
+
# the Free Software Foundation; either version 2 of the License, or
|
7
|
+
# (at your option) any later version.
|
8
|
+
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
# GNU General Public License for more details (in the COPYING file).
|
13
|
+
|
14
|
+
require 'Tioga/FigureMaker'
|
15
|
+
|
16
|
+
module CTioga
|
17
|
+
|
18
|
+
# A module for small convenience functions.
|
19
|
+
module Utils
|
20
|
+
|
21
|
+
# A function that interprets a string according to a hash, and
|
22
|
+
# returns either what was found in the hash, or the result of the
|
23
|
+
# given block if that was not found -- or just the original string
|
24
|
+
# itself when no block was given and no corresponding hash element
|
25
|
+
# was found. Correspondance is done with the === operator.
|
26
|
+
#
|
27
|
+
# Actually, the first argument doesn't need to be a string.
|
28
|
+
def self.interpret_arg(arg, hash)
|
29
|
+
for key, val in hash
|
30
|
+
if key === arg
|
31
|
+
return val
|
32
|
+
end
|
33
|
+
end
|
34
|
+
if block_given?
|
35
|
+
return yield(arg)
|
36
|
+
else
|
37
|
+
return arg
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
# Returns a frame specification from a classical array
|
42
|
+
def self.framespec_str(a)
|
43
|
+
return "top : #{a[2]} bottom: #{a[3]} " +
|
44
|
+
"left : #{a[0]} right: #{a[1]}"
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.frames_str(t)
|
48
|
+
return framespec_str([t.frame_left, t.frame_right,
|
49
|
+
t.frame_top, t.frame_bottom])
|
50
|
+
end
|
51
|
+
|
52
|
+
# A function that takes care of converting the given parameter
|
53
|
+
# to a float, while ensuring that it was decently taken care of.
|
54
|
+
# Returns false if that happens not to be a float.
|
55
|
+
def safe_float(a)
|
56
|
+
return begin
|
57
|
+
Float(a)
|
58
|
+
rescue
|
59
|
+
warn "Expected a float, but got '#{a}' instead"
|
60
|
+
false
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# A function that 'applies' a margin specification (like for
|
65
|
+
# show_plot_with_legend) to a frame spec (left,right,top,bottom).
|
66
|
+
#
|
67
|
+
# The margin spec has to contain all plot_*_margin things.
|
68
|
+
def self.apply_margin_to_frame(frame, margin)
|
69
|
+
width = frame[1] - frame[0]
|
70
|
+
height = frame[2] - frame[3]
|
71
|
+
dest =
|
72
|
+
[
|
73
|
+
frame[0] + width * (margin['plot_left_margin'] ||
|
74
|
+
margin['left']),
|
75
|
+
frame[1] - width * (margin['plot_right_margin']||
|
76
|
+
margin['right']),
|
77
|
+
frame[2] - height * (margin['plot_top_margin'] ||
|
78
|
+
margin['top']),
|
79
|
+
frame[3] + height * (margin['plot_bottom_margin'] ||
|
80
|
+
margin['bottom'])
|
81
|
+
]
|
82
|
+
return dest
|
83
|
+
end
|
84
|
+
|
85
|
+
def self.margin_hash(a)
|
86
|
+
if Hash === a
|
87
|
+
return a
|
88
|
+
else
|
89
|
+
return {
|
90
|
+
'left' => a[0],
|
91
|
+
'right' => a[1],
|
92
|
+
'top' => a[2],
|
93
|
+
'bottom' => a[3]
|
94
|
+
}
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
|
99
|
+
# Converts a location into the index of the corresponding
|
100
|
+
# coordinates...
|
101
|
+
Locations = {
|
102
|
+
Tioga::FigureConstants::LEFT => 0,
|
103
|
+
Tioga::FigureConstants::RIGHT => 1,
|
104
|
+
Tioga::FigureConstants::TOP => 2,
|
105
|
+
Tioga::FigureConstants::BOTTOM => 3,
|
106
|
+
}
|
107
|
+
|
108
|
+
def self.location_index(d)
|
109
|
+
return Locations[d]
|
110
|
+
end
|
111
|
+
|
112
|
+
|
113
|
+
FrameNames = {
|
114
|
+
:left => 0,
|
115
|
+
:right => 1,
|
116
|
+
:bottom => 2,
|
117
|
+
:top => 3
|
118
|
+
}
|
119
|
+
|
120
|
+
|
121
|
+
# Returns true if the spec is left, right, top or bottom
|
122
|
+
def self.side?(spec)
|
123
|
+
return FrameNames.key?(spec.to_sym)
|
124
|
+
end
|
125
|
+
|
126
|
+
# Returns the position corresponding to the side:
|
127
|
+
def self.side(spec)
|
128
|
+
return FrameNames[spec.to_sym]
|
129
|
+
end
|
130
|
+
|
131
|
+
end
|
132
|
+
|
133
|
+
# A small module to deal with versions and dates
|
134
|
+
module Version
|
135
|
+
|
136
|
+
# The position of the URL, used for getting the version
|
137
|
+
SVN_URL = '$HeadURL: svn+ssh://rubyforge.org/var/svn/sciyag/trunk/SciYAG/ctioga/lib/utils.rb $'
|
138
|
+
|
139
|
+
CTIOGA_VERSION = if SVN_URL =~ /releases\/ctioga-([^\/]+)/
|
140
|
+
$1
|
141
|
+
else
|
142
|
+
"SVN version"
|
143
|
+
end
|
144
|
+
|
145
|
+
# The current version of the program.
|
146
|
+
def self.version
|
147
|
+
if CTIOGA_VERSION =~ /SVN/
|
148
|
+
return "SVN, revision #{SVN_INFO['revision']}, #{SVN_INFO['date']}"
|
149
|
+
else
|
150
|
+
return CTIOGA_VERSION
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
SVN_INFO = {
|
155
|
+
'revision' => 0,
|
156
|
+
'date' => "old"
|
157
|
+
}
|
158
|
+
|
159
|
+
def self.register_svn_info(rev_str, date_str)
|
160
|
+
if rev_str =~ /(\d+)/
|
161
|
+
rev = $1
|
162
|
+
str = 'Date'
|
163
|
+
date = date_str.gsub(/\$#{str}: (.*)\$/) { $1 }
|
164
|
+
if SVN_INFO['revision'] < rev.to_i
|
165
|
+
SVN_INFO['revision'] = rev.to_i
|
166
|
+
SVN_INFO['date'] = date
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
register_svn_info('$Revision: 780 $', '$Date: 2008-03-09 14:25:14 +0100 (Sun, 09 Mar 2008) $')
|
172
|
+
end
|
173
|
+
end
|