Umsortieren einer Liste von Platzhaltern mit Hilfe eines Dialoges.

Umsortieren einer Liste von Platzhaltern mit Hilfe eines Dialoges. Die Liste der Platzhalter kann manuell mit den Pfeil-Buttons des Dialoges, mit Drag And Drop und per Tastatur mit ALT + Pfeiltasten umsortiert werden. Durch Anklicken der Spaltenüberschriften kann die Liste nach der jeweiligen Spalte sortiert werden. In der ersten Spalte kann die Originalreihenfolge wiederhergestellt werden.

Die im Dialog angezeigten Inhalte der Dialogspalten müssen zuvor mit link::set_ui_value für jeden Link defininiert werden. Dieser Schritt ist nötig, damit die Listeneinträge beliebige Werte anzeigen können. Beachten Sie bitte, dass link::set_ui_value Texte (char* oder String) als Eingabe erwarten. Sollen Zahlen gezeigt werden, müssen sie zuvor mit entsprechenden Funktionen (z.B. itoa, sprintf oder string::set) in Text konvertiert werden.

Bei erfolgreicher Bestätigung des Dialoges wird die Eingabeliste entsprechend der Dialogliste umsortiert. Mit link::get_ui_value (.., 0) können Sie die ursprüngliche Originalposition abfragen. Der Rückgabewert von link::get_ui_value ist in diesem, und nur in diesem Fall, eine Zahl.

Wenn Sie die Ergebnisliste zum Aktualisieren der Platzhalter verwenden wollen, müssen Sie die Platzhalter mglw. erneut aus dem Dokument (oder besser aus dem jeweiligen Rahmen) ermitteln: Beim Neuladen verändern sich die Positionen aller Platzhalter im weiteren Text - aber davon 'weiß' die Liste natürlich nichts.

Name Typ Default Beschreibung
Return int   0 : Dialog mit Okay beendet
sonst : Fehler oder Abbruch
lli LinkList - Liste der Platzhalter. Die in der Liste angezeigten Inhalte müssen vorher mit link::set_ui_value definiert werden. Sonst bleiben die Spalten leer.
title String oder char* 0 Dialogname

0 oder Leer : Kein Titel
description String oder char* 0 Kurzer (blauer) Beschreibungstext über der Liste

0 oder Leer : Keine Beschreibung
col1 String oder char* 0 Name der ersten Spalte (nach der Spalte '•') der Liste
0 oder Leer : "Nummer"
col2 String oder char* 0 Name der zweiten Spalte (nach der Spalte '•') der Liste
0 oder Leer : "Produkt"
col3 String oder char* 0 Name der dritten Spalte (nach der Spalte '•') der Liste
0 oder Leer : "Rahmen"
col4 String oder char* 0 Name der vierten Spalte (nach der Spalte '•') der Liste
0 oder Leer : "Seite"

Hier ein einfaches Beispiel.

#include "internal/types.h"
#include "internal/text.h"
int main () { LinkList lli = linklist::alloc (0); Link li; int result;
// Get a list of placeholders // linklist::collect_any (lli, 1, "", kFirstIgnore, kSortRowwise, 40, 0, 1, -5);
// Define the content to show in the dialog // for (li = linklist::first (lli); li; li = linklist::next (lli)) { link::set_ui_value (li, 1, itoa (link::id (li)-1)); link::set_ui_value (li, 2, link::content (li)); link::set_ui_value (li, 3, itoa (item::getint (link::frame (li)))); link::set_ui_value (li, 4, itoa (link::pos (li))); wlog ("", "Before : %s\n", link::get_ui_value (li, 1)); }
// Call the dialog // result = sortlinks_dialog (lli, "Rearrange", 0, "ID", "Text", "Frame", "Pos");
// Handle result // if (result == 0) { for (li = linklist::first (lli); li; li = linklist::next (lli)) { wlog ("", "After : %s\n", link::get_ui_value (li, 1)); } } else { wlog ("", "Dialog Canceled by User\n"); }
linklist::release (lli);
return 0; }

Seit
v4.2 R30810, 27. Mai 2022

Verfügbarkeit
priint:comet InDesign® Plug-Ins

Siehe auch
link::set_ui_value
link::get_ui_value

Alphabetic index HTML hierarchy of classes or Java