5. Überblick Menüs¶
5.1. Die Haupt-Menüs¶
In diesem Abschnitt werden die Menüfunktionen und einige andere Funktionen, die im Zusammenhang mit Menüs verwendet werden, beschrieben.
In UniPlot gibt es mehrere Menüs. Welches Menü angezeigt wird, hängt davon ab, welches Fenster aktiv ist. Die Menüs haben Namen:
Wert |
Bedeutung |
---|---|
„Editor“ |
Dieses Menü wird angezeigt, wenn ein Editor aktiv ist. |
„Document“ |
Dieses Menü wird angezeigt, wenn ein Dokument mit Diagrammseiten aktiv ist. |
„DocumentServer“ |
Dieses Menü wird angezeigt, wenn eine UniPlot-Dokumentseite in einem anderen Anwendungsprogramm eingebettet ist (OLE). |
„Command“ |
Dieses Menü wird angezeigt, wenn das UniScript-Kommandofenster aktiv ist. |
„Main“ |
Dieses Menü wird angezeigt, wenn keine MDI-Fenster im UniPlot-Hauptfenster vorhanden sind. Das ist normalerweise der Fall nachdem UniPlot gestartet wurde. |
UniPlot hat fest eingebaute Menüs, die mit UniScript-Funktionen
geändert werden können. Es gibt drei wichtige Funktionen für Menüs:
MnInsert, MnAppend und MnSetCommand. Die
Funktionen werden normalerweise beim Start von UniPlot/UniScript
aufgerufen. Die Änderungen, die UniScript an den UniPlot-Menüs
durchführt, befinden sich in der Datei do_cmds.IC
.
Beispiel
Hier nur ein einfaches Beispiel:
nID = MnGetNewCommandID();
MnInsert("Document", 1, 7, nID, "My Import");
MnDrawMenuBar();
MnSetCommand(nID, "DoMyImport()");
MnInsert fügt einen Eintrag in ein Menü ein. Hier wird
in das Dokument-Menü die Zeichenkette "My Import"
eingefügt. Die drei
Zahlen haben folgende Bedeutung: Die erste Zahl ist die Nummer des
Unter-Menüs. Das erste Unter-Menü ist das Datei(Unter)-Menü. Die Zahl
7 bewirkt, daß die Zeichenkette "My Import"
an die siebte Position im
Datei-Menü eingefügt wird. Die Zahl nID ist ein Index auf die
UniPlot/UniScript Kommandotabelle. Um einen neuen, eindeutigen Index
zu erzeugen, sollt die Funktion MnGetNewCommandID verwendet
werden.
MnDrawMenuBar sollte nach Änderungen eines Menüs aufgerufen werden, damit der Menü-Balken neu gezeichnet wird, sonst gibt es Darstellungsfehler am Menü.
MnSetCommand ordnet einem Index, der mit MnInsert erzeugt
wurde, ein UniScript-Kommando zu. Der Index muss zwischen 0 und 1023
liegen, da die Kommandotabelle 1024 Einträge hat. Es kann im Prinzip
ein beliebiges UniScript-Kommando angegeben werden, die Zeichenkette
darf jedoch nur 32 Zeichen enthalten. Normalerweise wird man als
Kommando einen Funktionsaufruf angeben, wie bei
MnSetCommand(99, "DoMyImport()");
.
5.2. Popup Menüs¶
Popup-Menüs sind Menüs, die sich öffnen, wenn rechts im Menüeintrag ein kleines Dreieck angezeigt wird. Das Popup-Menü wird mit der Funktion MnInsertPopup in ein Menü eingetragen. Wird das Element ausgewählt, öffnet sich rechts ein neues Menü (Popup-Menü). Ein Beispiel finden Sie in der Dokumentation von MnInsertPopup.
5.3. OnCommandUI¶
Menü-Elemente können ein und ausgeblendet oder in grau angezeigt werden, um dem Benutzer darüber zu informieren, dass die entsprechende Funktion nicht verfügbar ist. Links vom Menüeintrag kann ein Häckchen angezeigt werden. Siehe dazu die Dokumentation OnCommandUI.
5.4. Die Kontext-Menüs¶
Ab UniPlot 3.05 können Objekte eigene Menüs haben, die über einen rechten Mausklick auf dem Objekt geöffnet werden. Die Menüs können Popup-Menüs enthalten.
Beispiel
Beispiel: Menüeintrag in das Kontext-Menü eines Textobjekts einfügen:
MenuInsertCommands("OBJ_TB", [""; "MyLegendFunc"], 32000);
MnSetCommand("MyLegendFunc", "Legende...");
Beispiel: Menüeintrag mit weiterem Popup-Menü in das Kontext-Menü eines Textobjekts einfügen.
MenuCreatePopup("OBJ_TB-Legend", [..
"_Test1";
"_Test2"]);
MenuInsertCommands("OBJ_TB", [""; "OBJ_TB-Legend@Legende"], 32000);
MnSetCommand("_Test1", "Legende1...");
MnSetCommand("_Test2", "Legende2...");
Beispiel: Menüeintag „Translate“ in Kontext-Menü eines Diagramms einfügen. Kopieren Sie das folgende Skript in eine IC-Datei und speichern Sie die Datei im autolaod-Verzeichnis von UniPlot:
def _popup_InitTranslateMenu()
{
global g_bTranslateMenuInit;
if (g_bTranslateMenuInit) {
return;
}
g_bTranslateMenuInit = 1;
MenuCreatePopup("OBJ_LAYER-Translate", [..
"OnTranslateEnglish";
"OnTranslateGerman";
"OnTranslateSpanish"]);
MenuInsertCommands("OBJ_LAYER", [""; "OBJ_LAYER-Translate@Translate"], 32000);
MnSetCommand("OnTranslateEnglish", "English...");
MnSetCommand("OnTranslateGerman", "German...");
MnSetCommand("OnTranslateSpanish", "Spanish...");
}
_popup_InitTranslateMenu()
def OnTranslateEnglish()
{
hPage = AppGetActivePage();
if (hPage == 0) {
return 0;
}
hvLayer = PageGetAllLayers(hPage)
if (hvLayer[1] == 0) {
return 0;
}
// etc..
MessageBox("english");
}
def OnTranslateGerman()
{
MessageBox("german");
}
def OnTranslateSpanish()
{
MessageBox("spanish");
}
Überblick Menüs |
|
---|---|
MenuCreatePopup erzeugt ein Popup-Menü. |
|
MenuGetPopup liefert die Namen der Funktionen eines Popup-Menüs. |
|
MenuInsertCommands fügt Kommandos in ein Popup-Menü ein. |
|
Die Funktion hängt entweder ein leeres Menü an eine Menüleiste oder einen einzelnen Menüeintrag an ein Menü an. |
|
MnDrawMenuBar zeichnet das Menü neu. |
|
MnGetNewCommandID liefert eine neue Kommando-Identifikationsnummer. |
|
MnGetStrings gibt einen Vektor mit den Zeichenketten eines Menüs zurück. |
|
MnInsert fügt einen Eintrag in ein Menü ein. |
|
MnInsertPopup fügt einen Popup-Menüeintrag in ein Menü ein. |
|
MnRemove entfernt ein vollständiges Menü oder einen einzelnen Menüeintrag. |
|
MnSetChecked markiert einen Menüpunkt oder schaltet die Markierung ab. |
|
MnSetCommand ordnet einem Menüeintrag ein UniScript-Kommando zu. |
|
Der Funktionsname OnCommand steht für den Namen einer Funktion, die durch ein Menü oder einen Schalter einer Schalterleiste aufgerufen wird. |
|
Der Funktionsname OnCommandUI steht für den Namen einer Funktion, die durch ein Menü oder einen Schalter einer Schalterleiste aufgerufen wird. |
|
RegisterCommand trägt ein Kommando für die Benutzerschalterleiste in eine Tabelle ein. Die registrierten Kommandos können über das Dialogfeld Extras=>Benutzerschalterleiste einrichten in die Benutzerschalterleiste eingefügt werden. Ansonsten entspricht die Funktion der Funktion MnSetCommand |
Siehe auch
id-1362113