Options for file dialog behavior: Usual for standard selection or DirectoriesOnly to restrict to directories.
export class DialogsOptionsExamplePanel extends PanelPlugin { connections: any[]; static descriptor() { const d = new Descriptor(); d.id = 'com.docs.DialogsOptionsExample'; d.name = 'Dialogs.Options Example'; d.defaultDockState = DockState.Detached; d.defaultSize = new Size(400, 250); return d; } constructor(pluginSystem: Editor.PluginSystem, descriptor?: Descriptor) { super(pluginSystem, descriptor); this.connections = []; } createWidget(parent: Widget): Widget { const root = new Widget(parent); const layout = new BoxLayout(); layout.setDirection(Direction.TopToBottom); layout.spacing = 8; root.layout = layout; const title = new Label(root); title.text = 'Dialogs.Options Demo'; layout.addWidget(title); const statusLabel = new Label(root); statusLabel.text = 'Click a button to open a dialog'; statusLabel.wordWrap = true; layout.addWidget(statusLabel); // Dialogs.Options controls file/directory dialog behavior: // Usual — standard file dialog // DirectoriesOnly — restrict to directories only const gui = this.pluginSystem.findInterface(IGui.interfaceId) as IGui; const fileBtn = new PushButton(root); fileBtn.text = 'Open File Dialog (Usual)'; layout.addWidget(fileBtn); this.connections.push( fileBtn.onClick.connect(() => { // Dialogs.Params has a protected constructor; cast to create one const params = { caption: 'Select a File', filter: '*.*', options: Dialogs.Options.Usual } as unknown as Dialogs.Params; const result = gui.dialogs.selectFileToOpen(params, new Editor.Path('')); statusLabel.text = 'Selected: ' + result.toString(); }) ); const dirBtn = new PushButton(root); dirBtn.text = 'Open Directory Dialog (DirectoriesOnly)'; layout.addWidget(dirBtn); this.connections.push( dirBtn.onClick.connect(() => { // DirectoriesOnly restricts the dialog to show only directories const params = { caption: 'Select a Directory', filter: '', options: Dialogs.Options.DirectoriesOnly } as unknown as Dialogs.Params; const result = gui.dialogs.selectFolderToOpen(params, new Editor.Path('')); statusLabel.text = 'Selected: ' + result.toString(); }) ); return root; } deinit(): void { this.connections.forEach((c: any) => c?.disconnect()); this.connections = []; }} Copy
export class DialogsOptionsExamplePanel extends PanelPlugin { connections: any[]; static descriptor() { const d = new Descriptor(); d.id = 'com.docs.DialogsOptionsExample'; d.name = 'Dialogs.Options Example'; d.defaultDockState = DockState.Detached; d.defaultSize = new Size(400, 250); return d; } constructor(pluginSystem: Editor.PluginSystem, descriptor?: Descriptor) { super(pluginSystem, descriptor); this.connections = []; } createWidget(parent: Widget): Widget { const root = new Widget(parent); const layout = new BoxLayout(); layout.setDirection(Direction.TopToBottom); layout.spacing = 8; root.layout = layout; const title = new Label(root); title.text = 'Dialogs.Options Demo'; layout.addWidget(title); const statusLabel = new Label(root); statusLabel.text = 'Click a button to open a dialog'; statusLabel.wordWrap = true; layout.addWidget(statusLabel); // Dialogs.Options controls file/directory dialog behavior: // Usual — standard file dialog // DirectoriesOnly — restrict to directories only const gui = this.pluginSystem.findInterface(IGui.interfaceId) as IGui; const fileBtn = new PushButton(root); fileBtn.text = 'Open File Dialog (Usual)'; layout.addWidget(fileBtn); this.connections.push( fileBtn.onClick.connect(() => { // Dialogs.Params has a protected constructor; cast to create one const params = { caption: 'Select a File', filter: '*.*', options: Dialogs.Options.Usual } as unknown as Dialogs.Params; const result = gui.dialogs.selectFileToOpen(params, new Editor.Path('')); statusLabel.text = 'Selected: ' + result.toString(); }) ); const dirBtn = new PushButton(root); dirBtn.text = 'Open Directory Dialog (DirectoriesOnly)'; layout.addWidget(dirBtn); this.connections.push( dirBtn.onClick.connect(() => { // DirectoriesOnly restricts the dialog to show only directories const params = { caption: 'Select a Directory', filter: '', options: Dialogs.Options.DirectoriesOnly } as unknown as Dialogs.Params; const result = gui.dialogs.selectFolderToOpen(params, new Editor.Path('')); statusLabel.text = 'Selected: ' + result.toString(); }) ); return root; } deinit(): void { this.connections.forEach((c: any) => c?.disconnect()); this.connections = []; }}
File dialog restricted to directories only.
Standard file dialog with standard filters.
Options for file dialog behavior: Usual for standard selection or DirectoriesOnly to restrict to directories.
Example