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 Tailor
|
||||||
module GUI
|
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
|
class LibraryManager < Wx::Frame
|
||||||
def initialize(*args)
|
def initialize(*args)
|
||||||
super(*args)
|
super(*args)
|
||||||
@@ -57,6 +69,7 @@ module Tailor
|
|||||||
idx = @tilesetList.append(@tileset.tileset_name)
|
idx = @tilesetList.append(@tileset.tileset_name)
|
||||||
@tilesetList.set_selection(idx)
|
@tilesetList.set_selection(idx)
|
||||||
refresh_image
|
refresh_image
|
||||||
|
event_handler.process_event(LibraryChangedEvent.new(self))
|
||||||
end
|
end
|
||||||
refresh
|
refresh
|
||||||
end
|
end
|
||||||
@@ -73,6 +86,7 @@ module Tailor
|
|||||||
else
|
else
|
||||||
@previewPane.hide
|
@previewPane.hide
|
||||||
end
|
end
|
||||||
|
event_handler.process_event(LibraryChangedEvent.new(self))
|
||||||
end
|
end
|
||||||
|
|
||||||
def on_ListDoubleClicked(event)
|
def on_ListDoubleClicked(event)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ require 'Tailor/Collection'
|
|||||||
require 'Tailor/GUI/TilesetProperties'
|
require 'Tailor/GUI/TilesetProperties'
|
||||||
require 'tailor/GUI/TilesetEditor'
|
require 'tailor/GUI/TilesetEditor'
|
||||||
require 'tailor/GUI/LibraryManager'
|
require 'tailor/GUI/LibraryManager'
|
||||||
|
require 'tailor/GUI/ImageDisplay'
|
||||||
|
|
||||||
module Tailor
|
module Tailor
|
||||||
module GUI
|
module GUI
|
||||||
@@ -56,15 +57,56 @@ module Tailor
|
|||||||
@menuLibrary.enable(@menuLibraryManager.get_id, false)
|
@menuLibrary.enable(@menuLibraryManager.get_id, false)
|
||||||
end
|
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
|
def refresh_project
|
||||||
@mainPanel = Wx::Panel.new(self)
|
@mainPanel = Wx::Panel.new(self)
|
||||||
@mainPanelSizer = Wx::BoxSizer.new(Wx::HORIZONTAL)
|
@mainPanelSizer = Wx::BoxSizer.new(Wx::HORIZONTAL)
|
||||||
@mainPanel.set_sizer(@mainPanelSizer)
|
@mainPanel.set_sizer(@mainPanelSizer)
|
||||||
@tilesetProperties = Tailor::GUI::TilesetProperties.new(@mainPanel, Wx::ID_ANY)
|
@tilesetProperties = Tailor::GUI::TilesetProperties.new(@mainPanel, Wx::ID_ANY)
|
||||||
@mainPanelSizer.add(@tilesetProperties)
|
@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) }
|
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(@mainPanel)
|
||||||
@mainPanelSizer.set_size_hints(self)
|
@mainPanelSizer.set_size_hints(self)
|
||||||
|
|
||||||
@@ -89,6 +131,17 @@ module Tailor
|
|||||||
end
|
end
|
||||||
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)
|
def on_clickme(event)
|
||||||
puts "I don't do anything"
|
puts "I don't do anything"
|
||||||
end
|
end
|
||||||
@@ -98,9 +151,15 @@ module Tailor
|
|||||||
end
|
end
|
||||||
|
|
||||||
def on_library_manager
|
def on_library_manager
|
||||||
Tailor::GUI::LibraryManager.new(self,
|
tlm = Tailor::GUI::LibraryManager.new(self,
|
||||||
Wx::ID_ANY,
|
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
|
end
|
||||||
|
|
||||||
def on_file_open
|
def on_file_open
|
||||||
|
|||||||
Reference in New Issue
Block a user