| 1 |
#! /usr/bin/ruby -Ks |
#! /usr/bin/ruby -Ks |
| 2 |
|
|
| 3 |
|
#==============================================================================# |
| 4 |
|
# $Id$ |
| 5 |
|
#==============================================================================# |
| 6 |
|
|
| 7 |
|
require 'uconv' |
| 8 |
|
require 'rexml/document' |
| 9 |
require 'vr/vruby' |
require 'vr/vruby' |
| 10 |
require 'vr/vrcontrol' |
require 'vr/vrcontrol' |
| 11 |
require 'vr/vrcomctl' |
require 'vr/vrcomctl' |
| 12 |
require 'vr/vrdialog' |
require 'vr/vrdialog' |
|
require 'form/form' |
|
|
require 'model/model' |
|
|
require 'node/node' |
|
|
|
|
|
#EDITOR = '/home/yuya/bin/hidemaru' |
|
|
EDITOR = '/home/yuya/bin/rde' |
|
| 13 |
|
|
| 14 |
module WStyle |
#==============================================================================# |
| 15 |
|
|
| 16 |
SS_ETCHEDHORZ = 16 |
require 'vrext/vrext' |
| 17 |
|
require 'form/form' |
| 18 |
end |
require 'model/model' |
| 19 |
|
require 'config' |
|
class MainForm < VRForm |
|
|
|
|
|
include VRMenuUseable |
|
|
include VRStatusbarDockable |
|
|
|
|
|
def construct |
|
|
self.caption = 'Exerb Studio' |
|
|
self.move(50, 50, 300, 450) |
|
|
self.create_menu |
|
|
self.create_controls |
|
|
end |
|
|
|
|
|
def create_menu |
|
|
menu = newMenu.set( |
|
|
[ |
|
|
[ |
|
|
"&File", |
|
|
[ |
|
|
["Open Project...", "menu_file_open"], |
|
|
["E&xit", "menu_file_exit"], |
|
|
] |
|
|
], |
|
|
[ |
|
|
"&Build", |
|
|
[ |
|
|
["&Build", "menu_build_build"], |
|
|
] |
|
|
], |
|
|
[ |
|
|
"&Help", |
|
|
[ |
|
|
["&About", "menu_help_about"], |
|
|
] |
|
|
], |
|
|
] |
|
|
) |
|
|
self.setMenu(menu) |
|
|
end |
|
|
protected :create_menu |
|
|
|
|
|
def create_controls |
|
|
@imglist = VRLocalScreen.factory.newimagelist(16, 16) |
|
|
# @imglist.addicon('res/folder_close.ico') |
|
|
# @imglist.addicon('res/folder_open.ico') |
|
|
# @imglist.addicon('mail.ico') |
|
|
|
|
|
self.addStatusbar("status bar") |
|
|
|
|
|
cx, cy, cw, ch = self.clientrect |
|
|
self.addControl(VRStatic, 'line1', '', cx, cy, cw, 0, WStyle::SS_ETCHEDHORZ) |
|
|
@lab1 = self.addControl(VRStatic, 'lab1', '', cx + 5, cy + 5, cw, 16) |
|
|
@lab2 = self.addControl(VRStatic, 'lab2', '', cx + 5, cy + 21, cw, 16) |
|
|
@tree = self.addControl(VRTreeview, 'tree', '', cx, cy + 38, cw, ch - 38 - 20, WStyle::WS_BORDER) |
|
|
@tree.setImagelist(@imglist) |
|
|
|
|
|
font = @screen.factory.newfont("Terminal", 14) |
|
|
[@lab1, @lab2, @tree].each { |ctrl| ctrl.setFont(font) } |
|
|
|
|
|
exerb = Node::Group.new("Exerb") |
|
|
exerb << Node::File.new("exerb.rb", "/home/yuya/dev/exerb/bin/exerb.rb") |
|
|
vr = Node::Group.new("VisualuRuby") |
|
|
vr << Node::File.new("vruby.rb", "/usr/local/lib/ruby/site_ruby/1.6/vr/vruby.rb") |
|
|
root = Node::Group.new("Root") |
|
|
root << exerb |
|
|
root << vr |
|
|
root.create_node(@tree, WConst::TVI_ROOT) |
|
|
end |
|
|
protected :create_controls |
|
|
|
|
|
def menu_file_exit_clicked |
|
|
self.close |
|
|
end |
|
|
|
|
|
def menu_help_about_clicked |
|
|
VRLocalScreen.openModalDialog(self, nil, Form::About) |
|
|
end |
|
|
|
|
|
def tree_selchanged(hitem, lparam) |
|
|
@tree_selected_item = Node::Store.get(@tree.getItemLParamOf(hitem)) |
|
|
if @tree_selected_item |
|
|
@lab1.caption = @tree_selected_item.name |
|
|
@lab2.caption = (@tree_selected_item.kind_of?(Node::File) ? @tree_selected_item.filepath : '') |
|
|
end |
|
|
end |
|
|
|
|
|
def tree_clicked |
|
|
end |
|
|
|
|
|
def tree_dblclicked |
|
|
if @tree_selected_item && @tree_selected_item.kind_of?(Node::File) |
|
|
editor(@tree_selected_item.filepath) |
|
|
end |
|
|
end |
|
|
|
|
|
def editor(filepath) |
|
|
system(EDITOR + ' "' + filepath + '" &') |
|
|
end |
|
| 20 |
|
|
| 21 |
end |
#==============================================================================# |
| 22 |
|
|
| 23 |
VRLocalScreen.showForm(MainForm) |
VRLocalScreen.showForm(MainForm) |
| 24 |
VRLocalScreen.messageloop |
VRLocalScreen.messageloop |
| 25 |
|
|
| 26 |
|
#==============================================================================# |
| 27 |
|
#==============================================================================# |