File: dialogbox.h

package info (click to toggle)
mixviews 1.20-10.1
  • links: PTS
  • area: main
  • in suites: potato
  • size: 2,928 kB
  • ctags: 5,960
  • sloc: cpp: 32,879; ansic: 2,110; makefile: 445; sh: 17
file content (153 lines) | stat: -rw-r--r-- 4,783 bytes parent folder | download | duplicates (3)
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