1 |
root |
1.1 |
/* |
2 |
|
|
* Cnv.h - generic GUI utilities |
3 |
|
|
* Copyright (C) 1993 Petri Heinila |
4 |
|
|
* |
5 |
|
|
* This program is free software; you can redistribute it and/or modify |
6 |
|
|
* it under the terms of the GNU General Public License as published by |
7 |
|
|
* the Free Software Foundation; either version 2 of the License, or |
8 |
|
|
* (at your option) any later version. |
9 |
|
|
* |
10 |
|
|
* This program is distributed in the hope that it will be useful, |
11 |
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 |
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 |
|
|
* GNU General Public License for more details. |
14 |
|
|
* |
15 |
|
|
* You should have received a copy of the GNU General Public License |
16 |
|
|
* along with this program; if not, write to the Free Software |
17 |
|
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
18 |
|
|
* |
19 |
|
|
* Author can be connected by email from hevi@lut.fi |
20 |
|
|
*/ |
21 |
|
|
|
22 |
|
|
#ifndef _Cnv_h |
23 |
|
|
#define _Cnv_h |
24 |
|
|
|
25 |
|
|
#include <Posix.h> |
26 |
|
|
#include <Xaw.h> |
27 |
|
|
#include <Ansi.h> |
28 |
|
|
#include <config.h> |
29 |
|
|
#include <includes.h> |
30 |
|
|
|
31 |
|
|
/* |
32 |
|
|
* generic macros |
33 |
|
|
*/ |
34 |
|
|
#define pathcpy(dst,src) {strncpy(dst,src,PATH_MAX);dst[PATH_MAX]='\0';} |
35 |
|
|
#define namecpy(dst,src) {strncpy(dst,src,NAME_MAX);dst[NAME_MAX]='\0';} |
36 |
|
|
|
37 |
|
|
/* |
38 |
|
|
* menu |
39 |
|
|
*/ |
40 |
|
|
typedef struct CnvMenuRec { |
41 |
|
|
char *label; |
42 |
|
|
void (*func) (Widget, XtPointer, XtPointer); |
43 |
|
|
} CnvMenuRec; |
44 |
|
|
extern Widget CnvMenu(String, Widget,CnvMenuRec[], XtPointer); |
45 |
|
|
|
46 |
|
|
/********************************************************************** |
47 |
|
|
* CnvPath |
48 |
|
|
**********************************************************************/ |
49 |
|
|
|
50 |
|
|
#define EntryMax (_POSIX_ARG_MAX / 2) |
51 |
|
|
|
52 |
|
|
typedef enum { |
53 |
|
|
CnvPathHold, |
54 |
|
|
CnvPathOk, |
55 |
|
|
CnvPathCancel |
56 |
|
|
} CnvPathResponce; |
57 |
|
|
|
58 |
|
|
/* |
59 |
|
|
* |
60 |
|
|
*/ |
61 |
|
|
typedef struct CnvPath { |
62 |
|
|
Widget shell; /* shell widget */ |
63 |
|
|
Widget dirList; /* list widget for directories */ |
64 |
|
|
Widget fileList; /* list widget for files */ |
65 |
|
|
Widget cwd; /* label widget for current working dir */ |
66 |
|
|
Widget text; /* text field */ |
67 |
|
|
CnvPathResponce hold; /* for internal use */ |
68 |
|
|
String dirTable[EntryMax]; /* table of dirnames, alloc dyn */ |
69 |
|
|
String fileTable[EntryMax]; /* table of filename, alloc dyn */ |
70 |
|
|
Cardinal fileNro; /* number of files in current directory */ |
71 |
|
|
Cardinal dirNro; /* number of directories in current dir */ |
72 |
|
|
/* char dirname[PATH_MAX+1]; name of current directory, abs. */ |
73 |
|
|
char current[PATH_MAX+1]; /* LibDir/MapDir<current> */ |
74 |
|
|
char filename[NAME_MAX+1]; /* last selected file, rel to dir */ |
75 |
|
|
char root[PATH_MAX+1]; /* directory names are prefixed by this */ |
76 |
|
|
} *CnvPath; |
77 |
|
|
|
78 |
|
|
extern CnvPath CnvPathCreate (String name,String root, String dir); |
79 |
|
|
extern void CnvPathDestroy ( CnvPath self ); |
80 |
|
|
extern Boolean CnvPathNoAccess ( Widget w, String path ); |
81 |
|
|
extern Boolean CnvPathNoWrite ( Widget w, String path ); |
82 |
|
|
extern CnvPathResponce CnvPathSelect ( CnvPath self ); |
83 |
|
|
|
84 |
|
|
|
85 |
|
|
/********************************************************************** |
86 |
|
|
* CnvFiles |
87 |
|
|
**********************************************************************/ |
88 |
|
|
|
89 |
|
|
typedef void (*CnvFilesProc)(XtPointer client,String path); |
90 |
|
|
|
91 |
|
|
typedef struct CnvFiles { |
92 |
|
|
/* private */ |
93 |
|
|
Widget shell; /* shellwidget containing menu */ |
94 |
|
|
String name; /* menu name, to be not ambiguous */ |
95 |
|
|
char directory[PATH_MAX+1]; /* directory to get menu */ |
96 |
|
|
CnvFilesProc proc; /* function when menu item selected */ |
97 |
|
|
XtPointer client; /* package pointer */ |
98 |
|
|
/* public */ |
99 |
|
|
} *CnvFiles; |
100 |
|
|
|
101 |
|
|
extern CnvFiles CnvFilesCreate(String,Widget,CnvFilesProc,XtPointer,String); |
102 |
|
|
extern void CnvFilesDestroy ( CnvFiles ); |
103 |
|
|
extern Widget CnvFilesRescan ( CnvFiles, String,Widget,String directory ); |
104 |
|
|
|
105 |
|
|
/********************************************************************** |
106 |
|
|
* CnvBrowse |
107 |
|
|
**********************************************************************/ |
108 |
|
|
typedef struct CnvBrowse *CnvBrowse; |
109 |
|
|
/* |
110 |
|
|
* call this function when finished editing |
111 |
|
|
*/ |
112 |
|
|
typedef void (*CnvBrowseEditProc)(CnvBrowse self,XtPointer client,String str); |
113 |
|
|
|
114 |
|
|
/* |
115 |
|
|
* object for showing text |
116 |
|
|
*/ |
117 |
|
|
struct CnvBrowse { |
118 |
|
|
Widget shell; |
119 |
|
|
Widget text; |
120 |
|
|
Widget file; |
121 |
|
|
Widget ok; |
122 |
|
|
Boolean isup; |
123 |
|
|
CnvBrowseEditProc proc; |
124 |
|
|
}; |
125 |
|
|
|
126 |
|
|
typedef enum CnvBrowseReturn { |
127 |
|
|
CnvBrowseOk, |
128 |
|
|
CnvBrowseError |
129 |
|
|
} CnvBrowseReturn; |
130 |
|
|
|
131 |
|
|
/* |
132 |
|
|
* inteface |
133 |
|
|
*/ |
134 |
|
|
extern CnvBrowse CnvBrowseCreate ( String name, Widget parent, |
135 |
|
|
CnvBrowseEditProc proc); |
136 |
|
|
extern void CnvBrowseDestroy ( CnvBrowse self ); |
137 |
|
|
extern void CnvBrowseShowFile ( CnvBrowse self, String file ); |
138 |
|
|
extern void CnvBrowseShowString ( CnvBrowse self, String str ); |
139 |
|
|
extern void CnvBrowseEditString ( CnvBrowse self, String str ); |
140 |
|
|
|
141 |
|
|
/********************************************************************** |
142 |
|
|
* Cnv |
143 |
|
|
**********************************************************************/ |
144 |
|
|
typedef struct Cnv { |
145 |
|
|
Widget shell; /* application level shell widget */ |
146 |
|
|
struct { |
147 |
|
|
Pixmap excloff; |
148 |
|
|
Pixmap exclon; |
149 |
|
|
Pixmap flagoff; |
150 |
|
|
Pixmap flagon; |
151 |
|
|
Pixmap notify; /* face for CnvNotify */ |
152 |
|
|
Pixmap prompt; /* face for CnvPrompt */ |
153 |
|
|
Pixmap submenu; |
154 |
|
|
} xbm; |
155 |
|
|
} *Cnv; |
156 |
|
|
extern Cnv cnv; /* this is global for all */ |
157 |
|
|
|
158 |
|
|
/* |
159 |
|
|
* utility functions |
160 |
|
|
*/ |
161 |
|
|
extern void CnvCenterWidget ( Widget w ); |
162 |
|
|
extern void CnvDie ( Widget self, String msg ); |
163 |
|
|
extern Widget CnvGetShell ( Widget child ); |
164 |
|
|
extern int CnvNotify (String msg, ... ); |
165 |
|
|
extern int CnvPrompt ( String msg, String sgg, String ans, ...); |
166 |
|
|
extern void CnvWarn ( Widget self, String msg ); |
167 |
|
|
extern void CnvInitialize(Widget shell); |
168 |
|
|
extern CnvPathResponce CnvPathSelectAbs(CnvPath self,String path); |
169 |
|
|
|
170 |
|
|
|
171 |
|
|
#endif /* _Cnv_h */ |