| 15 |
#require 'node/node' |
#require 'node/node' |
| 16 |
require 'config' |
require 'config' |
| 17 |
|
|
|
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) } |
|
|
|
|
|
project = Model::Project.loadxml('sample.xml') |
|
|
project.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 = Model::Store.get(@tree.getItemLParamOf(hitem)) |
|
|
if @tree_selected_item |
|
|
@lab1.caption = @tree_selected_item.name |
|
|
@lab2.caption = (@tree_selected_item.kind_of?(Model::File) ? @tree_selected_item.filepath : '') |
|
|
end |
|
|
end |
|
|
|
|
|
def tree_clicked |
|
|
end |
|
|
|
|
|
def tree_dblclicked |
|
|
if @tree_selected_item && @tree_selected_item.kind_of?(Model::File) |
|
|
editor(@tree_selected_item.filepath) |
|
|
end |
|
|
end |
|
|
|
|
|
def editor(filepath) |
|
|
system(EDITOR + ' "' + filepath + '" &') |
|
|
end |
|
|
|
|
|
end |
|
|
|
|
| 18 |
VRLocalScreen.showForm(MainForm) |
VRLocalScreen.showForm(MainForm) |
| 19 |
VRLocalScreen.messageloop |
VRLocalScreen.messageloop |