Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[i18n] Add INodeSlot.localized_name field #376

Merged
merged 2 commits into from
Dec 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 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
Loading