windstille-devel
[Top][All Lists]
Advanced

[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>"





reply via email to

[Prev in Thread] Current Thread [Next in Thread]