16 filereq (Filerequestor)

Das Objekt filereq (Filerequestor) ist ein modales Dateiauswahlfenster. Es unterscheidet drei Modi:

  • Auswahl einer Datei zum Öffnen.
  • Angabe einer Datei zum Speichern.
  • Auswahl eines Verzeichnisses.

Zusätzlich können auswählbare Dateien bzw. Verzeichnisse durch ein Muster eingeschränkt werden oder die Auswahl auf existierende Dateien und Verzeichnisse beschränkt werden.

Definition

{ export | reexport } { model } filereq { <Bezeichner> }
{
  <Objektspezifische Attribute>
}

Ereignisse

extevent

Kinder

keine

Vater

dialog

module

Menü

keins

16.1 Attribute

.bgc

.changedir

.class

.control

.cursor

.cut_pending

.cut_pending_changed

.dialog

.directory

.extension

.external

.external[integer]

.fgc

.firstrecord

.font

.groupbox

.help

.label

.lastrecord

.model

.module

multisel

.mustexist

.navigable

.notepage

options[enum]

.parent

.pattern

.record[integer]

.recordcount

.scope

.self

startsel

.statushelp

.style

.text[enum]

.title

.userdata

value

.value[integer]

.window

16.2 Spezifische Attribute

Bitte beachten Sie auch die folgenden Kapitel, insbesondere das Kapitel „Beschreibung des filereq-Objekt“.

Attribut Beschreibung

.changedir

Steuert die Übernahme des Verzeichnisses, in dem sich der Benutzer bei erfolgreicher Selektion in einem Dateiauswahlfenster (Filerequestor) befand, in das Attribut .directory.

.directory

Beinhaltet den Pfad des initialen Verzeichnisses, wenn das Objekt mittels der Builtin-Funktion querybox() geöffnet wird.

.extension

Erlaubt die Definition eines Dateisuffixes.

multisel

Steuert die Auswahlmöglichkeit des Benutzers, bei Wert true kann er mehrere Dateien auswählen.

.mustexist

Bei Wert true können nur existierende Dateien bzw. Verzeichnisse ausgewählt werden.

.navigable

Steuert die Fokussierbarkeit (Erreichbarkeit des Objekts mittels Tastatur).

options[enum]

Optionen des Objekts, näheres siehe „Attributreferenz“.

Mögliche Indizes:

  • fro_createprompt
  • fro_overwriteprompt
  • fro_relativepath

.pattern

Erlaubt, die Auswahlmöglichkeit durch ein Muster einzustellen.

startsel

Mit dem Wert true wird der Pfad aus Attribut .value als initiale Vorgabe übernommen. Standardwert ist false.

.style

Definiert den Modus bzw. Verwendungszweck des Objekts.

Mögliche Werte:

  • fr_directory
  • fr_load
  • fr_save

.text[enum]

Gibt Beschriftung von Dialogelementen eines Filereq-Objektes an (nur Motif).

.title

Angabe des Titels des Filerequestor-Auswahldialogs.

value

Enthält nach erfolgreicher Selektion den vollständigen Pfad zur selektierten Datei bzw. zum selektierten Verzeichnis.

.value[integer]

Enthält nach erfolgreicher Mehrfachselektion eine Liste der vollständigen Pfade zu den selektierten Dateien bzw. zu den selektierten Verzeichnissen.

16.3 Beschreibung des filereq-Objekt

Das Dateiauswahlfenster wird in der Regelsprache mit Hilfe der eingebauten Funktion querybox() bzw. von der Applikationsseite über die Funktion DM_QueryBox() bzw. DMcob_QueryBox() geöffnet. Das Attribut .visible ist für dieses Objekt nicht verfügbar.

Durch Angabe des Parent-Parameters kann die Anfangsposition des Dateiauswahlfensters beeinflusst werden. Siehe dazu die Tabelle am Ende dieses Kapitels.

Während der Auswahl sind alle weiteren Eingabemöglichkeiten der Anwendung gesperrt. Der Anwender kann im Verzeichnisbaum navigieren und eine Datei mittels Maus oder Tastatur auswählen. Auf die Bestätigung der Auswahl durch den OK-Button bzw. durch Doppelklick, erhält man als Rückgabewert:

Die Auswahlmöglichkeit kann durch Angabe eines initialen Verzeichnisses (Attribut .directory) und durch ein Muster (.pattern), das auf die angezeigten, auswählbaren Dateien angewandt wird, konfiguriert werden. Bei Angabe eines Dateisuffix im Attribut .extension wird dieser an den ausgewählten Namen, wenn noch kein Suffix vorhanden, angehängt.

Das Auswahlfenster präsentiert sich je nach Modus (Attribut .style) und Fenstersystem in folgender Form:

Microsoft Windows

Motif

Abbildung 16-8: Datei zum Laden auswählen

Abbildung 16-9: Datei zum Laden öffnen

Abbildung 16-10: Datei zum Speichern auswählen (mit Mehrfachselektion)

