For #11 : Library palette control mostly functional
This commit is contained in:
22
lib/tailor/GUI/ImageDisplay.rb
Normal file
22
lib/tailor/GUI/ImageDisplay.rb
Normal file
@@ -0,0 +1,22 @@
|
||||
module Tailor
|
||||
module GUI
|
||||
class ImageDisplay < Wx::Panel
|
||||
def initialize(*args)
|
||||
super(*args)
|
||||
@bitmap = nil
|
||||
end
|
||||
|
||||
def set_image image
|
||||
@bitmap = image.to_bitmap
|
||||
refresh
|
||||
end
|
||||
|
||||
def on_draw dc
|
||||
dc.set_background Wx::WHITE_BRUSH
|
||||
dc.clear
|
||||
return if @bitmap == nil
|
||||
dc.draw_bitmap(@bitmap, 0, 0, true)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -3,6 +3,18 @@ require 'Tailor/Collection'
|
||||
|
||||
module Tailor
|
||||
module GUI
|
||||
class LibraryChangedEvent < Wx::CommandEvent
|
||||
EVT_LIBRARY_CHANGED = Wx::EvtHandler.register_class(self,
|
||||
nil,
|
||||
"evt_library_changed",
|
||||
1)
|
||||
def initialize(source)
|
||||
super(EVT_LIBRARY_CHANGED)
|
||||
self.id = source.get_id
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class LibraryManager < Wx::Frame
|
||||
def initialize(*args)
|
||||
super(*args)
|
||||
@@ -57,6 +69,7 @@ module Tailor
|
||||
idx = @tilesetList.append(@tileset.tileset_name)
|
||||
@tilesetList.set_selection(idx)
|
||||
refresh_image
|
||||
event_handler.process_event(LibraryChangedEvent.new(self))
|
||||
end
|
||||
refresh
|
||||
end
|
||||
@@ -73,6 +86,7 @@ module Tailor
|
||||
else
|
||||
@previewPane.hide
|
||||
end
|
||||
event_handler.process_event(LibraryChangedEvent.new(self))
|
||||
end
|
||||
|
||||
def on_ListDoubleClicked(event)
|
||||
|
||||
@@ -4,6 +4,7 @@ require 'Tailor/Collection'
|
||||
require 'Tailor/GUI/TilesetProperties'
|
||||
require 'tailor/GUI/TilesetEditor'
|
||||
require 'tailor/GUI/LibraryManager'
|
||||
require 'tailor/GUI/ImageDisplay'
|
||||
|
||||
module Tailor
|
||||
module GUI
|
||||
@@ -56,15 +57,56 @@ module Tailor
|
||||
@menuLibrary.enable(@menuLibraryManager.get_id, false)
|
||||
end
|
||||
|
||||
def refresh_palette
|
||||
if @palettePanel
|
||||
@mainPanelSizer.detach(@palettePanel)
|
||||
@palettePanel.destroy_children
|
||||
@palettePanel.destroy
|
||||
refresh
|
||||
end
|
||||
@palettePanel = Wx::ScrolledWindow.new(@mainPanel, Wx::ID_ANY)
|
||||
@paletteSizer = Wx::BoxSizer.new(Wx::VERTICAL)
|
||||
@paletteLibraryPanels = {}
|
||||
@collection.library.each do |ts|
|
||||
tsExpandCollapseBtn = Wx::Button.new(@palettePanel, Wx::ID_ANY, ts.tileset_name)
|
||||
tsExpandCollapseBtn.set_min_size(
|
||||
Wx::Size.new(256,
|
||||
tsExpandCollapseBtn.get_size().height
|
||||
)
|
||||
)
|
||||
@paletteSizer.add(tsExpandCollapseBtn, 0, flags = Wx::GROW)
|
||||
tpanel = Wx::Panel.new(@palettePanel, Wx::ID_ANY)
|
||||
tgridSizer = Wx::GridSizer.new(cols=2)
|
||||
evt_button(tsExpandCollapseBtn.get_id()) { |event| on_LibExpandCollapseClicked(ts) }
|
||||
ts.tiles.each do |tile|
|
||||
tgridSizer.add(Wx::StaticBitmap.new(tpanel, Wx::ID_ANY, tile['image'].to_bitmap))
|
||||
tgridSizer.add(Wx::StaticText.new(tpanel, Wx::ID_ANY, tile['name']))
|
||||
end
|
||||
tpanel.set_sizer(tgridSizer)
|
||||
@paletteLibraryPanels[ts.tileset_name] = tpanel
|
||||
@paletteSizer.add(tpanel, 0, Wx::EXPAND|Wx::ALL)
|
||||
end
|
||||
@palettePanel.enable_scrolling(false, true)
|
||||
@palettePanel.set_scroll_rate(1, 1)
|
||||
@palettePanel.set_min_size(Wx::Size.new(256, 256))
|
||||
@palettePanel.set_sizer(@paletteSizer)
|
||||
@paletteSizer.set_size_hints(@palettePanel)
|
||||
@mainPanelSizer.add(@palettePanel, 1, Wx::EXPAND|Wx::ALL)
|
||||
@mainPanelSizer.layout
|
||||
end
|
||||
|
||||
def refresh_project
|
||||
@mainPanel = Wx::Panel.new(self)
|
||||
@mainPanelSizer = Wx::BoxSizer.new(Wx::HORIZONTAL)
|
||||
@mainPanel.set_sizer(@mainPanelSizer)
|
||||
@tilesetProperties = Tailor::GUI::TilesetProperties.new(@mainPanel, Wx::ID_ANY)
|
||||
@mainPanelSizer.add(@tilesetProperties)
|
||||
button = Wx::Button.new(@mainPanel, Wx::ID_ANY, "Open Tileset Editor")
|
||||
button = Wx::Button.new(@mainPanel, Wx::ID_ANY, "(Replace with drag and drop target)")
|
||||
evt_button(button.get_id()) { |event| on_clickme(event) }
|
||||
@mainPanelSizer.add(button, 0, Wx::EXPAND|Wx::ALL, 2)
|
||||
@mainPanelSizer.add(button, 1, Wx::EXPAND|Wx::ALL)
|
||||
|
||||
refresh_palette
|
||||
|
||||
@mainPanelSizer.set_size_hints(@mainPanel)
|
||||
@mainPanelSizer.set_size_hints(self)
|
||||
|
||||
@@ -89,6 +131,17 @@ module Tailor
|
||||
end
|
||||
end
|
||||
|
||||
def on_LibExpandCollapseClicked(ts)
|
||||
panel = @paletteLibraryPanels[ts.tileset_name]
|
||||
if panel.is_shown
|
||||
panel.show(show = false)
|
||||
else
|
||||
panel.show(show = true)
|
||||
end
|
||||
s = @paletteSizer.get_min_size()
|
||||
@palettePanel.set_virtual_size(s)
|
||||
end
|
||||
|
||||
def on_clickme(event)
|
||||
puts "I don't do anything"
|
||||
end
|
||||
@@ -98,9 +151,15 @@ module Tailor
|
||||
end
|
||||
|
||||
def on_library_manager
|
||||
Tailor::GUI::LibraryManager.new(self,
|
||||
tlm = Tailor::GUI::LibraryManager.new(self,
|
||||
Wx::ID_ANY,
|
||||
'Tailor :: Library :: Manager').show
|
||||
'Tailor :: Library :: Manager')
|
||||
tlm.show
|
||||
evt_library_changed(tlm.get_id()) { |event| on_library_changed(event) }
|
||||
end
|
||||
|
||||
def on_library_changed(event)
|
||||
refresh_palette
|
||||
end
|
||||
|
||||
def on_file_open
|
||||
|
||||
Reference in New Issue
Block a user