File: xxWindow.hh

package info (click to toggle)
xtide 2.9.5-3
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 2,996 kB
  • ctags: 2,141
  • sloc: cpp: 20,379; sh: 1,044; makefile: 224; yacc: 114; lex: 58
file content (87 lines) | stat: -rw-r--r-- 3,115 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// $Id: xxWindow.hh 2641 2007-09-02 21:31:02Z flaterco $

/*  xxWindow  An XTide window.

    Copyright (C) 1998  David Flater.

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

class xxWindow: public xxRedrawable {
public:

  // Normal constructor for a window needing a popup and maybe a
  // container.
  enum ContainerType {noContainer, boxContainer, formContainer};
  xxWindow (const xxWidget &parent,
            ContainerType containerType,
            XtGrabKind grabKind = XtGrabNone);

  // One-time-only constructor to produce a top-level application
  // shell, which is weird and different in lots of ways.  Command
  // line switches recognized by X11 are removed from argc and argv.
  xxWindow (int &argc, char **argv);

  ~xxWindow();


  virtual void realize();             // Show the window.
  void move (const Dstr &geometry);   // Move the window.
  virtual void unrealize();           // Hide the window.
  void globalRedraw();                // See xxRedrawable.

  // Get rid of the window (almost).
  // The returned pointer must be deleted by the caller.
  // It is considered harmful for objects to delete themselves.
  // See xxRoot and xxLocationList for why this can't be simpler.
  virtual xxWindow * const dismiss() warnUnusedResult;

  // Set to true to prevent user from closing window at inopportune times.
  bool noClose;

protected:
  const ContainerType _containerType;
  const XtGrabKind _grabKind;
  std::auto_ptr<xxWidget> popup, container;
  Window _iconWindow;
  bool _isRealized;

  // Radius (in pixels) affected by right mouse click in location
  // choosers.
  static const unsigned rightClickRadius = 15U;

  // How far (in pixels) outside the location chooser window do we
  // draw to avoid chopping off lines.
  static const int antiChopMargin = 50;


  // Install default icon.  Only works on old fashioned window managers.
  void setIcon();
  void setTitle (const Dstr &title);  // Set window title and icon name.

  // Restrict resizing of the window.  Doable only while the window is
  // realized; is forgotten when the window is unrealized.
  void fixSize();
  void widthNoSmaller();
  void setMinSize (Dimension width, Dimension height);

  // If possible, use the NET_WM protocol to set the window title
  // correctly on systems expecting a UTF-8 encoding.  Indirection
  // through _title necessary because the NET_WM property can only be
  // changed while the window is realized.
  Dstr _title;
  void setTitle_NET_WM();
};

// Cleanup2006 Done