lustr-wx 0.1.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.
data/History.txt ADDED
@@ -0,0 +1,4 @@
1
+ +++ 0.1.0 2007-05-23
2
+
3
+ + 1 major enhancement:
4
+ + Initial release
data/Manifest.txt ADDED
@@ -0,0 +1,17 @@
1
+ History.txt
2
+ Manifest.txt
3
+ README.txt
4
+ Rakefile
5
+ lib/lustr-wx.rb
6
+ lib/lustr-wx/version.rb
7
+ lib/lustr-wx/field.rb
8
+ lib/lustr-wx/label.rb
9
+ lib/lustr-wx/list.rb
10
+ lib/lustr-wx/button.rb
11
+ lib/lustr-wx/box.rb
12
+ lib/lustr-wx/app.rb
13
+ lib/lustr-wx/text_area.rb
14
+ lib/lustr-wx/divided_box.rb
15
+ scripts/txt2html
16
+ setup.rb
17
+
data/README.txt ADDED
@@ -0,0 +1,6 @@
1
+ Lustr is a Ruby DSL for GUI development. Lustr4Wx allows Lustr UIs to be
2
+ displayed via Ruby's wxRuby (using wxWidgets).
3
+
4
+ More details on Lustr can be found at {Lustr's home page}[http://www.codecorps.org/moinmoin/index.cgi/Lustr]
5
+ or on the {RubyForge}[http://rubyforge.org/projects/lustr] site.
6
+
data/Rakefile ADDED
@@ -0,0 +1,93 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'rake/clean'
4
+ require 'rake/testtask'
5
+ require 'rake/packagetask'
6
+ require 'rake/gempackagetask'
7
+ require 'rake/rdoctask'
8
+ require 'rake/contrib/rubyforgepublisher'
9
+ require 'fileutils'
10
+ require 'hoe'
11
+ include FileUtils
12
+ require File.join(File.dirname(__FILE__), 'lib', 'lustr-wx', 'version')
13
+
14
+ AUTHOR = 'FIXME full name' # can also be an array of Authors
15
+ EMAIL = "FIXME email"
16
+ DESCRIPTION = "description of gem"
17
+ GEM_NAME = 'lustr-wx' # what ppl will type to install your gem
18
+ RUBYFORGE_PROJECT = 'lustr' # The unix name for your project
19
+ HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
20
+ DOWNLOAD_PATH = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
21
+
22
+ NAME = "lustr-wx"
23
+ REV = nil # UNCOMMENT IF REQUIRED: File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
24
+ VERS = Lustr4Wx::VERSION::STRING + (REV ? ".#{REV}" : "")
25
+ CLEAN.include ['**/.*.sw?', '*.gem', '.config', '**/.DS_Store']
26
+ RDOC_OPTS = ['--quiet', '--title', 'lustr-wx documentation',
27
+ "--opname", "index.html",
28
+ "--line-numbers",
29
+ "--main", "README",
30
+ "--inline-source"]
31
+
32
+ class Hoe
33
+ def extra_deps
34
+ @extra_deps.reject { |x| Array(x).first == 'hoe' }
35
+ end
36
+ end
37
+
38
+ # Generate all the Rake tasks
39
+ # Run 'rake -T' to see list of generated tasks (from gem root directory)
40
+ hoe = Hoe.new(GEM_NAME, VERS) do |p|
41
+ p.author = AUTHOR
42
+ p.description = DESCRIPTION
43
+ p.email = EMAIL
44
+ p.summary = DESCRIPTION
45
+ p.url = HOMEPATH
46
+ p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
47
+ p.test_globs = ["test/**/test_*.rb"]
48
+ p.clean_globs = CLEAN #An array of file patterns to delete on clean.
49
+
50
+ # == Optional
51
+ p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
52
+ p.extra_deps = [['lustr-core', '>=0.1'], ['wxruby2-preview', '>=0.0.40']] # An array of rubygem dependencies [name, version], e.g. [ ['active_support', '>= 1.3.1'] ]
53
+ #p.spec_extras = {} # A hash of extra values to set in the gemspec.
54
+ end
55
+
56
+
57
+ desc 'Generate website files'
58
+ task :website_generate do
59
+ Dir['website/**/*.txt'].each do |txt|
60
+ sh %{ ruby scripts/txt2html #{txt} > #{txt.gsub(/txt$/,'html')} }
61
+ end
62
+ end
63
+
64
+ desc 'Upload website files to rubyforge'
65
+ task :website_upload do
66
+ config = YAML.load(File.read(File.expand_path("~/.rubyforge/user-config.yml")))
67
+ host = "#{config["username"]}@rubyforge.org"
68
+ remote_dir = "/var/www/gforge-projects/#{RUBYFORGE_PROJECT}/"
69
+ # remote_dir = "/var/www/gforge-projects/#{RUBYFORGE_PROJECT}/#{GEM_NAME}"
70
+ local_dir = 'website'
71
+ sh %{rsync -av #{local_dir}/ #{host}:#{remote_dir}}
72
+ end
73
+
74
+ desc 'Generate and upload website files'
75
+ task :website => [:website_generate, :website_upload]
76
+
77
+ desc 'Release the website and new gem version'
78
+ task :deploy => [:check_version, :website, :release]
79
+
80
+ desc 'Runs tasks website_generate and install_gem as a local deployment of the gem'
81
+ task :local_deploy => [:website_generate, :install_gem]
82
+
83
+ task :check_version do
84
+ unless ENV['VERSION']
85
+ puts 'Must pass a VERSION=x.y.z release version'
86
+ exit
87
+ end
88
+ unless ENV['VERSION'] == VERS
89
+ puts "Please update your version.rb to match the release version, currently #{VERS}"
90
+ exit
91
+ end
92
+ end
93
+
data/lib/lustr-wx.rb ADDED
@@ -0,0 +1,17 @@
1
+ =begin
2
+ This file is part of Lustr (http://rubyforge.org/projects/lustr).
3
+
4
+ Copyright (c) 2007 Mark L. Murphy.
5
+
6
+ Lustr is free software; you can redistribute it and/or modify it under the
7
+ terms of the GNU General Public License as published by the Free Software
8
+ Foundation; either version 2 of the License.
9
+
10
+ Lustr is distributed in the hope that it will be useful, but WITHOUT ANY
11
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13
+ details. This file is included in the Ruby gem as License.txt.
14
+ =end
15
+
16
+ path=File::join(File::dirname(__FILE__), 'lustr-wx')
17
+ Dir[path+'/**'].sort.each {|f| require f if !File.directory?(f) && /.*\.rb$/.match(f) }
@@ -0,0 +1,49 @@
1
+ =begin
2
+ This file is part of Lustr (http://rubyforge.org/projects/lustr).
3
+
4
+ Copyright (c) 2007 Mark L. Murphy.
5
+
6
+ Lustr is free software; you can redistribute it and/or modify it under the
7
+ terms of the GNU General Public License as published by the Free Software
8
+ Foundation; either version 2 of the License.
9
+
10
+ Lustr is distributed in the hope that it will be useful, but WITHOUT ANY
11
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13
+ details. This file is included in the Ruby gem as License.txt.
14
+ =end
15
+
16
+ require 'lustr'
17
+ require 'rubygems'
18
+ require "wx" # wxruby2
19
+
20
+ module Lustr4Wx
21
+ class Frame < Wx::Frame
22
+ include Lustr::WidgetBase
23
+ end
24
+
25
+ class App < Wx::App
26
+ include Lustr::WidgetBase
27
+ attr_reader :frame
28
+ attr_accessor :init_block
29
+
30
+ def on_init
31
+ self.controller=option(:controller) if option(:controller)
32
+ @frame=Lustr4Wx::Frame.new(nil, -1, option(:title))
33
+ frame.set_client_size(Wx::Size.new(option(:width), option(:height)))
34
+ init_block.call if init_block
35
+ frame.show
36
+ end
37
+
38
+ def resolve
39
+ return frame
40
+ end
41
+
42
+ def show
43
+ main_loop
44
+ end
45
+ end
46
+ end
47
+
48
+ Lustr.declare(Lustr::SimpleBuilder.new(:app, Lustr4Wx::App))
49
+
@@ -0,0 +1,78 @@
1
+ =begin
2
+ This file is part of Lustr (http://rubyforge.org/projects/lustr).
3
+
4
+ Copyright (c) 2007 Mark L. Murphy.
5
+
6
+ Lustr is free software; you can redistribute it and/or modify it under the
7
+ terms of the GNU General Public License as published by the Free Software
8
+ Foundation; either version 2 of the License.
9
+
10
+ Lustr is distributed in the hope that it will be useful, but WITHOUT ANY
11
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13
+ details. This file is included in the Ruby gem as License.txt.
14
+ =end
15
+
16
+ require 'lustr'
17
+ require 'rubygems'
18
+ require "wx" # wxruby2
19
+ include Wx
20
+
21
+ module Lustr4Wx
22
+ class Box < Wx::Panel
23
+ include Lustr::WidgetBase
24
+
25
+ def init_options(options)
26
+ super
27
+
28
+ self.label=option(:label)
29
+ sizerStyle=(option(:direction)==:vertical ? Wx::VERTICAL : Wx::HORIZONTAL)
30
+
31
+ set_sizer(Wx::BoxSizer.new(sizerStyle))
32
+ end
33
+
34
+ def is_vertical?
35
+ option(:direction)==:vertical
36
+ end
37
+
38
+ def <<(child)
39
+ super
40
+
41
+ axis=nil
42
+ off_axis=nil
43
+
44
+ if is_vertical?
45
+ axis=child.option(:height)
46
+ off_axis=child.option(:width)
47
+ else
48
+ axis=child.option(:width)
49
+ off_axis=child.option(:height)
50
+ end
51
+
52
+ flags=0
53
+
54
+ if off_axis=='100%'
55
+ flags |= Wx::GROW
56
+ end
57
+
58
+ if option(:align)==:center
59
+ flags |= (is_vertical? ? Wx::ALIGN_CENTER_HORIZONTAL : Wx::ALIGN_CENTER_VERTICAL)
60
+ else
61
+ flags |= (is_vertical? ? Wx::ALIGN_LEFT : Wx::ALIGN_TOP)
62
+ end
63
+
64
+ get_sizer.add(child.resolve, axis.to_i, flags, 2)
65
+ end
66
+ end
67
+
68
+ class BoxBuilder < Lustr::BuilderBase
69
+ def build(parent_widget)
70
+ w=Lustr4Wx::Box.new(parent_widget, -1)
71
+
72
+ return w
73
+ end
74
+ end
75
+ end
76
+
77
+ Lustr.declare(Lustr4Wx::BoxBuilder.new(:box))
78
+
@@ -0,0 +1,42 @@
1
+ =begin
2
+ This file is part of Lustr (http://rubyforge.org/projects/lustr).
3
+
4
+ Copyright (c) 2007 Mark L. Murphy.
5
+
6
+ Lustr is free software; you can redistribute it and/or modify it under the
7
+ terms of the GNU General Public License as published by the Free Software
8
+ Foundation; either version 2 of the License.
9
+
10
+ Lustr is distributed in the hope that it will be useful, but WITHOUT ANY
11
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13
+ details. This file is included in the Ruby gem as License.txt.
14
+ =end
15
+
16
+ require 'lustr'
17
+ require 'rubygems'
18
+ require "wx" # wxruby2
19
+ include Wx
20
+
21
+ module Lustr4Wx
22
+ class Button < Wx::Button
23
+ include Lustr::WidgetBase
24
+
25
+ def init_options(options)
26
+ super
27
+
28
+ evt_button(get_id()) { |event| raise_event(option(:on_click), event) } if option(:on_click)
29
+ set_label(option(:text))
30
+ end
31
+ end
32
+
33
+ class ButtonBuilder < Lustr::BuilderBase
34
+ def build(parent_widget)
35
+ button=Lustr4Wx::Button.new(parent_widget, -1, '')
36
+
37
+ return button
38
+ end
39
+ end
40
+ end
41
+
42
+ Lustr.declare(Lustr4Wx::ButtonBuilder.new(:button))
@@ -0,0 +1,53 @@
1
+ =begin
2
+ This file is part of Lustr (http://rubyforge.org/projects/lustr).
3
+
4
+ Copyright (c) 2007 Mark L. Murphy.
5
+
6
+ Lustr is free software; you can redistribute it and/or modify it under the
7
+ terms of the GNU General Public License as published by the Free Software
8
+ Foundation; either version 2 of the License.
9
+
10
+ Lustr is distributed in the hope that it will be useful, but WITHOUT ANY
11
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13
+ details. This file is included in the Ruby gem as License.txt.
14
+ =end
15
+
16
+ require 'lustr'
17
+ require 'rubygems'
18
+ require "wx" # wxruby2
19
+ include Wx
20
+
21
+ module Lustr4Wx
22
+ class DividedBox < Wx::SplitterWindow
23
+ include Lustr::WidgetBase
24
+
25
+ def init_options(options)
26
+ super
27
+
28
+ @direction=option(:direction)
29
+ self.label=option(:label)
30
+ end
31
+
32
+ def <<(child)
33
+ super
34
+
35
+ if children.size==2
36
+ if @direction==:vertical
37
+ split_horizontally(children[0].resolve, children[1].resolve)
38
+ else
39
+ split_vertically(children[0].resolve, children[1].resolve)
40
+ end
41
+ end
42
+ end
43
+ end
44
+
45
+ class DividedBoxBuilder < Lustr::BuilderBase
46
+ def build(parent_widget)
47
+ Lustr4Wx::DividedBox.new(parent_widget, -1)
48
+ end
49
+ end
50
+ end
51
+
52
+ Lustr.declare(Lustr4Wx::DividedBoxBuilder.new(:divided_box))
53
+
@@ -0,0 +1,51 @@
1
+ =begin
2
+ This file is part of Lustr (http://rubyforge.org/projects/lustr).
3
+
4
+ Copyright (c) 2007 Mark L. Murphy.
5
+
6
+ Lustr is free software; you can redistribute it and/or modify it under the
7
+ terms of the GNU General Public License as published by the Free Software
8
+ Foundation; either version 2 of the License.
9
+
10
+ Lustr is distributed in the hope that it will be useful, but WITHOUT ANY
11
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13
+ details. This file is included in the Ruby gem as License.txt.
14
+ =end
15
+
16
+ require 'lustr'
17
+ require 'rubygems'
18
+ require "wx" # wxruby2
19
+ include Wx
20
+
21
+ module Lustr4Wx
22
+ class Field < Wx::TextCtrl
23
+ include Lustr::WidgetBase
24
+
25
+ def text=(value)
26
+ set_value (value ? value : '')
27
+ end
28
+
29
+ def text
30
+ return get_value
31
+ end
32
+
33
+ def init_options(options)
34
+ super
35
+
36
+ text=option(:text)
37
+ evt_text(get_id()) { |e| raise_event(option(:on_change), e) } if option(:on_change)
38
+ end
39
+ end
40
+
41
+ class FieldBuilder < Lustr::BuilderBase
42
+ def build(parent_widget)
43
+ field=Lustr4Wx::Field.new(parent_widget, -1)
44
+
45
+ return field
46
+ end
47
+ end
48
+ end
49
+
50
+ Lustr.declare(Lustr4Wx::FieldBuilder.new(:field))
51
+
@@ -0,0 +1,50 @@
1
+ =begin
2
+ This file is part of Lustr (http://rubyforge.org/projects/lustr).
3
+
4
+ Copyright (c) 2007 Mark L. Murphy.
5
+
6
+ Lustr is free software; you can redistribute it and/or modify it under the
7
+ terms of the GNU General Public License as published by the Free Software
8
+ Foundation; either version 2 of the License.
9
+
10
+ Lustr is distributed in the hope that it will be useful, but WITHOUT ANY
11
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13
+ details. This file is included in the Ruby gem as License.txt.
14
+ =end
15
+
16
+ require 'lustr'
17
+ require 'rubygems'
18
+ require "wx" # wxruby2
19
+ include Wx
20
+
21
+ module Lustr4Wx
22
+ class Label < Wx::StaticText
23
+ include Lustr::WidgetBase
24
+
25
+ def text=(value)
26
+ set_label value
27
+ end
28
+
29
+ def text
30
+ return get_label
31
+ end
32
+
33
+ def init_options(options)
34
+ super
35
+
36
+ self.text=option(:text)
37
+ end
38
+ end
39
+
40
+ class LabelBuilder < Lustr::BuilderBase
41
+ def build(parent_widget)
42
+ result=Lustr4Wx::Label.new(parent_widget, -1, '')
43
+
44
+ return result
45
+ end
46
+ end
47
+ end
48
+
49
+ Lustr.declare(Lustr4Wx::LabelBuilder.new(:label))
50
+