Skip to content

Commit

Permalink
[i18n] Add INodeSlot.localized_name field
Browse files Browse the repository at this point in the history
  • Loading branch information
huchenlei committed Dec 13, 2024
1 parent 1c1241b commit 418a08d
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 5 deletions.
2 changes: 1 addition & 1 deletion src/LGraphCanvas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3348,7 +3348,7 @@ export class LGraphCanvas {
// TODO: Find a cheap way to measure text, and do it on node label change instead of here
// Input icon width + text approximation
const width =
20 + ((input.label?.length ?? input.name?.length) || 3) * 7
20 + ((input.label?.length ?? input.localized_name?.length ?? input.name?.length) || 3) * 7
is_inside = isInRectangle(
canvasx,
canvasy,
Expand Down
4 changes: 2 additions & 2 deletions src/LGraphNode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1421,7 +1421,7 @@ export class LGraphNode implements Positionable, IPinnable {
if (this.inputs) {
for (let i = 0, l = this.inputs.length; i < l; ++i) {
const input = this.inputs[i]
const text = input.label || input.name || ""
const text = input.label || input.localized_name || input.name || ""
const text_width = compute_text_size(text)
if (input_width < text_width)
input_width = text_width
Expand All @@ -1431,7 +1431,7 @@ export class LGraphNode implements Positionable, IPinnable {
if (this.outputs) {
for (let i = 0, l = this.outputs.length; i < l; ++i) {
const output = this.outputs[i]
const text = output.label || output.name || ""
const text = output.label || output.localized_name || output.name || ""
const text_width = compute_text_size(text)
if (output_width < text_width)
output_width = text_width
Expand Down
2 changes: 1 addition & 1 deletion src/draw.ts
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ export function drawSlot(

// render slot label
if (render_text) {
const text = slot.label != null ? slot.label : slot.name
const text = slot.label || slot.localized_name || slot.name
if (text) {
// TODO: Finish impl. Highlight text on mouseover unless we're connecting links.
ctx.fillStyle = label_color
Expand Down
18 changes: 17 additions & 1 deletion src/interfaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -190,15 +190,31 @@ export interface IOptionalSlotData<TSlot extends INodeInputSlot | INodeOutputSlo
export type ISlotType = number | string

export interface INodeSlot {
/**
* The name of the slot in English.
* Will be included in the serialized data.
*/
name: string
/**
* The localized name of the slot to display in the UI.
* Takes higher priority than {@link name} if set.
* Will NOT be included in the serialized data.
*/
localized_name?: string
/**
* The name of the slot to display in the UI, modified by the user.
* Takes higher priority than {@link display_name} if set.
* Will be included in the serialized data.
*/
label?: string

type: ISlotType
dir?: LinkDirection
removable?: boolean
shape?: RenderShape
not_subgraph_input?: boolean
color_off?: CanvasColour
color_on?: CanvasColour
label?: string
locked?: boolean
nameLocked?: boolean
pos?: Point
Expand Down

0 comments on commit 418a08d

Please sign in to comment.