Tool windows redesign and the Novel Editor workspace

Tool windows:
- Every editor (scenario, scene builder, map, interactive objects,
  lighting, catalog export) is rebuilt on the interface ToolWindow chrome
  and the denser ToolTheme: header with title/close, status bar, Ctrl+S,
  dirty-state confirmation.
- Shared building blocks in src/Common: ToolUi (rows, buttons, sections),
  CollapsibleSection, FilteredList, ModFileSelector, DragHandle and
  BackgroundCanvas (scene background with pan/zoom).
- The map, interactive and light editors draw on canvases
  (MapEditorCanvas, InteractiveEditorCanvas, LightEditorCanvas) instead of
  one Control "handle" node per object; the *Handle classes are removed.
- Scenario editor: tab data model (TabData), automatic graph layout
  (ScenarioGraphLayout), file tree/info/thumbnail panel updates.
- Services: ModFileService (mod file listing and writing),
  SceneBackgroundService; MapFileService/ModResourceService follow.
- Catalog export: per-language name/description editing.
- Locale (en/ru) regrouped under tools/*; unused keys removed.

Novel Editor:
- collections/novel_editor.json: a "game" whose entry scene is an
  authoring workspace over the novel engine and the story content.
- NovelEditorHub (scenes/novel_editor_hub.tscn) lists every installed
  tool through IToolProvider.AddMenuButton; ToolsInitializer registers it
  as the logical scene "novel_editor".
This commit is contained in:
cthangover committed 2026-10-17 14:29:14 +00:00
1 parent 578ba7c5d5
commit 8742aa3da5
45 files changed
+4718 -3463

No files matched your search

+224 -150
View File
@@ -1,39 +1,145 @@
mod_tools_name = Tools
mod_tools_desc = Developer toolbox: scenario graph editor, map editor with zones, scene builder with inspector, interactive and light editors, and the mod catalog export window.
tools/light_editor/title = Light Editor
tools/light_editor/background = Background
tools/light_editor/static_lights = Static lights (max. 10)
tools/light_editor/add_light = + Add
tools/light_editor/selected_props = Selected properties
tools/light_editor/radius = Radius
tools/light_editor/influence = Influence
tools/light_editor/color = Color
tools/light_editor/import_json = Import from JSON
tools/light_editor/norm_coords = Norm. coords. (0-1). Drag markers.
tools/light_editor/light_n = Light {0} ({1:F3},{2:F3})
tools/light_editor/btn_select = S
tools/light_editor/btn_delete = D
tools/common/save = Save
tools/common/save_tip = Save the file (Ctrl+S)
tools/common/saved = Saved: {0}
tools/common/loaded = Opened: {0}
tools/common/load_error = Load error
tools/common/readonly = Cannot save: the mod is read-only (zip) or the path is invalid.
tools/common/no_writable_mods = No writable mods (only folder mods can be edited).
tools/common/no_files = Mod "{0}" has no such files yet — create one with "+".
tools/common/no_file_to_save = Pick or create a file first ("+" next to the file list).
tools/common/new_file = New file
tools/common/new_file_hint = The file is created in {0}/{1}/ with the {2} extension on first save.
tools/common/new_file_status = New file {0} — created on save.
tools/common/mod_tip = Mod (mods that already have such files first; · — none yet)
tools/common/file_tip = File inside the mod
tools/common/search = Search…
tools/common/json = JSON
tools/common/json_tip = Show the resulting file JSON
tools/common/background_missing = Background "{0}" of scene "{1}" is not provided by any mod — pick one by hand.
tools/map_editor/title = Map Editor
tools/map_editor/hint = LMB — select / drag · RMB — delete vertex · double-click, Enter or Esc — finish region · Del — delete zone · Ctrl+S — save
tools/map_editor/reload_map = Refresh in-game map
tools/map_editor/reload_map_tip = Re-read saved map files in the running game
tools/map_editor/reloaded = In-game map refreshed.
tools/map_editor/select_mode = Select
tools/map_editor/draw_region = Draw
tools/map_editor/draw_started = Click the map to place vertices. Double-click, Enter or Esc finishes, RMB removes the last one.
tools/map_editor/background = Preview background
tools/map_editor/zones = Zones
tools/map_editor/add_region = + Region
tools/map_editor/add_region_tip = New region: draw the polygon by clicking the map
tools/map_editor/add_marker = + Marker
tools/map_editor/add_label = + Label
tools/map_editor/delete = Delete zone
tools/map_editor/delete_tip = Delete the selected zone (Del)
tools/map_editor/delete_confirm = Delete the selected zone? The change reaches the file on save.
tools/map_editor/deleted = Zone "{0}" deleted.
tools/map_editor/props = Zone properties
tools/map_editor/zone_missing = Pick a zone in the list or on the map.
tools/map_editor/id = ID
tools/map_editor/id_empty = Zone ID cannot be empty.
tools/map_editor/duplicate_id = Zone ID already used:
tools/map_editor/title_key = Title
tools/map_editor/description = Description
tools/map_editor/no_translation = key not found in localization
tools/map_editor/scene = Scene
tools/map_editor/scene_none = (none)
tools/map_editor/availability = Availability
tools/map_editor/locked = Locked for travel
tools/map_editor/hidden = Hidden from the map
tools/map_editor/effective = In game:
tools/map_editor/effective_open = open
tools/map_editor/effective_locked = locked (Locked flag)
tools/map_editor/effective_no_scene = locked (no scene)
tools/map_editor/effective_unknown_scene = locked (scene not found)
tools/map_editor/effective_hidden = hidden from the map
tools/map_editor/marker = Marker
tools/map_editor/image = Icon
tools/map_editor/image_placeholder = texture ID
tools/map_editor/icon_search = Find icon…
tools/map_editor/label_section = Label
tools/map_editor/label = Text label on the map
tools/map_editor/x = X (0–1)
tools/map_editor/y = Y (0–1)
tools/map_editor/vertices = Polygon vertices
tools/map_editor/vertices_hint = Drag vertices on the map; RMB on a vertex deletes it.
tools/map_editor/add_vertex = + Vertex
tools/map_editor/delete_vertex = Delete vertex
tools/map_editor/preview = ▶ As in game
tools/map_editor/preview_tip = View the map as in game: hover, zone card, markers (unsaved edits included)
tools/map_editor/preview_on = Preview: Esc or ✕ returns to the editor.
tools/map_editor/preview_off = Editing mode.
tools/map_editor/preview_missing = Cannot load the map scene (map_widget.tscn).
tools/scenario_editor/title = Scenario Editor
tools/scenario_editor/hint = Ctrl+S — save · F5 — play the scenario · click a scene in the graph — its scenarios
tools/scenario_editor/play = ▶ Play
tools/scenario_editor/play_tooltip = Save and play the scenario in game (F5)
tools/scenario_editor/play_stopped = Test play stopped.
tools/scenario_editor/stop = ■ Stop
tools/scenario_editor/open_file = Open in external editor
tools/scenario_editor/open_file_tip = Open the file with the system default program
tools/scenario_editor/open_file_error = Cannot open the file
tools/scenario_editor/rescan = Rescan
tools/scenario_editor/rescan_tip = Re-read the scenario list and graph (after adding files)
tools/scenario_editor/rescanned = Scenario list refreshed.
tools/scenario_editor/search_files = Find file…
tools/scenario_editor/tab_files = Files
tools/scenario_editor/tab_info = Summary
tools/scenario_editor/tab_graph = Scene graph
tools/scenario_editor/graph_select_node = Select a scene in the graph to see its scenarios and transitions.
tools/scenario_editor/graph_node = mod {0} · scenarios {1}
tools/scenario_editor/graph_node_bg = background: {0}
tools/scenario_editor/graph_detail_mod = mod: {0}
tools/scenario_editor/graph_detail_scenarios = Scenarios ({0}), by priority:
tools/scenario_editor/info_scene = Scene
tools/scenario_editor/info_priority = Priority
tools/scenario_editor/info_condition = Condition
tools/scenario_editor/info_switch_targets = Scene switches
tools/scenario_editor/info_locale_keys = Locale keys
tools/scenario_editor/info_quest_refs = Quests
tools/scenario_editor/bg_previews = Scenario backgrounds
tools/scenario_editor/bg_missing = Background not found: {0}
tools/scenario_editor/no_backgrounds = The scenario does not change the background
tools/scenario_editor/save_error = Save error: {0}
tools/scenario_editor/readonly_zip = Files of zip mods are read-only
tools/scenario_editor/no_scene_error = The scenario header has no scene (scene:) — nothing to play.
tools/scenario_editor/unsaved_title = Unsaved changes
tools/scenario_editor/unsaved_switch_text = This tab has unsaved changes. Close it without saving?
tools/scene_builder/title = Scene Builder
tools/scene_builder/base_scene = Base scene:
tools/scene_builder/mod = Mod:
tools/scene_builder/scene = Scene:
tools/scene_builder/hierarchy = Hierarchy
tools/scene_builder/tscn = TSCN
tools/scene_builder/output = Output
tools/scene_builder/clear = Clear
tools/scene_builder/refresh = Refresh
tools/scene_builder/reload = Reload
tools/scene_builder/save = Save
tools/scene_builder/select_scene = -- Select a scene --
tools/scene_builder/select_mod = -- Select a mod --
tools/scene_builder/empty_scene = (empty scene)
tools/scene_builder/error_no_scene = Error: scene not selected.
tools/scene_builder/error_save = Save error.
tools/scene_builder/hint = Drag a node by its body or handles · click — pick the node under the cursor · Del — delete node · Ctrl+S — save and rebuild
tools/scene_builder/base_scene = Base scene the mod scene is shown over
tools/scene_builder/mod = Mod
tools/scene_builder/scene = Mod scene (.tscn)
tools/scene_builder/empty_scene = (empty base scene)
tools/scene_builder/select_mod = — pick a mod —
tools/scene_builder/select_scene = — pick a scene —
tools/scene_builder/save_tip = Save the .tscn and rebuild the preview (Ctrl+S)
tools/scene_builder/reload = Reload from disk
tools/scene_builder/reload_tip = Drop unsaved edits and re-read the scene file
tools/scene_builder/reloaded = Scene reloaded from disk.
tools/scene_builder/saved_ok = Saved.
tools/scene_builder/reloaded = Reloaded.
tools/scene_builder/inspector = Inspector
tools/scene_builder/saved_rebuilt = Saved, preview rebuilt.
tools/scene_builder/autosaved = Autosaved.
tools/scene_builder/error_save = Save error: the mod is read-only.
tools/scene_builder/error_no_scene = Pick a mod scene first.
tools/scene_builder/hierarchy = Hierarchy
tools/scene_builder/hierarchy_hint = Gold — mod scene root, bright — editable nodes, faint — base scene (read-only).
tools/scene_builder/node_type_tip = Type of the new node
tools/scene_builder/add_node_tip = Add a node of the chosen type into the selected node (or the scene root)
tools/scene_builder/delete_node_tip = Delete the selected mod scene node
tools/scene_builder/delete_node_title = Delete node
tools/scene_builder/delete_node_confirm = Delete the selected node with its children? The file is saved automatically.
tools/scene_builder/refresh_tip = Refresh the node tree
tools/scene_builder/tab_inspector = Inspector
tools/scene_builder/tab_tscn = .tscn source
tools/scene_builder/tscn_hint = Inspector and handle edits save themselves; hand edits of the text save with Ctrl+S, which also rebuilds the preview.
tools/scene_builder/inspector_cat_container = In container
tools/scene_builder/inspector_select = Select a node of the mod scene to edit its properties
tools/scene_builder/inspector_readonly = Read-only: node belongs to the base scene
tools/scene_builder/inspector_missing_section = Node section not found in tscn (nodes of instanced sub-scenes are not editable yet)
@@ -42,135 +148,103 @@ tools/scene_builder/inspector_cat_layout = Layout
tools/scene_builder/inspector_cat_rect = Rect
tools/scene_builder/inspector_cat_visibility = Visibility
tools/scene_builder/inspector_cat_misc = Misc
tools/scene_builder/autosaved = Auto-saved.
tools/scene_builder/inspector_bad_value = Value cannot be written to tscn.
tools/scene_builder/inspector_in_file_tooltip = Stored in tscn file
tools/scene_builder/inspector_container_banner = This node is managed by a container: anchors and offsets are recomputed by the parent and will have no effect here.
tools/scene_builder/add_node_tip = Add child node of the selected type (to selection, or scene root)
tools/scene_builder/delete_node_tip = Delete selected mod node
tools/scene_builder/err_add_failed = Error: cannot create node of this type.
tools/scene_builder/err_add_parent_missing = Error: parent section not found in tscn (instanced sub-scene parents are not supported).
tools/scene_builder/err_del_root = Error: the scene root cannot be deleted.
tools/scene_builder/err_del_none = Error: select a mod node to delete.
tools/scene_builder/tab_inspector = Inspector
tools/scene_builder/tab_tscn = TSCN
tools/scene_builder/light_editor = Light Editor
tools/scene_builder/scene_builder = Scene Builder
tools/scenario_editor/title = Scenario Editor
tools/scenario_editor/save = Save
tools/scenario_editor/open_file = Open file
tools/scenario_editor/tab_files = Files
tools/scenario_editor/tab_info = Info
tools/scenario_editor/tab_graph = Graph
tools/scenario_editor/graph_select_node = Select a node to see details
tools/scenario_editor/info_scene = Scene
tools/scenario_editor/info_priority = Priority
tools/scenario_editor/info_condition = Condition
tools/scenario_editor/info_switch_targets = Scene transitions
tools/scenario_editor/info_locale_keys = Locale keys
tools/scenario_editor/info_quest_refs = Quests
tools/scenario_editor/bg_previews = Background previews
tools/scenario_editor/no_backgrounds = No backgrounds
tools/scenario_editor/status_modified = Modified (unsaved)
tools/scenario_editor/status_saved = Saved
tools/scenario_editor/save_error = Save error: {0}
tools/scenario_editor/readonly_zip = File is provided by a zip mod and is read-only
tools/scenario_editor/unsaved_switch_text = You have unsaved changes. Switch file without saving?
tools/unsaved_title = Unsaved changes
tools/unsaved_text = You have unsaved changes. Close without saving?
mods/catalog_select_mod = Select a mod:
tools/scenario_editor/play = ▶ Play
tools/scenario_editor/play_tooltip = Run scenario in test mode
tools/scenario_editor/stop = ⏹ Stop
tools/scenario_editor/no_scene_error = Error: scene (scene:) not specified in scenario metadata
tools/interactive_editor/title = Interactive Editor
tools/interactive_editor/hint = Click a collider — select · drag handles · in polygon mode a click on the background adds a vertex, RMB on a vertex deletes it · Del — delete object · Ctrl+S — save
tools/interactive_editor/items = Objects in file
tools/interactive_editor/add = + New
tools/interactive_editor/duplicate = Duplicate
tools/interactive_editor/delete = Delete object
tools/interactive_editor/delete_confirm = Remove the selected interactive from the file? The change reaches the file on save.
tools/interactive_editor/deleted = Object "{0}" removed.
tools/interactive_editor/background = Preview background
tools/interactive_editor/props = Properties
tools/interactive_editor/none_selected = Pick an object in the list or on the preview.
tools/interactive_editor/label_id = ID
tools/interactive_editor/label_texture_key = Texture
tools/interactive_editor/texture_placeholder = no sprite
tools/interactive_editor/texture_tip = Sprite texture ID; empty — an invisible clickable area
tools/interactive_editor/label_layer = Layer
tools/interactive_editor/label_z = Z order
tools/interactive_editor/label_cursor = Cursor
tools/interactive_editor/cursor_none = (default)
tools/interactive_editor/enabled = Enabled
tools/interactive_editor/visible = Visible
tools/interactive_editor/collider = Collider
tools/interactive_editor/label_collider_type = Shape
tools/interactive_editor/hit_rect = rectangle
tools/interactive_editor/hit_circle = circle
tools/interactive_editor/hit_polygon = polygon
tools/interactive_editor/label_x = X
tools/interactive_editor/label_y = Y
tools/interactive_editor/label_w = Width
tools/interactive_editor/label_h = Height
tools/interactive_editor/label_cx = Centre X
tools/interactive_editor/label_cy = Centre Y
tools/interactive_editor/label_r = Radius
tools/interactive_editor/polygon_hint = A click on the background adds a vertex, RMB on a vertex deletes it. At least 3 vertices.
tools/interactive_editor/polygon_too_small = Polygon "{0}" has fewer than 3 vertices.
tools/interactive_editor/highlight = Highlight
tools/interactive_editor/label_highlight_color = Colour
tools/interactive_editor/label_highlight_scale = Scale
tools/interactive_editor/actions = Actions
tools/interactive_editor/label_onclick_scenario = Scenario
tools/interactive_editor/label_onclick_commands = Commands on click (one per line)
tools/interactive_editor/label_hover_enter = Hover in
tools/interactive_editor/label_hover_leave = Hover out
tools/interactive_editor/id_empty = An object has an empty ID.
tools/interactive_editor/duplicate_id = Duplicate object ID:
tools/interactive_editor/btn_load_json = Load JSON
tools/interactive_editor/btn_save = Save
tools/interactive_editor/btn_import_mod = Import from mod
tools/interactive_editor/dlg_select_def = Select Definition
tools/light_editor/title = Light Editor
tools/light_editor/hint = Double-click the background — new light · drag lights · Del — delete · Ctrl+S — write light_set into the scenario
tools/light_editor/scenario_tip = Scenario whose light_set line is edited (● — already sets lights)
tools/light_editor/pick_scenario = — pick a scenario —
tools/light_editor/save_tip = Write the light_set line into the scenario (Ctrl+S)
tools/light_editor/copy_line = Copy line
tools/light_editor/copy_line_tip = Copy the light_set command to the clipboard
tools/light_editor/copied = light_set line copied.
tools/light_editor/show_line = light_set
tools/light_editor/loaded = Lights of {0} loaded.
tools/light_editor/no_lights_yet = {0} has no light_set yet — add lights, the line is inserted after the header.
tools/light_editor/static_lights = Lights
tools/light_editor/add_light = + Light
tools/light_editor/delete = Delete
tools/light_editor/limit = At most {0} static lights.
tools/light_editor/selected_props = Selected light
tools/light_editor/none_selected = Pick a light in the list or on the preview.
tools/light_editor/x = X (0–1)
tools/light_editor/y = Y (0–1)
tools/light_editor/radius = Radius
tools/light_editor/radius_tip = Radius in pixels of the 1920 px game screen
tools/light_editor/influence = Strength
tools/light_editor/influence_tip = Light influence (0–1)
tools/light_editor/color = Colour
tools/light_editor/background = Preview background
tools/interactive_editor/tab_background = Background
tools/interactive_editor/tab_interactive = Interactive
tools/interactive_editor/tab_scenario = Scenarios
tools/catalog_export/hint = The archive and hashes are computed on export; the JSON is written next to the mod archive
tools/catalog_export/mod_info = Mod
tools/catalog_export/id = ID
tools/catalog_export/name = Name
tools/catalog_export/metadata = Catalog
tools/catalog_export/locales = Localizations
tools/catalog_export/locales_hint = With no rows the English name and description of the manifest are used.
tools/catalog_export/remove_locale = Remove language
tools/catalog_export/preview = Resulting JSON
tools/catalog_export/copied = JSON copied to the clipboard.
tools/catalog_export/export_tip = Build the archive, compute hashes and write the catalog entry JSON
tools/catalog_export/exported = Exported: {0}
tools/catalog_export/export_error = Export error
tools/catalog_export/url_required = Set the download URL — a catalog entry is useless without it.
tools/interactive_editor/label_id = ID:
tools/interactive_editor/label_texture_key = Texture key:
tools/interactive_editor/label_layer = Layer:
tools/interactive_editor/label_bg_preview = Background preview:
tools/interactive_editor/label_collider_type = Collider type:
tools/interactive_editor/label_rect_params = Rect (norm. 0-1):
tools/interactive_editor/label_x = x:
tools/interactive_editor/label_y = y:
tools/interactive_editor/label_w = w:
tools/interactive_editor/label_h = h:
tools/interactive_editor/label_circle_params = Circle (norm. 0-1):
tools/interactive_editor/label_cx = cx:
tools/interactive_editor/label_cy = cy:
tools/interactive_editor/label_r = r:
tools/interactive_editor/label_polygon_vertices = Vertices:
tools/interactive_editor/btn_add_vertex = + Add vertex
tools/interactive_editor/label_highlight_color = Highlight color:
tools/interactive_editor/label_highlight_scale = Highlight scale:
tools/interactive_editor/label_cursor = Cursor:
tools/interactive_editor/cursor_none = (none)
tools/interactive_editor/label_onclick_scenario = OnClick scenario:
tools/interactive_editor/label_onclick_commands = OnClick commands:
tools/interactive_editor/label_hover_enter = OnHoverEnter DSL:
tools/interactive_editor/label_hover_leave = OnHoverLeave DSL:
tools/map_editor/title = Map Editor
tools/map_editor/mod = Mod:
tools/map_editor/file = File:
tools/map_editor/load = Load
tools/map_editor/save = Save
tools/map_editor/save_ok = Saved.
tools/map_editor/reloaded = Map reloaded.
tools/map_editor/load_error = Load error
tools/map_editor/readonly = Cannot save: mod is not writable (zip) or file path is invalid.
tools/map_editor/no_mods = No writable mods
tools/map_editor/no_file = (new file)
tools/map_editor/reload_map = Reload map
tools/map_editor/background = Background:
tools/map_editor/zones = Zones
tools/map_editor/props = Selected zone
tools/map_editor/add_region = + Region
tools/map_editor/add_marker = + Marker
tools/map_editor/add_label = + Label
tools/map_editor/delete = Delete
tools/map_editor/select_mode = Select
tools/map_editor/draw_region = Draw region
tools/map_editor/id = ID:
tools/map_editor/id_empty = ID must not be empty.
tools/map_editor/duplicate_id = Duplicate zone ID.
tools/map_editor/title_key = Title locale key:
tools/map_editor/no_translation = no translation
tools/map_editor/scene = Scene:
tools/map_editor/scene_none = (none)
tools/map_editor/description = Description locale key:
tools/map_editor/image = Marker icon:
tools/map_editor/image_pos = Marker position (0-1):
tools/map_editor/label = Text label on map
tools/map_editor/locked = Closed for travel (locked)
tools/map_editor/hidden = Hidden from map
tools/map_editor/vertices = Polygon vertices
tools/map_editor/add_vertex = + Vertex
tools/map_editor/x = x:
tools/map_editor/y = y:
tools/map_editor/zone_missing = No zone selected.
tools/map_editor/preview = ▶ Preview
tools/map_editor/preview_tip = View the map as in game: hover, location card, markers
tools/map_editor/preview_on = Preview mode: Esc or ✕ returns to the editor.
tools/map_editor/preview_off = Edit mode.
tools/map_editor/preview_missing = Failed to load the map widget scene (map_widget.tscn).
tools/map_editor/effective = In game:
tools/map_editor/effective_open = available
tools/map_editor/effective_locked = closed (flag)
tools/map_editor/effective_no_scene = closed (no scene)
tools/map_editor/effective_unknown_scene = closed (scene not found)
tools/map_editor/effective_hidden = hidden from map
tools/hub/title = Novel Editor
tools/hub/hint = Pick an editor — windows open over this screen. A scenario can be played right from the editor (F5).
tools/hub/editors = Editors
tools/hub/empty = No editors are installed.
tools/hub/main_menu = Main menu