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 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
|
// dialogbox.h
/******************************************************************************
*
* MiXViews - an X window system based sound & data editor/processor
*
* Copyright (c) 1993, 1994 Regents of the University of California
*
* Author: Douglas Scott
* Date: December 13, 1994
*
* Permission to use, copy and modify this software and its documentation
* for research and/or educational purposes and without fee is hereby granted,
* provided that the above copyright notice appear in all copies and that
* both that copyright notice and this permission notice appear in
* supporting documentation. The author reserves the right to distribute this
* software and its documentation. The University of California and the author
* make no representations about the suitability of this software for any
* purpose, and in no event shall University of California be liable for any
* damage, loss of data, or profits resulting from its use.
* It is provided "as is" without express or implied warranty.
*
******************************************************************************/
// Subclasses of InterViews Dialog class. The new display() method pops up
// the DialogBox centered in whichever Interactor canvas has been passed to
// the DialogConstructor that created it, without use of the Event passed to
// Popup(), which is how it would have been done in the original Dialog class.
#ifndef DIALOGBOX_H
#ifdef __GNUG__
#pragma interface
#endif
#define DIALOGBOX_H
#include <InterViews/dialog.h>
#include "localdefs.h"
class DialogConstructor;
class DialogBox : public Dialog {
typedef Dialog Super;
public:
static void overrideWindowManager(boolean b) { override_WindowManager = b; }
static boolean overrideWindowManager() { return override_WindowManager; }
static boolean setBeepLevel(int level) {
beep_Level = level; return true;
}
static int beepLevel() { return beep_Level; }
public:
redefined Interactor* Wrap(Interactor *);
redefined boolean Popup(Event&, boolean b=false);
redefined boolean Accept();
virtual int display();
protected:
DialogBox(ButtonState* s, Interactor* u, Response r);
virtual void reset();
void setBell(boolean b) { useBell = b; }
void bell();
void appear();
virtual int getAnswer() = 0;
virtual boolean acceptible(int) = 0;
virtual void eventLoop(Event &);
void disappear();
protected:
Response defaultResponse; // only used in confirm and choice
private:
static boolean override_WindowManager; // determines panel display mode
static int beep_Level;
private:
friend DialogConstructor;
boolean isChild(Interactor*);
Interactor* underlying;
boolean useBell;
};
// an Alert contains any number of Messages and an "ok" button
class Alert : public DialogBox {
typedef DialogBox Super;
friend DialogConstructor;
protected:
static DialogBox* create(ButtonState* s, Interactor* u, Response r) {
return new Alert(s, u, r);
}
Alert(ButtonState* s, Interactor* u, Response r);
redefined void Reconfig();
redefined int getAnswer();
redefined boolean acceptible(int);
};
// a confirmer contains any number of messages and a confirm-cancel button pair
class Confirmer : public DialogBox {
typedef DialogBox Super;
friend DialogConstructor;
protected:
static DialogBox* create(ButtonState* s, Interactor* u, Response r) {
return new Confirmer(s, u, r);
}
Confirmer(ButtonState* s, Interactor* u, Response r);
redefined void Reconfig();
redefined int getAnswer();
redefined boolean acceptible(int);
};
// ChoiceDialog contains any number of messages plus yes, no, & cancel buttons
class ChoiceDialog : public DialogBox {
typedef DialogBox Super;
friend DialogConstructor;
protected:
static DialogBox* create(ButtonState* s, Interactor* u, Response r) {
return new ChoiceDialog(s, u, r);
}
ChoiceDialog(ButtonState* s, Interactor* u, Response r);
redefined void Reconfig();
redefined int getAnswer();
redefined boolean acceptible(int);
};
class TextInput;
class FileSelector;
// an InputDialog is a confirmer with text-entry items for user input
class InputDialog : public Confirmer {
typedef Confirmer Super;
friend DialogConstructor;
protected:
static DialogBox* create(ButtonState* s, Interactor* u, Response r) {
return new InputDialog(s, u, r);
}
InputDialog(ButtonState* s, Interactor* u, Response r);
redefined void Reconfig();
redefined void reset();
redefined int getAnswer();
redefined boolean acceptible(int);
virtual int checkInput(); // new to this class
void addTextInput(TextInput*);
void addFileSelector(FileSelector* fs) { fileSelector = fs; }
protected:
boolean editing;
TextInput *textInput; // linked list of TextEntry items
FileSelector* fileSelector; // file chooser (optional)
};
#endif
|