mirror of https://github.com/aseprite/aseprite.git
Compare commits
116 Commits
cef92c1a38
...
fa0b25fe87
Author | SHA1 | Date |
---|---|---|
|
fa0b25fe87 | |
|
f26ce64208 | |
|
e39dc90001 | |
|
8f0dea0988 | |
|
6f1870cff3 | |
|
e8f18087e5 | |
|
d8ac1a7a9e | |
|
5cfa75ab3f | |
|
94174509a4 | |
|
c444b566e1 | |
|
5d5f3ec234 | |
|
71e680e05a | |
|
df5dcdc1d9 | |
|
85793a9e5f | |
|
d7b07a5173 | |
|
fae42dbe12 | |
|
689e1ff524 | |
|
f549d476f1 | |
|
f494b8f343 | |
|
907138d5dd | |
|
7e4f9ad078 | |
|
af349ce7ee | |
|
3bc4ac0838 | |
|
1774d86939 | |
|
dce1dfd06b | |
|
6283d69707 | |
|
27da1b03d0 | |
|
834a94855f | |
|
21ad78cdbb | |
|
20b11a0fd3 | |
|
8d4c4857ee | |
|
70c8924719 | |
|
286dd1c755 | |
|
3a14ac72a4 | |
|
2db193b8e3 | |
|
002356ce19 | |
|
9a1e92da35 | |
|
07803ff361 | |
|
8e07617a9d | |
|
9c5ca6bcc6 | |
|
e193891df3 | |
|
bb8547d004 | |
|
85997a08cf | |
|
0995e72a6f | |
|
f61c2c3950 | |
|
0c49f2d7ad | |
|
5f7cc42333 | |
|
8e75cfc4c7 | |
|
983b07383f | |
|
c57554646b | |
|
74953174d6 | |
|
49fa35237a | |
|
0ccf9dcc4f | |
|
194f8424a8 | |
|
debab653fa | |
|
6e9024d54d | |
|
1fa7fd0831 | |
|
ab6b040e83 | |
|
bc312a37b3 | |
|
3129fda977 | |
|
6cb61fb41e | |
|
aa817a8d2a | |
|
40031f83d8 | |
|
ed3c8c510b | |
|
f23e3255bb | |
|
90282dbc40 | |
|
1227f9c49c | |
|
d61ae919ad | |
|
58a5a64cd2 | |
|
b2b2583176 | |
|
b535212642 | |
|
2dbfaf746b | |
|
23d4543272 | |
|
229a3cdf65 | |
|
b3814ec912 | |
|
e88f3bb413 | |
|
366751d1f2 | |
|
7434db6882 | |
|
5e12a5d3d8 | |
|
60112cd929 | |
|
a1fb751323 | |
|
24046600ec | |
|
34aae80eab | |
|
c8ae1017b3 | |
|
9c5d1feaf5 | |
|
aa66d260ad | |
|
86c7fae42c | |
|
778e62a411 | |
|
b08662eeca | |
|
d6c5ac6786 | |
|
e0226d95d9 | |
|
7eb2df6965 | |
|
c445075a79 | |
|
f556052fc6 | |
|
c8e9b33ad3 | |
|
37d2be7668 | |
|
43140e71ec | |
|
eecc14153d | |
|
131aa8b3df | |
|
ab69421096 | |
|
0e4e776bc0 | |
|
78b9f340f7 | |
|
92a039a619 | |
|
dc040e81e7 | |
|
465574e2db | |
|
544f711adc | |
|
ec95323856 | |
|
9b56d5ba3d | |
|
2c0920f514 | |
|
ba39b56096 | |
|
ad4d00ced2 | |
|
6df6037fdc | |
|
bb65296a1a | |
|
eaa2bdf0af | |
|
57309e5aa5 | |
|
4bb9239f50 |
|
@ -1,9 +0,0 @@
|
|||
Describe your bug report or feature request here
|
||||
...
|
||||
...
|
||||
...
|
||||
|
||||
### Aseprite and System version
|
||||
|
||||
* Aseprite version: version number, installer/portable/Steam/beta/dev/commit-hash
|
||||
* System: Windows/macOS/Linux, version, distribution
|
|
@ -0,0 +1,32 @@
|
|||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: bug, triage
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots or a screen recording to help explain your problem.
|
||||
|
||||
**Aseprite & System (please complete the following information):**
|
||||
- Aseprite: [version number, installer/portable/Steam/beta/dev/commit-hash]
|
||||
- System: [Windows/macOS/Linux, version, distribution]
|
||||
- Extensions: [List the extensions you have installed]
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
|
@ -0,0 +1,29 @@
|
|||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for Aseprite
|
||||
title: ''
|
||||
labels: feature, triage
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Did other user suggested a similar idea?**
|
||||
- [ ] No
|
||||
- [ ] Yes/Links to similar ideas
|
||||
> You can try to find a similar feature requests before in:
|
||||
> - GitHub issues: https://github.com/aseprite/aseprite/issues?q=label%3Afeature
|
||||
> - Community site: https://community.aseprite.org/c/features/7
|
||||
> - Steam community: https://steamcommunity.com/app/431730/discussions/1/
|
||||
> In case you find a similar feature request, making a comment there will be useful to give some traction and show interest in the feature.
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
|
@ -24,7 +24,8 @@ jobs:
|
|||
sudo apt-get update -qq
|
||||
sudo apt-get install -y \
|
||||
libpixman-1-dev libfreetype6-dev libharfbuzz-dev zlib1g-dev \
|
||||
libx11-dev libxcursor-dev libxi-dev libgl1-mesa-dev libfontconfig1-dev
|
||||
libx11-dev libxcursor-dev libxi-dev libxrandr-dev libgl1-mesa-dev \
|
||||
libfontconfig1-dev
|
||||
- uses: aseprite/get-ninja@main
|
||||
- uses: ilammy/msvc-dev-cmd@v1
|
||||
if: runner.os == 'Windows'
|
||||
|
|
|
@ -28,7 +28,8 @@ jobs:
|
|||
sudo apt-get update -qq
|
||||
sudo apt-get install -y \
|
||||
libpixman-1-dev libfreetype6-dev libharfbuzz-dev zlib1g-dev \
|
||||
libx11-dev libxcursor-dev libxi-dev libgl1-mesa-dev libfontconfig1-dev
|
||||
libx11-dev libxcursor-dev libxi-dev libxrandr-dev libgl1-mesa-dev \
|
||||
libfontconfig1-dev
|
||||
- name: Install Skia
|
||||
if: ${{ matrix.ui == 'gui' }}
|
||||
shell: bash
|
||||
|
|
|
@ -25,7 +25,7 @@ jobs:
|
|||
apt_packages: |
|
||||
libc++-dev, libc++abi-dev, libpixman-1-dev,
|
||||
libfreetype6-dev, libharfbuzz-dev, zlib1g-dev, libx11-dev,
|
||||
libxcursor-dev, libxi-dev, libgl1-mesa-dev
|
||||
libxcursor-dev, libxi-dev, libxrandr-dev, libgl1-mesa-dev
|
||||
cmake_command: |
|
||||
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug -DLAF_BACKEND=none -DCMAKE_EXPORT_COMPILE_COMMANDS=on
|
||||
- uses: ZedThree/clang-tidy-review/upload@v0.20.1
|
||||
|
|
|
@ -74,7 +74,7 @@ On macOS you will need macOS 15.4 SDK and Xcode 16.3 (older versions might work)
|
|||
|
||||
You will need the following dependencies on Ubuntu/Debian:
|
||||
|
||||
sudo apt-get install -y g++ clang cmake ninja-build libx11-dev libxcursor-dev libxi-dev libgl1-mesa-dev libfontconfig1-dev
|
||||
sudo apt-get install -y g++ clang cmake ninja-build libx11-dev libxcursor-dev libxi-dev libxrandr-dev libgl1-mesa-dev libfontconfig1-dev
|
||||
|
||||
Or use clang-12 packages (or newer) in case that clang in your distribution is older than clang 12.0:
|
||||
|
||||
|
@ -82,15 +82,15 @@ Or use clang-12 packages (or newer) in case that clang in your distribution is o
|
|||
|
||||
On Fedora:
|
||||
|
||||
sudo dnf install -y gcc-c++ clang libcxx-devel cmake ninja-build libX11-devel libXcursor-devel libXi-devel mesa-libGL-devel fontconfig-devel
|
||||
sudo dnf install -y gcc-c++ clang libcxx-devel cmake ninja-build libX11-devel libXcursor-devel libXi-devel libXrandr-devel mesa-libGL-devel fontconfig-devel
|
||||
|
||||
On Arch:
|
||||
|
||||
sudo pacman -S gcc clang cmake ninja libx11 libxcursor mesa-libgl fontconfig libwebp
|
||||
sudo pacman -S gcc clang cmake ninja libx11 libxcursor libxi libxrandr mesa-libgl fontconfig libwebp
|
||||
|
||||
On SUSE:
|
||||
|
||||
sudo zypper install gcc-c++ clang cmake ninja libX11-devel libXcursor-devel libXi-devel Mesa-libGL-devel fontconfig-devel
|
||||
sudo zypper install gcc-c++ clang cmake ninja libX11-devel libXcursor-devel libXi-devel libXrandr-devel Mesa-libGL-devel fontconfig-devel
|
||||
|
||||
# Automatic Building
|
||||
|
||||
|
|
8
build.sh
8
build.sh
|
@ -428,9 +428,17 @@ if [ ! -d "$skia_library_dir" ] ; then
|
|||
skia_url=$(bash laf/misc/skia-url.sh $skia_build)
|
||||
skia_file=$(basename $skia_url)
|
||||
if [ ! -f "$skia_dir/$skia_file" ] ; then
|
||||
if ! command -v curl >/dev/null 2>&1 ; then
|
||||
echo "Error: 'curl' command line tool is not available in PATH"
|
||||
exit 1
|
||||
fi
|
||||
curl --ssl-revoke-best-effort -L -o "$skia_dir/$skia_file" "$skia_url"
|
||||
fi
|
||||
if [ ! -d "$skia_library_dir" ] ; then
|
||||
if ! command -v unzip >/dev/null 2>&1 ; then
|
||||
echo "Error: 'unzip' command line tool is not available in PATH"
|
||||
exit 1
|
||||
fi
|
||||
unzip -n -d "$skia_dir" "$skia_dir/$skia_file"
|
||||
fi
|
||||
else
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
# HARFBUZZ_INCLUDE_DIRS - containg the HarfBuzz headers
|
||||
# HARFBUZZ_LIBRARIES - containg the HarfBuzz library
|
||||
|
||||
include(FindPkgConfig)
|
||||
find_package(PkgConfig QUIET)
|
||||
|
||||
pkg_check_modules(PC_HARFBUZZ harfbuzz>=0.9.7)
|
||||
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
File diff suppressed because it is too large
Load Diff
13
data/gui.xml
13
data/gui.xml
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Aseprite -->
|
||||
<!-- Copyright (C) 2018-2024 Igara Studio S.A. -->
|
||||
<!-- Copyright (C) 2018-2025 Igara Studio S.A. -->
|
||||
<!-- Copyright (C) 2001-2018 David Capello -->
|
||||
<gui>
|
||||
<!-- Keyboard shortcuts -->
|
||||
|
@ -119,6 +119,7 @@
|
|||
<param name="frame" value="current" />
|
||||
</key>
|
||||
<key command="ReverseFrames" shortcut="Alt+I" />
|
||||
<key command="RunCommand" shortcut="Ctrl+Space" />
|
||||
<key command="GotoFirstFrame" shortcut="Home" />
|
||||
<key command="GotoPreviousFrame" shortcut="Left" context="Normal" />
|
||||
<key command="GotoNextFrame" shortcut="Right" context="Normal" />
|
||||
|
@ -175,6 +176,7 @@
|
|||
<param name="popup" value="background" />
|
||||
</key>
|
||||
<key command="ShowExtras" shortcut="Ctrl+H" />
|
||||
<key command="ToggleWorkspaceLayout" shortcut="Shift+W" />
|
||||
<!-- Tabs -->
|
||||
<key command="GotoNextTab" shortcut="Ctrl+Tab" />
|
||||
<key command="GotoPreviousTab" shortcut="Ctrl+Shift+Tab" />
|
||||
|
@ -371,6 +373,12 @@
|
|||
<param name="quantity" value="1" />
|
||||
</key>
|
||||
|
||||
<!-- Main selection actions (apply transformation / undo) -->
|
||||
<key command="DeselectMask" shortcut="Esc" context="Transformation" />
|
||||
<key command="Apply" shortcut="Enter" context="Transformation" />
|
||||
<key command="Apply" shortcut="Enter Pad" context="Transformation" />
|
||||
<key command="Undo" shortcut="Ctrl+Z" mac="Cmd+Z" context="Transformation" />
|
||||
|
||||
<!-- Move selection with arrows -->
|
||||
<key command="MoveMask" shortcut="Left" context="Selection">
|
||||
<param name="target" value="content" />
|
||||
|
@ -1002,6 +1010,8 @@
|
|||
</menu>
|
||||
<menu text="@.view" id="view_menu">
|
||||
<item command="DuplicateView" text="@.view_duplicate_view" group="view_new" />
|
||||
<item command="ToggleWorkspaceLayout" text="@.view_workspace_layout" />
|
||||
<item command="RunCommand" text="@.view_run_command" />
|
||||
<separator />
|
||||
<item command="ShowExtras" text="@.view_show_extras" />
|
||||
<menu text="@.view_show" group="view_extras">
|
||||
|
@ -1203,6 +1213,7 @@
|
|||
|
||||
<menu id="slice_popup_menu">
|
||||
<item command="SliceProperties" text="@.properties" group="slice_popup_properties" />
|
||||
<item command="DuplicateSlice" text="@.duplicate" group="slice_popup_duplicate" />
|
||||
<item command="RemoveSlice" text="@.delete" group="slice_popup_delete" />
|
||||
</menu>
|
||||
|
||||
|
|
|
@ -167,6 +167,7 @@
|
|||
<option id="keep_closed_sprite_on_memory_for" type="double" default="15.0" />
|
||||
<option id="show_full_path" type="bool" default="true" />
|
||||
<option id="edit_full_path" type="bool" default="false" />
|
||||
<option id="workspace_layout" type="std::string" />
|
||||
<option id="timeline_position" type="TimelinePosition" default="TimelinePosition::BOTTOM" />
|
||||
<option id="timeline_layer_panel_width" type="int" default="100" />
|
||||
<option id="show_menu_bar" type="bool" default="true" />
|
||||
|
@ -255,6 +256,7 @@
|
|||
<option id="one_finger_as_mouse_movement" type="bool" default="true" />
|
||||
<option id="load_wintab_driver" type="bool" default="false" />
|
||||
<option id="flash_layer" type="bool" default="false" />
|
||||
<option id="use_selection_tool_loop" type="bool" default="false" />
|
||||
<option id="nonactive_layers_opacity" type="int" default="255" />
|
||||
<option id="nonactive_layers_opacity_preview" type="int" default="255" />
|
||||
</section>
|
||||
|
|
|
@ -206,6 +206,7 @@ AddColor_Background = Background
|
|||
AddColor_Foreground = Foreground
|
||||
AddColor_Specific = Specific
|
||||
AdvancedMode = Advanced Mode
|
||||
Apply = Apply
|
||||
AutocropSprite = Trim Sprite
|
||||
AutocropSprite_ByGrid = Trim Sprite by Grid
|
||||
BackgroundFromLayer = Background from Layer
|
||||
|
@ -265,6 +266,7 @@ Despeckle = Despeckle
|
|||
DeveloperConsole = Developer Console
|
||||
DiscardBrush = Discard Brush
|
||||
DuplicateLayer = Duplicate Layer
|
||||
DuplicateSlice = Duplicate Slice
|
||||
DuplicateSprite = Duplicate Sprite
|
||||
DuplicateView = Duplicate View
|
||||
Exit = Exit
|
||||
|
@ -401,6 +403,7 @@ ReverseFrames = Reverse Frames
|
|||
Rotate = Rotate {0} {1}
|
||||
Rotate_Selection = Selection
|
||||
Rotate_Sprite = Sprite
|
||||
RunCommand = Run Command
|
||||
RunScript = Run Script
|
||||
SaveFile = Save File
|
||||
SaveFileAs = Save File As
|
||||
|
@ -488,6 +491,7 @@ TilesetDuplicate = Duplicate Tileset
|
|||
Undo = Undo
|
||||
UndoHistory = Undo History
|
||||
UnlinkCel = Unlink Cel
|
||||
ToggleWorkspaceLayout = Toggle Workspace Layout
|
||||
Zoom = Zoom
|
||||
Zoom_In = Zoom In
|
||||
Zoom_Out = Zoom Out
|
||||
|
@ -581,8 +585,9 @@ rotsprite = RotSprite
|
|||
pixel_perfect = Pixel-perfect
|
||||
linear_gradient = Linear Gradient
|
||||
radial_gradient = Radial Gradient
|
||||
drop_pixel = Drop pixels here (Enter)
|
||||
cancel_drag = Cancel drag and drop (Esc)
|
||||
drop_pixel_and_deselect = Apply transformation and deselect
|
||||
drop_pixel = Apply transformation and keep selection
|
||||
cancel_drag = Cancel transformation and undo/discard changes
|
||||
auto_select_layer = Auto Select Layer
|
||||
all = All
|
||||
none = None
|
||||
|
@ -621,6 +626,14 @@ current_layer = Current Layer
|
|||
first_ref_layer = First Reference Layer
|
||||
pick = Pick:
|
||||
sample = Sample:
|
||||
position_label = P:
|
||||
rotation_label = R:
|
||||
position_x = X Position
|
||||
position_y = Y Position
|
||||
size_width = Width
|
||||
size_height = Height
|
||||
rotation_angle = Angle
|
||||
rotation_skew = Skew
|
||||
|
||||
[convolution_matrix]
|
||||
reload_stock = &Reload Stock
|
||||
|
@ -789,7 +802,22 @@ empty_fonts = No system fonts were found
|
|||
[font_style]
|
||||
antialias = Antialias
|
||||
hinting = Hinting
|
||||
hinting_none = No Hinting
|
||||
hinting_slight = Slight Hinting
|
||||
hinting_full = Full Hinting
|
||||
ligatures = Ligatures
|
||||
font_weight = Font Weight
|
||||
italic = Italic
|
||||
font_weight_100 = Thin
|
||||
font_weight_200 = Extra Light
|
||||
font_weight_300 = Light
|
||||
font_weight_400 = Normal
|
||||
font_weight_500 = Medium
|
||||
font_weight_600 = Semi Bold
|
||||
font_weight_700 = Bold
|
||||
font_weight_800 = Extra Bold
|
||||
font_weight_900 = Black
|
||||
font_weight_1000 = Extra Black
|
||||
|
||||
[frame_combo]
|
||||
all_frames = All frames
|
||||
|
@ -817,6 +845,8 @@ same_in_all_tools = Same in all Tools
|
|||
opacity = Opacity:
|
||||
tolerance = Tolerance:
|
||||
show_more = Show more...
|
||||
search = Search
|
||||
copy_of = {} Copy
|
||||
|
||||
[general_text]
|
||||
copy = &Copy
|
||||
|
@ -957,6 +987,7 @@ key_context_move_tool = Move Tool
|
|||
key_context_freehand_tool = Freehand Tool
|
||||
key_context_shape_tool = Shape Tool
|
||||
key_context_frames_selection = Frames Selection
|
||||
key_context_transformation = Transformation
|
||||
copy_selection = Copy Selection
|
||||
snap_to_grid = Snap To Grid
|
||||
lock_axis = Lock Axis
|
||||
|
@ -1164,6 +1195,8 @@ select_load_from_file = &Load from MSK file
|
|||
select_save_to_file = &Save to MSK file
|
||||
view = &View
|
||||
view_duplicate_view = Duplicate &View
|
||||
view_workspace_layout = Workspace &Layout
|
||||
view_run_command = Run Command
|
||||
view_show_extras = &Extras
|
||||
view_show = &Show
|
||||
view_show_layer_edges = &Layer Edges
|
||||
|
@ -1205,6 +1238,14 @@ help_twitter = Twitter
|
|||
help_enter_license = Enter &License
|
||||
help_about = &About
|
||||
|
||||
[main_window]
|
||||
layout = Workspace Layout
|
||||
default_layout = Default
|
||||
mirrored_default_layout = Mirrored Default
|
||||
timeline = Timeline
|
||||
user_layouts = User Layouts
|
||||
new_layout = New Layout...
|
||||
|
||||
[mask_by_color]
|
||||
title = Select Color
|
||||
label_color = Color:
|
||||
|
@ -1233,6 +1274,20 @@ name = Name:
|
|||
tileset = Tileset:
|
||||
default_new_layer_name = New Layer
|
||||
|
||||
[new_layout]
|
||||
title = New Workspace Layout
|
||||
name = Name:
|
||||
deleting_layout = Deleting Layout
|
||||
deleting_layout_confirmation = Are you sure you want to delete the '{}' layout?
|
||||
restoring_layout = Restoring Layout
|
||||
restoring_layout_confirmation = Are you sure you want to restore the '{}' layout?
|
||||
|
||||
[dock]
|
||||
left = Dock Left
|
||||
right = Dock Right
|
||||
top = Dock Top
|
||||
bottom = Dock Bottom
|
||||
|
||||
[news_listbox]
|
||||
more = More...
|
||||
problem_loading = Problems loading news. Please retry.
|
||||
|
@ -1562,6 +1617,7 @@ set_cursor_fix = Set cursor position from stylus location
|
|||
set_cursor_fix_tooltip = Sets the mouse position to the pen location when\nyou have two pointers available (e.g. mouse and pen)\n\nUseful to zoom in/out from the pen position and to get the\ncorrect cursor location when screencasting/live streaming.
|
||||
wintab_more_info = (More Information)
|
||||
flash_selected_layer = Flash layer when it is selected
|
||||
use_selection_tool_loop = New selection tools implementation
|
||||
non_active_layer_opacity = Opacity for non-active layers:
|
||||
cel_content_format = Cel content format:
|
||||
cel_format_compressed = Compressed
|
||||
|
@ -1664,6 +1720,10 @@ from = From:
|
|||
to = To:
|
||||
tolerance = Tolerance:
|
||||
|
||||
[duplicate_slice]
|
||||
x_duplicated = Slice "{}" duplicated
|
||||
n_slices_duplicated = {} slice(s) duplicated
|
||||
|
||||
[remove_slice]
|
||||
x_removed = Slice "{}" removed
|
||||
n_slices_removed = {} slice(s) removed
|
||||
|
@ -1748,6 +1808,7 @@ delete_file = Delete file, I've already sent it
|
|||
|
||||
[slice_popup_menu]
|
||||
properties = Slice &Properties...
|
||||
duplicate = D&uplicate Slice
|
||||
delete = &Delete Slice
|
||||
|
||||
[slice_properties]
|
||||
|
@ -1849,9 +1910,6 @@ more_options = More Options
|
|||
|
||||
[timeline_conf]
|
||||
position = Position:
|
||||
left = &Left
|
||||
right = &Right
|
||||
bottom = &Bottom
|
||||
frame_header = Frame Header:
|
||||
first_frame = First Frame:
|
||||
thumbnails = Thumbnails
|
||||
|
@ -1947,3 +2005,17 @@ toggle_left_diagonal = Toggle -45° Symmetry
|
|||
show_options = Symmetry Options
|
||||
reset_position = Reset Symmetry to Center
|
||||
reset_position_to_view_center = Reset Symmetry to View Center
|
||||
|
||||
[run_command]
|
||||
title = Run Command
|
||||
title_help = Run Command: Help
|
||||
title_expression = Run Command: Math Expressions
|
||||
title_script = Run Command: Lua Script Runner
|
||||
command_placeholder = Search for commands, ? for help.
|
||||
more_result_count = ... ({} more results)
|
||||
tip_executed_command = Executed: '{0}'
|
||||
tip_code_executed = Code executed successfully.
|
||||
help_search = Type to search through Aseprite's functionality.
|
||||
help_expressions = You can also start with "=" to do math expressions
|
||||
help_lua = or "@" to execute Lua script code.
|
||||
extension_tag = Extension
|
||||
|
|
|
@ -4,27 +4,27 @@
|
|||
<vbox id="brush_slot_params">
|
||||
<grid columns="2">
|
||||
|
||||
<label text="@.brush" />
|
||||
<label text="@.brush" for="brush_params" />
|
||||
<buttonset id="brush_params" columns="3" multiple="true">
|
||||
<item id="brush_type" text="@.brush_type" />
|
||||
<item id="brush_size" text="@.brush_size" />
|
||||
<item id="brush_angle" text="@.brush_angle" />
|
||||
</buttonset>
|
||||
|
||||
<label text="@.color" />
|
||||
<label text="@.color" for="color_params" />
|
||||
<buttonset id="color_params" columns="2" multiple="true">
|
||||
<item id="fg_color" text="@.foreground" />
|
||||
<item id="bg_color" text="@.background" />
|
||||
<item id="image_color" text="@.image_color" hspan="2" />
|
||||
</buttonset>
|
||||
|
||||
<label text="@.ink" />
|
||||
<label text="@.ink" for="ink_params" />
|
||||
<buttonset id="ink_params" columns="2" multiple="true">
|
||||
<item id="ink_type" text="@.ink_type" />
|
||||
<item id="ink_opacity" text="@.ink_opacity" />
|
||||
</buttonset>
|
||||
|
||||
<label text="@.extras" />
|
||||
<label text="@.extras" for="extra_params" />
|
||||
<buttonset id="extra_params" columns="2" multiple="true">
|
||||
<item id="shade" text="@.shade" />
|
||||
<item id="pixel_perfect" text="@.pixel_perfect" />
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
<separator text="@.size" left="true" horizontal="true" />
|
||||
<hbox>
|
||||
<grid columns="2">
|
||||
<label text="@.width" />
|
||||
<label text="@.width" for="width" />
|
||||
<expr text="0" id="width" suffix="px" magnet="true" />
|
||||
<label text="@.height" />
|
||||
<label text="@.height" for="height" />
|
||||
<expr text="0" id="height" suffix="px" />
|
||||
<hbox filler="true" cell_hspan="2" />
|
||||
</grid>
|
||||
|
@ -28,16 +28,16 @@
|
|||
|
||||
<separator text="@.borders" left="true" horizontal="true" />
|
||||
<grid columns="4">
|
||||
<label text="@.left" />
|
||||
<label text="@.left" for="left" />
|
||||
<expr text="0" id="left" suffix="px" tooltip="@.left_tooltip" />
|
||||
|
||||
<label text="@.top" />
|
||||
<label text="@.top" for="top" />
|
||||
<expr text="0" id="top" suffix="px" tooltip="@.top_tooltip" />
|
||||
|
||||
<label text="@.right" />
|
||||
<label text="@.right" for="right" />
|
||||
<expr text="0" id="right" suffix="px" tooltip="@.right_tooltip" />
|
||||
|
||||
<label text="@.bottom" />
|
||||
<label text="@.bottom" for="bottom" />
|
||||
<expr text="0" id="bottom" suffix="px" tooltip="@.bottom_tooltip" />
|
||||
</grid>
|
||||
|
||||
|
|
|
@ -4,11 +4,11 @@
|
|||
<gui>
|
||||
<window id="cel_properties" text="@.title">
|
||||
<grid id="properties_grid" columns="4">
|
||||
<label text="@.opacity" />
|
||||
<label text="@.opacity" for="opacity" />
|
||||
<opacityslider id="opacity" cell_align="horizontal" width="128" cell_hspan="2" />
|
||||
<button id="user_data" icon="icon_user_data" tooltip="@.user_data_tooltip" />
|
||||
|
||||
<label text="@.zindex" />
|
||||
<label text="@.zindex" for="zindex" />
|
||||
<expr id="zindex" cell_align="horizontal" width="128" />
|
||||
<buttonset id="zindex_spin" columns="1">
|
||||
<item icon="spin_up" />
|
||||
|
|
|
@ -5,10 +5,10 @@
|
|||
<vbox>
|
||||
<hbox expansive="true">
|
||||
<grid columns="2">
|
||||
<label text="@.x" />
|
||||
<label text="@.x" for="x" />
|
||||
<expr id="x" magnet="true" />
|
||||
|
||||
<label text="@.y" />
|
||||
<label text="@.y" for="y" />
|
||||
<expr id="y" />
|
||||
</grid>
|
||||
</hbox>
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
</view>
|
||||
<hbox id="dithering_placeholder" />
|
||||
<hbox id="amount">
|
||||
<label text="@.amount" />
|
||||
<label text="@.amount" for="factor" />
|
||||
<slider min="0" max="100" id="factor" minwidth="100" />
|
||||
<label text="%" />
|
||||
<label text="%" for="factor" />
|
||||
</hbox>
|
||||
|
||||
<combobox id="to_gray_combobox">
|
||||
|
@ -24,10 +24,10 @@
|
|||
|
||||
<check id="advanced_check" text="@general.advanced_options" />
|
||||
<grid id="advanced" columns="2">
|
||||
<label text="@rgbmap_algorithm_selector.label" />
|
||||
<label text="@rgbmap_algorithm_selector.label" for="rgbmap_algorithm_selector" />
|
||||
<hbox id="rgbmap_algorithm_placeholder" cell_align="horizontal" />
|
||||
|
||||
<label text="@best_fit_criteria_selector.label" />
|
||||
<label text="@best_fit_criteria_selector.label" for="best_fit_criteria_selector" />
|
||||
<hbox id="best_fit_criteria_placeholder" cell_align="horizontal" />
|
||||
</grid>
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<gui>
|
||||
<window id="css_options" text="@.title">
|
||||
<grid columns="2">
|
||||
<label text="@.pixel_scale" />
|
||||
<label text="@.pixel_scale" for="pixel_scale" />
|
||||
<expr id="pixel_scale" magnet="true" cell_align="horizontal"/>
|
||||
|
||||
<check text="@.with_vars" id="with_vars" cell_hspan="2" />
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
<gui>
|
||||
<hbox id="despeckle">
|
||||
<grid columns="2">
|
||||
<label text="@.width" />
|
||||
<label text="@.width" for="width" />
|
||||
<expr id="width" cell_align="horizontal" />
|
||||
<label text="@.height" />
|
||||
<label text="@.height" for="height" />
|
||||
<expr id="height" cell_align="horizontal" />
|
||||
</grid>
|
||||
</hbox>
|
||||
|
|
|
@ -3,16 +3,13 @@
|
|||
<gui>
|
||||
<window id="duplicate_sprite" text="@.title">
|
||||
<box vertical="true">
|
||||
<box horizontal="true" expansive="true">
|
||||
<box vertical="true" homogeneous="true">
|
||||
<label text="@.duplicate" />
|
||||
<label text="@.as" />
|
||||
</box>
|
||||
<box vertical="true" homogeneous="true" expansive="true">
|
||||
<label text="" id="src_name" />
|
||||
<entry maxsize="256" id="dst_name" magnet="true" />
|
||||
</box>
|
||||
</box>
|
||||
<grid columns="2">
|
||||
<label text="@.duplicate" />
|
||||
<label text="" id="src_name" cell_align="horizontal" />
|
||||
|
||||
<label text="@.as" for="dst_name" />
|
||||
<entry maxsize="256" id="dst_name" magnet="true" cell_align="horizontal" />
|
||||
</grid>
|
||||
<check text="@.merged_layers" id="flatten" />
|
||||
<box horizontal="true" homogeneous="true">
|
||||
<button text="@general.ok" closewindow="true" id="ok" magnet="true" />
|
||||
|
|
|
@ -32,29 +32,29 @@
|
|||
<grid id="options" columns="2" childspacing="0" expansive="true">
|
||||
<separator id="separator" text="@.max_point_value" horizontal="true" cell_hspan="2" />
|
||||
|
||||
<label id="size_label" text="@.size" style="mini_label" />
|
||||
<label id="size_label" text="@.size" style="mini_label" for="min_size" />
|
||||
<slider id="min_size" value="1" min="1" max="64" cell_align="horizontal" style="mini_slider"
|
||||
tooltip="@.min_size_tooltip" tooltip_dir="left" />
|
||||
<boxfiller />
|
||||
<slider id="max_size" value="64" min="1" max="64" cell_align="horizontal" style="mini_slider"
|
||||
tooltip="@.max_size_tooltip" tooltip_dir="left" />
|
||||
|
||||
<label id="angle_label" text="@.angle" style="mini_label" />
|
||||
<label id="angle_label" text="@.angle" style="mini_label" for="min_angle" />
|
||||
<slider id="min_angle" value="0" min="-180" max="+180" cell_align="horizontal" style="mini_slider"
|
||||
tooltip="@.min_angle_tooltip" tooltip_dir="left" />
|
||||
<boxfiller />
|
||||
<slider id="max_angle" value="0" min="-180" max="+180" cell_align="horizontal" style="mini_slider"
|
||||
tooltip="@.max_angle_tooltip" tooltip_dir="left" />
|
||||
|
||||
<label id="gradient_label" text="@.gradient" style="mini_label" />
|
||||
<label id="gradient_label" text="@.gradient" style="mini_label" for="dithering_selector" />
|
||||
<hbox id="gradient_placeholder" cell_vspan="2" />
|
||||
<link id="gradient_from_to" style="mini_label" />
|
||||
|
||||
<separator id="separator2" text="@.sensors_tweaks" horizontal="true" cell_hspan="2" />
|
||||
|
||||
<label id="pressure_label" text="@.pressure" style="mini_label" />
|
||||
<label id="pressure_label" text="@.pressure" style="mini_label" for="pressure_slider" />
|
||||
<hbox id="pressure_placeholder" cell_align="horizontal" />
|
||||
<label id="velocity_label" text="@.velocity" style="mini_label" />
|
||||
<label id="velocity_label" text="@.velocity" style="mini_label" for="velocity_slider" />
|
||||
<hbox id="velocity_placeholder" cell_align="horizontal" />
|
||||
</grid>
|
||||
<separator horizontal="true" cell_hspan="2" />
|
||||
|
|
|
@ -4,9 +4,9 @@
|
|||
<gui>
|
||||
<window id="export_file" text="@.title" help="exporting">
|
||||
<grid columns="3">
|
||||
<label text="@.output_file" />
|
||||
<label text="@.output_file" for="output_field" />
|
||||
<filename id="output_field" cell_align="horizontal" cell_hspan="2" />
|
||||
<label id="resize_label" text="@.resize" />
|
||||
<label id="resize_label" text="@.resize" for="resize" />
|
||||
<hbox cell_hspan="2" cell_align="horizontal">
|
||||
<combobox id="resize" editable="true" suffix="%" expansive="true">
|
||||
<listitem text="25" />
|
||||
|
@ -22,17 +22,17 @@
|
|||
<listitem text="900" />
|
||||
<listitem text="1000" />
|
||||
</combobox>
|
||||
<label id="area_label" text="@.area" />
|
||||
<label id="area_label" text="@.area" for="area" />
|
||||
<combobox id="area" text="" cell_align="horizontal" cell_hspan="2" expansive="true" />
|
||||
</hbox>
|
||||
|
||||
<label id="layers_label" text="@.layers" />
|
||||
<label id="layers_label" text="@.layers" for="layers" />
|
||||
<combobox id="layers" text="" cell_align="horizontal" cell_hspan="2" />
|
||||
|
||||
<label id="frames_label" text="@.frames" />
|
||||
<label id="frames_label" text="@.frames" for="frames" />
|
||||
<combobox id="frames" text="" cell_align="horizontal" cell_hspan="2" />
|
||||
|
||||
<label id="anidir_label" text="@.anidir" />
|
||||
<label id="anidir_label" text="@.anidir" for="anidir" />
|
||||
<combobox id="anidir" text="" cell_align="horizontal" cell_hspan="2" />
|
||||
|
||||
<check id="play_subtags" text="@.play_subtags" cell_hspan="3" />
|
||||
|
|
|
@ -25,11 +25,11 @@
|
|||
<!-- Layout -->
|
||||
|
||||
<grid id="section_layout" columns="4" expansive="true">
|
||||
<label text="@.sheet_type" />
|
||||
<label text="@.sheet_type" for="sheet_type" />
|
||||
<combobox id="sheet_type" expansive="true" cell_hspan="3" cell_align="horizontal"
|
||||
tooltip="@.sheet_type_tooltip" tooltip_dir="bottom" />
|
||||
|
||||
<label text="@.constraints" />
|
||||
<label text="@.constraints" for="constraint_type" />
|
||||
<hbox cell_hspan="3">
|
||||
<combobox id="constraint_type" tooltip="@.constraints_tooltip" />
|
||||
<expr id="width_constraint" />
|
||||
|
@ -50,15 +50,15 @@
|
|||
<button id="close_sprite_section" icon="window_close_icon" />
|
||||
</hbox>
|
||||
<grid id="section_sprite" columns="4" expansive="true">
|
||||
<label text="@.source" />
|
||||
<label text="@.source" for="source" />
|
||||
<combobox id="source" text="" cell_hspan="2" cell_align="horizontal" />
|
||||
<boxfiller />
|
||||
|
||||
<label text="@.layers" />
|
||||
<label text="@.layers" for="layers" />
|
||||
<combobox id="layers" text="" cell_hspan="2" cell_align="horizontal" />
|
||||
<check id="split_layers" text="@.split_layers" tooltip="@.split_layers_tooltip" tooltip_dir="bottom" />
|
||||
|
||||
<label text="@.frames" />
|
||||
<label text="@.frames" for="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>
|
||||
|
@ -75,11 +75,11 @@
|
|||
<hbox cell_hspan="3">
|
||||
<vbox>
|
||||
<grid columns="2">
|
||||
<label text="@.border" />
|
||||
<label text="@.border" for="border_padding" />
|
||||
<expr id="border_padding" text="0" tooltip="@.border_tooltip" />
|
||||
<label text="@.shape" />
|
||||
<label text="@.shape" for="shape_padding" />
|
||||
<expr id="shape_padding" text="0" tooltip="@.shape_tooltip" />
|
||||
<label text="@.inner" />
|
||||
<label text="@.inner" for="inner_padding" />
|
||||
<expr id="inner_padding" text="0" tooltip="@.inner_tooltip" />
|
||||
</grid>
|
||||
</vbox>
|
||||
|
@ -130,12 +130,12 @@
|
|||
|
||||
<hbox />
|
||||
<grid id="data_formats_placeholder" columns="3" cell_hspan="3" cell_align="horizontal">
|
||||
<label text="@.data_filename_format" />
|
||||
<label text="@.data_filename_format" for="data_filename_format" />
|
||||
<entry id="data_filename_format" maxsize="1024" maxwidth="256" cell_align="horizontal"
|
||||
tooltip="@.data_filename_format_tooltip" />
|
||||
<link text="(?)" url="https://www.aseprite.org/docs/cli/#filename-format" />
|
||||
|
||||
<label text="@.data_tagname_format" />
|
||||
<label text="@.data_tagname_format" for="data_tagname_format" />
|
||||
<entry id="data_tagname_format" maxsize="1024" maxwidth="256" cell_align="horizontal"
|
||||
tooltip="@.data_tagname_format_tooltip" />
|
||||
<link text="(?)" url="https://www.aseprite.org/docs/cli/#tagname-format" />
|
||||
|
|
|
@ -27,10 +27,10 @@
|
|||
</box>
|
||||
<vbox id="file_view_placeholder" expansive="true" />
|
||||
<grid columns="2">
|
||||
<label text="@.file_name" />
|
||||
<label text="@.file_name" for="file_name" />
|
||||
<box id="file_name_placeholder" cell_align="horizontal" />
|
||||
|
||||
<label text="@.file_type" />
|
||||
<label text="@.file_type" for="file_type" />
|
||||
<hbox cell_align="horizontal">
|
||||
<combobox id="file_type" minwidth="70" />
|
||||
<boxfiller />
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<label text="" id="frame" />
|
||||
<box cell_align="horizontal" />
|
||||
|
||||
<label text="@.duration" />
|
||||
<label text="@.duration" for="frlen" />
|
||||
<expr id="frlen" magnet="true" />
|
||||
<box cell_align="horizontal" />
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<gui>
|
||||
<window id="goto_frame" text="@.title">
|
||||
<vbox>
|
||||
<label text="@.frame_or_tags" />
|
||||
<label text="@.frame_or_tags" for="frame" />
|
||||
<vbox id="frame_placeholder" />
|
||||
|
||||
<separator horizontal="true" />
|
||||
|
|
|
@ -4,16 +4,16 @@
|
|||
<window id="grid_settings" text="@.title">
|
||||
<grid columns="4">
|
||||
|
||||
<label text="@.x" />
|
||||
<label text="@.x" for="grid_x" />
|
||||
<expr id="grid_x" text="" magnet="true" />
|
||||
|
||||
<label text="@.y" />
|
||||
<label text="@.y" for="grid_y" />
|
||||
<expr id="grid_y" text="" />
|
||||
|
||||
<label text="@.width" />
|
||||
<label text="@.width" for="grid_w" />
|
||||
<expr id="grid_w" text="" />
|
||||
|
||||
<label text="@.height" />
|
||||
<label text="@.height" for="grid_h" />
|
||||
<expr id="grid_h" text="" />
|
||||
|
||||
<separator horizontal="true" cell_hspan="4" />
|
||||
|
|
|
@ -7,36 +7,36 @@
|
|||
<grid columns="4">
|
||||
<button id="select_file" text="@select_file.text" cell_hspan="4" />
|
||||
|
||||
<label text="@.type" />
|
||||
<label text="@.type" for="sheet_type" />
|
||||
<combobox id="sheet_type" cell_hspan="3" />
|
||||
|
||||
<separator text="@.tiles" horizontal="true" cell_hspan="4" />
|
||||
|
||||
<label text="@.x" />
|
||||
<label text="@.x" for="x" />
|
||||
<expr id="x" text="0" />
|
||||
|
||||
<label text="@.y" />
|
||||
<label text="@.y" for="y" />
|
||||
<expr id="y" text="0" />
|
||||
|
||||
<label text="@.width" />
|
||||
<label text="@.width" for="width" />
|
||||
<expr id="width" text="16" />
|
||||
|
||||
<label text="@.height" />
|
||||
<label text="@.height" for="height" />
|
||||
<expr id="height" text="16" />
|
||||
|
||||
<separator horizontal="true" cell_hspan="4" />
|
||||
|
||||
<label text="@.columns" />
|
||||
<label text="@.columns" for="columns" />
|
||||
<expr id="columns" />
|
||||
|
||||
<label text="@.rows" />
|
||||
<label text="@.rows" for="rows" />
|
||||
<expr id="rows" />
|
||||
|
||||
<check id="padding_enabled" text="@.padding" cell_hspan="4" />
|
||||
|
||||
<label text="@.horizontal_padding" id="horizontal_padding_label" />
|
||||
<label text="@.horizontal_padding" id="horizontal_padding_label" for="horizontal_padding" />
|
||||
<expr id="horizontal_padding" text="0" />
|
||||
<label text="@.vertical_padding" id="vertical_padding_label" />
|
||||
<label text="@.vertical_padding" id="vertical_padding_label" for="vertical_padding" />
|
||||
<expr id="vertical_padding" text="0" />
|
||||
|
||||
<check id="partial_tiles" text="@.partial_tiles" cell_hspan="4" />
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<gui>
|
||||
<window id="jpeg_options" text="@.title">
|
||||
<grid columns="2">
|
||||
<label text="@.quality" />
|
||||
<label text="@.quality" for="quality" />
|
||||
<slider min="0" max="10" id="quality" cell_align="horizontal" width="128" />
|
||||
|
||||
<separator horizontal="true" cell_hspan="2" />
|
||||
|
|
|
@ -61,10 +61,8 @@
|
|||
<listbox id="drag_actions" />
|
||||
</view>
|
||||
<separator horizontal="true" />
|
||||
<hbox>
|
||||
<vbox>
|
||||
<label text="@.drag_angle" />
|
||||
</vbox>
|
||||
<grid columns="4">
|
||||
<label text="@.drag_angle" for="drag_angle" cell_align="top" />
|
||||
<buttonset columns="3" id="drag_angle">
|
||||
<item icon="canvas_nw"
|
||||
style="dir_item"
|
||||
|
@ -100,15 +98,11 @@
|
|||
tooltip="@.drag_angle_tooltip"
|
||||
tooltip_dir="top" />
|
||||
</buttonset>
|
||||
<vbox>
|
||||
<label text="@.drag_distance" />
|
||||
</vbox>
|
||||
<vbox>
|
||||
<slider min="1" max="100" id="drag_distance" cell_align="horizontal" width="128"
|
||||
tooltip="@.drag_distance_tooltip"
|
||||
tooltip_dir="bottom" />
|
||||
</vbox>
|
||||
</hbox>
|
||||
<label text="@.drag_distance" for="drag_distance" cell_align="top" />
|
||||
<box>
|
||||
<slider min="1" max="100" id="drag_distance" width="128" tooltip="@.drag_distance_tooltip" tooltip_dir="bottom" />
|
||||
</box>
|
||||
</grid>
|
||||
</vbox>
|
||||
</vbox>
|
||||
</splitter>
|
||||
|
|
|
@ -5,18 +5,18 @@
|
|||
<window id="layer_properties" text="@.title">
|
||||
<vbox>
|
||||
<grid id="properties_grid" columns="3">
|
||||
<label text="@.name" />
|
||||
<label text="@.name" for="name" />
|
||||
<entry text="" id="name" magnet="true" maxsize="256" minwidth="64" cell_align="horizontal" />
|
||||
<button id="user_data" icon="icon_user_data" tooltip="@general.user_data" />
|
||||
|
||||
<label text="@.mode" />
|
||||
<label text="@.mode" for="mode" />
|
||||
<combobox id="mode" />
|
||||
<button id="tileset" icon="tiles" tooltip="@.tileset_tooltip" />
|
||||
|
||||
<label text="@.opacity" />
|
||||
<label text="@.opacity" for="opacity" />
|
||||
<opacityslider id="opacity" width="128" cell_align="horizontal" cell_hspan="2" />
|
||||
|
||||
<label id="uuid_label" text="@.uuid" visible="false" />
|
||||
<label id="uuid_label" text="@.uuid" visible="false" for="uuid" />
|
||||
<entry id="uuid" readonly="true" maxsize="36" cell_hspan="2" visible="false"/>
|
||||
</grid>
|
||||
</vbox>
|
||||
|
|
|
@ -1,30 +0,0 @@
|
|||
<!-- Aseprite -->
|
||||
<!-- Copyright (C) 2001-2017 by David Capello -->
|
||||
<gui>
|
||||
<window id="main_window" noborders="true" desktop="true">
|
||||
<vbox noborders="true" expansive="true">
|
||||
<hbox noborders="true" id="menu_bar_placeholder" />
|
||||
<hbox noborders="true" id="tabs_placeholder" />
|
||||
<splitter id="color_bar_splitter"
|
||||
horizontal="true" expansive="true"
|
||||
by="pixel"
|
||||
style="workspace_splitter">
|
||||
<vbox noborders="true" id="color_bar_placeholder" />
|
||||
<vbox noborders="true" expansive="true">
|
||||
<vbox noborders="true" id="context_bar_placeholder" />
|
||||
<hbox noborders="true" expansive="true">
|
||||
<splitter id="timeline_splitter"
|
||||
vertical="true" expansive="true"
|
||||
by="percetage" position="100"
|
||||
style="workspace_splitter">
|
||||
<hbox noborders="true" id="workspace_placeholder" expansive="true" />
|
||||
<vbox noborders="true" id="timeline_placeholder" expansive="true" />
|
||||
</splitter>
|
||||
<vbox noborders="true" id="tool_bar_placeholder" />
|
||||
</hbox>
|
||||
</vbox>
|
||||
</splitter>
|
||||
<hbox noborders="true" id="status_bar_placeholder" />
|
||||
</vbox>
|
||||
</window>
|
||||
</gui>
|
|
@ -5,7 +5,7 @@
|
|||
<vbox>
|
||||
<grid columns="2">
|
||||
|
||||
<label id="by_label" text="" />
|
||||
<label id="by_label" text="" for="quantity" />
|
||||
<expr id="quantity" expansive="true" magnet="true" suffix="px" />
|
||||
|
||||
<hbox />
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<window id="new_folder_window" text="@new_folder.title">
|
||||
<vbox>
|
||||
<hbox>
|
||||
<label text="@new_folder.folder_name" />
|
||||
<label text="@new_folder.folder_name" for="name" />
|
||||
<entry text="@new_folder.default_new_folder_name" id="name" maxsize="256" magnet="true" expansive="true" minwidth="128" />
|
||||
</hbox>
|
||||
<hbox>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<window id="new_layer" text="@.title" help="new-layer">
|
||||
<vbox>
|
||||
<grid columns="2">
|
||||
<label text="@.name" />
|
||||
<label text="@.name" for="name" />
|
||||
<entry maxsize="256" text="@.default_new_layer_name" id="name" magnet="true" />
|
||||
|
||||
<vbox>
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
<!-- Aseprite -->
|
||||
<!-- Copyright (C) 2025 by Igara Studio S.A. -->
|
||||
<gui>
|
||||
<window id="new_layout" text="@.title">
|
||||
<vbox>
|
||||
<hbox>
|
||||
<label text="@.name" for="name" />
|
||||
<entry maxsize="128" id="name" magnet="true" expansive="true" />
|
||||
</hbox>
|
||||
|
||||
<separator horizontal="true" />
|
||||
|
||||
<hbox homogeneous="true" cell_align="right">
|
||||
<button text="@general.ok" closewindow="true" id="ok" disabled="true" minwidth="60" magnet="true" />
|
||||
<button text="@general.cancel" closewindow="true" />
|
||||
</hbox>
|
||||
</vbox>
|
||||
</window>
|
||||
</gui>
|
|
@ -7,9 +7,9 @@
|
|||
|
||||
<separator text="@.size" left="true" horizontal="true" />
|
||||
<grid columns="2">
|
||||
<label text="@.width" />
|
||||
<label text="@.width" for="width" />
|
||||
<expr id="width" magnet="true" cell_align="horizontal" suffix="px" />
|
||||
<label text="@.height" />
|
||||
<label text="@.height" for="height" />
|
||||
<expr id="height" cell_align="horizontal" suffix="px" />
|
||||
</grid>
|
||||
|
||||
|
@ -29,7 +29,7 @@
|
|||
|
||||
<check id="advanced_check" text="@general.advanced_options" />
|
||||
<vbox id="advanced">
|
||||
<label text="@.pixel_ratio" />
|
||||
<label text="@.pixel_ratio" for="pixel_ratio" />
|
||||
<combobox id="pixel_ratio" cell_align="horizontal">
|
||||
<listitem text="@.square_pixels" value="1:1" />
|
||||
<listitem text="@.double_wide" value="2:1" />
|
||||
|
|
|
@ -4,12 +4,12 @@
|
|||
<gui>
|
||||
<window id="open_sequence" text="@.title">
|
||||
<vbox>
|
||||
<label text="@.description" />
|
||||
<label text="@.description" for="files" />
|
||||
<view expansive="true" id="view" minwidth="128" minheight="64">
|
||||
<listbox id="files" multiselect="true" />
|
||||
</view>
|
||||
<hbox>
|
||||
<label text="@.duration" />
|
||||
<label text="@.duration" for="duration" />
|
||||
<expr text="0" id="duration" suffix="ms" />
|
||||
</hbox>
|
||||
<separator horizontal="true" />
|
||||
|
|
|
@ -36,18 +36,18 @@
|
|||
<vbox id="section_general">
|
||||
<separator text="@.section_general" horizontal="true" />
|
||||
<grid columns="2">
|
||||
<label text="@.ui_windows" />
|
||||
<label text="@.ui_windows" for="ui_windows" />
|
||||
<hbox>
|
||||
<buttonset columns="2" id="ui_windows">
|
||||
<item icon="one_win_icon" tooltip="@.one_win" tooltip_dir="bottom" style="multi_window_item" />
|
||||
<item icon="multi_win_icon" tooltip="@.multi_win" tooltip_dir="bottom" style="multi_window_item" />
|
||||
</buttonset>
|
||||
<hbox id="theme_variants">
|
||||
<label text="@.theme_mode" />
|
||||
<label id="theme_mode_label" text="@.theme_mode" /> <!-- TODO: Get future dynamic ID, if any -->
|
||||
</hbox>
|
||||
</hbox>
|
||||
|
||||
<label text="@.screen_scaling" />
|
||||
<label text="@.screen_scaling" for="screen_scale" />
|
||||
<combobox id="screen_scale">
|
||||
<listitem text="100%" value="1" />
|
||||
<listitem text="200%" value="2" />
|
||||
|
@ -55,7 +55,7 @@
|
|||
<listitem text="400%" value="4" />
|
||||
</combobox>
|
||||
|
||||
<label text="@.ui_scaling" />
|
||||
<label text="@.ui_scaling" for="ui_scale" />
|
||||
<combobox id="ui_scale">
|
||||
<listitem text="100%" value="1" />
|
||||
<listitem text="200%" value="2" />
|
||||
|
@ -125,21 +125,21 @@
|
|||
<separator text="@.section_files" horizontal="true" />
|
||||
<label text="@.default_extension_for" />
|
||||
<grid columns="2">
|
||||
<label text="@.save_default_extension" />
|
||||
<label text="@.save_default_extension" for="default_extension" />
|
||||
<combobox id="default_extension" />
|
||||
|
||||
<label text="@.export_image_default_extension" />
|
||||
<label text="@.export_image_default_extension" for="export_image_default_extension" />
|
||||
<combobox id="export_image_default_extension" />
|
||||
|
||||
<label text="@.export_animation_default_extension" />
|
||||
<label text="@.export_animation_default_extension" for="export_animation_default_extension" />
|
||||
<combobox id="export_animation_default_extension" />
|
||||
|
||||
<label text="@.export_sprite_sheet_default_extension" />
|
||||
<label text="@.export_sprite_sheet_default_extension" for="export_sprite_sheet_default_extension" />
|
||||
<combobox id="export_sprite_sheet_default_extension" />
|
||||
</grid>
|
||||
|
||||
<grid columns="2">
|
||||
<label text="@.recent_files" />
|
||||
<label text="@.recent_files" for="recent_files" />
|
||||
<hbox>
|
||||
<slider min="0" max="100" id="recent_files" width="128" tooltip="@.recent_files_tooltip" />
|
||||
<button id="clear_recent_files" text="@.clear_recent_files" tooltip="@.clear_recent_files_tooltip" minwidth="60" />
|
||||
|
@ -203,7 +203,7 @@
|
|||
<check text="@.color_management" id="color_management" pref="color.manage" />
|
||||
|
||||
<grid columns="2">
|
||||
<label text="@.window_cs" id="window_cs_label" />
|
||||
<label text="@.window_cs" id="window_cs_label" for="window_cs" />
|
||||
<combobox id="window_cs">
|
||||
<listitem text="@.use_monitor_cs" />
|
||||
<listitem text="@.use_srgb_cs" />
|
||||
|
@ -213,10 +213,10 @@
|
|||
<boxfiller />
|
||||
<separator horizontal="true" />
|
||||
|
||||
<label text="@.working_rgb_cs" id="working_rgb_cs_label" />
|
||||
<label text="@.working_rgb_cs" id="working_rgb_cs_label" for="working_rgb_cs" />
|
||||
<combobox id="working_rgb_cs" />
|
||||
|
||||
<label text="@.files_with_cs" id="files_with_cs_label" />
|
||||
<label text="@.files_with_cs" id="files_with_cs_label" for="files_with_cs" />
|
||||
<combobox id="files_with_cs">
|
||||
<listitem text="@.disable_cs" />
|
||||
<listitem text="@.use_embedded_cs" />
|
||||
|
@ -225,7 +225,7 @@
|
|||
<listitem text="@.ask_cs" />
|
||||
</combobox>
|
||||
|
||||
<label text="@.missing_cs" id="missing_cs_label" />
|
||||
<label text="@.missing_cs" id="missing_cs_label" for="missing_cs" />
|
||||
<combobox id="missing_cs">
|
||||
<listitem text="@.disable_cs" />
|
||||
<listitem text="@.assign_cs" />
|
||||
|
@ -240,12 +240,12 @@
|
|||
|
||||
<separator text="@.alpha_and_opacity" horizontal="true" />
|
||||
<grid columns="2">
|
||||
<label text="@.alpha_range" id="alpha_range_label" />
|
||||
<label text="@.alpha_range" id="alpha_range_label" for="alpha" />
|
||||
<combobox id="alpha">
|
||||
<listitem text="@.8bit_value" />
|
||||
<listitem text="@.percentage" />
|
||||
</combobox>
|
||||
<label text="@.opacity_range" id="opacity_range_label" />
|
||||
<label text="@.opacity_range" id="opacity_range_label" for="opacity" />
|
||||
<combobox id="opacity">
|
||||
<listitem text="@.8bit_value" />
|
||||
<listitem text="@.percentage" />
|
||||
|
@ -270,7 +270,7 @@
|
|||
<check text="@.discard_brush" id="discard_brush" />
|
||||
<hbox id="sampling_placeholder" />
|
||||
<hbox>
|
||||
<label text="@.right_click" />
|
||||
<label text="@.right_click" for="right_click_behavior" />
|
||||
<combobox id="right_click_behavior" expansive="true" />
|
||||
</hbox>
|
||||
</vbox>
|
||||
|
@ -303,7 +303,7 @@
|
|||
<check text="@.rewind_on_stop" id="rewind_on_stop" tooltip="@.rewind_on_stop_tooltip"
|
||||
pref="general.rewind_on_stop" />
|
||||
<hbox>
|
||||
<label text="@.default_first_frame" />
|
||||
<label text="@.default_first_frame" for="first_frame" />
|
||||
<expr id="first_frame" />
|
||||
</hbox>
|
||||
<separator text="@.timeline_selection" horizontal="true" />
|
||||
|
@ -337,7 +337,7 @@
|
|||
<separator text="@.ui_mouse_cursor" horizontal="true" />
|
||||
<check id="native_cursor" text="@.native_cursor" />
|
||||
<hbox>
|
||||
<label id="cursor_scale_label" text="@.cursor_scale_label" />
|
||||
<label id="cursor_scale_label" text="@.cursor_scale_label" for="cursor_scale" />
|
||||
<combobox id="cursor_scale">
|
||||
<listitem text="100%" value="1" />
|
||||
<listitem text="200%" value="2" />
|
||||
|
@ -349,13 +349,13 @@
|
|||
<separator text="@.painting_cursors" horizontal="true" />
|
||||
|
||||
<grid columns="2">
|
||||
<label text="@.crosshair_type" />
|
||||
<label text="@.crosshair_type" for="painting_cursor_type" />
|
||||
<combobox id="painting_cursor_type">
|
||||
<listitem text="@.simple_crosshair" value="0" />
|
||||
<listitem text="@.crosshair_on_sprite" value="1" />
|
||||
</combobox>
|
||||
|
||||
<label text="@.brush_preview" />
|
||||
<label text="@.brush_preview" for="brush_preview" />
|
||||
<combobox id="brush_preview">
|
||||
<listitem text="@.brush_preview_none" value="0" />
|
||||
<listitem text="@.brush_preview_edges" value="1" />
|
||||
|
@ -364,7 +364,7 @@
|
|||
<listitem text="@.brush_preview_fullnedges" value="4" />
|
||||
</combobox>
|
||||
|
||||
<label text="@.cursor_color_type" />
|
||||
<label text="@.cursor_color_type" for="cursor_color_type" />
|
||||
<combobox id="cursor_color_type">
|
||||
<listitem text="@.cursor_neg_bw" value="0" />
|
||||
<listitem text="@.cursor_specific_color" value="1" />
|
||||
|
@ -384,7 +384,7 @@
|
|||
|
||||
<separator text="@.bg_checkered" horizontal="true" />
|
||||
<grid columns="2">
|
||||
<label text="@.bg_size" />
|
||||
<label text="@.bg_size" for="checkered_bg_size" />
|
||||
<hbox>
|
||||
<combobox id="checkered_bg_size" />
|
||||
<expr id="checkered_bg_custom_w" />
|
||||
|
@ -414,23 +414,23 @@
|
|||
</hbox>
|
||||
|
||||
<grid columns="5">
|
||||
<label text="@.grid_x" />
|
||||
<label text="@.grid_x" for="grid_x" />
|
||||
<expr id="grid_x" text="" />
|
||||
<label text="@.grid_y" />
|
||||
<label text="@.grid_y" for="grid_y" />
|
||||
<expr id="grid_y" text="" />
|
||||
<hbox />
|
||||
|
||||
<label text="@.grid_width" />
|
||||
<label text="@.grid_width" for="grid_w" />
|
||||
<expr id="grid_w" text="" />
|
||||
<label text="@.grid_height" />
|
||||
<label text="@.grid_height" for="grid_h" />
|
||||
<expr id="grid_h" text="" />
|
||||
<hbox />
|
||||
|
||||
<label text="@.grid_color" />
|
||||
<label text="@.grid_color" for="grid_color" />
|
||||
<colorpicker id="grid_color" rgba="true" cell_hspan="3" />
|
||||
<hbox />
|
||||
|
||||
<label text="@.grid_opacity" />
|
||||
<label text="@.grid_opacity" for="grid_opacity" />
|
||||
<slider id="grid_opacity" cell_hspan="3" min="1" max="255" width="128" />
|
||||
<check id="grid_auto_opacity" text="@.grid_auto" />
|
||||
</grid>
|
||||
|
@ -440,11 +440,11 @@
|
|||
<separator horizontal="true" expansive="true" />
|
||||
</hbox>
|
||||
<grid columns="3">
|
||||
<label text="@.grid_color" />
|
||||
<label text="@.grid_color" for="pixel_grid_color" />
|
||||
<colorpicker id="pixel_grid_color" rgba="true" />
|
||||
<hbox />
|
||||
|
||||
<label text="@.grid_opacity" />
|
||||
<label text="@.grid_opacity" for="pixel_grid_opacity" />
|
||||
<slider id="pixel_grid_opacity" min="1" max="255" width="128" />
|
||||
<check id="pixel_grid_auto_opacity" text="@.grid_auto" />
|
||||
</grid>
|
||||
|
@ -459,15 +459,15 @@
|
|||
<vbox id="section_guides_and_slices">
|
||||
<separator text="@.guides" horizontal="true" />
|
||||
<grid columns="2">
|
||||
<label text="@.layer_edges_color" />
|
||||
<label text="@.layer_edges_color" for="layer_edges_color" />
|
||||
<colorpicker id="layer_edges_color" rgba="true" />
|
||||
<label text="@.auto_guides_color" />
|
||||
<label text="@.auto_guides_color" for="auto_guides_color" />
|
||||
<colorpicker id="auto_guides_color" rgba="true" />
|
||||
</grid>
|
||||
|
||||
<separator text="@.slices" horizontal="true" />
|
||||
<hbox>
|
||||
<label text="@.default_slice_color" />
|
||||
<label text="@.default_slice_color" for="default_slice_color" />
|
||||
<colorpicker id="default_slice_color" rgba="true" />
|
||||
</hbox>
|
||||
</vbox>
|
||||
|
@ -478,7 +478,7 @@
|
|||
<hbox>
|
||||
<check id="limit_undo" text="@.undo_size_limit" />
|
||||
<expr id="undo_size_limit" tooltip="@.undo_size_limit_tooltip" />
|
||||
<label text="@.undo_mb" />
|
||||
<label text="@.undo_mb" for="undo_size_limit" />
|
||||
</hbox>
|
||||
|
||||
<vbox>
|
||||
|
@ -496,7 +496,7 @@
|
|||
<vbox id="section_alerts">
|
||||
<separator text="@.section_alerts" horizontal="true" />
|
||||
<hbox>
|
||||
<label text="@.open_sequence_alert" />
|
||||
<label text="@.open_sequence_alert" for="open_sequence" />
|
||||
<combobox id="open_sequence">
|
||||
<listitem text="@.open_sequence_alert_ask" value="0" />
|
||||
<listitem text="@.open_sequence_alert_yes" value="1" />
|
||||
|
@ -582,7 +582,7 @@
|
|||
<vbox id="section_aseprite_format">
|
||||
<separator text="@.section_aseprite_format" horizontal="true" />
|
||||
<grid columns="2">
|
||||
<label text="@.cel_content_format" />
|
||||
<label text="@.cel_content_format" for="cel_format" />
|
||||
<combobox id="cel_format">
|
||||
<listitem text="@.cel_format_compressed" />
|
||||
<listitem text="@.cel_format_keep" />
|
||||
|
@ -624,15 +624,16 @@
|
|||
text="@.hue_with_sat_value"
|
||||
pref="experimental.hue_with_sat_value_for_color_selector" />
|
||||
<check id="flash_layer" text="@.flash_selected_layer" />
|
||||
<check id="use_selection_tool_loop" text="@.use_selection_tool_loop" />
|
||||
<hbox>
|
||||
<label text="@.non_active_layer_opacity" />
|
||||
<label text="@.non_active_layer_opacity" for="nonactive_layers_opacity" />
|
||||
<slider id="nonactive_layers_opacity" min="0" max="255" width="128" />
|
||||
</hbox>
|
||||
<separator text="@.color_quantization" horizontal="true" />
|
||||
<grid columns="2">
|
||||
<label text="@rgbmap_algorithm_selector.label" />
|
||||
<label text="@rgbmap_algorithm_selector.label" for="rgbmap_algorithm_selector" />
|
||||
<hbox id="rgbmap_algorithm_placeholder" />
|
||||
<label text="@best_fit_criteria_selector.label" />
|
||||
<label text="@best_fit_criteria_selector.label" for="best_fit_criteria_selector" />
|
||||
<hbox id="best_fit_criteria_placeholder" />
|
||||
</grid>
|
||||
<separator text="@.performance" horizontal="true" />
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
<gui>
|
||||
<vbox id="outline" expansive="true">
|
||||
<grid columns="2">
|
||||
<label text="@.color" />
|
||||
<label text="@.color" for="color" />
|
||||
<colorpicker id="color" cell_align="horizontal" />
|
||||
<label text="@.bg_color" />
|
||||
<label text="@.bg_color" for="bg_color" />
|
||||
<colorpicker id="bg_color" cell_align="horizontal" />
|
||||
</grid>
|
||||
<hbox>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
<check id="alpha_channel" text="@.alpha_channel" cell_hspan="2" />
|
||||
<check id="advanced_check" text="@general.advanced_options" cell_hspan="2" />
|
||||
<hbox id="advanced" cell_hspan="2">
|
||||
<label text="@rgbmap_algorithm_selector.label" />
|
||||
<label text="@rgbmap_algorithm_selector.label" for="rgbmap_algorithm_selector" />
|
||||
<hbox id="rgbmap_algorithm_placeholder" />
|
||||
</hbox>
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<gui>
|
||||
<window id="palette_size" text="@.title">
|
||||
<grid columns="3">
|
||||
<label text="@.number_of_colors" />
|
||||
<label text="@.number_of_colors" for="colors" />
|
||||
<expr expansive="true" id="colors" magnet="true" />
|
||||
<box cell_align="horizontal" />
|
||||
|
||||
|
|
|
@ -4,13 +4,13 @@
|
|||
<gui>
|
||||
<window id="paste_text" text="@.title">
|
||||
<grid columns="2">
|
||||
<label text="@.text" />
|
||||
<label text="@.text" for="user_text" />
|
||||
<entry expansive="true" maxsize="256" minwidth="256" id="user_text" magnet="true" cell_align="horizontal" />
|
||||
|
||||
<label text="@.font" />
|
||||
<label text="@.font" for="font_face" />
|
||||
<font id="font_face" cell_align="horizontal" />
|
||||
|
||||
<label text="@.color" />
|
||||
<label text="@.color" for="font_color" />
|
||||
<hbox>
|
||||
<colorpicker id="font_color" />
|
||||
</hbox>
|
||||
|
|
|
@ -5,13 +5,13 @@
|
|||
<vbox expansive="true" id="controls">
|
||||
<hbox expansive="true">
|
||||
<grid columns="2" id="controls">
|
||||
<label text="@replace_color.from" />
|
||||
<label text="@replace_color.from" for="from" />
|
||||
<colorpicker id="from" cell_align="horizontal" />
|
||||
<label text="@replace_color.to" />
|
||||
<label text="@replace_color.to" for="to" />
|
||||
<colorpicker id="to" cell_align="horizontal" />
|
||||
</grid>
|
||||
</hbox>
|
||||
<label text="@replace_color.tolerance" />
|
||||
<label text="@replace_color.tolerance" for="tolerance" />
|
||||
<slider min="0" max="255" id="tolerance" />
|
||||
</vbox>
|
||||
</gui>
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
<!-- Aseprite -->
|
||||
<!-- Copyright (C) 2025 Igara Studio S.A. -->
|
||||
<gui>
|
||||
<window id="run_command" minwidth="256" maxwidth="256" text="@.title" help="run-command">
|
||||
<vbox>
|
||||
<search id="search" placeholder="@.command_placeholder" />
|
||||
|
||||
<label id="expression_result" visible="false" />
|
||||
|
||||
<vbox id="help" visible="false">
|
||||
<label text="@.help_search" />
|
||||
<label text="@.help_expressions" />
|
||||
<label id="help_lua" text="@.help_lua" />
|
||||
</vbox>
|
||||
|
||||
<vbox id="command_list" visible="false" />
|
||||
<vbox id="more_results" visible="false">
|
||||
<separator horizontal="true" />
|
||||
<label id="more_count" />
|
||||
</vbox>
|
||||
</vbox>
|
||||
</window>
|
||||
</gui>
|
|
@ -5,7 +5,7 @@
|
|||
<window id="select_shortcut" text="@.title">
|
||||
<vbox expansive="true">
|
||||
<grid columns="3">
|
||||
<label text="@.key" />
|
||||
<label text="@.key" for="key_field" />
|
||||
<hbox id="key_placeholder" cell_align="horizontal" />
|
||||
<button text="@.clear" id="clear_button" minwidth="60" />
|
||||
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Aseprite -->
|
||||
<!-- Copyright (C) 2019-2024 Igara Studio S.A. -->
|
||||
<!-- Copyright (C) 2019-2025 Igara Studio S.A. -->
|
||||
<!-- Copyright (C) 2017-2018 David Capello -->
|
||||
<gui>
|
||||
<window id="slice_properties" text="@.title" help="slices#slice-properties">
|
||||
<vbox>
|
||||
<vbox expansive="true">
|
||||
<grid id="properties_grid" columns="3">
|
||||
<label id="label1" text="@.name" />
|
||||
<label text="@.name" for="name" />
|
||||
<entry id="name" maxsize="256" magnet="true" cell_align="horizontal" expansive="true" />
|
||||
<button id="user_data" icon="icon_user_data" maxsize="32" tooltip="@.user_data_tooltip" />
|
||||
</grid>
|
||||
<grid columns="2">
|
||||
<separator horizontal="true" cell_hspan="2" />
|
||||
<grid columns="3" expansive="true">
|
||||
<separator horizontal="true" cell_hspan="3" />
|
||||
|
||||
<box />
|
||||
<hbox homogeneous="true">
|
||||
|
@ -20,6 +20,7 @@
|
|||
<label text="@.width" />
|
||||
<label text="@.height" />
|
||||
</hbox>
|
||||
<boxfiller cell_align="horizontal" />
|
||||
|
||||
<label text="@.bounds" />
|
||||
<hbox homogeneous="true">
|
||||
|
@ -28,6 +29,7 @@
|
|||
<expr id="bounds_w" />
|
||||
<expr id="bounds_h" />
|
||||
</hbox>
|
||||
<boxfiller />
|
||||
|
||||
<check text="@.center" id="center" />
|
||||
<hbox homogeneous="true">
|
||||
|
@ -36,16 +38,18 @@
|
|||
<expr id="center_w" />
|
||||
<expr id="center_h" />
|
||||
</hbox>
|
||||
<boxfiller />
|
||||
|
||||
<check text="@.pivot" id="pivot" />
|
||||
<hbox>
|
||||
<expr id="pivot_x" />
|
||||
<expr id="pivot_y" />
|
||||
</hbox>
|
||||
<boxfiller />
|
||||
|
||||
<separator horizontal="true" cell_hspan="2" />
|
||||
|
||||
<hbox cell_hspan="2">
|
||||
<boxfiller cell_align="vertical" cell_hspan="3" />
|
||||
<separator horizontal="true" cell_hspan="3" cell_align="horizontal" />
|
||||
<hbox cell_hspan="3">
|
||||
<boxfiller />
|
||||
<hbox homogeneous="true">
|
||||
<button text="@general.ok" closewindow="true" id="ok" magnet="true" minwidth="60" />
|
||||
|
|
|
@ -22,19 +22,19 @@
|
|||
<grid columns="2">
|
||||
<separator text="@.advanced" horizontal="true" cell_hspan="2" />
|
||||
|
||||
<label text="@.transparent_color" />
|
||||
<label text="@.transparent_color" for="transparent_color" />
|
||||
<hbox>
|
||||
<hbox id="transparent_color_placeholder" />
|
||||
</hbox>
|
||||
|
||||
<label text="@.pixel_ratio" />
|
||||
<label text="@.pixel_ratio" for="pixel_ratio" />
|
||||
<combobox id="pixel_ratio" cell_align="horizontal">
|
||||
<listitem text="@.square_pixels" value="1:1" />
|
||||
<listitem text="@.double_wide" value="2:1" />
|
||||
<listitem text="@.double_high" value="1:2" />
|
||||
</combobox>
|
||||
|
||||
<label text="@.color_profile" />
|
||||
<label text="@.color_profile" for="color_profile" />
|
||||
<hbox>
|
||||
<combobox id="color_profile" cell_align="horizontal" expansive="true" />
|
||||
<hbox homogeneous="true">
|
||||
|
|
|
@ -1,45 +1,36 @@
|
|||
<!-- Aseprite -->
|
||||
<!-- Copyright (C) 2024 by Igara Studio S.A. -->
|
||||
<!-- Copyright (C) 2025 by Igara Studio S.A. -->
|
||||
<!-- Copyright (C) 2001-2018 by David Capello -->
|
||||
<gui>
|
||||
<window id="sprite_size" text="@.title" help="resize">
|
||||
<box vertical="true">
|
||||
<box vertical="true">
|
||||
<separator text="@.pixels" left="true" horizontal="true" />
|
||||
<box vertical="true" expansive="true">
|
||||
<box horizontal="true">
|
||||
<box vertical="true" homogeneous="true">
|
||||
<label text="@.width" />
|
||||
<label text="@.height" />
|
||||
</box>
|
||||
<box vertical="true" homogeneous="true" expansive="true">
|
||||
<expr expansive="true" id="width_px" suffix="px" magnet="true" tooltip="@.width_px_tooltip" />
|
||||
<expr expansive="true" id="height_px" suffix="px" tooltip="@.height_px_tooltip" />
|
||||
</box>
|
||||
<check text="@.lock_ratio" id="lock_ratio" selected="true" />
|
||||
</box>
|
||||
</box>
|
||||
<grid columns="3">
|
||||
<label text="@.width" for="width_px" />
|
||||
<expr expansive="true" id="width_px" suffix="px" magnet="true" tooltip="@.width_px_tooltip" />
|
||||
|
||||
<check text="@.lock_ratio" id="lock_ratio" selected="true" expansive="false" cell_vspan="2" />
|
||||
|
||||
<label text="@.height" for="height_px" />
|
||||
<expr expansive="true" id="height_px" suffix="px" tooltip="@.height_px_tooltip" />
|
||||
</grid>
|
||||
|
||||
<separator text="@.percentage" left="true" horizontal="true" />
|
||||
<box vertical="true" expansive="true">
|
||||
<box horizontal="true">
|
||||
<box vertical="true" homogeneous="true">
|
||||
<label text="@.width" />
|
||||
<label text="@.height" />
|
||||
</box>
|
||||
<box vertical="true" homogeneous="true" expansive="true">
|
||||
<expr expansive="true" text="100" suffix="%" id="width_perc" magnet="true" tooltip="@.width_perc_tooltip"
|
||||
decimals="4" />
|
||||
<expr expansive="true" text="100" suffix="%" id="height_perc" tooltip="@.height_perc_tooltip"
|
||||
decimals="4" />
|
||||
</box>
|
||||
<box horizontal="true" width="64" />
|
||||
</box>
|
||||
</box>
|
||||
<grid columns="3">
|
||||
<label text="@.width" for="width_perc" />
|
||||
<expr expansive="true" text="100" suffix="%" id="width_perc" magnet="true" tooltip="@.width_perc_tooltip" decimals="4" />
|
||||
|
||||
<boxfiller cell_vspan="2" />
|
||||
|
||||
<label text="@.height" for="height_perc" />
|
||||
<expr expansive="true" text="100" suffix="%" id="height_perc" tooltip="@.height_perc_tooltip" decimals="4" />
|
||||
</grid>
|
||||
</box>
|
||||
<separator text="@.interpolation" left="true" horizontal="true" />
|
||||
<box vertical="true" expansive="true">
|
||||
<box horizontal="true">
|
||||
<label text="@.method" />
|
||||
<label text="@.method" for="method" />
|
||||
<combobox id="method" expansive="true" />
|
||||
</box>
|
||||
</box>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<gui>
|
||||
<window id="svg_options" text="@.title">
|
||||
<grid columns="2">
|
||||
<label text="@.pixel_scale" />
|
||||
<label text="@.pixel_scale" for="pxsc" />
|
||||
<expr id="pxsc" magnet="true" cell_align="horizontal"/>
|
||||
|
||||
<separator horizontal="true" cell_hspan="2" />
|
||||
|
|
|
@ -1,35 +1,36 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Aseprite -->
|
||||
<!-- Copyright (C) 2019-2021 Igara Studio S.A. -->
|
||||
<!-- Copyright (C) 2019-2025 Igara Studio S.A. -->
|
||||
<!-- Copyright (C) 2015-2018 David Capello -->
|
||||
<gui>
|
||||
<window id="tag_properties" text="@.title">
|
||||
<vbox>
|
||||
<grid id="properties_grid" columns="3">
|
||||
|
||||
<label text="@.name" />
|
||||
<label text="@.name" for="name" />
|
||||
<entry maxsize="256" id="name" magnet="true" cell_align="horizontal" expansive="true" />
|
||||
<button id="user_data" icon="icon_user_data" maxsize="32" tooltip="@general.user_data" />
|
||||
|
||||
<label text="@.from" />
|
||||
<label text="@.from" for="from" />
|
||||
<expr id="from" cell_hspan="2" />
|
||||
|
||||
<label text="@.to" />
|
||||
<label text="@.to" for="to" />
|
||||
<expr id="to" cell_hspan="2" />
|
||||
|
||||
<label text="@.ani_dir" />
|
||||
<label text="@.ani_dir" for="anidir" />
|
||||
<combobox id="anidir" cell_hspan="2" />
|
||||
|
||||
<check text="@.repeat" id="limit_repeat" />
|
||||
<vbox id="repeat_placeholder" cell_hspan="2" />
|
||||
</grid>
|
||||
<boxfiller />
|
||||
<grid columns="2">
|
||||
<separator horizontal="true" cell_hspan="2" minwidth="180" />
|
||||
<separator horizontal="true" cell_align="horizontal" cell_hspan="2" minwidth="180" />
|
||||
|
||||
<box horizontal="true" homogeneous="true" cell_hspan="2" cell_align="right">
|
||||
<hbox homogeneous="true" cell_hspan="2" cell_align="right">
|
||||
<button text="@general.ok" closewindow="true" id="ok" magnet="true" minwidth="60" />
|
||||
<button text="@general.cancel" closewindow="true" />
|
||||
</box>
|
||||
</hbox>
|
||||
</grid>
|
||||
</vbox>
|
||||
</window>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<gui>
|
||||
<window id="tga_options" text="@.title">
|
||||
<grid columns="2">
|
||||
<label text="@.bits_per_pixel" id="bits_per_pixel_label" />
|
||||
<label text="@.bits_per_pixel" id="bits_per_pixel_label" for="bits_per_pixel" />
|
||||
<combobox id="bits_per_pixel" cell_align="horizontal" />
|
||||
|
||||
<check text="@.compress" id="compress" cell_hspan="2" />
|
||||
|
|
|
@ -7,19 +7,19 @@
|
|||
</combobox>
|
||||
|
||||
<grid columns="4" expansive="true">
|
||||
<label text="@.name" />
|
||||
<label text="@.name" for="name" />
|
||||
<entry maxsize="256" id="name" text="" cell_hspan="3" />
|
||||
|
||||
<label text="@.grid_width" />
|
||||
<label text="@.grid_width" for="grid_width" />
|
||||
<expr id="grid_width" text="" />
|
||||
<label text="@.grid_height" />
|
||||
<label text="@.grid_height" for="grid_height" />
|
||||
<expr id="grid_height" text="" />
|
||||
|
||||
<label id="base_index_label" text="@.base_index" />
|
||||
<label id="base_index_label" text="@.base_index" for="base_index" />
|
||||
<expr id="base_index" text="1" tooltip="@.base_tooltip" />
|
||||
<boxfiller id="base_index_filler" cell_hspan="2" />
|
||||
|
||||
<label id="flips_label" text="@.allowed_flips" />
|
||||
<label id="flips_label" text="@.allowed_flips" for="flips" />
|
||||
<buttonset id="flips" columns="3" multiple="true">
|
||||
<item id="xflip" text="X" minwidth="20" tooltip="@.allowed_flips_tooltip" tooltip_dir="bottom" />
|
||||
<item id="yflip" text="Y" minwidth="20" tooltip="@.allowed_flips_tooltip" tooltip_dir="bottom" />
|
||||
|
|
|
@ -6,18 +6,12 @@
|
|||
<hbox>
|
||||
<vbox>
|
||||
<separator cell_hspan="2" text="@.position" left="true" horizontal="true" />
|
||||
<hbox>
|
||||
<buttonset columns="2" id="position">
|
||||
<item text="@.left" />
|
||||
<item text="@.right" />
|
||||
<item text="@.bottom" hspan="2" />
|
||||
</buttonset>
|
||||
</hbox>
|
||||
<button id="layout" icon="icon_layout" />
|
||||
</vbox>
|
||||
<vbox>
|
||||
<separator text="@.frame_header" left="true" horizontal="true" />
|
||||
<hbox>
|
||||
<label text="@.first_frame" />
|
||||
<label text="@.first_frame" for="first_frame" />
|
||||
<expr id="first_frame" />
|
||||
</hbox>
|
||||
|
||||
|
@ -26,7 +20,7 @@
|
|||
<separator id="thumb_h_separator" horizontal="true" expansive="true" />
|
||||
</hbox>
|
||||
<grid columns="2" id="thumb_box">
|
||||
<label text="@.thumbnail_size" />
|
||||
<label text="@.thumbnail_size" for="zoom" />
|
||||
<slider min="1" max="10" id="zoom" cell_align="horizontal" width="128" />
|
||||
|
||||
<check id="thumb_overlay_enabled" text="@.overlay_size"/>
|
||||
|
@ -44,10 +38,10 @@
|
|||
<button id="reset_onionskin" text="@.reset" minwidth="60" />
|
||||
</hbox>
|
||||
|
||||
<label text="@.opacity" />
|
||||
<label text="@.opacity" for="opacity" />
|
||||
<opacityslider id="opacity" cell_align="horizontal" width="128" />
|
||||
|
||||
<label text="@.opacity_step" />
|
||||
<label text="@.opacity_step" for="opacity_step" />
|
||||
<opacityslider id="opacity_step" cell_align="horizontal" width="128" />
|
||||
|
||||
<check id="loop_tag" text="@.loop_tags" cell_hspan="2" />
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
<!-- Copyright (C) 2001-2017 by David Capello -->
|
||||
<gui>
|
||||
<hbox id="user_data">
|
||||
<label id="color_label" text="@.color" />
|
||||
<label id="entry_label" text="@.user_data" />
|
||||
<label id="color_label" text="@.color" for="color" />
|
||||
<label id="entry_label" text="@.user_data" for="entry" />
|
||||
<colorpicker id="color" simple="true" expansive="true" />
|
||||
<entry id="entry" maxsize="65535" minwidth="128" expansive="true" />
|
||||
</hbox>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<label text="@.save_as" />
|
||||
<check text="@.animation_loop" id="loop" />
|
||||
<hbox>
|
||||
<label text="@.type" />
|
||||
<label text="@.type" for="type" />
|
||||
<combobox id="type" cell_align="horizontal" cell_hspan="2">
|
||||
<listitem text="@.simple_webp" value="0" />
|
||||
<listitem text="@.lossless_webp" value="1" />
|
||||
|
@ -16,11 +16,11 @@
|
|||
</hbox>
|
||||
<vbox id="lossless_options">
|
||||
<hbox>
|
||||
<label width="55" text="@.compression" />
|
||||
<label width="55" text="@.compression" for="compression" />
|
||||
<slider min="0" max="9" id="compression" cell_align="horizontal" width="128" />
|
||||
</hbox>
|
||||
<hbox>
|
||||
<label width="55" text="@.image_hint" />
|
||||
<label width="55" text="@.image_hint" for="image_hint" />
|
||||
<combobox width="128" id="image_hint">
|
||||
<listitem text="@.image_hint_default" value="0" />
|
||||
<listitem text="@.image_hint_picture" value="1" />
|
||||
|
@ -31,11 +31,11 @@
|
|||
</vbox>
|
||||
<vbox id="lossy_options">
|
||||
<hbox>
|
||||
<label width="55" text="@.quality" />
|
||||
<label width="55" text="@.quality" for="quality" />
|
||||
<slider min="0" max="100" id="quality" cell_align="horizontal" width="128" />
|
||||
</hbox>
|
||||
<hbox>
|
||||
<label width="55" text="@.image_preset" />
|
||||
<label width="55" text="@.image_preset" for="image_preset" />
|
||||
<combobox width="128" id="image_preset">
|
||||
<listitem text="@.image_preset_default" value="0" />
|
||||
<listitem text="@.image_preset_picture" value="1" />
|
||||
|
|
2
laf
2
laf
|
@ -1 +1 @@
|
|||
Subproject commit 8ec4b553f1618f7a4b47cdcf4cfc2663266111ac
|
||||
Subproject commit de781a5066732d700ac4520ee5fc9034e92875ad
|
|
@ -220,6 +220,7 @@ if(ENABLE_TESTS)
|
|||
find_tests(ui ui-lib)
|
||||
find_tests(app/cli app-lib)
|
||||
find_tests(app/file app-lib)
|
||||
find_tests(app/ui app-lib)
|
||||
find_tests(app app-lib)
|
||||
find_tests(. app-lib)
|
||||
endif()
|
||||
|
|
|
@ -74,7 +74,7 @@ add_custom_command(
|
|||
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${output_fn}.tmp ${output_fn}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
MAIN_DEPENDENCY ${strings_en_ini}
|
||||
DEPENDS ${GEN_DEP})
|
||||
DEPENDS ${GEN_DEP} commands/commands_list.h)
|
||||
list(APPEND generated_files ${output_fn})
|
||||
|
||||
# Check translations
|
||||
|
@ -368,6 +368,7 @@ target_sources(app-lib PRIVATE
|
|||
color_picker.cpp
|
||||
color_spaces.cpp
|
||||
color_utils.cpp
|
||||
commands/apply.cpp
|
||||
commands/cmd_about.cpp
|
||||
commands/cmd_add_color.cpp
|
||||
commands/cmd_advanced_mode.cpp
|
||||
|
@ -393,6 +394,7 @@ target_sources(app-lib PRIVATE
|
|||
commands/cmd_deselect_mask.cpp
|
||||
commands/cmd_discard_brush.cpp
|
||||
commands/cmd_duplicate_layer.cpp
|
||||
commands/cmd_duplicate_slice.cpp
|
||||
commands/cmd_duplicate_sprite.cpp
|
||||
commands/cmd_duplicate_view.cpp
|
||||
commands/cmd_enter_license.cpp
|
||||
|
@ -460,6 +462,7 @@ target_sources(app-lib PRIVATE
|
|||
commands/cmd_reselect_mask.cpp
|
||||
commands/cmd_reverse_frames.cpp
|
||||
commands/cmd_rotate.cpp
|
||||
commands/cmd_run_command.cpp
|
||||
commands/cmd_save_file.cpp
|
||||
commands/cmd_save_mask.cpp
|
||||
commands/cmd_save_palette.cpp
|
||||
|
@ -520,6 +523,7 @@ target_sources(app-lib PRIVATE
|
|||
commands/tileset_mode.cpp
|
||||
commands/toggle_other_layers_opacity.cpp
|
||||
commands/toggle_play_option.cpp
|
||||
commands/toggle_workspace_layout.cpp
|
||||
console.cpp
|
||||
context.cpp
|
||||
context_flags.cpp
|
||||
|
@ -609,6 +613,7 @@ target_sources(app-lib PRIVATE
|
|||
ui/context_bar.cpp
|
||||
ui/dithering_selector.cpp
|
||||
ui/doc_view.cpp
|
||||
ui/dock.cpp
|
||||
ui/drop_down_button.cpp
|
||||
ui/dynamics_popup.cpp
|
||||
ui/editor/brush_preview.cpp
|
||||
|
@ -651,8 +656,12 @@ target_sources(app-lib PRIVATE
|
|||
ui/icon_button.cpp
|
||||
ui/incompat_file_window.cpp
|
||||
ui/input_chain.cpp
|
||||
ui/key.cpp
|
||||
ui/keyboard_shortcuts.cpp
|
||||
ui/layer_frame_comboboxes.cpp
|
||||
ui/layout.cpp
|
||||
ui/layouts.cpp
|
||||
ui/layout_selector.cpp
|
||||
ui/main_menu_bar.cpp
|
||||
ui/main_window.cpp
|
||||
ui/mini_help_button.cpp
|
||||
|
@ -715,6 +724,7 @@ target_sources(app-lib PRIVATE
|
|||
util/render_text.cpp
|
||||
util/resize_image.cpp
|
||||
util/shader_helpers.cpp
|
||||
util/slice_utils.cpp
|
||||
util/tile_flags_utils.cpp
|
||||
util/tileset_utils.cpp
|
||||
util/wrap_point.cpp
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
#include "app/ui/keyboard_shortcuts.h"
|
||||
#include "app/ui/main_window.h"
|
||||
#include "app/ui_context.h"
|
||||
#include "app/util/filetoks.h"
|
||||
#include "base/fs.h"
|
||||
#include "base/string.h"
|
||||
#include "fmt/format.h"
|
||||
|
@ -463,6 +462,8 @@ void AppMenus::reload()
|
|||
// Create native menus after the default + user defined keyboard
|
||||
// shortcuts are loaded correctly.
|
||||
createNativeMenus();
|
||||
|
||||
MenusLoaded();
|
||||
}
|
||||
|
||||
#ifdef ENABLE_SCRIPTING
|
||||
|
|
|
@ -74,6 +74,8 @@ public:
|
|||
void removeMenuItemFromGroup(Command* cmd);
|
||||
void removeMenuItemFromGroup(Widget* menuItem);
|
||||
|
||||
obs::signal<void()> MenusLoaded;
|
||||
|
||||
private:
|
||||
template<typename Pred>
|
||||
void removeMenuItemFromGroup(Pred pred);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// Aseprite
|
||||
// Copyright (C) 2018-2024 Igara Studio S.A.
|
||||
// Copyright (C) 2018-2025 Igara Studio S.A.
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
// the End-User License Agreement for Aseprite.
|
||||
|
@ -15,6 +15,7 @@
|
|||
#include "app/ui/editor/editor.h"
|
||||
#include "os/system.h"
|
||||
#include "os/window.h"
|
||||
#include "ui/display.h"
|
||||
|
||||
namespace app {
|
||||
|
||||
|
@ -29,17 +30,15 @@ void initialize_color_spaces(Preferences& pref)
|
|||
pref.color.manage.AfterChange.connect([](bool manage) { g_manage = manage; });
|
||||
}
|
||||
|
||||
os::ColorSpaceRef get_screen_color_space()
|
||||
os::ColorSpaceRef get_current_color_space(ui::Display* display, Doc* doc)
|
||||
{
|
||||
return os::System::instance()->defaultWindow()->colorSpace();
|
||||
}
|
||||
|
||||
os::ColorSpaceRef get_current_color_space()
|
||||
{
|
||||
if (auto* editor = Editor::activeEditor())
|
||||
return editor->document()->osColorSpace();
|
||||
else
|
||||
return get_screen_color_space();
|
||||
if (!doc) {
|
||||
if (auto* editor = Editor::activeEditor())
|
||||
doc = editor->document();
|
||||
}
|
||||
if (doc)
|
||||
return doc->osColorSpace();
|
||||
return display->colorSpace();
|
||||
}
|
||||
|
||||
gfx::ColorSpaceRef get_working_rgb_space_from_preferences()
|
||||
|
@ -62,11 +61,11 @@ gfx::ColorSpaceRef get_working_rgb_space_from_preferences()
|
|||
//////////////////////////////////////////////////////////////////////
|
||||
// Color conversion
|
||||
|
||||
ConvertCS::ConvertCS()
|
||||
ConvertCS::ConvertCS(ui::Display* display, Doc* doc)
|
||||
{
|
||||
if (g_manage) {
|
||||
auto srcCS = get_current_color_space();
|
||||
auto dstCS = get_screen_color_space();
|
||||
auto srcCS = get_current_color_space(display, doc);
|
||||
auto dstCS = display->colorSpace();
|
||||
if (srcCS && dstCS)
|
||||
m_conversion = os::System::instance()->convertBetweenColorSpace(srcCS, dstCS);
|
||||
}
|
||||
|
@ -95,9 +94,9 @@ gfx::Color ConvertCS::operator()(const gfx::Color c)
|
|||
}
|
||||
}
|
||||
|
||||
ConvertCS convert_from_current_to_screen_color_space()
|
||||
ConvertCS convert_from_current_to_display_color_space(ui::Display* display)
|
||||
{
|
||||
return ConvertCS();
|
||||
return ConvertCS(display);
|
||||
}
|
||||
|
||||
ConvertCS convert_from_custom_to_srgb(const os::ColorSpaceRef& from)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// Aseprite
|
||||
// Copyright (c) 2018-2020 Igara Studio S.A.
|
||||
// Copyright (c) 2018-2025 Igara Studio S.A.
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
// the End-User License Agreement for Aseprite.
|
||||
|
@ -16,21 +16,25 @@ namespace doc {
|
|||
class Sprite;
|
||||
}
|
||||
|
||||
namespace ui {
|
||||
class Display;
|
||||
}
|
||||
|
||||
namespace app {
|
||||
class Doc;
|
||||
class Preferences;
|
||||
|
||||
void initialize_color_spaces(Preferences& pref);
|
||||
|
||||
os::ColorSpaceRef get_screen_color_space();
|
||||
|
||||
// Returns the color space of the current document.
|
||||
os::ColorSpaceRef get_current_color_space();
|
||||
os::ColorSpaceRef get_current_color_space(ui::Display* display, Doc* doc = nullptr);
|
||||
|
||||
gfx::ColorSpaceRef get_working_rgb_space_from_preferences();
|
||||
|
||||
class ConvertCS {
|
||||
public:
|
||||
ConvertCS();
|
||||
ConvertCS() = delete;
|
||||
ConvertCS(ui::Display* display, Doc* doc = nullptr);
|
||||
ConvertCS(const os::ColorSpaceRef& srcCS, const os::ColorSpaceRef& dstCS);
|
||||
ConvertCS(ConvertCS&&);
|
||||
ConvertCS& operator=(const ConvertCS&) = delete;
|
||||
|
@ -40,7 +44,7 @@ private:
|
|||
os::Ref<os::ColorSpaceConversion> m_conversion;
|
||||
};
|
||||
|
||||
ConvertCS convert_from_current_to_screen_color_space();
|
||||
ConvertCS convert_from_current_to_display_color_space(ui::Display* display);
|
||||
ConvertCS convert_from_custom_to_srgb(const os::ColorSpaceRef& from);
|
||||
|
||||
} // namespace app
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
// Aseprite
|
||||
// Copyright (C) 2025 Igara Studio S.A.
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
// the End-User License Agreement for Aseprite.
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "app/commands/command.h"
|
||||
#include "app/context.h"
|
||||
#include "app/ui/editor/editor.h"
|
||||
|
||||
namespace app {
|
||||
|
||||
// Depends on the current context/state, used to apply the current
|
||||
// transformation (drop pixels).
|
||||
class ApplyCommand : public Command {
|
||||
public:
|
||||
ApplyCommand();
|
||||
|
||||
protected:
|
||||
void onExecute(Context* ctx) override;
|
||||
};
|
||||
|
||||
ApplyCommand::ApplyCommand() : Command(CommandId::Apply())
|
||||
{
|
||||
}
|
||||
|
||||
void ApplyCommand::onExecute(Context* ctx)
|
||||
{
|
||||
if (!ctx->isUIAvailable())
|
||||
return;
|
||||
|
||||
auto* editor = Editor::activeEditor();
|
||||
if (editor && editor->isMovingPixels())
|
||||
editor->dropMovingPixels();
|
||||
}
|
||||
|
||||
Command* CommandFactory::createApplyCommand()
|
||||
{
|
||||
return new ApplyCommand;
|
||||
}
|
||||
|
||||
} // namespace app
|
|
@ -11,12 +11,12 @@
|
|||
|
||||
#include "app/app.h"
|
||||
#include "app/commands/command.h"
|
||||
#include "app/modules/gui.h"
|
||||
#include "app/ui/main_window.h"
|
||||
#include "fmt/format.h"
|
||||
#include "ver/info.h"
|
||||
|
||||
#include "about.xml.h"
|
||||
#include "app/context.h"
|
||||
|
||||
namespace app {
|
||||
|
||||
|
@ -27,13 +27,19 @@ public:
|
|||
AboutCommand();
|
||||
|
||||
protected:
|
||||
bool onEnabled(Context* context) override;
|
||||
void onExecute(Context* context) override;
|
||||
};
|
||||
|
||||
AboutCommand::AboutCommand() : Command(CommandId::About(), CmdUIOnlyFlag)
|
||||
AboutCommand::AboutCommand() : Command(CommandId::About())
|
||||
{
|
||||
}
|
||||
|
||||
bool AboutCommand::onEnabled(Context* context)
|
||||
{
|
||||
return context->isUIAvailable();
|
||||
}
|
||||
|
||||
void AboutCommand::onExecute(Context* context)
|
||||
{
|
||||
gen::About window;
|
||||
|
|
|
@ -63,8 +63,7 @@ protected:
|
|||
std::string onGetFriendlyName() const override;
|
||||
};
|
||||
|
||||
AddColorCommand::AddColorCommand()
|
||||
: CommandWithNewParams<AddColorParams>(CommandId::AddColor(), CmdUIOnlyFlag)
|
||||
AddColorCommand::AddColorCommand() : CommandWithNewParams<AddColorParams>(CommandId::AddColor())
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -17,8 +17,7 @@
|
|||
#include "ui/ui.h"
|
||||
|
||||
#include "advanced_mode.xml.h"
|
||||
|
||||
#include <cstdio>
|
||||
#include "app/context.h"
|
||||
|
||||
namespace app {
|
||||
|
||||
|
@ -29,13 +28,19 @@ public:
|
|||
AdvancedModeCommand();
|
||||
|
||||
protected:
|
||||
bool onEnabled(Context* context) override;
|
||||
void onExecute(Context* context) override;
|
||||
};
|
||||
|
||||
AdvancedModeCommand::AdvancedModeCommand() : Command(CommandId::AdvancedMode(), CmdUIOnlyFlag)
|
||||
AdvancedModeCommand::AdvancedModeCommand() : Command(CommandId::AdvancedMode())
|
||||
{
|
||||
}
|
||||
|
||||
bool AdvancedModeCommand::onEnabled(Context* context)
|
||||
{
|
||||
return context->isUIAvailable();
|
||||
}
|
||||
|
||||
void AdvancedModeCommand::onExecute(Context* context)
|
||||
{
|
||||
// Switch advanced mode.
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
#include "app/modules/gui.h"
|
||||
#include "app/tx.h"
|
||||
#include "doc/layer.h"
|
||||
#include "doc/sprite.h"
|
||||
|
||||
namespace app {
|
||||
|
||||
|
@ -28,8 +27,7 @@ protected:
|
|||
void onExecute(Context* context) override;
|
||||
};
|
||||
|
||||
BackgroundFromLayerCommand::BackgroundFromLayerCommand()
|
||||
: Command(CommandId::BackgroundFromLayer(), CmdRecordableFlag)
|
||||
BackgroundFromLayerCommand::BackgroundFromLayerCommand() : Command(CommandId::BackgroundFromLayer())
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ private:
|
|||
Type m_type;
|
||||
};
|
||||
|
||||
CancelCommand::CancelCommand() : Command(CommandId::Cancel(), CmdUIOnlyFlag), m_type(NoOp)
|
||||
CancelCommand::CancelCommand() : Command(CommandId::Cancel()), m_type(NoOp)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
#include "app/ui/skin/skin_theme.h"
|
||||
#include "app/ui_context.h"
|
||||
#include "doc/image.h"
|
||||
#include "doc/mask.h"
|
||||
#include "doc/sprite.h"
|
||||
#include "ui/ui.h"
|
||||
|
||||
|
@ -282,8 +281,7 @@ protected:
|
|||
void onExecute(Context* context) override;
|
||||
};
|
||||
|
||||
CanvasSizeCommand::CanvasSizeCommand()
|
||||
: CommandWithNewParams(CommandId::CanvasSize(), CmdRecordableFlag)
|
||||
CanvasSizeCommand::CanvasSizeCommand() : CommandWithNewParams(CommandId::CanvasSize())
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -20,8 +20,6 @@
|
|||
#include "app/tx.h"
|
||||
#include "app/ui/timeline/timeline.h"
|
||||
#include "doc/cel.h"
|
||||
#include "doc/cels_range.h"
|
||||
#include "doc/sprite.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
|
@ -42,7 +40,7 @@ private:
|
|||
int m_opacity;
|
||||
};
|
||||
|
||||
CelOpacityCommand::CelOpacityCommand() : Command(CommandId::CelOpacity(), CmdUIOnlyFlag)
|
||||
CelOpacityCommand::CelOpacityCommand() : Command(CommandId::CelOpacity())
|
||||
{
|
||||
m_opacity = 255;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// Aseprite
|
||||
// Copyright (C) 2020-2023 Igara Studio S.A.
|
||||
// Copyright (C) 2020-2025 Igara Studio S.A.
|
||||
// Copyright (C) 2001-2018 David Capello
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
|
@ -23,7 +23,6 @@
|
|||
#include "app/ui/timeline/timeline.h"
|
||||
#include "app/ui/user_data_view.h"
|
||||
#include "app/ui_context.h"
|
||||
#include "base/mem_utils.h"
|
||||
#include "base/scoped_value.h"
|
||||
#include "doc/cel.h"
|
||||
#include "doc/cels_range.h"
|
||||
|
@ -101,12 +100,12 @@ public:
|
|||
|
||||
if (countCels() > 0) {
|
||||
m_userDataView.configureAndSet((m_cel ? m_cel->data()->userData() : UserData()),
|
||||
g_window->propertiesGrid());
|
||||
propertiesGrid());
|
||||
}
|
||||
else if (!m_cel)
|
||||
m_userDataView.setVisible(false, false);
|
||||
|
||||
g_window->expandWindow(gfx::Size(g_window->bounds().w, g_window->sizeHint().h));
|
||||
expandWindow(gfx::Size(bounds().w, sizeHint().h));
|
||||
updateFromCel();
|
||||
}
|
||||
|
||||
|
@ -281,7 +280,7 @@ private:
|
|||
{
|
||||
if (countCels() > 0) {
|
||||
m_userDataView.toggleVisibility();
|
||||
g_window->expandWindow(gfx::Size(g_window->bounds().w, g_window->sizeHint().h));
|
||||
expandWindow(gfx::Size(bounds().w, sizeHint().h));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -385,14 +384,14 @@ protected:
|
|||
void onExecute(Context* context) override;
|
||||
};
|
||||
|
||||
CelPropertiesCommand::CelPropertiesCommand() : Command(CommandId::CelProperties(), CmdUIOnlyFlag)
|
||||
CelPropertiesCommand::CelPropertiesCommand() : Command(CommandId::CelProperties())
|
||||
{
|
||||
}
|
||||
|
||||
bool CelPropertiesCommand::onEnabled(Context* context)
|
||||
{
|
||||
return context->checkFlags(ContextFlags::ActiveDocumentIsWritable |
|
||||
ContextFlags::ActiveLayerIsImage);
|
||||
return context->isUIAvailable() && context->checkFlags(ContextFlags::ActiveDocumentIsWritable |
|
||||
ContextFlags::ActiveLayerIsImage);
|
||||
}
|
||||
|
||||
void CelPropertiesCommand::onExecute(Context* context)
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
#include "app/tools/tool.h"
|
||||
#include "app/ui/context_bar.h"
|
||||
#include "app/ui/main_window.h"
|
||||
#include "base/convert_to.h"
|
||||
#include "doc/algorithm/flip_image.h"
|
||||
#include "doc/brush.h"
|
||||
#include "doc/image_ref.h"
|
||||
|
@ -64,7 +63,7 @@ private:
|
|||
int m_slot;
|
||||
};
|
||||
|
||||
ChangeBrushCommand::ChangeBrushCommand() : Command(CommandId::ChangeBrush(), CmdUIOnlyFlag)
|
||||
ChangeBrushCommand::ChangeBrushCommand() : Command(CommandId::ChangeBrush())
|
||||
{
|
||||
m_change = None;
|
||||
m_slot = 0;
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include "app/app.h"
|
||||
#include "app/commands/command.h"
|
||||
#include "app/commands/params.h"
|
||||
#include "app/context.h"
|
||||
#include "app/i18n/strings.h"
|
||||
#include "app/modules/palettes.h"
|
||||
#include "app/ui/color_bar.h"
|
||||
|
@ -39,18 +40,24 @@ public:
|
|||
ChangeColorCommand();
|
||||
|
||||
protected:
|
||||
bool onEnabled(Context* context) override;
|
||||
bool onNeedsParams() const override { return true; }
|
||||
void onLoadParams(const Params& params) override;
|
||||
void onExecute(Context* context) override;
|
||||
std::string onGetFriendlyName() const override;
|
||||
};
|
||||
|
||||
ChangeColorCommand::ChangeColorCommand() : Command(CommandId::ChangeColor(), CmdUIOnlyFlag)
|
||||
ChangeColorCommand::ChangeColorCommand() : Command(CommandId::ChangeColor())
|
||||
{
|
||||
m_background = false;
|
||||
m_change = None;
|
||||
}
|
||||
|
||||
bool ChangeColorCommand::onEnabled(Context* context)
|
||||
{
|
||||
return context->isUIAvailable();
|
||||
}
|
||||
|
||||
void ChangeColorCommand::onLoadParams(const Params& params)
|
||||
{
|
||||
std::string target = params.get("target");
|
||||
|
|
|
@ -21,9 +21,7 @@
|
|||
#include "app/i18n/strings.h"
|
||||
#include "app/load_matrix.h"
|
||||
#include "app/modules/gui.h"
|
||||
#include "app/modules/palettes.h"
|
||||
#include "app/sprite_job.h"
|
||||
#include "app/transaction.h"
|
||||
#include "app/ui/best_fit_criteria_selector.h"
|
||||
#include "app/ui/dithering_selector.h"
|
||||
#include "app/ui/editor/editor.h"
|
||||
|
@ -37,12 +35,10 @@
|
|||
#include "fmt/format.h"
|
||||
#include "render/dithering.h"
|
||||
#include "render/dithering_algorithm.h"
|
||||
#include "render/ordered_dither.h"
|
||||
#include "render/quantization.h"
|
||||
#include "render/render.h"
|
||||
#include "render/task_delegate.h"
|
||||
#include "ui/listitem.h"
|
||||
#include "ui/paint_event.h"
|
||||
#include "ui/size_hint_event.h"
|
||||
|
||||
#include "color_mode.xml.h"
|
||||
|
@ -507,7 +503,7 @@ private:
|
|||
};
|
||||
|
||||
ChangePixelFormatCommand::ChangePixelFormatCommand()
|
||||
: CommandWithNewParams(CommandId::ChangePixelFormat(), CmdUIOnlyFlag)
|
||||
: CommandWithNewParams(CommandId::ChangePixelFormat())
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ protected:
|
|||
void onExecute(Context* ctx) override;
|
||||
};
|
||||
|
||||
ClearCommand::ClearCommand() : Command(CommandId::Clear(), CmdUIOnlyFlag)
|
||||
ClearCommand::ClearCommand() : Command(CommandId::Clear())
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
#include "app/ui/status_bar.h"
|
||||
#include "doc/cel.h"
|
||||
#include "doc/layer.h"
|
||||
#include "doc/sprite.h"
|
||||
|
||||
namespace app {
|
||||
|
||||
|
@ -32,7 +31,7 @@ protected:
|
|||
void onExecute(Context* context) override;
|
||||
};
|
||||
|
||||
ClearCelCommand::ClearCelCommand() : Command(CommandId::ClearCel(), CmdRecordableFlag)
|
||||
ClearCelCommand::ClearCelCommand() : Command(CommandId::ClearCel())
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -76,7 +75,7 @@ void ClearCelCommand::onExecute(Context* context)
|
|||
tx.commit();
|
||||
}
|
||||
|
||||
if (nonEditableLayers)
|
||||
if (context->isUIAvailable() && nonEditableLayers)
|
||||
StatusBar::instance()->showTip(1000, Strings::statusbar_tips_locked_layers());
|
||||
|
||||
update_screen_for_document(document);
|
||||
|
|
|
@ -23,8 +23,7 @@ protected:
|
|||
void onExecute(Context* ctx) override;
|
||||
};
|
||||
|
||||
ClearRecentFilesCommand::ClearRecentFilesCommand()
|
||||
: Command(CommandId::ClearRecentFiles(), CmdUIOnlyFlag)
|
||||
ClearRecentFilesCommand::ClearRecentFilesCommand() : Command(CommandId::ClearRecentFiles())
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -12,15 +12,9 @@
|
|||
#include "app/app.h"
|
||||
#include "app/commands/command.h"
|
||||
#include "app/commands/commands.h"
|
||||
#include "app/context_access.h"
|
||||
#include "app/ui/doc_view.h"
|
||||
#include "app/ui/status_bar.h"
|
||||
#include "app/ui/workspace.h"
|
||||
#include "app/ui_context.h"
|
||||
#include "doc/sprite.h"
|
||||
#include "ui/ui.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace app {
|
||||
|
||||
|
@ -28,7 +22,7 @@ using namespace ui;
|
|||
|
||||
class CloseFileCommand : public Command {
|
||||
public:
|
||||
CloseFileCommand() : Command(CommandId::CloseFile(), CmdUIOnlyFlag) {}
|
||||
CloseFileCommand() : Command(CommandId::CloseFile()) {}
|
||||
|
||||
protected:
|
||||
bool onEnabled(Context* context) override
|
||||
|
@ -51,12 +45,15 @@ protected:
|
|||
|
||||
class CloseAllFilesCommand : public Command {
|
||||
public:
|
||||
CloseAllFilesCommand() : Command(CommandId::CloseAllFiles(), CmdRecordableFlag)
|
||||
{
|
||||
m_quitting = false;
|
||||
}
|
||||
CloseAllFilesCommand() : Command(CommandId::CloseAllFiles()) { m_quitting = false; }
|
||||
|
||||
protected:
|
||||
bool onEnabled(Context* context) override
|
||||
{
|
||||
// Null if we are in --batch mode
|
||||
return App::instance()->workspace() != nullptr;
|
||||
}
|
||||
|
||||
void onLoadParams(const Params& params) override { m_quitting = params.get_as<bool>("quitting"); }
|
||||
|
||||
void onExecute(Context* context) override
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
#include "app/transaction.h"
|
||||
#include "app/ui/color_bar.h"
|
||||
#include "app/ui/rgbmap_algorithm_selector.h"
|
||||
#include "app/ui_context.h"
|
||||
#include "doc/palette.h"
|
||||
#include "doc/sprite.h"
|
||||
#include "render/quantization.h"
|
||||
|
@ -71,7 +70,7 @@ protected:
|
|||
};
|
||||
|
||||
ColorQuantizationCommand::ColorQuantizationCommand()
|
||||
: CommandWithNewParams<ColorQuantizationParams>(CommandId::ColorQuantization(), CmdRecordableFlag)
|
||||
: CommandWithNewParams<ColorQuantizationParams>(CommandId::ColorQuantization())
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ protected:
|
|||
void onExecute(Context* context) override;
|
||||
};
|
||||
|
||||
ContiguousFillCommand::ContiguousFillCommand() : Command(CommandId::ContiguousFill(), CmdUIOnlyFlag)
|
||||
ContiguousFillCommand::ContiguousFillCommand() : Command(CommandId::ContiguousFill())
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ protected:
|
|||
void onExecute(Context* ctx) override;
|
||||
};
|
||||
|
||||
CopyCommand::CopyCommand() : Command(CommandId::Copy(), CmdUIOnlyFlag)
|
||||
CopyCommand::CopyCommand() : Command(CommandId::Copy())
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -10,9 +10,7 @@
|
|||
|
||||
#include "app/app.h"
|
||||
#include "app/commands/command.h"
|
||||
#include "app/context_access.h"
|
||||
#include "app/ui/timeline/timeline.h"
|
||||
#include "ui/base.h"
|
||||
|
||||
namespace app {
|
||||
|
||||
|
@ -25,13 +23,13 @@ protected:
|
|||
void onExecute(Context* context) override;
|
||||
};
|
||||
|
||||
CopyCelCommand::CopyCelCommand() : Command(CommandId::CopyCel(), CmdUIOnlyFlag)
|
||||
CopyCelCommand::CopyCelCommand() : Command(CommandId::CopyCel())
|
||||
{
|
||||
}
|
||||
|
||||
bool CopyCelCommand::onEnabled(Context* context)
|
||||
{
|
||||
return App::instance()->timeline()->isMovingCel();
|
||||
return App::instance()->timeline() && App::instance()->timeline()->isMovingCel();
|
||||
}
|
||||
|
||||
void CopyCelCommand::onExecute(Context* context)
|
||||
|
|
|
@ -24,7 +24,7 @@ protected:
|
|||
void onExecute(Context* ctx) override;
|
||||
};
|
||||
|
||||
CopyMergedCommand::CopyMergedCommand() : Command(CommandId::CopyMerged(), CmdUIOnlyFlag)
|
||||
CopyMergedCommand::CopyMergedCommand() : Command(CommandId::CopyMerged())
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -16,11 +16,7 @@
|
|||
#include "app/modules/gui.h"
|
||||
#include "app/tx.h"
|
||||
#include "app/ui/color_bar.h"
|
||||
#include "app/util/autocrop.h"
|
||||
#include "doc/image.h"
|
||||
#include "doc/layer.h"
|
||||
#include "doc/mask.h"
|
||||
#include "doc/sprite.h"
|
||||
|
||||
namespace app {
|
||||
|
||||
|
@ -37,7 +33,7 @@ private:
|
|||
gfx::Rect m_bounds;
|
||||
};
|
||||
|
||||
CropSpriteCommand::CropSpriteCommand() : Command(CommandId::CropSprite(), CmdRecordableFlag)
|
||||
CropSpriteCommand::CropSpriteCommand() : Command(CommandId::CropSprite())
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -95,8 +91,7 @@ private:
|
|||
bool m_byGrid = false;
|
||||
};
|
||||
|
||||
AutocropSpriteCommand::AutocropSpriteCommand()
|
||||
: Command(CommandId::AutocropSprite(), CmdRecordableFlag)
|
||||
AutocropSpriteCommand::AutocropSpriteCommand() : Command(CommandId::AutocropSprite())
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ protected:
|
|||
void onExecute(Context* ctx) override;
|
||||
};
|
||||
|
||||
CutCommand::CutCommand() : Command(CommandId::Cut(), CmdUIOnlyFlag)
|
||||
CutCommand::CutCommand() : Command(CommandId::Cut())
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -14,8 +14,6 @@
|
|||
#include "app/context_access.h"
|
||||
#include "app/modules/gui.h"
|
||||
#include "app/tx.h"
|
||||
#include "doc/mask.h"
|
||||
#include "doc/sprite.h"
|
||||
|
||||
namespace app {
|
||||
|
||||
|
@ -28,7 +26,7 @@ protected:
|
|||
void onExecute(Context* context) override;
|
||||
};
|
||||
|
||||
DeselectMaskCommand::DeselectMaskCommand() : Command(CommandId::DeselectMask(), CmdRecordableFlag)
|
||||
DeselectMaskCommand::DeselectMaskCommand() : Command(CommandId::DeselectMask())
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -29,8 +29,7 @@ protected:
|
|||
void onExecute(Context* context);
|
||||
};
|
||||
|
||||
DeveloperConsoleCommand::DeveloperConsoleCommand()
|
||||
: Command(CommandId::DeveloperConsole(), CmdUIOnlyFlag)
|
||||
DeveloperConsoleCommand::DeveloperConsoleCommand() : Command(CommandId::DeveloperConsole())
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -12,8 +12,6 @@
|
|||
#include "app/app.h"
|
||||
#include "app/commands/command.h"
|
||||
#include "app/commands/commands.h"
|
||||
#include "app/context_access.h"
|
||||
#include "app/tools/tool_box.h"
|
||||
#include "app/ui/context_bar.h"
|
||||
#include "app/ui_context.h"
|
||||
|
||||
|
@ -28,12 +26,15 @@ protected:
|
|||
void onExecute(Context* context) override;
|
||||
};
|
||||
|
||||
DiscardBrushCommand::DiscardBrushCommand() : Command(CommandId::DiscardBrush(), CmdUIOnlyFlag)
|
||||
DiscardBrushCommand::DiscardBrushCommand() : Command(CommandId::DiscardBrush())
|
||||
{
|
||||
}
|
||||
|
||||
bool DiscardBrushCommand::onEnabled(Context* context)
|
||||
{
|
||||
if (!context->isUIAvailable())
|
||||
return false;
|
||||
|
||||
ContextBar* ctxBar = App::instance()->contextBar();
|
||||
return (ctxBar->activeBrush()->type() == kImageBrushType);
|
||||
}
|
||||
|
|
|
@ -10,16 +10,11 @@
|
|||
|
||||
#include "app/app.h"
|
||||
#include "app/commands/command.h"
|
||||
#include "app/console.h"
|
||||
#include "app/context_access.h"
|
||||
#include "app/doc_api.h"
|
||||
#include "app/doc_undo.h"
|
||||
#include "app/modules/gui.h"
|
||||
#include "app/tx.h"
|
||||
#include "app/ui/editor/editor.h"
|
||||
#include "doc/layer.h"
|
||||
#include "doc/sprite.h"
|
||||
#include "ui/ui.h"
|
||||
|
||||
namespace app {
|
||||
|
||||
|
@ -32,8 +27,7 @@ protected:
|
|||
void onExecute(Context* context) override;
|
||||
};
|
||||
|
||||
DuplicateLayerCommand::DuplicateLayerCommand()
|
||||
: Command(CommandId::DuplicateLayer(), CmdRecordableFlag)
|
||||
DuplicateLayerCommand::DuplicateLayerCommand() : Command(CommandId::DuplicateLayer())
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,121 @@
|
|||
// Aseprite
|
||||
// Copyright (C) 2025 Igara Studio S.A.
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
// the End-User License Agreement for Aseprite.
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "app/cmd/add_slice.h"
|
||||
#include "app/commands/command.h"
|
||||
#include "app/context.h"
|
||||
#include "app/context_access.h"
|
||||
#include "app/context_flags.h"
|
||||
#include "app/i18n/strings.h"
|
||||
#include "app/site.h"
|
||||
#include "app/tx.h"
|
||||
#include "app/ui/status_bar.h"
|
||||
#include "app/util/slice_utils.h"
|
||||
#include "base/convert_to.h"
|
||||
#include "doc/object_id.h"
|
||||
#include "doc/slice.h"
|
||||
|
||||
namespace app {
|
||||
|
||||
// Moves the given slice by the dx and dy values
|
||||
void offset(Slice* slice, int dx, int dy)
|
||||
{
|
||||
for (auto it = slice->begin(); it != slice->end(); ++it) {
|
||||
auto* sk = (*it).value();
|
||||
gfx::Rect bounds = sk->bounds();
|
||||
bounds.offset(gfx::Point{ dx, dy });
|
||||
sk->setBounds(bounds);
|
||||
}
|
||||
}
|
||||
|
||||
class DuplicateSliceCommand : public Command {
|
||||
public:
|
||||
DuplicateSliceCommand();
|
||||
|
||||
protected:
|
||||
void onLoadParams(const Params& params) override;
|
||||
bool onEnabled(Context* context) override;
|
||||
void onExecute(Context* context) override;
|
||||
|
||||
private:
|
||||
ObjectId m_sliceId;
|
||||
};
|
||||
|
||||
DuplicateSliceCommand::DuplicateSliceCommand() : Command(CommandId::DuplicateSlice())
|
||||
{
|
||||
}
|
||||
|
||||
void DuplicateSliceCommand::onLoadParams(const Params& params)
|
||||
{
|
||||
std::string id = params.get("id");
|
||||
if (!id.empty())
|
||||
m_sliceId = ObjectId(base::convert_to<doc::ObjectId>(id));
|
||||
else
|
||||
m_sliceId = NullId;
|
||||
}
|
||||
|
||||
bool DuplicateSliceCommand::onEnabled(Context* context)
|
||||
{
|
||||
return context->checkFlags(ContextFlags::ActiveDocumentIsWritable |
|
||||
ContextFlags::HasActiveSprite | ContextFlags::HasActiveLayer);
|
||||
}
|
||||
|
||||
void DuplicateSliceCommand::onExecute(Context* context)
|
||||
{
|
||||
std::vector<Slice*> selectedSlices;
|
||||
{
|
||||
const ContextReader reader(context);
|
||||
if (m_sliceId == NullId) {
|
||||
selectedSlices = get_selected_slices(reader.site());
|
||||
if (selectedSlices.empty())
|
||||
return;
|
||||
}
|
||||
else
|
||||
selectedSlices.push_back(reader.sprite()->slices().getById(m_sliceId));
|
||||
}
|
||||
|
||||
ContextWriter writer(context);
|
||||
Tx tx(writer, "Duplicate Slice");
|
||||
Sprite* sprite = writer.site().sprite();
|
||||
|
||||
Doc* doc = static_cast<Doc*>(sprite->document());
|
||||
doc->notifyBeforeSlicesDuplication();
|
||||
for (auto* s : selectedSlices) {
|
||||
Slice* slice = new Slice(*s);
|
||||
slice->setName(Strings::general_copy_of(slice->name()));
|
||||
// Offset a bit the duplicated slice to avoid overlapping
|
||||
offset(slice, 2, 2);
|
||||
|
||||
tx(new cmd::AddSlice(sprite, slice));
|
||||
doc->notifySliceDuplicated(slice);
|
||||
}
|
||||
tx.commit();
|
||||
|
||||
std::string sliceName;
|
||||
if (selectedSlices.size() == 1)
|
||||
sliceName = selectedSlices[0]->name();
|
||||
|
||||
StatusBar::instance()->invalidate();
|
||||
if (!sliceName.empty()) {
|
||||
StatusBar::instance()->showTip(1000, Strings::duplicate_slice_x_duplicated(sliceName));
|
||||
}
|
||||
else {
|
||||
StatusBar::instance()->showTip(
|
||||
1000,
|
||||
Strings::duplicate_slice_n_slices_duplicated(selectedSlices.size()));
|
||||
}
|
||||
}
|
||||
|
||||
Command* CommandFactory::createDuplicateSliceCommand()
|
||||
{
|
||||
return new DuplicateSliceCommand;
|
||||
}
|
||||
|
||||
} // namespace app
|
|
@ -16,13 +16,10 @@
|
|||
#include "app/ini_file.h"
|
||||
#include "app/ui_context.h"
|
||||
#include "base/fs.h"
|
||||
#include "doc/sprite.h"
|
||||
#include "ui/ui.h"
|
||||
|
||||
#include "duplicate_sprite.xml.h"
|
||||
|
||||
#include <cstdio>
|
||||
|
||||
namespace app {
|
||||
|
||||
using namespace ui;
|
||||
|
@ -43,7 +40,7 @@ protected:
|
|||
};
|
||||
|
||||
DuplicateSpriteCommand::DuplicateSpriteCommand()
|
||||
: CommandWithNewParams<DuplicateSpriteParams>(CommandId::DuplicateSprite(), CmdRecordableFlag)
|
||||
: CommandWithNewParams<DuplicateSpriteParams>(CommandId::DuplicateSprite())
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -13,8 +13,6 @@
|
|||
#include "app/commands/command.h"
|
||||
#include "app/ui/workspace.h"
|
||||
|
||||
#include <cstdio>
|
||||
|
||||
namespace app {
|
||||
|
||||
// using namespace ui;
|
||||
|
@ -28,7 +26,7 @@ protected:
|
|||
void onExecute(Context* context) override;
|
||||
};
|
||||
|
||||
DuplicateViewCommand::DuplicateViewCommand() : Command(CommandId::DuplicateView(), CmdUIOnlyFlag)
|
||||
DuplicateViewCommand::DuplicateViewCommand() : Command(CommandId::DuplicateView())
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
// the End-User License Agreement for Aseprite.
|
||||
|
||||
#include "app/commands/command.h"
|
||||
#include "app/context.h"
|
||||
|
||||
#ifdef ENABLE_DRM
|
||||
#include "app/ui/enter_license.h"
|
||||
|
@ -24,7 +23,7 @@ protected:
|
|||
void onExecute(Context* context) override;
|
||||
};
|
||||
|
||||
EnterLicenseCommand::EnterLicenseCommand() : Command(CommandId::EnterLicense(), CmdUIOnlyFlag)
|
||||
EnterLicenseCommand::EnterLicenseCommand() : Command(CommandId::EnterLicense())
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
#include "app/doc.h"
|
||||
#include "app/job.h"
|
||||
#include "app/ui/main_window.h"
|
||||
#include "ui/alert.h"
|
||||
|
||||
#ifdef ENABLE_SCRIPTING
|
||||
#include "app/commands/debugger.h"
|
||||
|
@ -32,7 +31,7 @@ protected:
|
|||
void onExecute(Context* context) override;
|
||||
};
|
||||
|
||||
ExitCommand::ExitCommand() : Command(CommandId::Exit(), CmdUIOnlyFlag)
|
||||
ExitCommand::ExitCommand() : Command(CommandId::Exit())
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -33,15 +33,12 @@
|
|||
#include "app/ui/status_bar.h"
|
||||
#include "app/ui/timeline/timeline.h"
|
||||
#include "app/util/layer_utils.h"
|
||||
#include "base/convert_to.h"
|
||||
#include "base/fs.h"
|
||||
#include "base/string.h"
|
||||
#include "base/thread.h"
|
||||
#include "doc/layer.h"
|
||||
#include "doc/layer_tilemap.h"
|
||||
#include "doc/tag.h"
|
||||
#include "doc/tileset.h"
|
||||
#include "doc/tilesets.h"
|
||||
#include "fmt/format.h"
|
||||
#include "ui/message.h"
|
||||
#include "ui/system.h"
|
||||
|
@ -1187,8 +1184,7 @@ private:
|
|||
|
||||
} // anonymous namespace
|
||||
|
||||
ExportSpriteSheetCommand::ExportSpriteSheetCommand(const char* id)
|
||||
: CommandWithNewParams(id, CmdRecordableFlag)
|
||||
ExportSpriteSheetCommand::ExportSpriteSheetCommand(const char* id) : CommandWithNewParams(id)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue