[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Windstille-devel] rev 397 - trunk/src
From: |
Ingo Ruhnke |
Subject: |
[Windstille-devel] rev 397 - trunk/src |
Date: |
Sun, 06 Jun 2004 20:55:43 +0200 |
Author: grumbel
Date: 2004-06-06 20:55:42 +0200 (Sun, 06 Jun 2004)
New Revision: 397
Added:
trunk/src/gui2.rb
Modified:
trunk/src/flexlay.rb
trunk/src/gui.rb
trunk/src/supertux.rb
Log:
- more fixes to the ruby editor
Modified: trunk/src/flexlay.rb
===================================================================
--- trunk/src/flexlay.rb 2004-06-06 18:18:55 UTC (rev 396)
+++ trunk/src/flexlay.rb 2004-06-06 18:55:42 UTC (rev 397)
@@ -58,18 +58,22 @@
end
def run(func)
- connect(@ok_button.sig_clicked(), @on_ok)
- connect(@cancel_button.sig_clicked(), @on_cancel)
+ connect(@ok_button.sig_clicked(), method(:on_ok))
+ connect(@cancel_button.sig_clicked(), method(:on_cancel))
@callback = func
@window.show()
end
def on_ok()
+ print "OK: ", @callback
@window.hide();
- @callback.call(@inputbox.get_text())
+ if @callback
+ @callback.call(@inputbox.get_text())
+ end
end
def on_cancel()
+ print "CANCEL"
@window.hide();
end
end
Modified: trunk/src/gui.rb
===================================================================
--- trunk/src/gui.rb 2004-06-06 18:18:55 UTC (rev 396)
+++ trunk/src/gui.rb 2004-06-06 18:55:42 UTC (rev 397)
@@ -14,7 +14,7 @@
def initialize(tileset, gui)
@selector_window = Panel.new(CL_Rect.new(CL_Point.new(800-134, 23+33),
CL_Size.new(128 + 6, 558)),
- gui.get_component())
+ $gui.get_component())
@tileselector = TileSelector.new(CL_Rect.new(CL_Point.new(3, 3),
CL_Size.new(128, 552)), @selector_window)
@tileselector.set_tileset(tileset)
@tileselector.set_tiles((1..100).to_a)
@@ -46,22 +46,23 @@
end
def gui_level_save_as()
- save_dialog.set_filename(os.path.dirname(save_dialog.get_filename()) + "/")
- save_dialog.run(supertux_save_level)
+ $save_dialog.set_filename(File.dirname($save_dialog.get_filename()) + "/")
+ $save_dialog.run(proc{|filename| supertux_save_level(filename) })
end
def gui_level_save()
- if $workspace.get_map().get_metadata().filename
- save_dialog.set_filename($workspace.get_map().get_metadata().filename)
- else
- save_dialog.set_filename(os.path.dirname(save_dialog.get_filename()) +
"/")
+ filename = $workspace.get_map().get_metadata().parent.filename
+ if filename
+ $save_dialog.set_filename(filename)
+ else # FIXME
+ $save_dialog.set_filename(File.dirname($save_dialog.get_filename()) + "/")
end
- save_dialog.run(supertux_save_level)
+ $save_dialog.run(proc{|filename| supertux_save_level(filename) })
end
def gui_level_load()
- load_dialog.run(supertux_load_level)
+ $load_dialog.run(proc{|filename| supertux_load_level(filename) })
end
def gui_toggle_minimap()
@@ -79,23 +80,23 @@
tilemap.set_draw_grid(!tilemap.get_draw_grid())
if tilemap.get_draw_grid()
- grid_icon.set_down()
+ $grid_icon.set_down()
else
- grid_icon.set_up()
+ $grid_icon.set_up()
end
end
def on_map_change()
if ($workspace.get_map().undo_stack_size() > 0)
- undo_icon.enable()
+ $undo_icon.enable()
else
- undo_icon.disable()
+ $undo_icon.disable()
end
if ($workspace.get_map().redo_stack_size() > 0)
- redo_icon.enable()
+ $redo_icon.enable()
else
- redo_icon.disable()
+ $redo_icon.disable()
end
end
@@ -197,8 +198,8 @@
end
def gui_resize_level()
- level = $workspace.get_map().get_data()
- dialog = GenericDialog.new("Resize Level", gui.get_component())
+ level = $workspace.get_map().get_metadata()
+ dialog = GenericDialog.new("Resize Level", $gui.get_component())
dialog.add_int("Width: ", level.width)
dialog.add_int("Height: ", level.height)
dialog.add_int("X: ", 0)
@@ -208,8 +209,8 @@
end
def gui_resize_level_to_selection()
- level = $workspace.get_map().get_data()
- rect = tilemap_select_tool.get_selection_rect()
+ level = $workspace.get_map().get_metadata()
+ rect = $tilemap_select_tool.get_selection_rect()
if (rect.get_width() > 2 and rect.get_height() > 2)
level.resize(rect.get_size(), CL_Point.new(-rect.left, -rect.top))
end
@@ -222,7 +223,7 @@
if not(config.recent_files.find(filename)) then
config.recent_files.append(filename)
- recent_files_menu.add_item($mysprite, filename,
+ $recent_files_menu.add_item($mysprite, filename,
proc { supertux_load_level(filename) })
end
@@ -250,17 +251,17 @@
end
def gui_switch_sector_menu()
- mymenu = Menu.new(CL_Point.new(530, 54), gui.get_component())
+ mymenu = Menu.new(CL_Point.new(530, 54), $gui.get_component())
for i in $workspace.get_map().get_metadata().parent.get_sectors()
mymenu.add_item($mysprite, "Sector (%s)" % i,
- proc {
$workspace.get_map().get_metadata().parent.activate_sector(i, workspace) })
+ proc {
$workspace.get_map().get_metadata().parent.activate_sector(i, $workspace) })
end
mymenu.run()
end
def gui_add_sector()
- level = $workspace.get_map().get_data().get_level()
- dialog = GenericDialog.new("Add Sector", gui.get_component())
+ level = $workspace.get_map().get_metadata().get_level()
+ dialog = GenericDialog.new("Add Sector", $gui.get_component())
name = "newsector"
width = 50
Added: trunk/src/gui2.rb
===================================================================
--- trunk/src/gui2.rb 2004-06-06 18:18:55 UTC (rev 396)
+++ trunk/src/gui2.rb 2004-06-06 18:55:42 UTC (rev 397)
@@ -0,0 +1,202 @@
+args = []
+
+if args == []
+ startlevel = Level.new(100, 50)
+ startlevel.activate($workspace)
+else
+ supertux_load_level(args[0])
+end
+
+button_panel = Panel.new(CL_Rect.new(CL_Point.new(0, 23), CL_Size.new(800,
33)), $gui.get_component())
+
+class Counter
+ counter = 0;
+
+ def initialize(i)
+ @counter = i
+ end
+
+ def inc(i)
+ @counter += i
+ return @counter
+ end
+end
+
+p = Counter.new(2)
+
+$new_icon = Icon.new(CL_Rect.new(CL_Point.new(p.inc(0), 2), CL_Size.new(32,
32)),
+ make_sprite("../data/images/icons24/stock_new.png"), "Some
tooltip", button_panel);
+$load_icon = Icon.new(CL_Rect.new(CL_Point.new(p.inc(32), 2), CL_Size.new(32,
32)),
+ make_sprite("../data/images/icons24/stock_open.png"),
"Some tooltip", button_panel);
+$load_recent_icon = Icon.new(CL_Rect.new(CL_Point.new(p.inc(32), 2),
CL_Size.new(16, 32)),
+ make_sprite("../data/images/icons24/downarrow.png"),
"Some tooltip", button_panel);
+$save_icon = Icon.new(CL_Rect.new(CL_Point.new(p.inc(16), 2),
CL_Size.new(32, 32)),
+ make_sprite("../data/images/icons24/stock_save.png"),
"Some tooltip", button_panel);
+$save_as_icon = Icon.new(CL_Rect.new(CL_Point.new(p.inc(32), 2),
CL_Size.new(32, 32)),
+
make_sprite("../data/images/icons24/stock_save_as.png"), "Some tooltip",
button_panel);
+
+$load_icon.set_callback(proc{ gui_level_load() })
+$load_recent_icon.set_callback(proc{ $recent_files_menu.run() })
+$save_icon.set_callback(proc{ gui_level_save() })
+$save_as_icon.set_callback(proc{ gui_level_save_as() })
+
+$copy_icon = Icon.new(CL_Rect.new(CL_Point.new(p.inc(48), 2),
CL_Size.new(32, 32)),
+ make_sprite("../data/images/icons24/stock_copy.png"),
"Some tooltip", button_panel);
+$paste_icon = Icon.new(CL_Rect.new(CL_Point.new(p.inc(32), 2),
CL_Size.new(32, 32)),
+ make_sprite("../data/images/icons24/stock_paste.png"),
"Some tooltip", button_panel);
+
+$undo_icon = Icon.new(CL_Rect.new(CL_Point.new(p.inc(48), 2), CL_Size.new(32,
32)),
+ make_sprite("../data/images/icons24/stock_undo.png"), "Some
tooltip", button_panel);
+$redo_icon = Icon.new(CL_Rect.new(CL_Point.new(p.inc(32), 2), CL_Size.new(32,
32)),
+ make_sprite("../data/images/icons24/stock_redo.png"), "Some
tooltip", button_panel);
+
+$undo_icon.set_callback(proc{ $workspace.get_map().undo() })
+$redo_icon.set_callback(proc{ $workspace.get_map().redo() })
+
+$undo_icon.disable()
+$redo_icon.disable()
+
+$minimap_icon = Icon.new(CL_Rect.new(CL_Point.new(p.inc(48), 2),
CL_Size.new(32, 32)),
+ make_sprite("../data/images/icons24/minimap.png"), "Some
tooltip", button_panel);
+$minimap_icon.set_callback(proc{ gui_toggle_minimap() })
+
+$grid_icon = Icon.new(CL_Rect.new(CL_Point.new(p.inc(32), 2), CL_Size.new(32,
32)),
+ make_sprite("../data/images/icons24/grid.png"), "Some
tooltip", button_panel);
+$grid_icon.set_callback(proc{ gui_toggle_grid() })
+
+$background_icon = Icon.new(CL_Rect.new(CL_Point.new(p.inc(48), 2),
CL_Size.new(32, 32)),
+ make_sprite("../data/images/icons24/background.png"),
"Some tooltip", button_panel);
+$interactive_icon = Icon.new(CL_Rect.new(CL_Point.new(p.inc(32), 2),
CL_Size.new(32, 32)),
+ make_sprite("../data/images/icons24/interactive.png"),
"Some tooltip", button_panel);
+$foreground_icon = Icon.new(CL_Rect.new(CL_Point.new(p.inc(32), 2),
CL_Size.new(32, 32)),
+ make_sprite("../data/images/icons24/foreground.png"),
"Some tooltip", button_panel);
+$eye_icon = Icon.new(CL_Rect.new(CL_Point.new(p.inc(32), 2),
CL_Size.new(32, 32)),
+ make_sprite("../data/images/icons24/eye.png"), "Some
tooltip", button_panel);
+
+$sector_icon = Icon.new(CL_Rect.new(CL_Point.new(p.inc(48), 2),
CL_Size.new(32, 32)),
+
make_sprite("../data/images/icons24/sector.png"), "Some tooltip", button_panel);
+
+$sector_icon.set_callback(proc{ gui_switch_sector_menu() })
+
+$layer_menu = Menu.new(CL_Point.new(32*15+2, 54), $gui.get_component())
+
+$toolbar = Panel.new(CL_Rect.new(CL_Point.new(0, 23+33), CL_Size.new(33,
32*4+2)), $gui.get_component())
+
+$paint = Icon.new(CL_Rect.new(CL_Point.new(2, 32*0+2), CL_Size.new(32, 32)),
make_sprite("../data/images/tools/stock-tool-pencil-22.png"), "Some tooltip",
$toolbar);
+$paint.set_callback(proc{ set_tilemap_paint_tool() })
+
+$select = Icon.new(CL_Rect.new(CL_Point.new(2, 32*1+2), CL_Size.new(32,32)),
make_sprite("../data/images/tools/stock-tool-rect-select-22.png"), "Some
tooltip", $toolbar);
+$select.set_callback(proc{ set_tilemap_select_tool() })
+
+$zoom = Icon.new(CL_Rect.new(CL_Point.new(2, 32*2+2), CL_Size.new(32,32)),
make_sprite("../data/images/tools/stock-tool-zoom-22.png"), "Some tooltip",
$toolbar);
+$zoom.set_callback(proc{ set_zoom_tool() })
+
+$object = Icon.new(CL_Rect.new(CL_Point.new(2, 32*3+2), CL_Size.new(32,32)),
make_sprite("../data/images/tools/stock-tool-clone-22.png"), "Some tooltip",
$toolbar);
+$object.set_callback(proc{ set_objmap_select_tool() })
+
+# erase = Icon.new(CL_Point.new(2, 32+1+2),
make_sprite("../data/images/tools/stock-tool-eraser-22.png"), "Some tooltip",
$toolbar);
+# move = Icon.new(CL_Point.new(2, 32*2+2),
make_sprite("../data/images/tools/stock-tool-move-22.png"), "Some tooltip",
$toolbar);
+
+# SuperTux Specific stuff
+
+$foreground_icon.set_callback(proc{ gui_show_foreground() })
+$interactive_icon.set_callback(proc{ gui_show_interactive() })
+$background_icon.set_callback(proc{ gui_show_background() })
+$eye_icon.set_callback(proc{ $layer_menu.run() })
+
+$mysprite = make_sprite("../data/images/icons16/stock_paste-16.png")
+
+$layer_menu.add_item($mysprite, "Show all", proc{ gui_show_all() })
+$layer_menu.add_item($mysprite, "Show current", proc{ gui_show_current() })
+$layer_menu.add_item($mysprite, "Show only current", proc{
gui_show_only_current() })
+
+$supertux = SuperTuxGUI.new($tileset, $gui)
+
+level = nil
+
+$menu = CL_Menu.new($gui.get_component())
+$menu.add_item("File/Open...", proc{ gui_level_load() })
+$menu.add_item("File/Save...", proc{ gui_level_save() })
+# $menu.add_item("File/Save Commands...", menu_file_save_commands)
+$menu.add_item("File/Save As...", proc{ gui_level_save_as() })
+$menu.add_item("File/Quit", proc{ $gui.quit })
+
+$menu.add_item("Edit/Resize", proc{ gui_resize_level() })
+$menu.add_item("Edit/Resize to selection", proc{
gui_resize_level_to_selection()})
+$menu.add_item("Edit/Debug Shell", proc{ run_python()})
+$menu.add_item("Edit/Add Sector...", proc{ gui_add_sector()})
+
+$menu.add_item("Zoom/1:4 (25%) ", proc{ gui_set_zoom(0.25) })
+$menu.add_item("Zoom/1:2 (50%) ", proc{ gui_set_zoom(0.5) })
+$menu.add_item("Zoom/1:1 (100%) ", proc{ gui_set_zoom(1.0) })
+$menu.add_item("Zoom/2:1 (200%) ", proc{ gui_set_zoom(2.0) })
+$menu.add_item("Zoom/4:1 (400%) ", proc{ gui_set_zoom(4.0) })
+
+$display_properties = DisplayProperties.new()
+
+$load_dialog = SimpleFileDialog.new("Load SuperTux Level", "Load", "Cancel",
$gui.get_component())
+$load_dialog.set_filename($datadir + "levels/")
+$save_dialog = SimpleFileDialog.new("Save SuperTux Level as...", "Save",
"Cancel", $gui.get_component())
+$save_dialog.set_filename($datadir + "levels/")
+
+# Init the GUI, so that button state is in sync with internal state
+gui_toggle_minimap()
+gui_toggle_minimap()
+gui_show_interactive()
+gui_show_current()
+set_tilemap_paint_tool()
+
+class PathNode
+ node = nil
+
+ def initialize(node)
+ @node = node
+ end
+end
+
+def insert_path_node(x,y)
+ print "Insert path Node"
+ m = $workspace.get_map().get_metadata()
+ pathnode = ObjMapPathNode($editor_map.screen2world(CL_Point.new(x, y)),
+ make_metadata("PathNode"))
+ pathnode.to_object().set_metadata(make_metadata(PathNode(pathnode)))
+ m.objects.add_object(pathnode.to_object())
+end
+
+def connect_path_nodes()
+ print "Connecting path nodes"
+ pathnodes = []
+ for i in objmap_select_tool.get_selection()
+ obj = get_python_object(i.get_metadata())
+ if obj.__class__ == PathNode
+ pathnodes.append(obj.node)
+ end
+ end
+
+ last = nil
+ for i in pathnodes
+ if last != nil:
+ last.connect(i)
+ end
+ last = i
+ end
+end
+
+connect_v2($editor_map.sig_on_key("f1"), proc{ |x, y| gui_toggle_minimap()})
+connect_v2($editor_map.sig_on_key("m"), proc{ |x, y| gui_toggle_minimap()})
+connect_v2($editor_map.sig_on_key("g"), proc{ |x, y| gui_toggle_grid()})
+connect_v2($editor_map.sig_on_key("4"), proc{ |x, y|
gui_toggle_display_props()})
+connect_v2($editor_map.sig_on_key("3"), proc{ |x, y| gui_show_foreground()})
+connect_v2($editor_map.sig_on_key("2"), proc{ |x, y| gui_show_interactive()})
+connect_v2($editor_map.sig_on_key("1"), proc{ |x, y| gui_show_background()})
+
+connect_v2($editor_map.sig_on_key("5"), proc{ |x, y|
$editor_map.zoom_in(CL_Point.new(x, y))})
+connect_v2($editor_map.sig_on_key("6"), proc{ |x, y|
$editor_map.zoom_out(CL_Point.new(x, y))})
+
+connect_v2($editor_map.sig_on_key("i"), proc{ |x, y| insert_path_node(x,y)})
+connect_v2($editor_map.sig_on_key("c"), proc{ |x, y| connect_path_nodes()})
+
+connect_v2($editor_map.sig_on_key("7"), proc{ |x, y|
$workspace.get_map().get_metadata().parent.activate_sector("main", $workspace)})
+connect_v2($editor_map.sig_on_key("8"), proc{ |x, y|
$workspace.get_map().get_metadata().parent.activate_sector("another_world",
$workspace)})
+
+# EOF #
Modified: trunk/src/supertux.rb
===================================================================
--- trunk/src/supertux.rb 2004-06-06 18:18:55 UTC (rev 396)
+++ trunk/src/supertux.rb 2004-06-06 18:55:42 UTC (rev 397)
@@ -35,6 +35,12 @@
$workspace.set_tool($tilemap_paint_tool.to_tool());
+$recent_files = []
+$recent_files_menu = Menu.new(CL_Point.new(32*2, 54), $gui.get_component())
+for filename in $recent_files
+ $recent_files_menu.add_item(mysprite, filename, proc{
supertux_load_level(filename) })
+end
+
$minimap = Minimap.new($editor_map, CL_Rect.new(CL_Point.new(3, 488+3-14),
CL_Size.new(794-134-16, 50)),
$editor_map)
@@ -150,6 +156,9 @@
sectors = nil
current_sector = nil
+
+ attr_reader :version, :filename, :name, :author, :theme, :time, :music,
:objects, :camera, :sectors, :current_sector
+ attr_writer :version, :filename, :name, :author, :theme, :time, :music,
:objects, :camera, :sectors, :current_sector
def initialize(*params)
if params.length() == 2 then
@@ -223,14 +232,6 @@
@time = int(get_value_from_tree(["time", "_"], data, "999"))
end
- def resize(size, pos)
- @width = size.width
- @height = size.height
- @background.resize(size, pos)
- @interactive.resize(size, pos)
- @foreground.resize(size, pos)
- end
-
def save(filename)
save_v2(filename)
end
@@ -419,8 +420,8 @@
objects = nil
editormap = nil
- attr_reader :background, :interactive, :foreground
- attr_writer :background, :interactive, :foreground
+ attr_reader :name, :background, :interactive, :foreground, :parent
+ attr_writer :name, :song, :gravity
def initialize(parent)
@parent = parent
@@ -430,6 +431,14 @@
return @parent
end
+ def resize(size, pos)
+ @width = size.width
+ @height = size.height
+ @background.resize(size, pos)
+ @interactive.resize(size, pos)
+ @foreground.resize(size, pos)
+ end
+
def new_from_size(width, height)
@name = "<No Name>"
@song = "<No Song>"
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Windstille-devel] rev 397 - trunk/src,
Ingo Ruhnke <=