Abbildung 16-11: Datei zum Speichern auswählen (relative Pfade, Motif 2.1)

Abbildung 16-12: Verzeichnis auswählen

Abbildung 16-13: Verzeichnis selektieren

Einige Attribute (options[enum], .multisel, .text[enum]) erlauben systemspezifische Funktionen zu nutzen, bieten Zusatzfunktionen oder konfigurieren die Auswahl, und sind nicht auf allen Plattformen verfügbar oder zeigen eine Wirkung.

Die Anfangsposition des Auswahlfensters ist vom Fenstersystem abhängig. Die folgende Tabelle zeigt die Wirkung des Parent-Parameters beim querybox-Aufruf auf die Position.

Parent-Parameter

Anfangsposition des Auswahlfensters

Motif

Windows

Dateiauswahl

Verzeichnisauswahl

keine Angabe oder null

linke, obere Ecke des Desktops

linke, obere Ecke des Desktops wenn kein Anwendungsfenster sichtbar oder in der linken, oberen Ecke des letzten Fensters der Anwendung

linke obere Ecke des Desktops

Fenster-Objekt

zentriert im Fenster

linke, obere Ecke des Fensters

16.4 Hinweise

Das filereq-Objekt wird auf die vom System angebotenen Datei-/Verzeichnis-Auswahlmöglichkeiten abgebildet. Insofern ergibt sich ein unterschiedliches Erscheinungsbild und Funktionsumfang auf den verschiedenen Systemen. Bei Verbesserungen der Auswahlmöglichkeit profitiert man automatisch davon.

Die auf allen Systemen angebotene Möglichkeit, einen Hilfe-Button anzubieten, wird momentan nicht unterstützt.

Das momentane Arbeitsverzeichnis, in dem sich die Anwendung befindet, wird vom filereq-Objekt nicht beeinflusst.

16.4.1 Motif

Die Darstellung (Schrift, Farben, Texte) wird normalerweise vom Window-Manager definiert. Nur Texte und Font sind vom Anwendungsprogrammierer überdefinierbar.

Die Selektion einer Datei kann durch den OK-Button oder durch einen Doppelklick geschehen.

Es handelt sich, unabhängig vom Modus des Filerequestor-Objektes, um die gleiche Art von Dateiauswahlfenster. Man muss also den Sinn über den Titel oder die Texte vermitteln.

Die Überprüfung, ob eine Datei oder ein Verzeichnis existiert, sowie das Anhängen eines Dateisuffixes wenn noch keiner existiert, werden vom IDM übernommen.

Zusätzlich ist es unter Motif möglich, die Beschriftung von Dialogelementen eines Filerequestor-Objektes mit Hilfe des Attributs .text[enum] vorzunehmen.

Bitte beachten Sie in Bezug auf die Anordnung eines Filerequestors vor oder hinter anderen Fenstern und Dialogfeldern auf dem Bildschirm (Z-Ordnung) den Hinweis in Kapitel „Z-Ordnung von Fenstern und Dialogfeldern“.

16.4.2 Microsoft Windows

Bitte beachten Sie, dass die Darstellung (Schrift, Farben, Texte) bis auf den Titel durch die Einstellungen ihres MS-Windows-Systems definiert wird.

Auch hier ist die Selektion durch den OK-Button oder durch einen Doppelklick möglich. MS-Windows bietet eine Mehrfachselektion bei der Auswahl/Eingabe von Dateien an. In Kombination mit der Shift- oder Strg-Taste erlaubt es eine Bereichsselektion oder das Umschalten des Aktivierungszustandes.

Die Verzeichnisauswahl ist, im Gegensatz zur Motif-Implementierung, beschränkt auf die Auswahl eines vorhandenen Verzeichnisses und bietet nicht die Möglichkeit, mit einem Muster zu arbeiten. Außerdem ist, in den Dialog Manager Versionen vor A.05.01.e, bei Angabe eines initialen Verzeichnisses die Verzeichnisauswahl beschränkt auf die Verzeichnisse die darunter liegen. Ab der Version A.05.01.e entfällt diese Beschränkung. Näheres hierzu siehe in der „Attributreferenz“ zum Attribut .directory.

Ein zusätzliches Feature von MS-Windows sind außerdem die Nachfragedialoge, ob eine Datei angelegt bzw. wirklich überschrieben werden soll.

16.4.3 Portabilitätshinweise

Um größtmögliche Konsistenz bei Funktion und Aussehen zu erhalten, sollten folgenden Punkte beherzigt werden:

16.5 Beispiel

Das Öffnen eines Dateiauswahlfensters kann wie folgt aussehen:

!! Beispiel fuer Microsoft Windows
filereq Fr
{
  .style fr_load;
  .title "Zeige GIF-Bild an";
  .directory "c:\";  /* Motif: "/" */
  .pattern "GIF-Datei\t*.gif\tAlle\t*.*";  /* Motif: "*.gif"; */
  .extension "gif";
}
rule void OpenFile()
{
  if button_ok = querybox(Fr) then
    ViewGif(Fr.value);
  endif
}