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
|