Add a "No image" entry to the Page Editor's image dropdown
It heads the list and empties imageFileName; a widget with no image shows it too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+1
-1
@@ -8,7 +8,7 @@ so later rebinding would only ever be seen by the module that did it.
|
|||||||
import configparser
|
import configparser
|
||||||
import os
|
import os
|
||||||
|
|
||||||
VERSION = "0.0.0.132"
|
VERSION = "0.0.0.133"
|
||||||
PROPERTIES_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "editor.properties")
|
PROPERTIES_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "editor.properties")
|
||||||
DEFAULT_GRID_SIZE = 10
|
DEFAULT_GRID_SIZE = 10
|
||||||
DEFAULT_ADD_TIMESTAMP = True
|
DEFAULT_ADD_TIMESTAMP = True
|
||||||
|
|||||||
+19
-11
@@ -83,6 +83,7 @@ NUMERIC_FORMAT_TYPES = ("ontrolOx::NumericLabel", "ontrolOx::NumericLabelSet")
|
|||||||
BUF_ENCODING = "latin-1"
|
BUF_ENCODING = "latin-1"
|
||||||
|
|
||||||
IMAGE_EXTENSIONS = (".png", ".jpg", ".jpeg", ".bmp", ".bin")
|
IMAGE_EXTENSIONS = (".png", ".jpg", ".jpeg", ".bmp", ".bin")
|
||||||
|
NO_IMAGE = "No image" # the image list's entry for an empty imageFileName
|
||||||
|
|
||||||
|
|
||||||
# --- value conversions ----------------------------------------------------------------
|
# --- value conversions ----------------------------------------------------------------
|
||||||
@@ -292,20 +293,24 @@ def image_names():
|
|||||||
def image_file_text(name):
|
def image_file_text(name):
|
||||||
"""An imageFileName value with its bank file's extension: 'trt' -> 'trt.jpg'.
|
"""An imageFileName value with its bank file's extension: 'trt' -> 'trt.jpg'.
|
||||||
|
|
||||||
A name no bank file matches is shown as it is.
|
A name no bank file matches is shown as it is, and an empty one as NO_IMAGE.
|
||||||
"""
|
"""
|
||||||
if name:
|
if not name:
|
||||||
for file_name in image_names():
|
return NO_IMAGE
|
||||||
if os.path.splitext(file_name)[0] == name:
|
for file_name in image_names():
|
||||||
return file_name
|
if os.path.splitext(file_name)[0] == name:
|
||||||
|
return file_name
|
||||||
return name
|
return name
|
||||||
|
|
||||||
|
|
||||||
def image_file_value(text):
|
def image_file_value(text):
|
||||||
"""The imageFileName value for a listed file: 'trt.jpg' -> 'trt'.
|
"""The imageFileName value for a listed file: 'trt.jpg' -> 'trt'.
|
||||||
|
|
||||||
The slot holds the bare name, as the device looks the file up by it.
|
The slot holds the bare name, as the device looks the file up by it; NO_IMAGE
|
||||||
|
empties it.
|
||||||
"""
|
"""
|
||||||
|
if text == NO_IMAGE:
|
||||||
|
return ""
|
||||||
stem, ext = os.path.splitext(text.strip())
|
stem, ext = os.path.splitext(text.strip())
|
||||||
return stem if ext.lower() in IMAGE_EXTENSIONS else text.strip()
|
return stem if ext.lower() in IMAGE_EXTENSIONS else text.strip()
|
||||||
|
|
||||||
@@ -900,15 +905,18 @@ class OxWidgetPropertiesPanel:
|
|||||||
self._bind_commit(entry, row)
|
self._bind_commit(entry, row)
|
||||||
self._controls.append((entry, None))
|
self._controls.append((entry, None))
|
||||||
|
|
||||||
def _bank_combo(self, cell, row, bank_values):
|
def _bank_combo(self, cell, row, bank_values, first=None):
|
||||||
"""A pick-only list filled from a bank each time it opens, the value kept listed."""
|
"""A pick-only list filled from a bank each time it opens, the value kept listed.
|
||||||
|
|
||||||
|
`first`, when given, heads the list: the entry for a slot naming nothing.
|
||||||
|
"""
|
||||||
var = row["var"]
|
var = row["var"]
|
||||||
|
|
||||||
def fill():
|
def fill():
|
||||||
values = bank_values()
|
values = ([first] if first else []) + bank_values()
|
||||||
current = var.get()
|
current = var.get()
|
||||||
if current and current not in values:
|
if current and current not in values:
|
||||||
values = [current] + values
|
values.insert(1 if first else 0, current)
|
||||||
combo.configure(values=values)
|
combo.configure(values=values)
|
||||||
|
|
||||||
combo = ttk.Combobox(cell, textvariable=var, state="readonly", font=self._name_font,
|
combo = ttk.Combobox(cell, textvariable=var, state="readonly", font=self._name_font,
|
||||||
@@ -926,7 +934,7 @@ class OxWidgetPropertiesPanel:
|
|||||||
return combo
|
return combo
|
||||||
|
|
||||||
def _build_image(self, cell, row):
|
def _build_image(self, cell, row):
|
||||||
self._bank_combo(cell, row, image_names)
|
self._bank_combo(cell, row, image_names, first=NO_IMAGE)
|
||||||
|
|
||||||
def _build_font(self, cell, row):
|
def _build_font(self, cell, row):
|
||||||
self._bank_combo(cell, row, font_bank_names)
|
self._bank_combo(cell, row, font_bank_names)
|
||||||
|
|||||||
Reference in New Issue
Block a user