Improve node input/widget conversion sub-menus (#3281)
* Make input/widget conversion sub-menus optional
* Improve input/widget conversion sub-menu text
- Fix incorrect text for conversion from widget to input, previously it
effectively said "convert input to input"
- Use "input" instead of "🔘". The former is clearer and consistent
with the rest of the application.
- Use title case (consistent with the rest of the menu entries).
- Strip the trailing periods. There is already a visual indicator for
sub-menus, and no other sub-menus use trailing periods.
This commit is contained in:
parent
d64e217427
commit
a88b0ebc2d
|
@ -204,7 +204,7 @@ export class EzWidget {
|
||||||
convertToWidget() {
|
convertToWidget() {
|
||||||
if (!this.isConvertedToInput)
|
if (!this.isConvertedToInput)
|
||||||
throw new Error(`Widget ${this.widget.name} cannot be converted as it is already a widget.`);
|
throw new Error(`Widget ${this.widget.name} cannot be converted as it is already a widget.`);
|
||||||
var menu = this.node.menu["Convert 🔘 to widget.."].item.submenu.options;
|
var menu = this.node.menu["Convert Input to Widget"].item.submenu.options;
|
||||||
var index = menu.findIndex(a => a.content == `Convert ${this.widget.name} to widget`);
|
var index = menu.findIndex(a => a.content == `Convert ${this.widget.name} to widget`);
|
||||||
menu[index].callback.call();
|
menu[index].callback.call();
|
||||||
}
|
}
|
||||||
|
@ -212,7 +212,7 @@ export class EzWidget {
|
||||||
convertToInput() {
|
convertToInput() {
|
||||||
if (this.isConvertedToInput)
|
if (this.isConvertedToInput)
|
||||||
throw new Error(`Widget ${this.widget.name} cannot be converted as it is already an input.`);
|
throw new Error(`Widget ${this.widget.name} cannot be converted as it is already an input.`);
|
||||||
var menu = this.node.menu["Convert input to 🔘.."].item.submenu.options;
|
var menu = this.node.menu["Convert Widget to Input"].item.submenu.options;
|
||||||
var index = menu.findIndex(a => a.content == `Convert ${this.widget.name} to input`);
|
var index = menu.findIndex(a => a.content == `Convert ${this.widget.name} to input`);
|
||||||
menu[index].callback.call();
|
menu[index].callback.call();
|
||||||
}
|
}
|
||||||
|
|
|
@ -256,8 +256,18 @@ export function mergeIfValid(output, config2, forceUpdate, recreateWidget, confi
|
||||||
return { customConfig };
|
return { customConfig };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let useConversionSubmenusSetting;
|
||||||
app.registerExtension({
|
app.registerExtension({
|
||||||
name: "Comfy.WidgetInputs",
|
name: "Comfy.WidgetInputs",
|
||||||
|
init() {
|
||||||
|
useConversionSubmenusSetting = app.ui.settings.addSetting({
|
||||||
|
id: "Comfy.NodeInputConversionSubmenus",
|
||||||
|
name: "Node widget/input conversion sub-menus",
|
||||||
|
tooltip: "In the node context menu, place the entries that convert between input/widget in sub-menus.",
|
||||||
|
type: "boolean",
|
||||||
|
defaultValue: true,
|
||||||
|
});
|
||||||
|
},
|
||||||
async beforeRegisterNodeDef(nodeType, nodeData, app) {
|
async beforeRegisterNodeDef(nodeType, nodeData, app) {
|
||||||
// Add menu options to conver to/from widgets
|
// Add menu options to conver to/from widgets
|
||||||
const origGetExtraMenuOptions = nodeType.prototype.getExtraMenuOptions;
|
const origGetExtraMenuOptions = nodeType.prototype.getExtraMenuOptions;
|
||||||
|
@ -295,20 +305,28 @@ app.registerExtension({
|
||||||
|
|
||||||
//Convert.. main menu
|
//Convert.. main menu
|
||||||
if (toInput.length) {
|
if (toInput.length) {
|
||||||
options.push({
|
if (useConversionSubmenusSetting.value) {
|
||||||
content: `Convert input to 🔘..`,
|
options.push({
|
||||||
submenu: {
|
content: "Convert Widget to Input",
|
||||||
options: toInput,
|
submenu: {
|
||||||
},
|
options: toInput,
|
||||||
});
|
},
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
options.push(...toInput, null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (toWidget.length) {
|
if (toWidget.length) {
|
||||||
options.push({
|
if (useConversionSubmenusSetting.value) {
|
||||||
content: `Convert 🔘 to widget..`,
|
options.push({
|
||||||
submenu: {
|
content: "Convert Input to Widget",
|
||||||
options: toWidget,
|
submenu: {
|
||||||
},
|
options: toWidget,
|
||||||
});
|
},
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
options.push(...toWidget, null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue