Browse Source

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.
pull/3299/head
Torbjörn Lönnemark 7 months ago committed by GitHub
parent
commit
a88b0ebc2d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 4
      tests-ui/utils/ezgraph.js
  2. 42
      web/extensions/core/widgetInputs.js

4
tests-ui/utils/ezgraph.js

@ -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();
} }

42
web/extensions/core/widgetInputs.js

@ -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…
Cancel
Save