在actions.py上添加注释

This commit is contained in:
louyunyun 2025-10-17 14:30:45 +08:00
parent caed5c3801
commit 0d652a3347

View file

@ -1,450 +1,507 @@
# This file is part of BeeRef.
# 说明:此文件是 BeeRef 项目的一部分,用于定义应用内所有交互动作(如菜单操作、快捷键响应等)
#
# BeeRef is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# 说明BeeRef 是自由软件,可根据 GNU 通用公共许可证(第三版或更高版本)重新分发和修改,无商业限制
#
# BeeRef is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# 说明:分发 BeeRef 仅保证功能可用,不承担任何质量担保(如适销性、特定场景适用性),详情参考许可证
#
# You should have received a copy of the GNU General Public License
# along with BeeRef. If not, see <https://www.gnu.org/licenses/>.
# 说明:若未随软件获取许可证副本,可访问上述链接查看官方 GNU 通用公共许可证内容
from functools import cached_property
import logging
from functools import cached_property # 导入缓存属性装饰器,用于缓存方法返回值,避免重复计算提升性能
import logging # 导入日志模块,用于记录动作相关的调试、错误信息
from PyQt6 import QtGui
from PyQt6 import QtGui # 从 PyQt6 导入 QtGui 模块用于处理图形界面相关的键盘快捷键QKeySequence
# 从beeref.actions.menu_structure模块导入菜单结构定义menu_structure
# 作用:用于定位每个动作在应用菜单中的层级路径(如“文件→打开”)
from beeref.actions.menu_structure import menu_structure
# 从配置模块导入键盘设置类和设置事件
# KeyboardSettings管理快捷键的读取、保存settings_events处理设置变更事件如恢复默认快捷键
from beeref.config import KeyboardSettings, settings_events
# 从工具模块导入动作列表类用于统一管理所有Action实例提供批量操作能力
from beeref.utils import ActionList
logger = logging.getLogger(__name__)
logger = logging.getLogger(__name__) # 创建当前模块的日志记录器,日志名称与模块名一致
class Action:
# 定义动作设置的分组名称,用于在配置文件中归类存储动作相关设置(如快捷键)
SETTINGS_GROUP = 'Actions'
def __init__(self, id, text, callback=None, shortcuts=None,
checkable=False, checked=False, group=None, settings=None,
enabled=True, menu_item=None, menu_id=None):
self.id = id
self.text = text
self.callback = callback
self.shortcuts = shortcuts or []
self.checkable = checkable
self.checked = checked
self.group = group
self.settings = settings
self.enabled = enabled
self.menu_item = menu_item
self.menu_id = menu_id
self.qaction = None
self.kb_settings = KeyboardSettings()
# 初始化动作实例的核心属性
self.id = id # 动作唯一标识符如“open”“save”用于区分不同动作
self.text = text # 动作在界面上的显示文本(如“&Open”&后字母为菜单快捷键)
self.callback = callback # 动作触发时调用的方法名如“on_action_open”需在业务逻辑中实现
self.shortcuts = shortcuts or [] # 动作的默认快捷键列表(如['Ctrl+O']),无默认则为空列表
self.checkable = checkable # 动作是否为可勾选状态(如“全屏”“灰度模式”等开关类动作)
self.checked = checked # 动作初始勾选状态仅checkable=True时有效
self.group = group # 动作所属功能组,用于控制动作可用性(如“仅选中项目时激活”)
self.settings = settings # 关联的配置项路径如“View/show_scrollbars”用于同步设置状态
self.enabled = enabled # 动作初始是否启用True=可用False=灰色不可点击)
self.menu_item = menu_item # 关联的菜单项原始数据(用于菜单路径计算)
self.menu_id = menu_id # 动作在动态菜单中的标识(如“最近文件”菜单下的动态项)
self.qaction = None # 存储与当前Action绑定的PyQt QAction对象后续界面渲染时赋值
self.kb_settings = KeyboardSettings() # 实例化键盘设置对象,用于读取/保存用户自定义快捷键
# 绑定“恢复键盘默认值”事件当用户触发恢复默认设置时调用当前动作的on_restore_defaults方法
settings_events.restore_keyboard_defaults.connect(
self.on_restore_defaults)
def __eq__(self, other):
# 定义Action实例的相等判断规则仅当两个动作的id相同时认为是同一个动作
return self.id == other.id
def __str__(self):
# 定义Action实例的字符串表示形式返回动作id便于日志打印和调试
return self.id
def on_restore_defaults(self):
# 恢复默认快捷键的具体实现若已绑定QAction对象将其快捷键重置为当前获取的默认值
if self.qaction:
self.qaction.setShortcuts(self.get_shortcuts())
@cached_property
def menu_path(self):
path = []
# 缓存属性:计算并缓存动作在菜单中的层级路径(如["文件", "打开"]),避免重复递归计算
path = [] # 存储菜单路径的临时列表,初始为空
def _get_path(menu_item):
# 递归函数遍历menu_structure查找当前动作所在的菜单层级
if isinstance(menu_item['items'], list):
# This is a normal menu
# 情况1当前菜单项是普通菜单items为列表包含子菜单项或动作id
for item in menu_item['items']:
if item == self.id:
# 找到当前动作将当前菜单名称加入路径返回True表示找到路径
path.append(menu_item['menu'])
return True
if isinstance(item, dict):
# This is a submenu
# 子项是子菜单dict类型递归查找子菜单
if _get_path(item):
# 子菜单中找到动作将当前菜单名称加入路径返回True
path.append(menu_item['menu'])
return True
elif menu_item['items'] == self.menu_id:
# This is a dynamic submenu (e.g. Recent Files)
# 情况2当前菜单项是动态菜单如“最近文件”items为动态标识
path.append(menu_item['menu'])
return True
# 遍历顶级菜单结构,触发递归查找
for menu_item in menu_structure:
_get_path(menu_item)
# 递归结果是“子菜单→父菜单”顺序,反转后变为“父菜单→子菜单”的正确路径
return path[::-1]
def get_shortcuts(self):
# 获取动作的实际生效快捷键:优先读取用户自定义配置,无配置则使用默认快捷键
return self.kb_settings.get_list(
self.SETTINGS_GROUP, self.id, self.shortcuts)
def set_shortcuts(self, value):
logger.debug(f'Setting shortcut "{self.id}" to: {value}')
# 设置并保存用户自定义快捷键记录日志→保存到配置→同步更新QAction快捷键
logger.debug(f'Setting shortcut "{self.id}" to: {value}') # 打印调试日志,记录快捷键变更
# 调用KeyboardSettings的set_list方法保存快捷键参数分组名、动作id、新值、默认值
self.kb_settings.set_list(
self.SETTINGS_GROUP, self.id, value, self.shortcuts)
if self.qaction:
# 若已绑定QAction实时更新界面上的快捷键显示
self.qaction.setShortcuts(value)
def get_qkeysequence(self, index):
"""Current shortcuts as QKeySequence"""
# 将指定索引的快捷键转换为PyQt的QKeySequence对象用于界面显示和键盘事件绑定
try:
# 从生效快捷键列表中取指定索引的快捷键转换为QKeySequence
return QtGui.QKeySequence(self.get_shortcuts()[index])
except IndexError:
# 索引超出范围如快捷键列表为空返回空的QKeySequence
return QtGui.QKeySequence()
def shortcuts_changed(self):
"""Whether shortcuts have changed from their defaults."""
# 判断当前生效快捷键是否与默认值不同(用于界面显示“是否已自定义”标识)
return self.get_shortcuts() != self.shortcuts
def get_default_shortcut(self, index):
# 获取默认快捷键列表中指定索引的快捷键(用于界面显示默认值)
try:
return self.shortcuts[index]
except IndexError:
# 索引超出范围返回None
return None
# 创建动作列表实例将所有定义的Action实例传入ActionList统一管理
actions = ActionList([
# 1. 文件操作类动作
Action(
id='open',
text='&Open',
shortcuts=['Ctrl+O'],
callback='on_action_open',
id='open', # 动作唯一标识:打开文件
text='&Open', # 菜单显示文本Alt+O为菜单快捷键
shortcuts=['Ctrl+O'], # 默认快捷键Ctrl+O
callback='on_action_open', # 触发方法on_action_open需在业务类中实现
),
Action(
id='save',
text='&Save',
shortcuts=['Ctrl+S'],
callback='on_action_save',
group='active_when_items_in_scene',
id='save', # 动作唯一标识:保存文件
text='&Save', # 菜单显示文本Alt+S为菜单快捷键
shortcuts=['Ctrl+S'], # 默认快捷键Ctrl+S
callback='on_action_save', # 触发方法on_action_save
group='active_when_items_in_scene', # 可用性组:仅当场景中有项目时激活
),
Action(
id='save_as',
text='Save &As...',
shortcuts=['Ctrl+Shift+S'],
callback='on_action_save_as',
group='active_when_items_in_scene',
id='save_as', # 动作唯一标识:另存为
text='Save &As...', # 菜单显示文本Alt+A为菜单快捷键
shortcuts=['Ctrl+Shift+S'], # 默认快捷键Ctrl+Shift+S
callback='on_action_save_as', # 触发方法on_action_save_as
group='active_when_items_in_scene', # 可用性组:仅当场景中有项目时激活
),
Action(
id='export_scene',
text='E&xport Scene...',
shortcuts=['Ctrl+Shift+E'],
callback='on_action_export_scene',
group='active_when_items_in_scene',
id='export_scene', # 动作唯一标识:导出场景
text='E&xport Scene...', # 菜单显示文本Alt+X为菜单快捷键
shortcuts=['Ctrl+Shift+E'], # 默认快捷键Ctrl+Shift+E
callback='on_action_export_scene', # 触发方法on_action_export_scene
group='active_when_items_in_scene', # 可用性组:仅当场景中有项目时激活
),
Action(
id='export_images',
text='Export &Images...',
callback='on_action_export_images',
group='active_when_items_in_scene',
id='export_images', # 动作唯一标识:导出图像
text='Export &Images...', # 菜单显示文本Alt+I为菜单快捷键
callback='on_action_export_images', # 触发方法on_action_export_images
group='active_when_items_in_scene', # 可用性组:仅当场景中有项目时激活
),
Action(
id='quit',
text='&Quit',
shortcuts=['Ctrl+Q'],
callback='on_action_quit',
id='quit', # 动作唯一标识:退出应用
text='&Quit', # 菜单显示文本Alt+Q为菜单快捷键
shortcuts=['Ctrl+Q'], # 默认快捷键Ctrl+Q
callback='on_action_quit', # 触发方法on_action_quit
),
# 2. 插入内容类动作
Action(
id='insert_images', # 动作唯一标识:插入图像
text='&Images...', # 菜单显示文本Alt+I为菜单快捷键
shortcuts=['Ctrl+I'], # 默认快捷键Ctrl+I
callback='on_action_insert_images', # 触发方法on_action_insert_images
),
Action(
id='insert_images',
text='&Images...',
shortcuts=['Ctrl+I'],
callback='on_action_insert_images',
id='insert_text', # 动作唯一标识:插入文本
text='&Text', # 菜单显示文本Alt+T为菜单快捷键
shortcuts=['Ctrl+T'], # 默认快捷键Ctrl+T
callback='on_action_insert_text', # 触发方法on_action_insert_text
),
# 3. 编辑操作类动作
Action(
id='undo', # 动作唯一标识:撤销
text='&Undo', # 菜单显示文本Alt+U为菜单快捷键
shortcuts=['Ctrl+Z'], # 默认快捷键Ctrl+Z
callback='on_action_undo', # 触发方法on_action_undo
group='active_when_can_undo', # 可用性组:仅当有可撤销操作时激活
),
Action(
id='insert_text',
text='&Text',
shortcuts=['Ctrl+T'],
callback='on_action_insert_text',
id='redo', # 动作唯一标识:重做
text='&Redo', # 菜单显示文本Alt+R为菜单快捷键
shortcuts=['Ctrl+Shift+Z'], # 默认快捷键Ctrl+Shift+Z
callback='on_action_redo', # 触发方法on_action_redo
group='active_when_can_redo', # 可用性组:仅当有可重做操作时激活
),
Action(
id='undo',
text='&Undo',
shortcuts=['Ctrl+Z'],
callback='on_action_undo',
group='active_when_can_undo',
id='copy', # 动作唯一标识:复制
text='&Copy', # 菜单显示文本Alt+C为菜单快捷键
shortcuts=['Ctrl+C'], # 默认快捷键Ctrl+C
callback='on_action_copy', # 触发方法on_action_copy
group='active_when_selection', # 可用性组:仅当有选中项目时激活
),
Action(
id='redo',
text='&Redo',
shortcuts=['Ctrl+Shift+Z'],
callback='on_action_redo',
group='active_when_can_redo',
id='cut', # 动作唯一标识:剪切
text='Cu&t', # 菜单显示文本Alt+T为菜单快捷键
shortcuts=['Ctrl+X'], # 默认快捷键Ctrl+X
callback='on_action_cut', # 触发方法on_action_cut
group='active_when_selection', # 可用性组:仅当有选中项目时激活
),
Action(
id='copy',
text='&Copy',
shortcuts=['Ctrl+C'],
callback='on_action_copy',
group='active_when_selection',
id='paste', # 动作唯一标识:粘贴
text='&Paste', # 菜单显示文本Alt+P为菜单快捷键
shortcuts=['Ctrl+V'], # 默认快捷键Ctrl+V
callback='on_action_paste', # 触发方法on_action_paste
),
Action(
id='cut',
text='Cu&t',
shortcuts=['Ctrl+X'],
callback='on_action_cut',
group='active_when_selection',
id='delete', # 动作唯一标识:删除
text='&Delete', # 菜单显示文本Alt+D为菜单快捷键
shortcuts=['Del'], # 默认快捷键Delete键
callback='on_action_delete_items', # 触发方法on_action_delete_items
group='active_when_selection', # 可用性组:仅当有选中项目时激活
),
# 4. 图层顺序操作类动作
Action(
id='raise_to_top', # 动作唯一标识:置顶
text='&Raise to Top', # 菜单显示文本Alt+R为菜单快捷键
shortcuts=['PgUp'], # 默认快捷键PageUp键
callback='on_action_raise_to_top', # 触发方法on_action_raise_to_top
group='active_when_selection', # 可用性组:仅当有选中项目时激活
),
Action(
id='paste',
text='&Paste',
shortcuts=['Ctrl+V'],
callback='on_action_paste',
id='lower_to_bottom', # 动作唯一标识:置底
text='Lower to Bottom', # 菜单显示文本:无字母快捷键
shortcuts=['PgDown'], # 默认快捷键PageDown键
callback='on_action_lower_to_bottom', # 触发方法on_action_lower_to_bottom
group='active_when_selection', # 可用性组:仅当有选中项目时激活
),
# 5. 尺寸标准化操作类动作
Action(
id='normalize_height', # 动作唯一标识:标准化高度
text='&Height', # 菜单显示文本Alt+H为菜单快捷键
shortcuts=['Shift+H'], # 默认快捷键Shift+H
callback='on_action_normalize_height', # 触发方法on_action_normalize_height
group='active_when_selection', # 可用性组:仅当有选中项目时激活
),
Action(
id='delete',
text='&Delete',
shortcuts=['Del'],
callback='on_action_delete_items',
group='active_when_selection',
id='normalize_width', # 动作唯一标识:标准化宽度
text='&Width', # 菜单显示文本Alt+W为菜单快捷键
shortcuts=['Shift+W'], # 默认快捷键Shift+W
callback='on_action_normalize_width', # 触发方法on_action_normalize_width
group='active_when_selection', # 可用性组:仅当有选中项目时激活
),
Action(
id='raise_to_top',
text='&Raise to Top',
shortcuts=['PgUp'],
callback='on_action_raise_to_top',
group='active_when_selection',
id='normalize_size', # 动作唯一标识:标准化尺寸
text='&Size', # 菜单显示文本Alt+S为菜单快捷键
shortcuts=['Shift+S'], # 默认快捷键Shift+S
callback='on_action_normalize_size', # 触发方法on_action_normalize_size
group='active_when_selection', # 可用性组:仅当有选中项目时激活
),
# 6. 排列布局操作类动作
Action(
id='arrange_optimal', # 动作唯一标识:优化排列
text='&Optimal', # 菜单显示文本Alt+O为菜单快捷键
shortcuts=['Shift+O'], # 默认快捷键Shift+O
callback='on_action_arrange_optimal', # 触发方法on_action_arrange_optimal
group='active_when_selection', # 可用性组:仅当有选中项目时激活
),
Action(
id='lower_to_bottom',
text='Lower to Bottom',
shortcuts=['PgDown'],
callback='on_action_lower_to_bottom',
group='active_when_selection',
id='arrange_horizontal', # 动作唯一标识:水平排列(按文件名)
text='&Horizontal (by filename)', # 菜单显示文本Alt+H为菜单快捷键
callback='on_action_arrange_horizontal', # 触发方法on_action_arrange_horizontal
group='active_when_selection', # 可用性组:仅当有选中项目时激活
),
Action(
id='normalize_height',
text='&Height',
shortcuts=['Shift+H'],
callback='on_action_normalize_height',
group='active_when_selection',
id='arrange_vertical', # 动作唯一标识:垂直排列(按文件名)
text='&Vertical (by filename)', # 菜单显示文本Alt+V为菜单快捷键
callback='on_action_arrange_vertical', # 触发方法on_action_arrange_vertical
group='active_when_selection', # 可用性组:仅当有选中项目时激活
),
Action(
id='normalize_width',
text='&Width',
shortcuts=['Shift+W'],
callback='on_action_normalize_width',
group='active_when_selection',
id='arrange_square', # 动作唯一标识:方形排列(按文件名)
text='&Square (by filename)', # 菜单显示文本Alt+S为菜单快捷键
callback='on_action_arrange_square', # 触发方法on_action_arrange_square
group='active_when_selection', # 可用性组:仅当有选中项目时激活
),
# 7. 图像效果操作类动作
Action(
id='change_opacity', # 动作唯一标识:更改不透明度
text='Change &Opacity...', # 菜单显示文本Alt+O为菜单快捷键
callback='on_action_change_opacity', # 触发方法on_action_change_opacity
group='active_when_selection', # 可用性组:仅当有选中项目时激活
),
Action(
id='normalize_size',
text='&Size',
shortcuts=['Shift+S'],
callback='on_action_normalize_size',
group='active_when_selection',
id='grayscale', # 动作唯一标识:灰度模式
text='&Grayscale', # 菜单显示文本Alt+G为菜单快捷键
shortcuts=['G'], # 默认快捷键G键
checkable=True, # 可勾选:启用/禁用灰度模式
callback='on_action_grayscale', # 触发方法on_action_grayscale
group='active_when_selection', # 可用性组:仅当有选中项目时激活
),
Action(
id='arrange_optimal',
text='&Optimal',
shortcuts=['Shift+O'],
callback='on_action_arrange_optimal',
group='active_when_selection',
id='show_color_gamut', # 动作唯一标识:显示色域
text='Show &Color Gamut', # 菜单显示文本Alt+C为菜单快捷键
callback='on_action_show_color_gamut', # 触发方法on_action_show_color_gamut
group='active_when_single_image', # 可用性组:仅当选中单个图像时激活
),
Action(
id='arrange_horizontal',
text='&Horizontal (by filename)',
callback='on_action_arrange_horizontal',
group='active_when_selection',
id='sample_color', # 动作唯一标识:颜色采样
text='Sample Color', # 菜单显示文本:无字母快捷键
shortcuts=['S'], # 默认快捷键S键
callback='on_action_sample_color', # 触发方法on_action_sample_color
group='active_when_items_in_scene', # 可用性组:仅当场景中有项目时激活
),
Action(
id='arrange_vertical',
text='&Vertical (by filename)',
callback='on_action_arrange_vertical',
group='active_when_selection',
id='crop', # 动作唯一标识:裁剪
text='&Crop', # 菜单显示文本Alt+C为菜单快捷键
shortcuts=['Shift+C'], # 默认快捷键Shift+C
callback='on_action_crop', # 触发方法on_action_crop
group='active_when_single_image', # 可用性组:仅当选中单个图像时激活
),
Action(
id='arrange_square',
text='&Square (by filename)',
callback='on_action_arrange_square',
group='active_when_selection',
id='flip_horizontally', # 动作唯一标识:水平翻转
text='Flip &Horizontally', # 菜单显示文本Alt+H为菜单快捷键
shortcuts=['H'], # 默认快捷键H键
callback='on_action_flip_horizontally', # 触发方法on_action_flip_horizontally
group='active_when_selection', # 可用性组:仅当有选中项目时激活
),
Action(
id='change_opacity',
text='Change &Opacity...',
callback='on_action_change_opacity',
group='active_when_selection',
id='flip_vertically', # 动作唯一标识:垂直翻转
text='Flip &Vertically', # 菜单显示文本Alt+V为菜单快捷键
shortcuts=['V'], # 默认快捷键V键
callback='on_action_flip_vertically', # 触发方法on_action_flip_vertically
group='active_when_selection', # 可用性组:仅当有选中项目时激活
),
# 8. 场景视图操作类动作
Action(
id='new_scene', # 动作唯一标识:新建场景
text='&New Scene', # 菜单显示文本Alt+N为菜单快捷键
shortcuts=['Ctrl+N'], # 默认快捷键Ctrl+N
callback='on_action_new_scene', # 触发方法on_action_new_scene
),
Action(
id='grayscale',
text='&Grayscale',
shortcuts=['G'],
checkable=True,
callback='on_action_grayscale',
group='active_when_selection',
id='fit_scene', # 动作唯一标识:适配场景
text='&Fit Scene', # 菜单显示文本Alt+F为菜单快捷键
shortcuts=['1'], # 默认快捷键数字1键
callback='on_action_fit_scene', # 触发方法on_action_fit_scene
),
Action(
id='show_color_gamut',
text='Show &Color Gamut',
callback='on_action_show_color_gamut',
group='active_when_single_image',
id='fit_selection', # 动作唯一标识:适配选中项
text='Fit &Selection', # 菜单显示文本Alt+S为菜单快捷键
shortcuts=['2'], # 默认快捷键数字2键
callback='on_action_fit_selection', # 触发方法on_action_fit_selection
group='active_when_selection', # 可用性组:仅当有选中项目时激活
),
# 9. 变换重置操作类动作
Action(
id='reset_scale', # 动作唯一标识:重置缩放
text='Reset &Scale', # 菜单显示文本Alt+S为菜单快捷键
callback='on_action_reset_scale', # 触发方法on_action_reset_scale
group='active_when_selection', # 可用性组:仅当有选中项目时激活
),
Action(
id='sample_color',
text='Sample Color',
shortcuts=['S'],
callback='on_action_sample_color',
group='active_when_items_in_scene',
id='reset_rotation', # 动作唯一标识:重置旋转
text='Reset &Rotation', # 菜单显示文本Alt+R为菜单快捷键
callback='on_action_reset_rotation', # 触发方法on_action_reset_rotation
group='active_when_selection', # 可用性组:仅当有选中项目时激活
),
Action(
id='crop',
text='&Crop',
shortcuts=['Shift+C'],
callback='on_action_crop',
group='active_when_single_image',
id='reset_flip', # 动作唯一标识:重置翻转
text='Reset &Flip', # 菜单显示文本Alt+F为菜单快捷键
callback='on_action_reset_flip', # 触发方法on_action_reset_flip
group='active_when_selection', # 可用性组:仅当有选中项目时激活
),
Action(
id='flip_horizontally',
text='Flip &Horizontally',
shortcuts=['H'],
callback='on_action_flip_horizontally',
group='active_when_selection',
id='reset_crop', # 动作唯一标识:重置裁剪
text='Reset Cro&p', # 菜单显示文本Alt+P为菜单快捷键
callback='on_action_reset_crop', # 触发方法on_action_reset_crop
group='active_when_selection', # 可用性组:仅当有选中项目时激活
),
Action(
id='flip_vertically',
text='Flip &Vertically',
shortcuts=['V'],
callback='on_action_flip_vertically',
group='active_when_selection',
id='reset_transforms', # 动作唯一标识:重置所有变换
text='Reset &All', # 菜单显示文本Alt+A为菜单快捷键
shortcuts=['R'], # 默认快捷键R键
callback='on_action_reset_transforms', # 触发方法on_action_reset_transforms
group='active_when_selection', # 可用性组:仅当有选中项目时激活
),
# 10. 选择操作类动作
Action(
id='select_all', # 动作唯一标识:全选
text='&Select All', # 菜单显示文本Alt+S为菜单快捷键
shortcuts=['Ctrl+A'], # 默认快捷键Ctrl+A
callback='on_action_select_all', # 触发方法on_action_select_all
),
Action(
id='new_scene',
text='&New Scene',
shortcuts=['Ctrl+N'],
callback='on_action_new_scene',
id='deselect_all', # 动作唯一标识:取消全选
text='Deselect &All', # 菜单显示文本Alt+A为菜单快捷键
shortcuts=['Ctrl+Shift+A'], # 默认快捷键Ctrl+Shift+A
callback='on_action_deselect_all', # 触发方法on_action_deselect_all
),
# 11. 帮助与关于类动作
Action(
id='help', # 动作唯一标识:帮助
text='&Help', # 菜单显示文本Alt+H为菜单快捷键
shortcuts=['F1', 'Ctrl+H'], # 默认快捷键F1键、Ctrl+H
callback='on_action_help', # 触发方法on_action_help
),
Action(
id='fit_scene',
text='&Fit Scene',
shortcuts=['1'],
callback='on_action_fit_scene',
id='about', # 动作唯一标识:关于
text='&About', # 菜单显示文本Alt+A为菜单快捷键
callback='on_action_about', # 触发方法on_action_about
),
Action(
id='fit_selection',
text='Fit &Selection',
shortcuts=['2'],
callback='on_action_fit_selection',
group='active_when_selection',
id='debuglog', # 动作唯一标识:显示调试日志
text='Show &Debug Log', # 菜单显示文本Alt+D为菜单快捷键
callback='on_action_debuglog', # 触发方法on_action_debuglog
),
# 12. 界面设置类动作
Action(
id='show_scrollbars', # 动作唯一标识:显示滚动条
text='Show &Scrollbars', # 菜单显示文本Alt+S为菜单快捷键
checkable=True, # 可勾选:显示/隐藏滚动条
settings='View/show_scrollbars', # 关联配置项View/show_scrollbars
callback='on_action_show_scrollbars', # 触发方法on_action_show_scrollbars
),
Action(
id='reset_scale',
text='Reset &Scale',
callback='on_action_reset_scale',
group='active_when_selection',
id='show_menubar', # 动作唯一标识:显示菜单栏
text='Show &Menu Bar', # 菜单显示文本Alt+M为菜单快捷键
checkable=True, # 可勾选:显示/隐藏菜单栏
settings='View/show_menubar', # 关联配置项View/show_menubar
callback='on_action_show_menubar', # 触发方法on_action_show_menubar
),
Action(
id='reset_rotation',
text='Reset &Rotation',
callback='on_action_reset_rotation',
group='active_when_selection',
id='show_titlebar', # 动作唯一标识:显示标题栏
text='Show &Title Bar', # 菜单显示文本Alt+T为菜单快捷键
checkable=True, # 可勾选:显示/隐藏标题栏
checked=True, # 初始状态:勾选(默认显示标题栏)
callback='on_action_show_titlebar', # 触发方法on_action_show_titlebar
),
Action(
id='reset_flip',
text='Reset &Flip',
callback='on_action_reset_flip',
group='active_when_selection',
id='move_window', # 动作唯一标识:移动窗口
text='Move &Window', # 菜单显示文本Alt+W为菜单快捷键
shortcuts=['Ctrl+M'], # 默认快捷键Ctrl+M
callback='on_action_move_window', # 触发方法on_action_move_window
),
Action(
id='reset_crop',
text='Reset Cro&p',
callback='on_action_reset_crop',
group='active_when_selection',
id='fullscreen', # 动作唯一标识:全屏模式
text='&Fullscreen', # 菜单显示文本Alt+F为菜单快捷键
shortcuts=['F11'], # 默认快捷键F11键
checkable=True, # 可勾选:启用/禁用全屏
callback='on_action_fullscreen', # 触发方法on_action_fullscreen
),
Action(
id='reset_transforms',
text='Reset &All',
shortcuts=['R'],
callback='on_action_reset_transforms',
group='active_when_selection',
id='always_on_top', # 动作唯一标识:窗口置顶
text='&Always On Top', # 菜单显示文本Alt+A为菜单快捷键
checkable=True, # 可勾选:启用/禁用窗口置顶
callback='on_action_always_on_top', # 触发方法on_action_always_on_top
),
# 13. 应用设置类动作
Action(
id='settings', # 动作唯一标识:打开设置
text='&Settings', # 菜单显示文本Alt+S为菜单快捷键
callback='on_action_settings', # 触发方法on_action_settings
),
Action(
id='select_all',
text='&Select All',
shortcuts=['Ctrl+A'],
callback='on_action_select_all',
id='keyboard_settings', # 动作唯一标识:键盘鼠标设置
text='&Keyboard && Mouse', # 菜单显示文本Alt+K为菜单快捷键&&转义为单个&显示)
callback='on_action_keyboard_settings', # 触发方法on_action_keyboard_settings
),
Action(
id='deselect_all',
text='Deselect &All',
shortcuts=['Ctrl+Shift+A'],
callback='on_action_deselect_all',
id='open_settings_dir', # 动作唯一标识:打开设置文件夹
text='&Open Settings Folder', # 菜单显示文本Alt+O为菜单快捷键
callback='on_action_open_settings_dir', # 触发方法on_action_open_settings_dir
),
Action(
id='help',
text='&Help',
shortcuts=['F1', 'Ctrl+H'],
callback='on_action_help',
),
Action(
id='about',
text='&About',
callback='on_action_about',
),
Action(
id='debuglog',
text='Show &Debug Log',
callback='on_action_debuglog',
),
Action(
id='show_scrollbars',
text='Show &Scrollbars',
checkable=True,
settings='View/show_scrollbars',
callback='on_action_show_scrollbars',
),
Action(
id='show_menubar',
text='Show &Menu Bar',
checkable=True,
settings='View/show_menubar',
callback='on_action_show_menubar',
),
Action(
id='show_titlebar',
text='Show &Title Bar',
checkable=True,
checked=True,
callback='on_action_show_titlebar',
),
Action(
id='move_window',
text='Move &Window',
shortcuts=['Ctrl+M'],
callback='on_action_move_window',
),
Action(
id='fullscreen',
text='&Fullscreen',
shortcuts=['F11'],
checkable=True,
callback='on_action_fullscreen',
),
Action(
id='always_on_top',
text='&Always On Top',
checkable=True,
callback='on_action_always_on_top',
),
Action(
id='settings',
text='&Settings',
callback='on_action_settings',
),
Action(
id='keyboard_settings',
text='&Keyboard && Mouse',
callback='on_action_keyboard_settings',
),
Action(
id='open_settings_dir',
text='&Open Settings Folder',
callback='on_action_open_settings_dir',
),
])
])