sidebar {
vbox(fill = true) {
- sourcelist { elm: Object ->
+ sourcelist(fill = true) { elm: Object ->
val item = SubListItem()
item.label = "todo"
item
}
}
-
- hsplitpane(initialPosition = 300) {
- vbox {
+ hsplitpane(fill = true, initialPosition = 300) {
+ vbox(fill = true) {
listview<String>(varname = "items", fill = true) { elm, col ->
"todo"
}
}
- vbox {
+ vbox(fill = true) {
webview(varname = "webview", fill = true)
}
}
class ArgFuncs {
static ArgFuncs instance;
+ MethodHandle dialog_args_new;
+ MethodHandle dialog_args_set_title;
+ MethodHandle dialog_args_set_content;
+ MethodHandle dialog_args_set_button1_label;
+ MethodHandle dialog_args_set_button2_label;
+ MethodHandle dialog_args_set_closebutton_label;
+ MethodHandle dialog_args_set_input_value;
+ MethodHandle dialog_args_set_input;
+ MethodHandle dialog_args_set_password;
+ MethodHandle dialog_args_set_result;
+ MethodHandle dialog_args_set_resultdata;
+ MethodHandle dialog_args_free;
+
+ MethodHandle dialogwindow_args_new;
+ MethodHandle dialogwindow_args_set_modal;
+ MethodHandle dialogwindow_args_set_titlebar_buttons;
+ MethodHandle dialogwindow_args_set_show_closebutton;
+ MethodHandle dialogwindow_args_set_title;
+ MethodHandle dialogwindow_args_set_lbutton1;
+ MethodHandle dialogwindow_args_set_lbutton2;
+ MethodHandle dialogwindow_args_set_rbutton3;
+ MethodHandle dialogwindow_args_set_rbutton4;
+ MethodHandle dialogwindow_args_set_lbutton1_states;
+ MethodHandle dialogwindow_args_set_lbutton2_states;
+ MethodHandle dialogwindow_args_set_rbutton3_states;
+ MethodHandle dialogwindow_args_set_rbutton4_states;
+ MethodHandle dialogwindow_args_set_default_button;
+ MethodHandle dialogwindow_args_set_width;
+ MethodHandle dialogwindow_args_set_height;
+ MethodHandle dialogwindow_args_set_onclick;
+ MethodHandle dialogwindow_args_set_onclickdata;
+ MethodHandle dialogwindow_args_free;
+
MethodHandle menuitem_args_new;
MethodHandle menuitem_args_set_label;
MethodHandle menuitem_args_set_stockid;
FunctionDescriptor sigv_mi = FunctionDescriptor.ofVoid(ValueLayout.ADDRESS, ValueLayout.JAVA_INT);
FunctionDescriptor sigv_md = FunctionDescriptor.ofVoid(ValueLayout.ADDRESS, ValueLayout.JAVA_DOUBLE);
+ MemorySegment ui_dialog_args_new_addr = lib.find("ui_dialog_args_new").orElseThrow();
+ MemorySegment ui_dialog_args_set_title_addr = lib.find("ui_dialog_args_set_title").orElseThrow();
+ MemorySegment ui_dialog_args_set_content_addr = lib.find("ui_dialog_args_set_content").orElseThrow();
+ MemorySegment ui_dialog_args_set_button1_label_addr = lib.find("ui_dialog_args_set_button1_label").orElseThrow();
+ MemorySegment ui_dialog_args_set_button2_label_addr = lib.find("ui_dialog_args_set_button2_label").orElseThrow();
+ MemorySegment ui_dialog_args_set_closebutton_label_addr = lib.find("ui_dialog_args_set_closebutton_label").orElseThrow();
+ MemorySegment ui_dialog_args_set_input_value_addr = lib.find("ui_dialog_args_set_input_value").orElseThrow();
+ MemorySegment ui_dialog_args_set_input_addr = lib.find("ui_dialog_args_set_input").orElseThrow();
+ MemorySegment ui_dialog_args_set_password_addr = lib.find("ui_dialog_args_set_password").orElseThrow();
+ MemorySegment ui_dialog_args_set_result_addr = lib.find("ui_dialog_args_set_result").orElseThrow();
+ MemorySegment ui_dialog_args_set_resultdata_addr = lib.find("ui_dialog_args_set_resultdata").orElseThrow();
+ MemorySegment ui_dialog_args_free_addr = lib.find("ui_dialog_args_free").orElseThrow();
+
+ MemorySegment ui_dialogwindow_args_new_addr = lib.find("ui_dialogwindow_args_new").orElseThrow();
+ MemorySegment ui_dialogwindow_args_set_modal_addr = lib.find("ui_dialogwindow_args_set_modal").orElseThrow();
+ MemorySegment ui_dialogwindow_args_set_titlebar_buttons_addr = lib.find("ui_dialogwindow_args_set_titlebar_buttons").orElseThrow();
+ MemorySegment ui_dialogwindow_args_set_show_closebutton_addr = lib.find("ui_dialogwindow_args_set_show_closebutton").orElseThrow();
+ MemorySegment ui_dialogwindow_args_set_title_addr = lib.find("ui_dialogwindow_args_set_title").orElseThrow();
+ MemorySegment ui_dialogwindow_args_set_lbutton1_addr = lib.find("ui_dialogwindow_args_set_lbutton1").orElseThrow();
+ MemorySegment ui_dialogwindow_args_set_lbutton2_addr = lib.find("ui_dialogwindow_args_set_lbutton2").orElseThrow();
+ MemorySegment ui_dialogwindow_args_set_rbutton3_addr = lib.find("ui_dialogwindow_args_set_rbutton3").orElseThrow();
+ MemorySegment ui_dialogwindow_args_set_rbutton4_addr = lib.find("ui_dialogwindow_args_set_rbutton4").orElseThrow();
+ MemorySegment ui_dialogwindow_args_set_lbutton1_states_addr = lib.find("ui_dialogwindow_args_set_lbutton1_states").orElseThrow();
+ MemorySegment ui_dialogwindow_args_set_lbutton2_states_addr = lib.find("ui_dialogwindow_args_set_lbutton2_states").orElseThrow();
+ MemorySegment ui_dialogwindow_args_set_rbutton3_states_addr = lib.find("ui_dialogwindow_args_set_rbutton3_states").orElseThrow();
+ MemorySegment ui_dialogwindow_args_set_rbutton4_states_addr = lib.find("ui_dialogwindow_args_set_rbutton4_states").orElseThrow();
+ MemorySegment ui_dialogwindow_args_set_default_button_addr = lib.find("ui_dialogwindow_args_set_default_button").orElseThrow();
+ MemorySegment ui_dialogwindow_args_set_width_addr = lib.find("ui_dialogwindow_args_set_width").orElseThrow();
+ MemorySegment ui_dialogwindow_args_set_height_addr = lib.find("ui_dialogwindow_args_set_height").orElseThrow();
+ MemorySegment ui_dialogwindow_args_set_onclick_addr = lib.find("ui_dialogwindow_args_set_onclick").orElseThrow();
+ MemorySegment ui_dialogwindow_args_set_onclickdata_addr = lib.find("ui_dialogwindow_args_set_onclickdata").orElseThrow();
+ MemorySegment ui_dialogwindow_args_free_addr = lib.find("ui_dialogwindow_args_free").orElseThrow();
+
MemorySegment ui_menuitem_args_new_addr = lib.find("ui_menuitem_args_new").orElseThrow();
MemorySegment ui_menuitem_args_set_label_addr = lib.find("ui_menuitem_args_set_label").orElseThrow();
MemorySegment ui_menuitem_args_set_stockid_addr = lib.find("ui_menuitem_args_set_stockid").orElseThrow();
MemorySegment ui_webview_args_set_groups_addr = lib.find("ui_webview_args_set_groups").orElseThrow();
MemorySegment ui_webview_args_free_addr = lib.find("ui_webview_args_free").orElseThrow();
+ dialog_args_new = linker.downcallHandle(ui_dialog_args_new_addr, sigm);
+ dialog_args_set_title = linker.downcallHandle(ui_dialog_args_set_title_addr, sigv_mm);
+ dialog_args_set_content = linker.downcallHandle(ui_dialog_args_set_content_addr, sigv_mm);
+ dialog_args_set_button1_label = linker.downcallHandle(ui_dialog_args_set_button1_label_addr, sigv_mm);
+ dialog_args_set_button2_label = linker.downcallHandle(ui_dialog_args_set_button2_label_addr, sigv_mm);
+ dialog_args_set_closebutton_label = linker.downcallHandle(ui_dialog_args_set_closebutton_label_addr, sigv_mm);
+ dialog_args_set_input_value = linker.downcallHandle(ui_dialog_args_set_input_value_addr, sigv_mm);
+ dialog_args_set_input = linker.downcallHandle(ui_dialog_args_set_input_addr, sigv_mb);
+ dialog_args_set_password = linker.downcallHandle(ui_dialog_args_set_password_addr, sigv_mb);
+ dialog_args_set_result = linker.downcallHandle(ui_dialog_args_set_result_addr, sigv_mm);
+ dialog_args_set_resultdata = linker.downcallHandle(ui_dialog_args_set_resultdata_addr, sigv_mm);
+ dialog_args_free = linker.downcallHandle(ui_dialog_args_free_addr, sigv_m);
+
+ dialogwindow_args_new = linker.downcallHandle(ui_dialogwindow_args_new_addr, sigm);
+ dialogwindow_args_set_modal = linker.downcallHandle(ui_dialogwindow_args_set_modal_addr, sigv_mi);
+ dialogwindow_args_set_titlebar_buttons = linker.downcallHandle(ui_dialogwindow_args_set_titlebar_buttons_addr, sigv_mi);
+ dialogwindow_args_set_show_closebutton = linker.downcallHandle(ui_dialogwindow_args_set_show_closebutton_addr, sigv_mi);
+ dialogwindow_args_set_title = linker.downcallHandle(ui_dialogwindow_args_set_title_addr, sigv_mm);
+ dialogwindow_args_set_lbutton1 = linker.downcallHandle(ui_dialogwindow_args_set_lbutton1_addr, sigv_mm);
+ dialogwindow_args_set_lbutton2 = linker.downcallHandle(ui_dialogwindow_args_set_lbutton2_addr, sigv_mm);
+ dialogwindow_args_set_rbutton3 = linker.downcallHandle(ui_dialogwindow_args_set_rbutton3_addr, sigv_mm);
+ dialogwindow_args_set_rbutton4 = linker.downcallHandle(ui_dialogwindow_args_set_rbutton4_addr, sigv_mm);
+ dialogwindow_args_set_lbutton1_states = linker.downcallHandle(ui_dialogwindow_args_set_lbutton1_states_addr, sigv_mm);
+ dialogwindow_args_set_lbutton2_states = linker.downcallHandle(ui_dialogwindow_args_set_lbutton2_states_addr, sigv_mm);
+ dialogwindow_args_set_rbutton3_states = linker.downcallHandle(ui_dialogwindow_args_set_rbutton3_states_addr, sigv_mm);
+ dialogwindow_args_set_rbutton4_states = linker.downcallHandle(ui_dialogwindow_args_set_rbutton4_states_addr, sigv_mm);
+ dialogwindow_args_set_default_button = linker.downcallHandle(ui_dialogwindow_args_set_default_button_addr, sigv_mi);
+ dialogwindow_args_set_width = linker.downcallHandle(ui_dialogwindow_args_set_width_addr, sigv_mi);
+ dialogwindow_args_set_height = linker.downcallHandle(ui_dialogwindow_args_set_height_addr, sigv_mi);
+ dialogwindow_args_set_onclick = linker.downcallHandle(ui_dialogwindow_args_set_onclick_addr, sigv_mm);
+ dialogwindow_args_set_onclickdata = linker.downcallHandle(ui_dialogwindow_args_set_onclickdata_addr, sigv_mm);
+ dialogwindow_args_free = linker.downcallHandle(ui_dialogwindow_args_free_addr, sigv_m);
+
menuitem_args_new = linker.downcallHandle(ui_menuitem_args_new_addr, sigm);
menuitem_args_set_label = linker.downcallHandle(ui_menuitem_args_set_label_addr, sigv_mm);
menuitem_args_set_stockid = linker.downcallHandle(ui_menuitem_args_set_stockid_addr, sigv_mm);
--- /dev/null
+package de.unixwork.ui;
+
+import java.lang.foreign.Arena;
+import java.lang.foreign.MemorySegment;
+
+public class Dialog {
+ private UiObject parent;
+
+ private String title;
+ private String content;
+ private String button1Label;
+ private String button2Label;
+ private String closeButtonLabel;
+ private String inputValue;
+ private boolean input;
+ private boolean password;
+ private EventHandler resultHandler;
+
+ public Dialog(UiObject parent) {
+ this.parent = parent;
+ }
+
+ public Dialog title(String title) {
+ this.title = title;
+ return this;
+ }
+
+ public Dialog content(String content) {
+ this.content = content;
+ return this;
+ }
+
+ public Dialog button1Label(String button1Label) {
+ this.button1Label = button1Label;
+ return this;
+ }
+
+ public Dialog button2Label(String button2Label) {
+ this.button2Label = button2Label;
+ return this;
+ }
+
+ public Dialog closeButtonLabel(String closeButtonLabel) {
+ this.closeButtonLabel = closeButtonLabel;
+ return this;
+ }
+
+ public Dialog inputValue(String inputValue) {
+ this.inputValue = inputValue;
+ return this;
+ }
+
+ public Dialog input(boolean input) {
+ this.input = input;
+ return this;
+ }
+
+ public Dialog password(boolean password) {
+ this.password = password;
+ return this;
+ }
+
+ public Dialog resultHandler(EventHandler resultHandler) {
+ this.resultHandler = resultHandler;
+ return this;
+ }
+
+ public void show() {
+ ArgFuncs ui = ArgFuncs.getInstance();
+ try(Arena arena = Arena.ofConfined()) {
+ MemorySegment args = (MemorySegment) ui.dialog_args_new.invoke();
+
+ if(title != null) {
+ MemorySegment cstr = arena.allocateFrom(title);
+ ui.dialog_args_set_title.invoke(args, cstr);
+ }
+ if(content != null) {
+ MemorySegment cstr = arena.allocateFrom(content);
+ ui.dialog_args_set_content.invoke(args, cstr);
+ }
+ if(button1Label != null) {
+ MemorySegment cstr = arena.allocateFrom(button1Label);
+ ui.dialog_args_set_button1_label.invoke(args, cstr);
+ }
+ if(button2Label != null) {
+ MemorySegment cstr = arena.allocateFrom(button2Label);
+ ui.dialog_args_set_button2_label.invoke(args, cstr);
+ }
+ if(closeButtonLabel != null) {
+ MemorySegment cstr = arena.allocateFrom(closeButtonLabel);
+ ui.dialog_args_set_closebutton_label.invoke(args, cstr);
+ }
+ if(inputValue != null) {
+ MemorySegment cstr = arena.allocateFrom(inputValue);
+ ui.dialog_args_set_input_value.invoke(args, cstr);
+ }
+ ui.dialog_args_set_input.invoke(args, input);
+ ui.dialog_args_set_password.invoke(args, password);
+ if(resultHandler != null) {
+ EventWrapper event = new EventWrapper(resultHandler);
+ ui.dialog_args_set_result.invoke(args, event.getCallback());
+ ui.dialog_args_set_resultdata.invoke(args, event.getUserData());
+ }
+
+ // create dialog
+ UiObjectFuncs.instance.ui_dialog_create.invoke(parent.ptr, args);
+
+ ui.dialog_args_free.invoke(args);
+ } catch (Throwable e) {
+ throw new RuntimeException(e);
+ }
+ }
+}
--- /dev/null
+package de.unixwork.ui;
+
+import java.lang.foreign.Arena;
+import java.lang.foreign.MemorySegment;
+
+public class DialogWindowBuilder {
+ private UiObject parent;
+
+ private int modal;
+ private int titlebarButtons;
+ private int showCloseButton;
+
+ private String title;
+ private String lbutton1;
+ private String lbutton2;
+ private String rbutton3;
+ private String rbutton4;
+ private int defaultButton;
+ private int width;
+ private int height;
+ private EventHandler onClick;
+
+ public DialogWindowBuilder(UiObject parent) {
+ this.parent = parent;
+ }
+
+ public DialogWindowBuilder modal(boolean modal) {
+ this.modal = modal ? 1 : 2; // UiTri: default, on, off
+ return this;
+ }
+
+ public DialogWindowBuilder titlebarButtons(boolean showButtons) {
+ this.titlebarButtons = showButtons ? 1 : 2;
+ return this;
+ }
+
+ public DialogWindowBuilder showCloseButton(boolean showCloseButton) {
+ this.showCloseButton = showCloseButton ? 1 : 2;
+ return this;
+ }
+
+ public DialogWindowBuilder title(String title) {
+ this.title = title;
+ return this;
+ }
+
+ public DialogWindowBuilder lbutton1(String label) {
+ this.lbutton1 = label;
+ return this;
+ }
+
+ public DialogWindowBuilder lbutton2(String label) {
+ this.lbutton2 = label;
+ return this;
+ }
+
+ public DialogWindowBuilder rbutton3(String label) {
+ this.rbutton3 = label;
+ return this;
+ }
+
+ public DialogWindowBuilder rbutton4(String label) {
+ this.rbutton4 = label;
+ return this;
+ }
+
+ public DialogWindowBuilder defaultButton(int defaultButton) {
+ this.defaultButton = defaultButton;
+ return this;
+ }
+
+ public DialogWindowBuilder width(int width) {
+ this.width = width;
+ return this;
+ }
+
+ public DialogWindowBuilder height(int height) {
+ this.height = height;
+ return this;
+ }
+
+ public DialogWindowBuilder size(int width, int height) {
+ this.width = width;
+ this.height = height;
+ return this;
+ }
+
+ public DialogWindowBuilder onClick(EventHandler onClick) {
+ this.onClick = onClick;
+ return this;
+ }
+
+ public UiObject create() {
+ ArgFuncs ui = ArgFuncs.getInstance();
+ try(Arena arena = Arena.ofConfined()) {
+ MemorySegment args = (MemorySegment) ui.dialogwindow_args_new.invoke();
+
+ ui.dialogwindow_args_set_modal.invoke(args, modal);
+ ui.dialogwindow_args_set_titlebar_buttons.invoke(args, titlebarButtons);
+ ui.dialogwindow_args_set_show_closebutton.invoke(args, showCloseButton);
+
+ if(title != null) {
+ MemorySegment cstr = arena.allocateFrom(title);
+ ui.dialogwindow_args_set_title.invoke(args, cstr);
+ }
+
+ if (lbutton1 != null) {
+ MemorySegment cstr = arena.allocateFrom(lbutton1);
+ ui.dialogwindow_args_set_lbutton1.invoke(args, cstr);
+ }
+ if (lbutton2 != null) {
+ MemorySegment cstr = arena.allocateFrom(lbutton2);
+ ui.dialogwindow_args_set_lbutton2.invoke(args, cstr);
+ }
+ if (rbutton3 != null) {
+ MemorySegment cstr = arena.allocateFrom(rbutton3);
+ ui.dialogwindow_args_set_rbutton3.invoke(args, cstr);
+ }
+ if (rbutton4 != null) {
+ MemorySegment cstr = arena.allocateFrom(rbutton4);
+ ui.dialogwindow_args_set_rbutton4.invoke(args, cstr);
+ }
+
+ ui.dialogwindow_args_set_default_button.invoke(args, defaultButton);
+ ui.dialogwindow_args_set_width.invoke(args, width);
+ ui.dialogwindow_args_set_height.invoke(args, height);
+
+ if(onClick != null) {
+ EventWrapper event = new EventWrapper(onClick);
+ ui.dialogwindow_args_set_onclick.invoke(args, event.getCallback());
+ ui.dialogwindow_args_set_onclickdata.invoke(args, event.getUserData());
+ }
+
+ UiObject obj = UiObjectFuncs.instance.dialogWindow(parent.ptr, args);
+ ui.dialogwindow_args_free.invoke(args);
+ return obj;
+ } catch (Throwable e) {
+ throw new RuntimeException(e);
+ }
+ }
+}
public MethodHandle ui_window;
public MethodHandle ui_sidebar_window;
public MethodHandle ui_simple_window;
+ public MethodHandle ui_dialog_window_create;
+ public MethodHandle ui_dialog_create;
+
private UiObjectFuncs(Linker linker, SymbolLookup lib) {
// void* func(void*, void*)
FunctionDescriptor sigm_mm = FunctionDescriptor.of(ValueLayout.ADDRESS, ValueLayout.ADDRESS, ValueLayout.ADDRESS);
// void func(void*)
FunctionDescriptor sigv_m = FunctionDescriptor.ofVoid(ValueLayout.ADDRESS);
+ // void func(void*, void*)
+ FunctionDescriptor sigv_mm = FunctionDescriptor.ofVoid(ValueLayout.ADDRESS, ValueLayout.ADDRESS);
MemorySegment ui_show_addr = lib.find("ui_show").orElseThrow();
MemorySegment ui_window_addr = lib.find("ui_window").orElseThrow();
MemorySegment ui_sidebar_window_addr = lib.find("ui_sidebar_window").orElseThrow();
MemorySegment ui_simple_window_addr = lib.find("ui_simple_window").orElseThrow();
+ MemorySegment ui_dialog_window_create_addr = lib.find("ui_dialog_window_create").orElseThrow();
+ MemorySegment ui_dialog_create_addr = lib.find("ui_dialog_create").orElseThrow();
ui_show = linker.downcallHandle(ui_show_addr, sigv_m);
ui_window = linker.downcallHandle(ui_window_addr, sigm_mm);
ui_sidebar_window = linker.downcallHandle(ui_sidebar_window_addr, sigm_mm);
ui_simple_window = linker.downcallHandle(ui_simple_window_addr, sigm_mm);
+ ui_dialog_window_create = linker.downcallHandle(ui_dialog_window_create_addr, sigm_mm);
+ ui_dialog_create = linker.downcallHandle(ui_dialog_create_addr, sigv_mm);
}
// must be called by the Toolkit constructor
return createWindow(title, ui_sidebar_window);
}
+ UiObject dialogWindow(MemorySegment parent, MemorySegment args) {
+ MemorySegment obj = null;
+ Toolkit toolkit = Toolkit.getInstance();
+ // see createWindow for details
+ toolkit.setIsObjRegEnabled(false);
+ try {
+ obj = (MemorySegment) ui_dialog_window_create.invoke(parent, args);
+ } catch (Throwable e) {
+ toolkit.setIsObjRegEnabled(true);
+ throw new RuntimeException(e);
+ }
+ toolkit.setIsObjRegEnabled(true);
+
+ return new UiObject(obj);
+ }
+
void show(UiObject obj) {
try {
ui_show.invoke(obj.ptr);
rowspacing: Int = -1,
ui: ContainerUI? = null
): UiWidget {
+ if(fill) {
+ container.fill(true)
+ }
if(hexpand) {
container.hexpand(true)
}
Container.vsplitview(this@Toplevel.ui)
}
+ if(fill) {
+ container.fill(true)
+ }
if(hexpand) {
container.hexpand(true)
}
ui: ContainerUI? = null
): UiWidget {
val container = Container.sidebar(this@Toplevel.ui)
-
if(margin > 0) {
container.margin(margin)
}
package de.unixwork.ui.kotlin
+import de.unixwork.ui.Dialog
+import de.unixwork.ui.DialogWindowBuilder
+import de.unixwork.ui.EventHandler
import de.unixwork.ui.UiObject
fun window(title: String, ui: (Toplevel.() -> Unit)?): Toplevel {
ui?.invoke(toplevel)
return toplevel
}
+
+fun dialog(
+ parent: UiObject,
+ title: String? = null,
+ content: String? = null,
+ button1Label: String? = null,
+ button2Label: String? = null,
+ closeButtonLabel: String? = null,
+ inputValue: String? = null,
+ input: Boolean = false,
+ password: Boolean = false,
+ result: EventHandler? = null
+) {
+ val dialog = Dialog(parent)
+ title?.let {
+ dialog.title(it)
+ }
+ content?.let {
+ dialog.content(it)
+ }
+ button1Label?.let {
+ dialog.button1Label(it)
+ }
+ button2Label?.let {
+ dialog.button2Label(it)
+ }
+ closeButtonLabel?.let {
+ dialog.closeButtonLabel(it)
+ }
+ inputValue?.let {
+ dialog.inputValue(it)
+ }
+ dialog.input(input)
+ dialog.password(password)
+ result?.let {
+ dialog.resultHandler(result)
+ }
+ dialog.show()
+}
+
+fun dialogWindow(
+ parent: UiObject,
+ modal: Boolean? = null,
+ titlebarButtons: Boolean? = null,
+ showCloseButton: Boolean? = null,
+ lbutton1: String? = null,
+ lbutton2: String? = null,
+ rbutton3: String? = null,
+ rbutton4: String? = null,
+ defaultButton: Int = 0,
+ width: Int = 0,
+ height: Int = 0,
+ onClick: EventHandler? = null,
+ ui: (Toplevel.() -> Unit)?): Toplevel
+{
+ val builder = DialogWindowBuilder(parent)
+ modal?.let {
+ builder.modal(it)
+ }
+ titlebarButtons?.let {
+ builder.titlebarButtons(it)
+ }
+ showCloseButton?.let {
+ builder.showCloseButton(it)
+ }
+ lbutton1?.let {
+ builder.lbutton1(it)
+ }
+ lbutton2?.let {
+ builder.lbutton2(it)
+ }
+ rbutton3?.let {
+ builder.rbutton3(it)
+ }
+ rbutton4?.let {
+ builder.rbutton4(it)
+ }
+ builder.defaultButton(defaultButton)
+ builder.width(width)
+ builder.height(height)
+ onClick?.let {
+ builder.onClick(it)
+ }
+
+ val toplevel = Toplevel(builder.create())
+ ui?.invoke(toplevel)
+ return toplevel
+}