.. highlightlang:: us .. index:: Überblick Menüs, Menüs .. _uberblick-menus: Überblick Menüs =============== 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: .. list-table:: :header-rows: 1 * - 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: :ref:`MnInsert`, :ref:`MnAppend` und :ref:`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 :file:`do_cmds.IC`. .. us.example **Beispiel** Hier nur ein einfaches Beispiel: :: nID = MnGetNewCommandID(); MnInsert("Document", 1, 7, nID, "My Import"); MnDrawMenuBar(); MnSetCommand(nID, "DoMyImport()"); :ref:`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 :ref:`MnGetNewCommandID` verwendet werden. :ref:`MnDrawMenuBar` sollte nach Änderungen eines Menüs aufgerufen werden, damit der Menü-Balken neu gezeichnet wird, sonst gibt es Darstellungsfehler am Menü. :ref:`MnSetCommand` ordnet einem Index, der mit :ref:`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()");``. 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 :ref:`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 :ref:`MnInsertPopup`. 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 :ref:`OnCommandUI`. 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. .. us.example **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"); } .. us.makeindex Menu, Überblick Menüs .. include:: ../ftab/Menu.ftab .. seealso:: :ref:`funktionen-eingeteilt-in-kategorien` :sub:`id-1362113`