2.4 display

Die display-Ressource dient zur späteren Zuordnung eines Fensters an einen bestimmten Screen in einer Multiscreen-Umgebung (nur Motif). Den tatsächlich gewählten Screen kann man über das Attribut .real_screen erfragen.

Definition

{ export | reexport } display <Bezeichner> { screen(<Nummer>) } ;

Attribute

Attribut

RSD

PSD

Eigenschaft

Kurzbeschreibung

.screen

integer

integer

S,G/-/-

Screen-Nummer

.real_screen

integer

integer

-,G/-/-

wirkliche Screen-Nummer

Die Verwendung von ungültigen Screen-Nummern werden automatisch auf den Default-Screen (meistens, aber nicht zwangsläufig, 0)  weitergeleitet. Gültige Nummern sind >=0. Das heißt, dass z.B. mit der Angabe von ‑1 der Default-Screen benutzt wird.

Besonderheiten

Das .screen-Attribut kann auch dynamisch per Regelsprache umgesetzt werden.

Verfügbarkeit

Multiscreen-Support ist nur vorhanden beim IDM für Motif. Gültige Screen-Nummern können über xpdyinfo bzw. das .screen[integer] Attribut am setup-Objekt ermittelt werden.

Siehe auch

Kapitel „Multiscreen Support unter Motif“ im Handbuch „Programmiertechniken“

2.4.1 Beispiel

Folgender Dialog zeigt, wie zwei Fenster auf verschiedenen Screens platziert und wie z.B. eine Behandlung für eine Single-Screen-Konfiguration durchgeführt werden kann:

dialog MultiScreen

display DpyDef screen(-1);
display DpyPrim screen(0);
display DpySec screen(1);

default window WINDOW
{
  .width 200;
  .height 100;
 
  on close { exit(); }
}

// primary window on screen#0
// (not necessarily the default screen!)
window WiPrim
{
  .display DpyPrim;
  .title "Primary Window";
 
  statictext StDefScreen { }
}

// secondary window on screen#1
window WiSec
{
  .display DpySec;
  .title "Secondary Window";
 
  listbox LbScreens
  {
    .xauto 0;
    .yauto 0;
 
    // move secondary window to another screen dynamically
    on select
    {
      this.window.display.screen := this.userdata[thisevent.index];
    }
  }
}

on dialog start
{
  variable integer I;
  StDefScreen.text := "Default Screen: " + setup.screen;

  // position second window below primary
  // when running in single-screen configuration
  if (setup.screencount = 1) then
    WiSec.ytop := WiPrim.ytop + WiPrim.real_width + 50;
  endif

  // list available screens
  for I:=1 to setup.screencount do
    LbScreens.content[I] := "Screen#" + setup.screen[I] + "  " +
      setup.screen_width[I] + "x" + setup.screen_height[I];
    LbScreens.userdata[I] := setup.screen[I];
  endfor

  LbScreens.activeitem := LbScreens:find(.userdata, DpySec.real_screen);
}