Erstellen eigener modaler Dialoge.
Allgemeine Beispiele zur Verwendung der Klasse dialog finden sie hier.
Erstellen eigener modaler Dialoge.
Zum Erstellen eines Dialoges wird eine Dialogspezifikation benötigt. Hierbei handelt es sich um einen JSON-String der mit Hilfe der Funktionen dieser Klasse erzeugt und bearbeitet werden kann, so dass dieser nicht manuell bearbeitet werden muss. Jedes Kontrollwidget (Checkbox, Textfield, etc...) kann mehrfach in einer Dialogspezifikation vorkommen, muss aber innerhalb seines eigenen Typs eine eindeutige ID (String) haben. Anschließend wird die Dialogspezifikation an dialog::show übergeben, um den Dialog anzuzeigen. Nachdem der Dialog geschlossen wurde oder ein Dialog-Ereignis in einer Rückruf-Funktion abgefangen wurde, können die Eingabewerte über die r.. Funktionen geholt werden (rcheckbox, rtextfield, ...). Die Ergebnisse können bis zum nächsten Aufruf von dialog::show geholt werden.
Dynamische Dialoge
Durch Registrierung einer Rückruf-Funktion kann auf bestimmte Dialog-Ereignisse reagiert werden. Die Werte (oder Auswahllisten), Sichtbarkeit sowie Status der Dialog-Elemente können in diesen Funktionen gesteuert und so dynamische Dialoge realisiert werden.
Details hierzu in der Dokumentation der Funktion dialog::listen oder in einem der weiteren Beispiele unten.
Element IDs
Die Elemente eines Dialogs werden über ihre ID referenziert.
Als ID sind beliebige Strings erlaubt, einzige Einschränkung: das Prefix %! ist für interne Verwendung reserviert.
Rückruf-Funktionen, die für interne IDs registriert wurden, werden immer nach spezifischen Funktionen ausgeführt, bspw. also eine für %!all registrierte Funktion erst nach einer für kOk registrierten.
Es wird empfohlen, für Bestätigen Buttons die ID kOk zu vergeben, für Abbrechen Buttons die ID kCancel. In diesem Falle kann das Dialog-Ergebnis - neben Abfrage des zuletzt geklickten Buttons - auch einfach über Aufruf von dialog::wasconfirmed oder dialog::wascancelled ermittelt werden (was auch Bestätigen bzw. Abbruch via Enter oder ESC Taste oder Schließen über die Window-Buttons berücksichtigt).
In comet_pdf und InDesign Server können Dialogspezifikationen zwar erzeugt werden, Dialoge werden aber nicht angezeigt.
static int dialog::title(String dialogSpec, char* title)
Setzt den Fenstertitel der oben im Dialog angezeigt wird. Der default Dialogtitel ist ein Leerstring. Ein Mehrfachaufruf der Funktion auf der selben Dialogspezifikation bewirkt ein überschreiben des alten Dialogtitels.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
dialogSpec | String | - | Dialogspezifikation |
title | String oder char* | - | Neuer Dialogtitel. Der Titel wird, wenn verfügbar, automatischautomatisch übersetzt. |
static int dialog::size(
String dialogSpec,
float width,
float height)
Setzt die Größe des Dialogs. Standardwerte sind 500x300 Pixel. Ein Mehrfachaufruf der Funktion auf der selben Dialogspezifikation bewirkt ein überschreiben der alten Größe.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
dialogSpec | String | - | Dialogspezifikation |
width | float | - | Breite |
height | float | - | Höhe |
static int dialog::label(
String dialogSpec,
char* id,
char* label,
float x,
float y,
float width,
float height,
int enabled = 1,
int visible = 1)
Fügt eine einfache Textbeschriftung hinzu.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
dialogSpec | String | - | Dialogspezifikation |
id | String oder char* | - | ID des Elementes. IDs mit dem Prefix %! sind für interne Verwendung reserviert und dürfen in cscript nicht für eigene Elemente verwendet werden. |
label | String oder char* | - | Text. Die Beschriftung wird automatisch übersetzt. |
x | float | - | X-Position des Elementes |
y | float | - | Y-Position des Elementes |
width | float | - | Breite des Elementes |
height | float | - | Höhe des Elementes |
enabled | int | 1 | Ist das Element aktiv (1) oder nicht (0)? |
visible | int | 1 | Ist das Element sichtbar (1) oder nicht (0)? |
static int dialog::checkbox(
String dialogSpec,
char* id,
char* label,
int checked,
float x,
float y,
float width,
float height,
int enabled = 1,
int visible = 1)
Füge eine Checkbox mit optionaler Beschriftung hinzu.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
dialogSpec | String | - | Dialogspezifikation |
id | String oder char* | - | ID des Elementes. IDs mit dem Prefix %! sind für interne Verwendung reserviert und dürfen in cscript nicht für eigene Elemente verwendet werden. |
label | String oder char* | - | Text. Die Beschriftung wird automatisch übersetzt. |
checked | int | - | Ist die Box angehakt? 0 = Nein, sonst = Ja |
x | float | - | X-Position des Elementes |
y | float | - | Y-Position des Elementes |
width | float | - | Breite des Elementes |
height | float | - | Höhe des Elementes |
enabled | int | 1 | Ist das Element aktiv (1) oder nicht (0)? |
visible | int | 1 | Ist das Element sichtbar (1) oder nicht (0)? |
static int dialog::textfield(
String dialogSpec,
char* id,
char* text,
float x,
float y,
float width,
float height,
int enabled = 1,
int visible = 1)
Füge ein einzeiliges Textfeld hinzu.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
dialogSpec | String | - | Dialogspezifikation |
id | String oder char* | - | ID des Elementes. IDs mit dem Prefix %! sind für interne Verwendung reserviert und dürfen in cscript nicht für eigene Elemente verwendet werden. |
text | String oder char* | - | Initialer Text |
x | float | - | X-Position des Elementes |
y | float | - | Y-Position des Elementes |
width | float | - | Breite des Elementes |
height | float | - | Höhe des Elementes |
enabled | int | 1 | Ist das Element aktiv (1) oder nicht (0)? |
visible | int | 1 | Ist das Element sichtbar (1) oder nicht (0)? |
static int dialog::multilinetextfield(
String dialogSpec,
char* id,
char* text,
float x,
float y,
float width,
float height,
int enabled = 1,
int visible = 1)
Füge ein mehrzeiliges Textfeld hinzu.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
dialogSpec | String | - | Dialogspezifikation |
id | String oder char* | - | ID des Elementes. IDs mit dem Prefix %! sind für interne Verwendung reserviert und dürfen in cscript nicht für eigene Elemente verwendet werden. |
text | String oder char* | - | Initialer Text |
x | float | - | X-Position des Elementes |
y | float | - | Y-Position des Elementes |
width | float | - | Breite des Elementes |
height | float | - | Höhe des Elementes |
enabled | int | 1 | Ist das Element aktiv (1) oder nicht (0)? |
visible | int | 1 | Ist das Element sichtbar (1) oder nicht (0)? |
static int dialog::multilinetextinfo(
String dialogSpec,
char* id,
char* text,
float x,
float y,
float width,
float height,
int enabled = 1,
int visible = 1)
Füge ein mehrzeiliges (Nur-Lesen) Textfeld hinzu.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
dialogSpec | String | - | Dialogspezifikation |
id | String oder char* | - | ID des Elementes. IDs mit dem Prefix %! sind für interne Verwendung reserviert und dürfen in cscript nicht für eigene Elemente verwendet werden. |
text | String oder char* | - | Initialer Text. Der Text wird automatisch übersetzt. |
x | float | - | X-Position des Elementes |
y | float | - | Y-Position des Elementes |
width | float | - | Breite des Elementes |
height | float | - | Höhe des Elementes |
enabled | int | 1 | Ist das Element aktiv (1) oder nicht (0)? |
visible | int | 1 | Ist das Element sichtbar (1) oder nicht (0)? |
static int dialog::floatfield(
String dialogSpec,
char* id,
float value,
float x,
float y,
float width,
float height,
int enabled = 1,
int visible = 1,
int type = 0)
Füge ein Eingabefeld hinzu, welches nur float-Zahlen akzeptiert.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
dialogSpec | String | - | Dialogspezifikation |
id | String oder char* | - | ID des Elementes. IDs mit dem Prefix %! sind für interne Verwendung reserviert und dürfen in cscript nicht für eigene Elemente verwendet werden. |
value | float | - | Initialer Wert |
x | float | - | X-Position des Elementes |
y | float | - | Y-Position des Elementes |
width | float | - | Breite des Elementes |
height | float | - | Höhe des Elementes |
enabled | int | 1 | Ist das Element aktiv (1) oder nicht (0)? |
visible | int | 1 | Ist das Element sichtbar (1) oder nicht (0)? |
type | int | 0 | Typ des Feldes 0 : Ohne Typ 4 : Maßeinheit (X-Richtung) 8 : Maßeinheit (Y-Richtung) Beachten Sie bitte, dass Maßangaben unabhängig von der aktuellen Maßeinheit immer in Punkten erwartet werden. |
static int dialog::intfield(
String dialogSpec,
char* id,
int value,
float x,
float y,
float width,
float height,
int enabled = 1,
int visible = 1)
Füge ein Eingabefeld hinzu, welches nur int-Zahlen akzeptiert.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
dialogSpec | String | - | Dialogspezifikation |
id | String oder char* | - | ID des Elementes. IDs mit dem Prefix %! sind für interne Verwendung reserviert und dürfen in cscript nicht für eigene Elemente verwendet werden. |
value | int | - | Initialer Wert |
x | float | - | X-Position des Elementes |
y | float | - | Y-Position des Elementes |
width | float | - | Breite des Elementes |
height | float | - | Höhe des Elementes |
enabled | int | 1 | Ist das Element aktiv (1) oder nicht (0)? |
visible | int | 1 | Ist das Element sichtbar (1) oder nicht (0)? |
static int dialog::dropdown(
String dialogSpec,
char* id,
StringList entries,
int index,
float x,
float y,
float width,
float height,
int enabled = 1,
int visible = 1)
Füge ein Dropdown hinzu um Einträge aus einer Liste auszuwählen
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
dialogSpec | String | - | Dialogspezifikation |
id | String oder char* | - | ID des Elementes. IDs mit dem Prefix %! sind für interne Verwendung reserviert und dürfen in cscript nicht für eigene Elemente verwendet werden. |
StringList | entries | - | Mögliche Auswahlwerte. Die Einzelwerte werden automatisch übersetzt. |
index | int | - | Initial ausgewählter index der entries Liste |
x | float | - | X-Position des Elementes |
y | float | - | Y-Position des Elementes |
width | float | - | Breite des Elementes |
height | float | - | Höhe des Elementes |
enabled | int | 1 | Ist das Element aktiv (1) oder nicht (0)? |
visible | int | 1 | Ist das Element sichtbar (1) oder nicht (0)? |
static int dialog::confirmbutton(
String dialogSpec,
char* id,
char* label,
float x,
float y,
float width,
float height,
int enabled = 1,
int visible = 1)
Button einfügen.
Zum Einfügen der system-spezifischen Buttons zum Schließen des Dialoges (Okay und Abbrechen) empfehlen wir die Funktion dialog::dialogbuttons.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
dialogSpec | String | - | Dialogspezifikation |
id | String oder char* | - | ID des Elementes "kOk" : Okay-Button zum Schließen des Dialoges "kCancel" : Button zum Abbrechen des Dialoges "kCANCEL" : Abbrechen-Button als Default-Button sonst : beliebiger dialogweit eindeutiger String IDs mit dem Prefix %! sind für interne Verwendung reserviert und dürfen in cscript nicht für eigene Elemente verwendet werden! |
label | String oder char* | - | Beschriftung. Die Beschriftung wird automatisch übersetzt. Ist die Angabe leer ("" oder 0) bekommen die Buttons zum Schließen des Dialoges ("kOk", "kCancel" und "kCANCEL") automatisch die system-typische Beschriftung. |
x | float | - | X-Position des Elementes |
y | float | - | Y-Position des Elementes |
width | float | - | Breite des Elementes |
height | float | - | Höhe des Elementes |
enabled | int | 1 | Ist das Element aktiv (1) oder nicht (0)? |
visible | int | 1 | Ist das Element sichtbar (1) oder nicht (0)? |
static int dialog::dialogbuttons(
String dialogSpec,
int cancelEnabled = 1,
int cancelVisible = 1,
int okEnabled = 1,
int okVisible = 1,
char* cancelLabel = 0,
char* okLabel = 0,
int defaultButton = 0)
Füge die beiden Standard-Buttons "Abbrechen" und "Okay" ein. Die Buttons werden automatisch nach den jeweiligen UI Richtlinien des Systems positioniert. Die IDs der Buttons sind dabei wie folgt festgelegt:
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
dialogSpec | String | - | Dialogspezifikation |
cancelEnabled | int | 1 | Aktivierung des Abbrechen-Buttons 0 : Button deaktivieren 1 : Button aktivieren |
cancelVisible | int | 1 | Sichtbarkeit des Abbrechen-Buttons 0 : Button unsichtbar 1 : Button sichtbar |
okEnabled | int | 1 | Aktivierung des Okay-Buttons 0 : Button deaktivieren 1 : Button aktivieren |
okVisible | int | 1 | Sichtbarkeit des Okay-Buttons 0 : Button unsichtbar 1 : Button sichtbar |
cancelLabel | String oder char* | 0 | Beschriftung des Abbrechen-Buttons. Die Beschriftung wird automatisch übersetzt. 0 oder "" : "Abbrechen" |
okLabel | String oder char* | 0 | Beschriftung des Okay-Buttons. Die Beschriftung wird automatisch übersetzt. 0 oder "" : "Okay" |
defaultButton | int | 0 | Welches Button bekommt den Default (Enter-Taste)? 0 : Okay-Button ist Default. rconfirmbutton liefert folgende Werte:
|
static int dialog::show(String dialogSpec)
Zeige einen modalen Dialog der mit einer Dialogspezifikation definiert wird. Nachdem der Dialog geschlossen wurde oder innerhalb registrierter Rückruf-Funktionen (siehe dialog::listen) können die Benutzereingaben über die r...Funktionen abgefragt werden (rcheckbox, rtextfield, ...).
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
dialogSpec | String | - | Dialogspezifikation |
static int dialog::rcheckbox(char* id)
Ermittle ob eine Checkbox des Dialogs, der zuletzt ein Ereignis gesendet hat (bspw. Schließen oder Änderung eines Wertes), angehakt war.
Name | Typ | Default | Beschreibung |
Return | int | 0 = Nicht angehakt oder Fehler, 1 = angehakt | |
id | String oder char* | - | ID des Elementes |
static String dialog::rtextfield(char* id)
Ermittle den Text eines einzeiligen Textfeldes des Dialogs, der zuletzt ein Ereignis gesendet hat (bspw. Schließen oder Änderung eines Wertes)
Name | Typ | Default | Beschreibung |
Return | String | Wert des Textfeldes. Das Ergebnis ist nur direkt nach dem Aufruf gültig. Wenn es weiter verwendet werden soll, muss es in einen anderen String kopiert werden | |
id | String oder char* | - | ID des Elementes |
static int dialog::rlabel(char* id)
Ermittle den Text einer Beschriftung des Dialogs, der zuletzt ein Ereignis gesendet hat (bspw. Schließen oder Änderung eines Wertes)
Name | Typ | Default | Beschreibung |
Return | String | Wert des Beschriftung. Das Ergebnis ist nur direkt nach dem Aufruf gültig. Wenn es weiter verwendet werden soll, muss es in einen anderen String kopiert werden | |
id | String oder char* | - | ID des Elementes |
static int dialog::rmultilinetextfield(char* id)
Ermittle den Text eines mehrzeiligen Textfeldes des Dialogs, der zuletzt eine Ereignis gesendet hat (bspw. Schließen oder Änderung eines Wertes)
Name | Typ | Default | Beschreibung |
Return | String | Wert des Textfeldes. Das Ergebnis ist nur direkt nach dem Aufruf gültig. Wenn es weiter verwendet werden soll, muss es in einen anderen String kopiert werden | |
id | String oder char* | - | ID des Elementes |
static int dialog::rmultilinetextinfo(char* id)
Ermittle den Text eines mehrzeiligen Textinfofeldes des Dialogs, der zuletzt eine Ereignis gesendet hat (bspw. Schließen oder Änderung eines Wertes)
Name | Typ | Default | Beschreibung |
Return | String | Wert des Textfeldes. Das Ergebnis ist nur direkt nach dem Aufruf gültig. Wenn es weiter verwendet werden soll, muss es in einen anderen String kopiert werden | |
id | String oder char* | - | ID des Elementes |
static float dialog::rfloatfield(char* id)
Ermittle den Wert eines float-Feldes des Dialogs, der zuletzt ein Ereignis gesendet hat (bspw Schließen oder Änderung eines Wertes)
Name | Typ | Default | Beschreibung |
Return | float | Wert des float-Feldes Beachten Sie bitte, dass Maßangaben unabhängig von der aktuellen Maßeinheit immer in Punkten gegeben werden. |
|
id | String oder char* | - | ID des Elementes |
static int dialog::rintfield(char* id)
Ermittle den Wert eines int-Feldes beim schließen des Dialoges.
Name | Typ | Default | Beschreibung |
Return | int | Wert des int-Feldes | |
id | String oder char* | - | ID des Elementes |
static String dialog::rdropdown(char* id, int* oIndex = 0)
Ermittle den ausgewählten Wert eines Dropdowns beim schließen des Dialoges.
Name | Typ | Default | Beschreibung |
Return | String | Wert des Dropdowns. Das Ergebnis ist nur direkt nach dem Aufruf gültig. Wenn es weiter verwendet werden soll, muss es in einen anderen String kopiert werden | |
id | String oder char* | - | ID des Elementes |
oIndex | int * | 0 | Index des ausgewählten Elementes |
static String dialog::rconfirmbutton()
Hole die ID des schließenden Buttons. Ermittle die ID des Buttons der verwendet wurde, um den Dialog zu schließen.
Name | Typ | Default | Beschreibung |
Return | String | ID des Buttons der zum schließen gedrückt wurde. Das Ergebnis ist nur direkt nach dem Aufruf gültig.
Wenn es weiter verwendet werden soll, muss es in einen anderen String kopiert werden "kOk" : Okay-Button oder Return-Taste "kCancel" : Cancel-Button oder Command-Punkt (nur Mac) |
static String dialog::rbutton(char* id)
Ermittle die Wert eines Buttons des Dialogs, der zuletzt ein Ereignis gesendet hat (bspw. Schließen oder Ändern eines Wertes)
Name | Typ | Default | Beschreibung |
Return | String | Wert des Buttons. Das Ergebnis ist nur direkt nach dem Aufruf gültig. Wenn es weiter verwendet werden soll, muss es in einen anderen String kopiert werden | |
id | String oder char* | - | ID des Elementes |
static int dialog::wcheckbox(char* id, int checked)
Setze den Status (angehakt oder nicht) einer Checkbox. Diese Funktion kann in mit dialog::listen registrierten Rückruffunktionen verwendet werden und bezieht sich immer auf den aktiven Dialog. Sind mehrere Dialoge geöffnet, ist dies der Dialog, der zuletzt geöffnet wurde.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode, wenn ein Element mit der angegebenen ID nicht gefunden wurde, nicht dem erwarteten Typ entspricht oder kein Dialog aktiv ist. | |
id | String oder char* | - | ID des Elementes |
checked | int | - | 0: nicht angehakt, 1: angehakt |
static int dialog::wtextfield(char* id, char* value)
Setze den Wert eines einzeiligen Textfeldes. Diese Funktion kann in mit dialog::listen registrierten Rückruffunktionen verwendet werden und bezieht sich immer auf den aktiven Dialog. Sind mehrere Dialoge geöffnet, ist dies der Dialog, der zuletzt geöffnet wurde.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode, wenn ein Element mit der angegebenen ID nicht gefunden wurde, nicht dem erwarteten Typ entspricht oder kein Dialog aktiv ist. | |
id | String oder char* | - | ID des Elementes |
value | String oder char* | - | Neuer Wert des Elementes |
static int dialog::wlabel(char* id, char* value)
Setze den Wert einer Beschriftung. Diese Funktion kann in mit dialog::listen registrierten Rückruffunktionen verwendet werden und bezieht sich immer auf den aktiven Dialog. Sind mehrere Dialoge geöffnet, ist dies der Dialog, der zuletzt geöffnet wurde.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode, wenn ein Element mit der angegebenen ID nicht gefunden wurde, nicht dem erwarteten Typ entspricht oder kein Dialog aktiv ist. | |
id | String oder char* | - | ID des Elementes |
value | String oder char* | - | Neuer Wert des Elementes. Die Beschriftung wird automatisch übersetzt. |
static int dialog::wmultilinetextfield(char* id, char* value)
Setze den Wert eines mehrzeiligen Textfeldes. Diese Funktion kann in mit dialog::listen registrierten Rückruffunktionen verwendet werden und bezieht sich immer auf den aktiven Dialog. Sind mehrere Dialoge geöffnet, ist dies der Dialog, der zuletzt geöffnet wurde.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode, wenn ein Element mit der angegebenen ID nicht gefunden wurde, nicht dem erwarteten Typ entspricht oder kein Dialog aktiv ist. | |
id | String oder char* | - | ID des Elementes |
value | String oder char* | - | Neuer Wert des Elementes |
static int dialog::wmultilinetextinfo(char* id, char* value)
Setze den Wert eines mehrzeiligen Textinfofeldes. Diese Funktion kann in mit dialog::listen registrierten Rückruffunktionen verwendet werden und bezieht sich immer auf den aktiven Dialog. Sind mehrere Dialoge geöffnet, ist dies der Dialog, der zuletzt geöffnet wurde.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode, wenn ein Element mit der angegebenen ID nicht gefunden wurde, nicht dem erwarteten Typ entspricht oder kein Dialog aktiv ist. | |
id | String oder char* | - | ID des Elementes |
value | String oder char* | - | Neuer Wert des Elementes. Die Beschriftung wird automatisch übersetzt. |
static int dialog::wfloatfield(char* id, float value)
Setze den Wert eines Floatfeldes. Diese Funktion kann in mit dialog::listen registrierten Rückruffunktionen verwendet werden und bezieht sich immer auf den aktiven Dialog. Sind mehrere Dialoge geöffnet, ist dies der Dialog, der zuletzt geöffnet wurde.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode, wenn ein Element mit der angegebenen ID nicht gefunden wurde, nicht dem erwarteten Typ entspricht oder kein Dialog aktiv ist. | |
id | String oder char* | - | ID des Elementes |
value | float | - | Neuer Wert des Elementes |
static int dialog::wintfield(char* id, int value)
Setze den Wert eines Intfeldes. Diese Funktion kann in mit dialog::listen registrierten Rückruffunktionen verwendet werden und bezieht sich immer auf den aktiven Dialog. Sind mehrere Dialoge geöffnet, ist dies der Dialog, der zuletzt geöffnet wurde.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode, wenn ein Element mit der angegebenen ID nicht gefunden wurde, nicht dem erwarteten Typ entspricht oder kein Dialog aktiv ist. | |
id | String oder char* | - | ID des Elementes |
value | int | - | Neuer Wert des Elementes |
static int dialog::wbutton(char* id, char* value)
Setze den Wert (die Beschriftung) eines Buttons. Diese Funktion kann in mit dialog::listen registrierten Rückruffunktionen verwendet werden und bezieht sich immer auf den aktiven Dialog. Sind mehrere Dialoge geöffnet, ist dies der Dialog, der zuletzt geöffnet wurde.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode, wenn ein Element mit der angegebenen ID nicht gefunden wurde, nicht dem erwarteten Typ entspricht oder kein Dialog aktiv ist. | |
id | String oder char* | - | ID des Elementes |
value | String oder char* | - | Neuer Wert des Elementes. Die Beschriftung wird automatisch übersetzt. |
static int dialog::wdropdown(
char* id,
StringList entries,
int selectedIndex = -1)
Setze die Auswahlwerte und den gewählten Eintrag eines Dropdowns. Diese Funktion kann in mit dialog::listen registrierten Rückruffunktionen verwendet werden und bezieht sich immer auf den aktiven Dialog. Sind mehrere Dialoge geöffnet, ist dies der Dialog, der zuletzt geöffnet wurde.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode, wenn ein Element mit der angegebenen ID nicht gefunden wurde, nicht dem erwarteten Typ entspricht oder kein Dialog aktiv ist. | |
id | String oder char* | - | ID des Elementes |
entries | StringList | - | Mögliche Auswahlwerte |
selectedIndex | int | -1 | Vorausgewählter Eintrag |
static int dialog::setenabled(char* id, int enabled)
Aktiviere oder deaktiviere ein Element. Diese Funktion kann in mit dialog::listen registrierten Rückruffunktionen verwendet werden und bezieht sich immer auf den aktiven Dialog. Sind mehrere Dialoge geöffnet, ist dies der Dialog, der zuletzt geöffnet wurde.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode, wenn ein Element mit der angegebenen ID nicht gefunden wurde oder kein Dialog aktiv ist. | |
enabled | int | - | 0: deaktiviere das Element, 1: aktiviere das Element |
static int dialog::setvisible(char* id, int enabled)
Zeige oder verstecke ein Element. Diese Funktion kann in mit dialog::listen registrierten Rückruffunktionen verwendet werden und bezieht sich immer auf den aktiven Dialog. Sind mehrere Dialoge geöffnet, ist dies der Dialog, der zuletzt geöffnet wurde.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode, wenn ein Element mit der angegebenen ID nicht gefunden wurde oder kein Dialog aktiv ist. | |
visible | int | - | 0: verstecke das Element, 1: zeige das Element |
static int dialog::wascancelled()
Ermittle, ob der zuletzt geschlossene Dialog abgebrochen wurde. Abgebrochen wurde ein Dialog dann, wenn er
Name | Typ | Default | Beschreibung |
Return | int | 1: Dialog wurde abgebrochen, 0: Dialog wurde nicht abgebrochen |
static int dialog::wasconfirmed()
Ermittle, ob der zuletzt geschlossene Dialog bestätigt wurde. Bestätigt wurde ein Dialog dann, wenn er
Name | Typ | Default | Beschreibung |
Return | int | 1: Dialog wurde bestätigt, 0: Dialog wurde nicht bestätigt |
static int dialog::listen(char* id, int fptr)
Registriere eine Funktion zur Behandlung von Dialog-Ereignissen.
Rückruf-Funktionen erlauben das Reagieren auf Dialog-Ereignisse wie Ändern von Werten, einer Auswahl
oder Click auf einen Button.
Rückruf-Funktionen müssen folgende Signatur aufweisen:
int myCallback(char * id);Wobei
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
id | String or char* | - | ID des zu beobachtenden Elementes |
fptr | int | - | Zeiger auf die Rückruffunktion |
Einfaches Anwendungsbeispiel:
int handleOkButton(char * id) { if (/* certainConditions ... */ ) { // stop processing this event return 0; }
// continue processing this event
return 1; }
int main() { String dialogSpec = string::alloc();
// ... dialog::dialogbuttons(dialogSpec); dialog::listen("kOk", handleOkButton);
dialog::show(dialogSpec);
return 0; }
static int dialog::suppress_listeners(int state)
(De)aktiviere alle Listener-Funktionen. Die Funktion wird benötigt, wenn Sie eine Listener-Funktion verwenden, die den Wert des aufrufenden Feldes ebenfalls ändert.
Vergessen Sie nicht, die deaktivierten Listener am Ende der Funktion wieder zu aktivieren!
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
state | int | - | 1 : Alle Listener abschalten 0 : Alle Listener aktivieren |
Erzeuge einen Dialog mit allen zur Verfügung stehenden Kontrollen. Am Ende werden die Eingaben des Benutzers abgeholt und im Script verwendet.
int main() { String dialogSpec = string::alloc(); StringList dropDownEntries = stringlist::alloc();
stringlist::append(dropDownEntries, "Entry one"); stringlist::append(dropDownEntries, "Entry two"); stringlist::append(dropDownEntries, "-"); //separator stringlist::append(dropDownEntries, "Entry three"); stringlist::append(dropDownEntries, "Entry four");
dialog::title(dialogSpec, "Dialog Demo"); dialog::size(dialogSpec, 360.0, 400.0);
dialog::label(dialogSpec, "label1", "This is a basic dialog framework demo", 40.0, 20.0, 250.0, 30.0); dialog::checkbox(dialogSpec, "cb1", "This is a checkbox", 1, 40.0, 60.0, 200.0, 20.0); dialog::textfield(dialogSpec, "tf1", "This is a textfield", 40.0, 90.0, 200.0, 20.0); dialog::label(dialogSpec, "label2", "This is a floatfield:", 40.0, 120.0, 130.0, 20.0); dialog::floatfield(dialogSpec, "ff1", 10.5, 160.0, 120.0, 75.0, 20.0); dialog::label(dialogSpec, "label3", "This is an intfield:", 40.0, 150.0, 130.0, 20.0); dialog::intfield(dialogSpec, "if1", 333, 160.0, 150.0, 75.0, 20.0); dialog::label(dialogSpec, "label4", "This is a dropdown:", 40.0, 190.0, 130.0, 20.0); dialog::dropdown(dialogSpec, "dd1", dropDownEntries, 0, 160.0, 190.0, 125.0, 20.0); dialog::multilinetextfield(dialogSpec, "mtf1", "This is a \nmulti-\nline-\ntextfield", 40.0, 230.0, 200.0, 75.0);
dialog::dialogbuttons(dialogSpec);
dialog::show(dialogSpec);
//Fetch all control results and display them in a messagebox showmessage("Dialog results:\nClosed by confirm button: %s\nCheckbox %s: %d\nTextfield %s: %s\nMultiline Textfield %s: %s\nFloatfield %s: %f\nIntfield %s: %d\nDropdown %s: %s", dialog::rconfirmbutton(), "cb1", dialog::rcheckbox("cb1"), "tf1", dialog::rtextfield("tf1"), "mtf1", dialog::rmultilinetextfield("mtf1"), "ff1", dialog::rfloatfield("ff1"), "if1", dialog::rintfield("if1"), "dd1", dialog::rdropdown("dd1"));
return 0; }
Bedingtes "Akzeptieren" eines Dialogs
int reallySure(char * id) { char buffer[4096];
if (strcmp(id, "okButton") == 0) { strcpy (buffer, dialog::rmultilinetextinfo("info")); if (strlen(buffer) < 100) { strreplace(buffer, "sure", "really sure"); dialog::wmultilinetextinfo("info", buffer); return 0; }
return 1; }
return 1; }
int main() { String dialogSpec = string::alloc();
dialog::title(dialogSpec, "Do you really want to...?"); dialog::size(dialogSpec, 300.0, 200.0);
dialog::multilinetextinfo(dialogSpec, "info", "Are you sure you want to click Ok?", 20.0, 20.0, 260.0, 160.0);
dialog::confirmbutton(dialogSpec, "cancelButton", "Cancel", 120.0, 170.0, 70.0, 20.0);
dialog::confirmbutton(dialogSpec, "okButton", "Ok", 200.0, 170.0, 70.0, 20.0); dialog::listen("okButton", reallySure);
dialog::show(dialogSpec);
return 0; }
Dynamisches Dropwdown
int calculateSequence(char * id) { StringList sequence = stringlist::alloc(); char tmp [4096]; int offset = -1; int c = 1;
strcpy(tmp, dialog::rdropdown("range")); if (strcmp(tmp, "odd") == 0) { offset = 1; } else if (strcmp(tmp, "even") == 0) { offset = 0; }
if (offset >= 0) { for (;c < 11; ++c) { sprintf(tmp, "%d", (c * 2) - offset); stringlist::append(sequence, tmp); } }
dialog::wdropdown("sequence", sequence, 0); dialog::setenabled("sequence", offset >= 0); dialog::setenabled("kOk", offset >= 0);
stringlist::release(sequence);
return 1; }
int main() { String dialogSpec = string::alloc(); StringList range = stringlist::alloc(); StringList sequence = stringlist::alloc();
stringlist::append(range, "Select range..."); stringlist::append(range, "odd"); stringlist::append(range, "even");
stringlist::append(sequence, "Please select range first");
dialog::title(dialogSpec, "Dynamic dropdown"); dialog::size(dialogSpec, 300.0, 200.0);
dialog::dropdown(dialogSpec, "range", range, 0, 20.0, 20.0, 180.0, 20.0); dialog::dropdown(dialogSpec, "sequence", sequence, 0, 20.0, 50.0, 180.0, 20.0, 0);
dialog::dialogbuttons(dialogSpec, 1, 1, 0, 1);
dialog::listen("range", calculateSequence);
dialog::show(dialogSpec);
stringlist::release(range); stringlist::release(sequence); string::release(dialogSpec);
return 0; }
Verschachtelte Dialoge
int fibonacci(char * id) { String dialogSpec = string::alloc(); char t mp [4096];
int c = string::get_token_count (id, ","); int p1 = string::to_int (string::get_token (id, ",", c - 2)); int p2 = string::to_int (string::get_token (id, ",", c - 1));
sprintf(tmp, "%s,%d", id, (p1 + p2)); wlog("", "Enter dialog, v=%s\n", tmp);
dialog::title(dialogSpec, "Fibonacci"); dialog::size(dialogSpec, 400.0, 200.0);
dialog::multilinetextinfo(dialogSpec, "fibonacci", tmp, 20.0, 20.0, 360.0, 160.0);
dialog::confirmbutton(dialogSpec, "kCancel", "Close", 120.0, 170.0, 80.0, 20.0); dialog::confirmbutton(dialogSpec, tmp, "Next", 220.0, 170.0, 80.0, 20.0);
dialog::listen(tmp, fibonacci);
dialog::show(dialogSpec);
strcpy(tmp, dialog::rmultilinetextinfo("fibonacci")); wlog("", "Leave dialog, v=%s\n", tmp);
string::release(dialogSpec);
return 0; }
int main() { fibonacci("0,1"); return 0; }
Taschenrechner
//////////////////////////////////////////////////////////////////// // // helpers // int lpad(char * str) { // pad with blanks int c = 36 - 2 * strlen(str) - 1;
for (;c > 0; --c) { sprintf(str, "%s%s", " ", str); }
return 0; }
int printfloat(float floatValue, char * buffer) { int intValue;
sprintf(buffer, "%F", floatValue); intValue = val(buffer);
if ((float)intValue == floatValue) { sprintf(buffer, "%d", intValue); } else { sprintf(buffer, "%.10F", floatValue); }
return 0; }
float calculate(int * err) { char op [16]; char lvalue [4096]; char rvalue [4096]; float result = 0.0; float lf, rf;
strcpy(lvalue, dialog::rlabel("lvalue")); strcpy(rvalue, dialog::rtextfield("rvalue")); strcpy(op, dialog::rlabel("operator"));
lf = fval(lvalue); rf = fval(rvalue);
err = 0;
if (strcmp(op, "+") == 0) { result = lf + rf; } else if (strcmp(op, "-") == 0) { result = lf - rf; } else if (strcmp(op, "*") == 0) { result = lf * rf; } else if (strcmp(op, "/") == 0) { if (rf > 0.0 || rf < 0.0) { result = lf / rf; } else { err = 1; result = -0.0; } } else { result = rf; }
return result; }
char * gInitialValue = " 0";
//////////////////////////////////////////////////////////////////// // // callbacks // int numberClicked(char * id) { char tmp[4096];
strcpy(tmp, dialog::rtextfield("rvalue")); strtrim(tmp);
// don't allow more than 18 digits: if (strlen(tmp) >= 18) return 0;
// remove leading 0 or 'NaN' if (strcmp(tmp, "0") == 0 || strcmp(tmp, "NaN") == 0) tmp[0] = 0;
// append last number clicked strcat(tmp, id); lpad(tmp);
dialog::wtextfield("rvalue", tmp);
return 0; }
int dotClicked(char * id) { char tmp[4096];
strcpy(tmp, dialog::rtextfield("rvalue")); strtrim(tmp);
if (strlen(tmp) >= 18) return 0;
// already contains a 'dot' if (strstr(tmp, ".")) return 0; strcat(tmp, "."); lpad(tmp);
dialog::wtextfield("rvalue", tmp);
return 0; }
int negateClicked(char * id) { char tmp[4096];
strcpy(tmp, dialog::rtextfield("rvalue")); strtrim(tmp); if (strlen(tmp) >= 18) return 0;
if (strstr(tmp, "-") == tmp) { sprintf(tmp, "%s", tmp + 1); } else { sprintf(tmp, "-%s", tmp); } lpad(tmp);
dialog::wtextfield("rvalue", tmp);
return 0; }
int invertClicked(char * id) { char tmp[4096]; float f;
strcpy(tmp, dialog::rtextfield("rvalue")); strtrim(tmp); f = fval(tmp); if (f > 0.0 || f < 0.0) { printfloat((1.0/f), tmp); } else { sprintf(tmp, "NaN"); } lpad(tmp);
dialog::wtextfield("rvalue", tmp);
return 0; }
int operatorClicked(char * id) { float v; char tmp[4096]; int err;
if (strcmp(id, "C") == 0) { dialog::wlabel("operator", ""); dialog::wlabel("lvalue", ""); dialog::wtextfield("rvalue", gInitialValue); } else { v = calculate(&err);
printfloat(v, tmp); lpad(tmp); if (strcmp(id, "=") == 0) { dialog::wlabel("operator", ""); dialog::wlabel("lvalue", ""); dialog::wtextfield("rvalue", tmp); } else { dialog::wlabel("operator", id); dialog::wlabel("lvalue", tmp); dialog::wtextfield("rvalue", gInitialValue); } if (err) { dialog::wlabel("operator", "E"); } }
return 0; }
//////////////////////////////////////////////////////////////////// // // main // int main() { String dialogSpec = string::alloc(); int c = 0; char tmp [4096];
dialog::title(dialogSpec, "Calculator"); dialog::size(dialogSpec, 190.0, 300.0);
dialog::label(dialogSpec, "lvalue", " ", 10.0, 10.0, 160.0, 30.0); dialog::label(dialogSpec, "operator", " ", 170.0, 10.0, 20.0, 30.0); dialog::textfield(dialogSpec, "rvalue", gInitialValue, 10.0, 50.0, 170.0, 30.0);
dialog::confirmbutton(dialogSpec, "1", "1", 20.0, 90.0, 30.0, 30.0); dialog::confirmbutton(dialogSpec, "2", "2", 60.0, 90.0, 30.0, 30.0); dialog::confirmbutton(dialogSpec, "3", "3", 100.0, 90.0, 30.0, 30.0);
dialog::confirmbutton(dialogSpec, "4", "4", 20.0, 130.0, 30.0, 30.0); dialog::confirmbutton(dialogSpec, "5", "5", 60.0, 130.0, 30.0, 30.0); dialog::confirmbutton(dialogSpec, "6", "6", 100.0, 130.0, 30.0, 30.0);
dialog::confirmbutton(dialogSpec, "7", "7", 20.0, 170.0, 30.0, 30.0); dialog::confirmbutton(dialogSpec, "8", "8", 60.0, 170.0, 30.0, 30.0); dialog::confirmbutton(dialogSpec, "9", "9", 100.0, 170.0, 30.0, 30.0);
dialog::confirmbutton(dialogSpec, ".", ".", 20.0, 210.0, 30.0, 30.0); dialog::confirmbutton(dialogSpec, "0", "0", 60.0, 210.0, 30.0, 30.0); dialog::confirmbutton(dialogSpec, "C", "C", 100.0, 210.0, 30.0, 30.0);
dialog::confirmbutton(dialogSpec, "+/-", "+/-", 20.0, 250.0, 30.0, 30.0); dialog::confirmbutton(dialogSpec, "1/x", "1/x", 60.0, 250.0, 30.0, 30.0); dialog::confirmbutton(dialogSpec, "=", "=", 100.0, 250.0, 70.0, 30.0);
dialog::confirmbutton(dialogSpec, "/", "/", 140.0, 90.0, 30.0, 30.0); dialog::confirmbutton(dialogSpec, "*", "*", 140.0, 130.0, 30.0, 30.0); dialog::confirmbutton(dialogSpec, "-", "-", 140.0, 170.0, 30.0, 30.0); dialog::confirmbutton(dialogSpec, "+", "+", 140.0, 210.0, 30.0, 30.0);
// add listener for numbers... for (; c < 10; ++c) { sprintf(tmp, "%d", c); dialog::listen(tmp, numberClicked); }
// ... dot ... dialog::listen(".", dotClicked);
// ... +/- ... dialog::listen("+/-", negateClicked); dialog::listen("1/x", invertClicked); dialog::listen("+", operatorClicked); dialog::listen("-", operatorClicked); dialog::listen("*", operatorClicked); dialog::listen("/", operatorClicked); dialog::listen("=", operatorClicked); dialog::listen("C", operatorClicked);
dialog::show(dialogSpec);
return 0; }
Alphabetic index HTML hierarchy of classes or Java