From f7167c13f459757d2b730351972a5ce017432f00 Mon Sep 17 00:00:00 2001 From: KenanZhu <3471685733@qq.com> Date: Wed, 27 May 2026 20:25:19 +0800 Subject: [PATCH] =?UTF-8?q?fix(ALAutoScript*Dialog):=20=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E7=BC=96=E6=8E=92=E7=AA=97=E5=8F=A3=E7=94=9F=E6=88=90=E7=9A=84?= =?UTF-8?q?=20Lua=20=E5=87=BD=E6=95=B0=E5=90=8D=E4=B8=8E=20ASEngine=20?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=E6=97=B6=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - date_add → dateadd, time_add → timeadd - CURRENT_DATE() → datenow(), CURRENT_TIME() → timenow() - 编辑窗口 Date/Time 字面量按钮模板同步更新为 date()/time() 格式 Co-Authored-By: Claude Opus 4.7 --- src/gui/ALAutoScriptEditDialog.py | 8 +++---- src/gui/ALAutoScriptOrchDialog/_blocks.py | 1 - src/gui/ALAutoScriptOrchDialog/_helpers.py | 26 +++++++++++----------- src/gui/ALAutoScriptOrchDialog/_widgets.py | 22 ++++++++++-------- 4 files changed, 30 insertions(+), 27 deletions(-) diff --git a/src/gui/ALAutoScriptEditDialog.py b/src/gui/ALAutoScriptEditDialog.py index 82b7fe9..245e18a 100644 --- a/src/gui/ALAutoScriptEditDialog.py +++ b/src/gui/ALAutoScriptEditDialog.py @@ -329,8 +329,8 @@ class ALAutoScriptEditDialog(QDialog): ] self.addButtonsToGrid(literalLayout, bool_buttons, 0, 0, 3) dateTimeButtons = [ - ("日期", '"2099-01-01"'), - ("时间", '"00:00"'), + ("日期", 'date(2026, 1, 1)'), + ("时间", 'time(0, 0)'), ] self.addButtonsToGrid(literalLayout, dateTimeButtons, 1, 0, 3) hintButtons = [ @@ -358,8 +358,8 @@ class ALAutoScriptEditDialog(QDialog): funcButtons = [ ("datenow()", "datenow()", "返回当前日期的 Unix 时间戳"), ("timenow()", "timenow()", "返回当前时间在一天中的分钟数"), - ("dateadd(d, n)", "dateadd(, )", "日期偏移: dateadd(日期时间戳, 天数)"), - ("timeadd(t, n)", "timeadd(, )", "时间偏移: timeadd(分钟数, 分钟数)"), + ("dateadd(day, n)", "dateadd(, )", "日期偏移: dateadd(日期时间戳, 天数)"), + ("timeadd(time, n)", "timeadd(, )", "时间偏移: timeadd(分钟数, 分钟数)"), ] for i, (text, template, tooltip) in enumerate(funcButtons): btn = QPushButton(text) diff --git a/src/gui/ALAutoScriptOrchDialog/_blocks.py b/src/gui/ALAutoScriptOrchDialog/_blocks.py index de4b133..60a164f 100644 --- a/src/gui/ALAutoScriptOrchDialog/_blocks.py +++ b/src/gui/ALAutoScriptOrchDialog/_blocks.py @@ -203,7 +203,6 @@ class ConditionalBlock(QGroupBox): ] if not condTexts: condTexts = ["true"] - if len(condTexts) == 1: combined = condTexts[0] else: diff --git a/src/gui/ALAutoScriptOrchDialog/_helpers.py b/src/gui/ALAutoScriptOrchDialog/_helpers.py index 16a53c5..241361a 100644 --- a/src/gui/ALAutoScriptOrchDialog/_helpers.py +++ b/src/gui/ALAutoScriptOrchDialog/_helpers.py @@ -90,7 +90,7 @@ DATE_OFFSET_OPTIONS = [ ("天", "days"), ("周", "weeks"), # NOTE: "月" and "年" use fixed day counts (30 / 365), not calendar months/years, - # because date_add() works with second-level offsets (n * 86400). + # because dateadd() works with second-level offsets (n * 86400). ("月", "months"), ("年", "years"), ] @@ -423,7 +423,7 @@ def encodeValueStr( Encode a raw widget value as a Lua expression. Arithmetic expressions (A + B) are passed through for numeric types; - Date/Time arithmetic is translated to ``date_add()`` / ``time_add()`` calls. + Date/Time arithmetic is translated to ``dateadd()`` / ``timeadd()`` calls. """ if var_type in ("Date", "Time"): @@ -464,24 +464,24 @@ def encodeDateOrTime( right = m_arith.group(3).strip() operand = right if sign == "+" else f"-{right}" if left == "CURRENT_DATE": - return f"date_add(CURRENT_DATE(), {operand})" + return f"dateadd(datenow(), {operand})" if left == "CURRENT_TIME": - return f"time_add(CURRENT_TIME(), {operand})" + return f"timeadd(timenow(), {operand})" if var_type == "Date": - return f"date_add({left}, {operand})" + return f"dateadd({left}, {operand})" if var_type == "Time": - return f"time_add({left}, {operand})" + return f"timeadd({left}, {operand})" return f"{left} {sign} {right}" if up == "CURRENT_DATE": - return "CURRENT_DATE()" + return "datenow()" if up == "CURRENT_TIME": - return "CURRENT_TIME()" + return "timenow()" _REL_MAP = { - "前天": "date_add(CURRENT_DATE(), -2)", - "昨天": "date_add(CURRENT_DATE(), -1)", - "今天": "CURRENT_DATE()", - "明天": "date_add(CURRENT_DATE(), 1)", - "后天": "date_add(CURRENT_DATE(), 2)", + "前天": "dateadd(datenow(), -2)", + "昨天": "dateadd(datenow(), -1)", + "今天": "datenow()", + "明天": "dateadd(datenow(), 1)", + "后天": "dateadd(datenow(), 2)", } if s in _REL_MAP: return _REL_MAP[s] diff --git a/src/gui/ALAutoScriptOrchDialog/_widgets.py b/src/gui/ALAutoScriptOrchDialog/_widgets.py index f29f82f..949ab6d 100644 --- a/src/gui/ALAutoScriptOrchDialog/_widgets.py +++ b/src/gui/ALAutoScriptOrchDialog/_widgets.py @@ -178,9 +178,11 @@ class ConditionRowFrame(QFrame): if not data: return "" name, vartype = data - # CURRENT_DATE / CURRENT_TIME are Lua functions — call them, not reference them - if name in ("CURRENT_DATE", "CURRENT_TIME"): - name = f"{name}()" + # CURRENT_DATE / CURRENT_TIME map to datenow() / timenow() + if name == "CURRENT_DATE": + name = "datenow()" + elif name == "CURRENT_TIME": + name = "timenow()" opSym = self.opCombo.currentData() if self._rawRhsExpr: return f"{name} {opSym} {self._rawRhsExpr}" @@ -189,8 +191,10 @@ class ConditionRowFrame(QFrame): rd = self.rhsVarCombo.currentData() if rd: rhsName = rd[0] - if rhsName in ("CURRENT_DATE", "CURRENT_TIME"): - rhsName = f"{rhsName}()" + if rhsName == "CURRENT_DATE": + rhsName = "datenow()" + elif rhsName == "CURRENT_TIME": + rhsName = "timenow()" return f"{name} {opSym} {rhsName}" rhsText = self.rhsVarCombo.currentText().strip() if rhsText: @@ -384,18 +388,18 @@ class ActionStepFrame(QFrame): elif op == "add": if vartype == "Date" and hasattr(self.valueStack.currentWidget(), "getOffsetDays"): days = self.valueStack.currentWidget().getOffsetDays() - return f" {target} = date_add({target}, {days})" + return f" {target} = dateadd({target}, {days})" if vartype == "Time" and hasattr(self.valueStack.currentWidget(), "getOffsetHours"): hours = self.valueStack.currentWidget().getOffsetHours() - return f" {target} = time_add({target}, {hours})" + return f" {target} = timeadd({target}, {hours})" return f" {target} = {target} + {rawVal}" elif op == "sub": if vartype == "Date" and hasattr(self.valueStack.currentWidget(), "getOffsetDays"): days = self.valueStack.currentWidget().getOffsetDays() - return f" {target} = date_add({target}, -{days})" + return f" {target} = dateadd({target}, -{days})" if vartype == "Time" and hasattr(self.valueStack.currentWidget(), "getOffsetHours"): hours = self.valueStack.currentWidget().getOffsetHours() - return f" {target} = time_add({target}, -{hours})" + return f" {target} = timeadd({target}, -{hours})" return f" {target} = {target} - {rawVal}" return ""