use for all targets
[AROS.git] / workbench / prefs / reqtools / prefs.c
blobc6228f46cf91dae9f431faf42c7cf0b4937841e9
1 /*
2 Copyright © 2013, The AROS Development Team. All rights reserved.
3 $Id$
5 Desc:
6 Lang: English
7 */
9 /*********************************************************************************************/
11 #include <aros/macros.h>
13 #define DEBUG 0
14 #include <aros/debug.h>
16 #include <proto/exec.h>
17 #include <proto/dos.h>
19 #include <aros/cpu.h>
20 #include <devices/inputevent.h>
22 #include <stdio.h>
23 #include <string.h>
24 #include <stdlib.h>
26 #include "prefs.h"
27 #include "misc.h"
29 /*********************************************************************************************/
31 #define PREFS_PATH_ENVARC "ENVARC:ReqTools.prefs"
32 #define PREFS_PATH_ENV "ENV:ReqTools.prefs"
34 /*********************************************************************************************/
36 struct ReqToolsPrefs reqtoolsprefs;
38 /*********************************************************************************************/
40 static BOOL Prefs_Load(STRPTR from)
42 BOOL retval = FALSE;
44 BPTR fh = Open(from, MODE_OLDFILE);
45 if (fh)
47 retval = Prefs_ImportFH(fh);
48 Close(fh);
51 return retval;
54 /*********************************************************************************************/
56 BOOL Prefs_ImportFH(BPTR fh)
58 #if (AROS_BIG_ENDIAN)
59 #define loadprefs reqtoolsprefs
60 #else
61 struct ReqToolsPrefs loadprefs;
62 int i;
63 #endif
64 BOOL retval = FALSE;
66 if (Read(fh, &loadprefs, sizeof(loadprefs)) == sizeof(loadprefs))
68 #if (!(AROS_BIG_ENDIAN))
69 reqtoolsprefs.Flags = AROS_BE2LONG(loadprefs.Flags);
70 for(i = 0;i < RTPREF_NR_OF_REQ; i++)
72 reqtoolsprefs.ReqDefaults[i].Size = AROS_BE2LONG(loadprefs.ReqDefaults[i].Size);
73 reqtoolsprefs.ReqDefaults[i].ReqPos = AROS_BE2LONG(loadprefs.ReqDefaults[i].ReqPos);
74 reqtoolsprefs.ReqDefaults[i].LeftOffset = AROS_BE2WORD(loadprefs.ReqDefaults[i].LeftOffset);
75 reqtoolsprefs.ReqDefaults[i].TopOffset = AROS_BE2WORD(loadprefs.ReqDefaults[i].TopOffset);
76 reqtoolsprefs.ReqDefaults[i].MinEntries = AROS_BE2WORD(loadprefs.ReqDefaults[i].MinEntries);
77 reqtoolsprefs.ReqDefaults[i].MaxEntries = AROS_BE2WORD(loadprefs.ReqDefaults[i].MaxEntries);
79 #endif
80 retval = TRUE;
83 return retval;
86 /*********************************************************************************************/
88 BOOL Prefs_ExportFH(BPTR fh)
90 #if (AROS_BIG_ENDIAN)
91 #define saveprefs reqtoolsprefs
92 #else
93 struct ReqToolsPrefs saveprefs;
94 int i;
95 #endif
96 BOOL retval = FALSE;
98 D(bug("SavePrefsFH: fh: %lx\n", fh));
100 #if (!(AROS_BIG_ENDIAN))
101 saveprefs.Flags = AROS_LONG2BE(reqtoolsprefs.Flags);
102 for(i = 0; i < RTPREF_NR_OF_REQ; i++)
104 saveprefs.ReqDefaults[i].Size = AROS_LONG2BE(reqtoolsprefs.ReqDefaults[i].Size);
105 saveprefs.ReqDefaults[i].ReqPos = AROS_LONG2BE(reqtoolsprefs.ReqDefaults[i].ReqPos);
106 saveprefs.ReqDefaults[i].LeftOffset = AROS_WORD2BE(reqtoolsprefs.ReqDefaults[i].LeftOffset);
107 saveprefs.ReqDefaults[i].TopOffset = AROS_WORD2BE(reqtoolsprefs.ReqDefaults[i].TopOffset);
108 saveprefs.ReqDefaults[i].MinEntries = AROS_WORD2BE(reqtoolsprefs.ReqDefaults[i].MinEntries);
109 saveprefs.ReqDefaults[i].MaxEntries = AROS_WORD2BE(reqtoolsprefs.ReqDefaults[i].MaxEntries);
111 #endif
112 if (Write(fh, &saveprefs, sizeof(saveprefs)) == sizeof(saveprefs))
114 retval = TRUE;
117 return retval;
120 /*********************************************************************************************/
122 BOOL Prefs_HandleArgs(STRPTR from, BOOL use, BOOL save)
124 BPTR fh;
126 if (from)
128 if (!Prefs_Load(from))
130 ShowMessage("Can't read from input file");
131 return FALSE;
134 else
136 if (!Prefs_Load(PREFS_PATH_ENV))
138 if (!Prefs_Load(PREFS_PATH_ENVARC))
140 ShowMessage
142 "Can't read from file " PREFS_PATH_ENVARC
143 ".\nUsing default values."
145 Prefs_Default();
150 if (use || save)
152 fh = Open(PREFS_PATH_ENV, MODE_NEWFILE);
153 if (fh)
155 Prefs_ExportFH(fh);
156 Close(fh);
158 else
160 ShowMessage("Cant' open " PREFS_PATH_ENV " for writing.");
163 if (save)
165 fh = Open(PREFS_PATH_ENVARC, MODE_NEWFILE);
166 if (fh)
168 Prefs_ExportFH(fh);
169 Close(fh);
171 else
173 ShowMessage("Cant' open " PREFS_PATH_ENVARC " for writing.");
176 return TRUE;
179 /*********************************************************************************************/
181 BOOL Prefs_Default(VOID)
183 reqtoolsprefs.Flags = 0;
185 reqtoolsprefs.ReqDefaults[ RTPREF_OTHERREQ ].ReqPos = REQPOS_POINTER;
186 reqtoolsprefs.ReqDefaults[ RTPREF_FILEREQ ].Size = 75;
187 reqtoolsprefs.ReqDefaults[ RTPREF_FONTREQ ].Size =
188 reqtoolsprefs.ReqDefaults[ RTPREF_SCREENMODEREQ ].Size =
189 reqtoolsprefs.ReqDefaults[ RTPREF_VOLUMEREQ ].Size = 65;
190 reqtoolsprefs.ReqDefaults[ RTPREF_FILEREQ ].ReqPos =
191 reqtoolsprefs.ReqDefaults[ RTPREF_FONTREQ ].ReqPos =
192 reqtoolsprefs.ReqDefaults[ RTPREF_SCREENMODEREQ ].ReqPos =
193 reqtoolsprefs.ReqDefaults[ RTPREF_VOLUMEREQ ].ReqPos =
194 reqtoolsprefs.ReqDefaults[ RTPREF_PALETTEREQ ].ReqPos = REQPOS_TOPLEFTSCR;
195 reqtoolsprefs.ReqDefaults[ RTPREF_FILEREQ ].LeftOffset =
196 reqtoolsprefs.ReqDefaults[ RTPREF_FONTREQ ].LeftOffset =
197 reqtoolsprefs.ReqDefaults[ RTPREF_SCREENMODEREQ ].LeftOffset =
198 reqtoolsprefs.ReqDefaults[ RTPREF_VOLUMEREQ ].LeftOffset =
199 reqtoolsprefs.ReqDefaults[ RTPREF_PALETTEREQ ].LeftOffset =
200 reqtoolsprefs.ReqDefaults[ RTPREF_OTHERREQ ].LeftOffset = 25;
201 reqtoolsprefs.ReqDefaults[ RTPREF_FILEREQ ].TopOffset =
202 reqtoolsprefs.ReqDefaults[ RTPREF_FONTREQ ].TopOffset =
203 reqtoolsprefs.ReqDefaults[ RTPREF_SCREENMODEREQ ].TopOffset =
204 reqtoolsprefs.ReqDefaults[ RTPREF_VOLUMEREQ ].TopOffset =
205 reqtoolsprefs.ReqDefaults[ RTPREF_PALETTEREQ ].TopOffset =
206 reqtoolsprefs.ReqDefaults[ RTPREF_OTHERREQ ].TopOffset = 18;
207 reqtoolsprefs.ReqDefaults[ RTPREF_FILEREQ ].MinEntries = 10;
208 reqtoolsprefs.ReqDefaults[ RTPREF_FONTREQ ].MinEntries =
209 reqtoolsprefs.ReqDefaults[ RTPREF_SCREENMODEREQ ].MinEntries =
210 reqtoolsprefs.ReqDefaults[ RTPREF_VOLUMEREQ ].MinEntries = 6;
211 reqtoolsprefs.ReqDefaults[ RTPREF_FILEREQ ].MaxEntries = 50;
212 reqtoolsprefs.ReqDefaults[ RTPREF_FONTREQ ].MaxEntries =
213 reqtoolsprefs.ReqDefaults[ RTPREF_SCREENMODEREQ ].MaxEntries =
214 reqtoolsprefs.ReqDefaults[ RTPREF_VOLUMEREQ ].MaxEntries = 10;
216 return TRUE;