Midstream on #8 : Storing names of individual tiles works now, GridDisplay can be queried for the selected tile index, tile bitmap, size of rectangle list, and a complete set of chopped tiles
This commit is contained in:
@@ -3,6 +3,22 @@ require 'Tailor/GUI/ImageDisplay'
|
||||
|
||||
module Tailor
|
||||
module GUI
|
||||
class GridDisplaySelectedEvent < Wx::CommandEvent
|
||||
EVT_GRIDDISPLAY_SELECTED = Wx::EvtHandler.register_class(self,
|
||||
nil,
|
||||
"evt_griddisplay_selected",
|
||||
1)
|
||||
def initialize(source)
|
||||
super(EVT_GRIDDISPLAY_SELECTED)
|
||||
self.id = source.get_id
|
||||
self.client_data = {
|
||||
'size' => source.get_size,
|
||||
'index' => source.get_selected_index,
|
||||
'tile' => source.get_selected_tile }
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class GridDisplay < Tailor::GUI::ImageDisplay
|
||||
|
||||
def initialize(*args)
|
||||
@@ -13,6 +29,7 @@ module Tailor
|
||||
@darken_x = 0
|
||||
@darken_y = 0
|
||||
@rectlist = []
|
||||
@selected = nil
|
||||
end
|
||||
|
||||
def set_image(image)
|
||||
@@ -34,6 +51,8 @@ module Tailor
|
||||
end
|
||||
end
|
||||
@darkenCell = tmpImage.to_bitmap
|
||||
@darken_x = -(gridX)
|
||||
@darken_y = -(gridY)
|
||||
|
||||
evt_left_up() { |event| on_gridClicked(event) }
|
||||
@imageGrid.draw() { |dc|
|
||||
@@ -80,10 +99,32 @@ module Tailor
|
||||
next unless rect.contains(event.get_x, event.get_y)
|
||||
@darken_x = rect.get_x
|
||||
@darken_y = rect.get_y
|
||||
@selected = rect
|
||||
evt = GridDisplaySelectedEvent.new(self)
|
||||
event_handler.process_event(evt)
|
||||
end
|
||||
refresh
|
||||
end
|
||||
|
||||
def get_size
|
||||
@rectlist.length
|
||||
end
|
||||
|
||||
def get_tiles
|
||||
ret = []
|
||||
@rectlist.each do |rect|
|
||||
ret << @pristineImage.sub_bitmap(rect)
|
||||
end
|
||||
end
|
||||
|
||||
def get_selected_tile
|
||||
@pristineImage.get_sub_bitmap(@selected)
|
||||
end
|
||||
|
||||
def get_selected_index
|
||||
@rectlist.index(@selected)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -10,7 +10,8 @@ module Tailor
|
||||
super(*args)
|
||||
@tilesetFilename = ""
|
||||
@tilesetImage = nil
|
||||
|
||||
@tilesetNames = []
|
||||
|
||||
@panel = Wx::Panel.new(self)
|
||||
@sizer = Wx::BoxSizer.new(Wx::VERTICAL)
|
||||
|
||||
@@ -44,6 +45,7 @@ module Tailor
|
||||
@tilesetSlicer = Tailor::GUI::GridDisplay.new(@panel, Wx::ID_ANY)
|
||||
@tilesetSlicer.set_min_size(Wx::Size.new(320, 240))
|
||||
rowsizer.add(@tilesetSlicer, 1, flag = Wx::EXPAND|Wx::ALL)
|
||||
evt_griddisplay_selected(@tilesetSlicer) { |event| on_gridSelected(event) }
|
||||
|
||||
tmpversizer = Wx::BoxSizer.new(Wx::VERTICAL)
|
||||
@tilesetNameCtrl = Wx::TextCtrl.new(@panel,
|
||||
@@ -54,6 +56,8 @@ module Tailor
|
||||
Wx::ID_ANY,
|
||||
"Tile Name")
|
||||
tmpversizer.add(@tileNameCtrl, 0, flag = Wx::EXPAND|Wx::ALIGN_TOP)
|
||||
evt_text(@tileNameCtrl) { |event| on_tileNameChanged(event) }
|
||||
|
||||
@tilesetNotesCtrl = Wx::TextCtrl.new(@panel,
|
||||
Wx::ID_ANY,
|
||||
"Notes about this tileset",
|
||||
@@ -91,10 +95,19 @@ module Tailor
|
||||
:style => Wx::FD_FILE_MUST_EXIST | Wx::FD_PREVIEW )
|
||||
if fd.show_modal == Wx::ID_OK
|
||||
@tilesetFilename = fd.get_path
|
||||
@tilesetNames = []
|
||||
refresh_image
|
||||
(0..(@tilesetSlicer.get_size)).each do |i|
|
||||
@tilesetNames << "Tile #{i}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def on_gridSelected(event)
|
||||
@tileNameCtrl.enable
|
||||
@tileNameCtrl.set_value(@tilesetNames[event.client_data['index']])
|
||||
end
|
||||
|
||||
def on_ExportClicked(event)
|
||||
end
|
||||
|
||||
@@ -111,6 +124,10 @@ module Tailor
|
||||
event.client_data['gridY']
|
||||
)
|
||||
end
|
||||
|
||||
def on_tileNameChanged(event)
|
||||
@tilesetNames[@tilesetSlicer.get_selected_index] = @tileNameCtrl.get_value
|
||||
end
|
||||
|
||||
def refresh_image
|
||||
begin
|
||||
@@ -122,6 +139,7 @@ module Tailor
|
||||
y = ( @tilesetImage.get_height > 400 ? 400 : @tilesetImage.get_height + 20)
|
||||
@tilesetSlicer.set_min_size(Wx::Size.new(x, y))
|
||||
@sizer.set_size_hints(self)
|
||||
@tileNameCtrl.disable
|
||||
end
|
||||
rescue Exception => e
|
||||
puts e
|
||||
|
||||
Reference in New Issue
Block a user