mirror of
https://github.com/aseprite/aseprite.git
synced 2025-04-01 10:21:04 +00:00
Change Export Sprite Sheet dialog with a tab-like UI
This commit is contained in:
parent
ad12ec4a0d
commit
c0dfd76114
@ -534,7 +534,14 @@ cancel = &Cancel
|
|||||||
|
|
||||||
[export_sprite_sheet]
|
[export_sprite_sheet]
|
||||||
title = Export Sprite Sheet
|
title = Export Sprite Sheet
|
||||||
format = Format:
|
sprite = Sprite
|
||||||
|
sprite_tooltip = Source of sprite samples to export in the sprite sheet
|
||||||
|
borders = Borders
|
||||||
|
borders_tooltip = Add or trim borders from each sprite in the sprite sheet
|
||||||
|
layout = Layout
|
||||||
|
layout_tooltip = Arrangement of sprites in the final result
|
||||||
|
output = Output
|
||||||
|
output_tooltip = Where to store the sprite sheet
|
||||||
sheet_type = Sheet Type:
|
sheet_type = Sheet Type:
|
||||||
sheet_type_tooltip = <<<END
|
sheet_type_tooltip = <<<END
|
||||||
Indicates a specific way to layout sprites in the sprite sheet:
|
Indicates a specific way to layout sprites in the sprite sheet:
|
||||||
@ -549,7 +556,7 @@ type_vert = Vertical Strip
|
|||||||
type_rows = By Rows
|
type_rows = By Rows
|
||||||
type_cols = By Columns
|
type_cols = By Columns
|
||||||
type_pack = Packed
|
type_pack = Packed
|
||||||
constraints = Constraints
|
constraints = Constraints:
|
||||||
constraints_tooltip = <<<END
|
constraints_tooltip = <<<END
|
||||||
Special constraints for the sprite sheet.
|
Special constraints for the sprite sheet.
|
||||||
E.g. Fixed number of rows/columns or fixed
|
E.g. Fixed number of rows/columns or fixed
|
||||||
@ -561,13 +568,14 @@ constraint_fixed_rows = Fixed # of Rows
|
|||||||
constraint_fixed_width = Fixed Width
|
constraint_fixed_width = Fixed Width
|
||||||
constraint_fixed_height = Fixed Height
|
constraint_fixed_height = Fixed Height
|
||||||
constraint_fixed_size = Fixed Size
|
constraint_fixed_size = Fixed Size
|
||||||
padding = Padding
|
border = Border Padding:
|
||||||
padding_tooltip = Extra space to add between sprites
|
|
||||||
border = Border:
|
|
||||||
border_tooltip = Space between each frame and the edge of the sprite sheet
|
border_tooltip = Space between each frame and the edge of the sprite sheet
|
||||||
shape = Spacing:
|
shape = Spacing:
|
||||||
shape_tooltip = Space between each frame in the sprite sheet
|
shape_tooltip = <<<END
|
||||||
inner = Inner:
|
Space between each frame in the sprite sheet
|
||||||
|
(a.k.a "Shape Padding")
|
||||||
|
END
|
||||||
|
inner = Inner Padding:
|
||||||
inner_tooltip = Extra space inside frame edges
|
inner_tooltip = Extra space inside frame edges
|
||||||
trim_sprite = Trim Sprite
|
trim_sprite = Trim Sprite
|
||||||
trim_sprite_tooltip = Trims the whole sprite before its frames are included in the sprite sheet
|
trim_sprite_tooltip = Trims the whole sprite before its frames are included in the sprite sheet
|
||||||
@ -577,17 +585,16 @@ trim_by_grid = By Grid
|
|||||||
trim_by_grid_tooltip = Trims by grid boundaries instead of pixel by pixel
|
trim_by_grid_tooltip = Trims by grid boundaries instead of pixel by pixel
|
||||||
extrude = Extrude
|
extrude = Extrude
|
||||||
extrude_tooltip = Adds a border to each frame duplicating the pixels of its edges
|
extrude_tooltip = Adds a border to each frame duplicating the pixels of its edges
|
||||||
merge_dups = Merge Dups
|
merge_dups = Merge Duplicates
|
||||||
merge_dups_tooltip = Merge Duplicate Frames
|
merge_dups_tooltip = Similar frames can use the same sprite sheet rectangular area
|
||||||
ignore_empty = Ignore Empty
|
ignore_empty = Ignore Empty
|
||||||
ignore_empty_tooltip = Ignore Empty Frames
|
ignore_empty_tooltip = Do not include empty/transparent frames in the sprite sheet
|
||||||
layers = Layers:
|
layers = Layers:
|
||||||
split_layers = Split Layers
|
split_layers = Split Layers
|
||||||
split_layers_tooltip = Generates one sprite for each layer
|
split_layers_tooltip = Generates one sprite for each layer
|
||||||
split_tags = Split Tags
|
split_tags = Split Tags
|
||||||
split_tags_tooltip = Generates one sprite for each tag
|
split_tags_tooltip = Generates one sprite for each tag
|
||||||
frames = Frames:
|
frames = Frames:
|
||||||
output = Output:
|
|
||||||
output_file = Output File
|
output_file = Output File
|
||||||
json_data = JSON Data
|
json_data = JSON Data
|
||||||
json_data_hash = Hash
|
json_data_hash = Hash
|
||||||
@ -604,7 +611,7 @@ how to build each frame. You can use special marks
|
|||||||
like {layer}, {frame}, {tag}, {tagframe}, etc.
|
like {layer}, {frame}, {tag}, {tagframe}, etc.
|
||||||
END
|
END
|
||||||
preview = Preview
|
preview = Preview
|
||||||
open_sprite_sheet = Open Generated Sprite Sheet
|
open_sprite_sheet = Open Sprite Sheet
|
||||||
export = &Export
|
export = &Export
|
||||||
cancel = &Cancel
|
cancel = &Cancel
|
||||||
generating = Generating...
|
generating = Generating...
|
||||||
|
@ -3,106 +3,137 @@
|
|||||||
<!-- Copyright (C) 2001-2018 David Capello -->
|
<!-- Copyright (C) 2001-2018 David Capello -->
|
||||||
<gui>
|
<gui>
|
||||||
<window id="export_sprite_sheet" text="@.title">
|
<window id="export_sprite_sheet" text="@.title">
|
||||||
<grid columns="4" expansive="true">
|
<vbox expansive="true">
|
||||||
<separator horizontal="true" text="@.format" cell_hspan="4" />
|
|
||||||
|
|
||||||
<label text="@.sheet_type" />
|
<!-- Tabs -->
|
||||||
<combobox id="sheet_type" expansive="true" cell_hspan="2" cell_align="horizontal"
|
|
||||||
tooltip="@.sheet_type_tooltip" />
|
|
||||||
<check id="show_constraints" text="@.constraints"
|
|
||||||
tooltip="@.constraints_tooltip" />
|
|
||||||
|
|
||||||
<label id="constraints_label" text="@.constraints" />
|
<hbox>
|
||||||
<hbox id="constraints_placeholder" cell_hspan="3">
|
<separator horizontal="true" expansive="true" />
|
||||||
<combobox id="constraint_type" />
|
<buttonset id="section_tabs" columns="4">
|
||||||
<expr id="width_constraint" />
|
<item id="sectin_sprite_tab" text="@.sprite" tooltip="@.sprite_tooltip" tooltip_dir="bottom" selected="true" />
|
||||||
<expr id="height_constraint" />
|
<item id="sectin_borders_tab" text="@.borders" tooltip="@.borders_tooltip" tooltip_dir="bottom" />
|
||||||
|
<item id="sectin_layout_tab" text="@.layout" tooltip="@.layout_tooltip" tooltip_dir="bottom" />
|
||||||
|
<item id="sectin_output_tab" text="@.output" tooltip="@.output_tooltip" tooltip_dir="bottom" />
|
||||||
|
</buttonset>
|
||||||
|
<separator horizontal="true" expansive="true" />
|
||||||
</hbox>
|
</hbox>
|
||||||
|
|
||||||
<label text="@.layers" />
|
<panel id="panel" expansive="true">
|
||||||
<combobox id="layers" text="" cell_hspan="2" />
|
|
||||||
<check id="split_layers" text="@.split_layers" tooltip="@.split_layers_tooltip" />
|
|
||||||
|
|
||||||
<label text="@.frames" />
|
<!-- Sprite -->
|
||||||
<combobox id="frames" text="" cell_hspan="2" />
|
|
||||||
<check id="split_tags" text="@.split_tags" tooltip="@.split_tags_tooltip" />
|
|
||||||
|
|
||||||
<hbox />
|
<grid id="section_sprite" columns="4" expansive="true">
|
||||||
<hbox cell_hspan="3">
|
<label text="@.layers" />
|
||||||
<vbox>
|
<combobox id="layers" text="" cell_hspan="2" cell_align="horizontal" />
|
||||||
<check id="trim_sprite_enabled" text="@.trim_sprite" tooltip="@.trim_sprite_tooltip" />
|
<check id="split_layers" text="@.split_layers" tooltip="@.split_layers_tooltip" tooltip_dir="bottom" />
|
||||||
<check id="trim_enabled" text="@.trim" tooltip="@.trim_tooltip" />
|
|
||||||
<vbox id="trim_container" cell_hspan="2">
|
|
||||||
<check id="grid_trim_enabled"
|
|
||||||
text="@.trim_by_grid"
|
|
||||||
tooltip="@.trim_by_grid_tooltip" />
|
|
||||||
</vbox>
|
|
||||||
</vbox>
|
|
||||||
<separator vertical="true" />
|
|
||||||
<vbox>
|
|
||||||
<check id="padding_enabled" text="@.padding" tooltip="@.padding_tooltip" />
|
|
||||||
<check id="extrude_enabled"
|
|
||||||
text="@.extrude"
|
|
||||||
tooltip="@.extrude_tooltip" />
|
|
||||||
</vbox>
|
|
||||||
<vbox>
|
|
||||||
<grid columns="2" id="padding_container">
|
|
||||||
<label text="@.border" />
|
|
||||||
<expr id="border_padding" text="0" tooltip="@.border_tooltip" />
|
|
||||||
<label text="@.shape" />
|
|
||||||
<expr id="shape_padding" text="0" tooltip="@.shape_tooltip" />
|
|
||||||
<label text="@.inner" />
|
|
||||||
<expr id="inner_padding" text="0" tooltip="@.inner_tooltip" />
|
|
||||||
</grid>
|
|
||||||
</vbox>
|
|
||||||
<separator id="padding_separator" vertical="true" />
|
|
||||||
<vbox>
|
|
||||||
<check id="merge_dups" text="@.merge_dups" tooltip="@.merge_dups_tooltip" />
|
|
||||||
<check id="ignore_empty" text="@.ignore_empty" tooltip="@.ignore_empty_tooltip" />
|
|
||||||
</vbox>
|
|
||||||
</hbox>
|
|
||||||
|
|
||||||
<separator horizontal="true" text="@.output" cell_hspan="4" cell_align="horizontal" />
|
<label text="@.frames" />
|
||||||
|
<combobox id="frames" text="" cell_hspan="2" cell_align="horizontal" />
|
||||||
|
<check id="split_tags" text="@.split_tags" tooltip="@.split_tags_tooltip" tooltip_dir="top" />
|
||||||
|
</grid>
|
||||||
|
|
||||||
<check id="image_enabled" text="@.output_file" />
|
<!-- Borders -->
|
||||||
<button id="image_filename" cell_hspan="3" />
|
|
||||||
|
|
||||||
<check id="data_enabled" text="@.json_data" />
|
<grid id="section_borders" columns="4" expansive="true">
|
||||||
<button id="data_filename" cell_hspan="3" />
|
|
||||||
|
|
||||||
<hbox />
|
<hbox />
|
||||||
<hbox id="data_meta" cell_hspan="3" cell_align="horizontal">
|
<hbox cell_hspan="3">
|
||||||
<combobox id="data_format">
|
<vbox>
|
||||||
<listitem text="@.json_data_hash" value="0" />
|
<grid columns="2">
|
||||||
<listitem text="@.json_data_array" value="1" />
|
<label text="@.border" />
|
||||||
</combobox>
|
<expr id="border_padding" text="0" tooltip="@.border_tooltip" />
|
||||||
<label text="@.meta" />
|
<label text="@.shape" />
|
||||||
<check id="list_layers" text="@.meta_layers" />
|
<expr id="shape_padding" text="0" tooltip="@.shape_tooltip" />
|
||||||
<check id="list_tags" text="@.meta_tags" />
|
<label text="@.inner" />
|
||||||
<check id="list_slices" text="@.meta_slices" />
|
<expr id="inner_padding" text="0" tooltip="@.inner_tooltip" />
|
||||||
</hbox>
|
</grid>
|
||||||
|
</vbox>
|
||||||
|
<separator vertical="true" />
|
||||||
|
<vbox>
|
||||||
|
<check id="trim_sprite_enabled" text="@.trim_sprite" tooltip="@.trim_sprite_tooltip" />
|
||||||
|
<check id="trim_enabled" text="@.trim" tooltip="@.trim_tooltip" />
|
||||||
|
<vbox id="trim_container" cell_hspan="2">
|
||||||
|
<check id="grid_trim_enabled"
|
||||||
|
text="@.trim_by_grid"
|
||||||
|
tooltip="@.trim_by_grid_tooltip" />
|
||||||
|
</vbox>
|
||||||
|
</vbox>
|
||||||
|
<separator vertical="true" />
|
||||||
|
<vbox>
|
||||||
|
<check id="extrude_enabled"
|
||||||
|
text="@.extrude"
|
||||||
|
tooltip="@.extrude_tooltip" />
|
||||||
|
</vbox>
|
||||||
|
</hbox>
|
||||||
|
|
||||||
<hbox />
|
</grid>
|
||||||
<hbox id="data_filename_format_placeholder" cell_hspan="3" cell_align="horizontal">
|
|
||||||
<label text="@.data_filename_format" />
|
<!-- Layout -->
|
||||||
<entry id="data_filename_format" maxsize="1024" maxwidth="256" expansive="true"
|
|
||||||
tooltip="@.data_filename_format_tooltip" />
|
<grid id="section_layout" columns="4" expansive="true">
|
||||||
<link text="(?)" url="https://www.aseprite.org/docs/cli/#filename-format" />
|
<label text="@.sheet_type" />
|
||||||
</hbox>
|
<combobox id="sheet_type" expansive="true" cell_hspan="3" cell_align="horizontal"
|
||||||
|
tooltip="@.sheet_type_tooltip" tooltip_dir="bottom" />
|
||||||
|
|
||||||
|
<label text="@.constraints" />
|
||||||
|
<hbox cell_hspan="3">
|
||||||
|
<combobox id="constraint_type" tooltip="@.constraints_tooltip" />
|
||||||
|
<expr id="width_constraint" />
|
||||||
|
<expr id="height_constraint" />
|
||||||
|
</hbox>
|
||||||
|
|
||||||
|
<hbox />
|
||||||
|
<hbox cell_hspan="3">
|
||||||
|
<check id="merge_dups" text="@.merge_dups" tooltip="@.merge_dups_tooltip" />
|
||||||
|
<check id="ignore_empty" text="@.ignore_empty" tooltip="@.ignore_empty_tooltip" />
|
||||||
|
</hbox>
|
||||||
|
</grid>
|
||||||
|
|
||||||
|
<!-- Output -->
|
||||||
|
|
||||||
|
<grid id="section_output" columns="4" expansive="true">
|
||||||
|
<check id="image_enabled" text="@.output_file" />
|
||||||
|
<button id="image_filename" cell_hspan="3" cell_align="horizontal" />
|
||||||
|
|
||||||
|
<check id="data_enabled" text="@.json_data" />
|
||||||
|
<button id="data_filename" cell_hspan="3" cell_align="horizontal" />
|
||||||
|
|
||||||
|
<hbox />
|
||||||
|
<hbox id="data_meta" cell_hspan="3" cell_align="horizontal">
|
||||||
|
<combobox id="data_format">
|
||||||
|
<listitem text="@.json_data_hash" value="0" />
|
||||||
|
<listitem text="@.json_data_array" value="1" />
|
||||||
|
</combobox>
|
||||||
|
<label text="@.meta" />
|
||||||
|
<check id="list_layers" text="@.meta_layers" />
|
||||||
|
<check id="list_tags" text="@.meta_tags" />
|
||||||
|
<check id="list_slices" text="@.meta_slices" />
|
||||||
|
</hbox>
|
||||||
|
|
||||||
|
<hbox />
|
||||||
|
<hbox id="data_filename_format_placeholder" cell_hspan="3" cell_align="horizontal">
|
||||||
|
<label text="@.data_filename_format" />
|
||||||
|
<entry id="data_filename_format" maxsize="1024" maxwidth="256" expansive="true"
|
||||||
|
tooltip="@.data_filename_format_tooltip" />
|
||||||
|
<link text="(?)" url="https://www.aseprite.org/docs/cli/#filename-format" />
|
||||||
|
</hbox>
|
||||||
|
</grid>
|
||||||
|
|
||||||
|
</panel>
|
||||||
|
|
||||||
<separator horizontal="true" cell_hspan="4" />
|
<separator horizontal="true" cell_hspan="4" />
|
||||||
|
|
||||||
<hbox cell_hspan="4">
|
<hbox cell_hspan="4">
|
||||||
|
<boxfiller />
|
||||||
<hbox>
|
<hbox>
|
||||||
<check id="open_generated" text="@.open_sprite_sheet" cell_hspan="3" />
|
<check id="open_generated" text="@.open_sprite_sheet" cell_hspan="3" />
|
||||||
<check id="preview" text="@.preview" cell_hspan="1" />
|
<check id="preview" text="@.preview" cell_hspan="1" />
|
||||||
</hbox>
|
</hbox>
|
||||||
<boxfiller />
|
|
||||||
<hbox homogeneous="true">
|
<hbox homogeneous="true">
|
||||||
<button text="@.export" minwidth="60" id="export_button" magnet="true" />
|
<button text="@.export" minwidth="60" id="export_button" magnet="true" />
|
||||||
<button text="@.cancel" minwidth="60" closewindow="true" />
|
<button text="@.cancel" minwidth="60" closewindow="true" />
|
||||||
</hbox>
|
</hbox>
|
||||||
</hbox>
|
</hbox>
|
||||||
</grid>
|
</vbox>
|
||||||
</window>
|
</window>
|
||||||
</gui>
|
</gui>
|
||||||
|
@ -85,6 +85,13 @@ struct ExportSpriteSheetParams : public NewParams {
|
|||||||
|
|
||||||
#ifdef ENABLE_UI
|
#ifdef ENABLE_UI
|
||||||
|
|
||||||
|
enum Section {
|
||||||
|
kSectionSprite,
|
||||||
|
kSectionBorders,
|
||||||
|
kSectionLayout,
|
||||||
|
kSectionOutput,
|
||||||
|
};
|
||||||
|
|
||||||
enum ConstraintType {
|
enum ConstraintType {
|
||||||
kConstraintType_None,
|
kConstraintType_None,
|
||||||
kConstraintType_Cols,
|
kConstraintType_Cols,
|
||||||
@ -294,6 +301,8 @@ public:
|
|||||||
, m_executionID(0)
|
, m_executionID(0)
|
||||||
, m_filenameFormat(params.filenameFormat())
|
, m_filenameFormat(params.filenameFormat())
|
||||||
{
|
{
|
||||||
|
sectionTabs()->ItemChange.connect(base::Bind<void>(&ExportSpriteSheetWindow::onChangeSection, this));
|
||||||
|
|
||||||
static_assert(
|
static_assert(
|
||||||
(int)app::SpriteSheetType::None == 0 &&
|
(int)app::SpriteSheetType::None == 0 &&
|
||||||
(int)app::SpriteSheetType::Horizontal == 1 &&
|
(int)app::SpriteSheetType::Horizontal == 1 &&
|
||||||
@ -346,11 +355,6 @@ public:
|
|||||||
borderPadding()->setTextf("%d", params.borderPadding());
|
borderPadding()->setTextf("%d", params.borderPadding());
|
||||||
shapePadding()->setTextf("%d", params.shapePadding());
|
shapePadding()->setTextf("%d", params.shapePadding());
|
||||||
innerPadding()->setTextf("%d", params.innerPadding());
|
innerPadding()->setTextf("%d", params.innerPadding());
|
||||||
paddingEnabled()->setSelected(
|
|
||||||
params.borderPadding() ||
|
|
||||||
params.shapePadding() ||
|
|
||||||
params.innerPadding());
|
|
||||||
paddingContainer()->setVisible(paddingEnabled()->isSelected());
|
|
||||||
|
|
||||||
m_filename = params.textureFilename();
|
m_filename = params.textureFilename();
|
||||||
imageEnabled()->setSelected(!m_filename.empty());
|
imageEnabled()->setSelected(!m_filename.empty());
|
||||||
@ -387,7 +391,6 @@ public:
|
|||||||
|
|
||||||
exportButton()->Click.connect(base::Bind<void>(&ExportSpriteSheetWindow::onExport, this));
|
exportButton()->Click.connect(base::Bind<void>(&ExportSpriteSheetWindow::onExport, this));
|
||||||
sheetType()->Change.connect(&ExportSpriteSheetWindow::onSheetTypeChange, this);
|
sheetType()->Change.connect(&ExportSpriteSheetWindow::onSheetTypeChange, this);
|
||||||
showConstraints()->Click.connect(base::Bind<void>(&ExportSpriteSheetWindow::onSheetTypeChange, this));
|
|
||||||
constraintType()->Change.connect(&ExportSpriteSheetWindow::onConstraintTypeChange, this);
|
constraintType()->Change.connect(&ExportSpriteSheetWindow::onConstraintTypeChange, this);
|
||||||
widthConstraint()->Change.connect(&ExportSpriteSheetWindow::generatePreview, this);
|
widthConstraint()->Change.connect(&ExportSpriteSheetWindow::generatePreview, this);
|
||||||
heightConstraint()->Change.connect(&ExportSpriteSheetWindow::generatePreview, this);
|
heightConstraint()->Change.connect(&ExportSpriteSheetWindow::generatePreview, this);
|
||||||
@ -404,7 +407,6 @@ public:
|
|||||||
trimSpriteEnabled()->Click.connect(base::Bind<void>(&ExportSpriteSheetWindow::onTrimEnabledChange, this));
|
trimSpriteEnabled()->Click.connect(base::Bind<void>(&ExportSpriteSheetWindow::onTrimEnabledChange, this));
|
||||||
trimEnabled()->Click.connect(base::Bind<void>(&ExportSpriteSheetWindow::onTrimEnabledChange, this));
|
trimEnabled()->Click.connect(base::Bind<void>(&ExportSpriteSheetWindow::onTrimEnabledChange, this));
|
||||||
gridTrimEnabled()->Click.connect(base::Bind<void>(&ExportSpriteSheetWindow::generatePreview, this));
|
gridTrimEnabled()->Click.connect(base::Bind<void>(&ExportSpriteSheetWindow::generatePreview, this));
|
||||||
paddingEnabled()->Click.connect(base::Bind<void>(&ExportSpriteSheetWindow::onPaddingEnabledChange, this));
|
|
||||||
layers()->Change.connect(base::Bind<void>(&ExportSpriteSheetWindow::generatePreview, this));
|
layers()->Change.connect(base::Bind<void>(&ExportSpriteSheetWindow::generatePreview, this));
|
||||||
splitLayers()->Click.connect(base::Bind<void>(&ExportSpriteSheetWindow::onSplitLayersOrFrames, this));
|
splitLayers()->Click.connect(base::Bind<void>(&ExportSpriteSheetWindow::onSplitLayersOrFrames, this));
|
||||||
splitTags()->Click.connect(base::Bind<void>(&ExportSpriteSheetWindow::onSplitLayersOrFrames, this));
|
splitTags()->Click.connect(base::Bind<void>(&ExportSpriteSheetWindow::onSplitLayersOrFrames, this));
|
||||||
@ -414,6 +416,7 @@ public:
|
|||||||
preview()->Click.connect(base::Bind<void>(&ExportSpriteSheetWindow::generatePreview, this));
|
preview()->Click.connect(base::Bind<void>(&ExportSpriteSheetWindow::generatePreview, this));
|
||||||
m_genTimer.Tick.connect(base::Bind<void>(&ExportSpriteSheetWindow::onGenTimerTick, this));
|
m_genTimer.Tick.connect(base::Bind<void>(&ExportSpriteSheetWindow::onGenTimerTick, this));
|
||||||
|
|
||||||
|
onChangeSection();
|
||||||
onSheetTypeChange();
|
onSheetTypeChange();
|
||||||
onFileNamesChange();
|
onFileNamesChange();
|
||||||
updateExportButton();
|
updateExportButton();
|
||||||
@ -473,13 +476,24 @@ private:
|
|||||||
targets.push_back(View::getView(m_editor));
|
targets.push_back(View::getView(m_editor));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void onChangeSection() {
|
||||||
|
Widget* section = nullptr;
|
||||||
|
switch (sectionTabs()->selectedItem()) {
|
||||||
|
case kSectionSprite: section = sectionSprite(); break;
|
||||||
|
case kSectionBorders: section = sectionBorders(); break;
|
||||||
|
case kSectionLayout: section = sectionLayout(); break;
|
||||||
|
case kSectionOutput: section = sectionOutput(); break;
|
||||||
|
}
|
||||||
|
panel()->showChild(section);
|
||||||
|
resize();
|
||||||
|
}
|
||||||
|
|
||||||
app::SpriteSheetType spriteSheetTypeValue() const {
|
app::SpriteSheetType spriteSheetTypeValue() const {
|
||||||
return (app::SpriteSheetType)(sheetType()->getSelectedItemIndex()+1);
|
return (app::SpriteSheetType)(sheetType()->getSelectedItemIndex()+1);
|
||||||
}
|
}
|
||||||
|
|
||||||
int columnsValue() const {
|
int columnsValue() const {
|
||||||
if (showConstraints()->isSelected() &&
|
if (spriteSheetTypeValue() == app::SpriteSheetType::Rows &&
|
||||||
spriteSheetTypeValue() == app::SpriteSheetType::Rows &&
|
|
||||||
constraintType()->getSelectedItemIndex() == (int)kConstraintType_Cols) {
|
constraintType()->getSelectedItemIndex() == (int)kConstraintType_Cols) {
|
||||||
return widthConstraint()->textInt();
|
return widthConstraint()->textInt();
|
||||||
}
|
}
|
||||||
@ -488,8 +502,7 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
int rowsValue() const {
|
int rowsValue() const {
|
||||||
if (showConstraints()->isSelected() &&
|
if (spriteSheetTypeValue() == app::SpriteSheetType::Columns &&
|
||||||
spriteSheetTypeValue() == app::SpriteSheetType::Columns &&
|
|
||||||
constraintType()->getSelectedItemIndex() == (int)kConstraintType_Rows) {
|
constraintType()->getSelectedItemIndex() == (int)kConstraintType_Rows) {
|
||||||
return heightConstraint()->textInt();
|
return heightConstraint()->textInt();
|
||||||
}
|
}
|
||||||
@ -498,8 +511,7 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
int widthValue() const {
|
int widthValue() const {
|
||||||
if (showConstraints()->isSelected() &&
|
if ((spriteSheetTypeValue() == app::SpriteSheetType::Rows ||
|
||||||
(spriteSheetTypeValue() == app::SpriteSheetType::Rows ||
|
|
||||||
spriteSheetTypeValue() == app::SpriteSheetType::Packed) &&
|
spriteSheetTypeValue() == app::SpriteSheetType::Packed) &&
|
||||||
(constraintType()->getSelectedItemIndex() == (int)kConstraintType_Width ||
|
(constraintType()->getSelectedItemIndex() == (int)kConstraintType_Width ||
|
||||||
constraintType()->getSelectedItemIndex() == (int)kConstraintType_Size)) {
|
constraintType()->getSelectedItemIndex() == (int)kConstraintType_Size)) {
|
||||||
@ -510,8 +522,7 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
int heightValue() const {
|
int heightValue() const {
|
||||||
if (showConstraints()->isSelected() &&
|
if ((spriteSheetTypeValue() == app::SpriteSheetType::Columns ||
|
||||||
(spriteSheetTypeValue() == app::SpriteSheetType::Columns ||
|
|
||||||
spriteSheetTypeValue() == app::SpriteSheetType::Packed) &&
|
spriteSheetTypeValue() == app::SpriteSheetType::Packed) &&
|
||||||
(constraintType()->getSelectedItemIndex() == (int)kConstraintType_Height ||
|
(constraintType()->getSelectedItemIndex() == (int)kConstraintType_Height ||
|
||||||
constraintType()->getSelectedItemIndex() == (int)kConstraintType_Size)) {
|
constraintType()->getSelectedItemIndex() == (int)kConstraintType_Size)) {
|
||||||
@ -551,30 +562,18 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
int borderPaddingValue() const {
|
int borderPaddingValue() const {
|
||||||
if (paddingEnabled()->isSelected()) {
|
int value = borderPadding()->textInt();
|
||||||
int value = borderPadding()->textInt();
|
return base::clamp(value, 0, 100);
|
||||||
return base::clamp(value, 0, 100);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int shapePaddingValue() const {
|
int shapePaddingValue() const {
|
||||||
if (paddingEnabled()->isSelected()) {
|
int value = shapePadding()->textInt();
|
||||||
int value = shapePadding()->textInt();
|
return base::clamp(value, 0, 100);
|
||||||
return base::clamp(value, 0, 100);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int innerPaddingValue() const {
|
int innerPaddingValue() const {
|
||||||
if (paddingEnabled()->isSelected()) {
|
int value = innerPadding()->textInt();
|
||||||
int value = innerPadding()->textInt();
|
return base::clamp(value, 0, 100);
|
||||||
return base::clamp(value, 0, 100);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool trimSpriteValue() const {
|
bool trimSpriteValue() const {
|
||||||
@ -646,57 +645,49 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void onSheetTypeChange() {
|
void onSheetTypeChange() {
|
||||||
for (int i=0; i<constraintType()->getItemCount(); ++i)
|
for (int i=1; i<constraintType()->getItemCount(); ++i)
|
||||||
constraintType()->getItem(i)->setVisible(false);
|
constraintType()->getItem(i)->setVisible(false);
|
||||||
|
|
||||||
|
mergeDups()->setEnabled(true);
|
||||||
|
|
||||||
const ConstraintType selectConstraint =
|
const ConstraintType selectConstraint =
|
||||||
(ConstraintType)constraintType()->getSelectedItemIndex();
|
(ConstraintType)constraintType()->getSelectedItemIndex();
|
||||||
bool constraints = true;
|
|
||||||
switch (spriteSheetTypeValue()) {
|
switch (spriteSheetTypeValue()) {
|
||||||
case app::SpriteSheetType::Horizontal:
|
case app::SpriteSheetType::Horizontal:
|
||||||
case app::SpriteSheetType::Vertical:
|
case app::SpriteSheetType::Vertical:
|
||||||
constraints = false;
|
|
||||||
constraintType()->setSelectedItemIndex(kConstraintType_None);
|
constraintType()->setSelectedItemIndex(kConstraintType_None);
|
||||||
break;
|
break;
|
||||||
case app::SpriteSheetType::Rows:
|
case app::SpriteSheetType::Rows:
|
||||||
constraintType()->getItem(kConstraintType_Cols)->setVisible(true);
|
constraintType()->getItem(kConstraintType_Cols)->setVisible(true);
|
||||||
constraintType()->getItem(kConstraintType_Width)->setVisible(true);
|
constraintType()->getItem(kConstraintType_Width)->setVisible(true);
|
||||||
if (selectConstraint != kConstraintType_Cols &&
|
if (selectConstraint != kConstraintType_None &&
|
||||||
|
selectConstraint != kConstraintType_Cols &&
|
||||||
selectConstraint != kConstraintType_Width)
|
selectConstraint != kConstraintType_Width)
|
||||||
constraintType()->setSelectedItemIndex((int)kConstraintType_Cols);
|
constraintType()->setSelectedItemIndex(kConstraintType_None);
|
||||||
break;
|
break;
|
||||||
case app::SpriteSheetType::Columns:
|
case app::SpriteSheetType::Columns:
|
||||||
constraintType()->getItem(kConstraintType_Rows)->setVisible(true);
|
constraintType()->getItem(kConstraintType_Rows)->setVisible(true);
|
||||||
constraintType()->getItem(kConstraintType_Height)->setVisible(true);
|
constraintType()->getItem(kConstraintType_Height)->setVisible(true);
|
||||||
if (selectConstraint != kConstraintType_Rows &&
|
if (selectConstraint != kConstraintType_None &&
|
||||||
|
selectConstraint != kConstraintType_Rows &&
|
||||||
selectConstraint != kConstraintType_Height)
|
selectConstraint != kConstraintType_Height)
|
||||||
constraintType()->setSelectedItemIndex((int)kConstraintType_Rows);
|
constraintType()->setSelectedItemIndex(kConstraintType_None);
|
||||||
break;
|
break;
|
||||||
case app::SpriteSheetType::Packed:
|
case app::SpriteSheetType::Packed:
|
||||||
constraintType()->getItem(kConstraintType_Width)->setVisible(true);
|
constraintType()->getItem(kConstraintType_Width)->setVisible(true);
|
||||||
constraintType()->getItem(kConstraintType_Height)->setVisible(true);
|
constraintType()->getItem(kConstraintType_Height)->setVisible(true);
|
||||||
constraintType()->getItem(kConstraintType_Size)->setVisible(true);
|
constraintType()->getItem(kConstraintType_Size)->setVisible(true);
|
||||||
if (selectConstraint != kConstraintType_Width &&
|
if (selectConstraint != kConstraintType_None &&
|
||||||
|
selectConstraint != kConstraintType_Width &&
|
||||||
selectConstraint != kConstraintType_Height &&
|
selectConstraint != kConstraintType_Height &&
|
||||||
selectConstraint != kConstraintType_Size) {
|
selectConstraint != kConstraintType_Size) {
|
||||||
constraintType()->setSelectedItemIndex((int)kConstraintType_Size);
|
constraintType()->setSelectedItemIndex(kConstraintType_None);
|
||||||
}
|
}
|
||||||
|
mergeDups()->setSelected(true);
|
||||||
|
mergeDups()->setEnabled(false);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
onConstraintTypeChange();
|
||||||
showConstraints()->setVisible(constraints);
|
|
||||||
constraints = (constraints &&
|
|
||||||
showConstraints()->isSelected());
|
|
||||||
|
|
||||||
constraintsLabel()->setVisible(constraints);
|
|
||||||
constraintsPlaceholder()->setVisible(constraints);
|
|
||||||
|
|
||||||
if (constraints)
|
|
||||||
onConstraintTypeChange();
|
|
||||||
else {
|
|
||||||
resize();
|
|
||||||
generatePreview();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void onConstraintTypeChange() {
|
void onConstraintTypeChange() {
|
||||||
@ -793,12 +784,6 @@ private:
|
|||||||
generatePreview();
|
generatePreview();
|
||||||
}
|
}
|
||||||
|
|
||||||
void onPaddingEnabledChange() {
|
|
||||||
paddingContainer()->setVisible(paddingEnabled()->isSelected());
|
|
||||||
resize();
|
|
||||||
generatePreview();
|
|
||||||
}
|
|
||||||
|
|
||||||
void onSplitLayersOrFrames() {
|
void onSplitLayersOrFrames() {
|
||||||
updateDefaultDataFilenameFormat();
|
updateDefaultDataFilenameFormat();
|
||||||
generatePreview();
|
generatePreview();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user