2 Copyright © 2013, The AROS Development Team. All rights reserved.
9 /*********************************************************************************************/
11 #include <aros/macros.h>
14 #include <aros/debug.h>
16 #include <proto/exec.h>
17 #include <proto/dos.h>
20 #include <devices/inputevent.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
)
44 BPTR fh
= Open(from
, MODE_OLDFILE
);
47 retval
= Prefs_ImportFH(fh
);
54 /*********************************************************************************************/
56 BOOL
Prefs_ImportFH(BPTR fh
)
59 #define loadprefs reqtoolsprefs
61 struct ReqToolsPrefs loadprefs
;
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
);
86 /*********************************************************************************************/
88 BOOL
Prefs_ExportFH(BPTR fh
)
91 #define saveprefs reqtoolsprefs
93 struct ReqToolsPrefs saveprefs
;
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
);
112 if (Write(fh
, &saveprefs
, sizeof(saveprefs
)) == sizeof(saveprefs
))
120 /*********************************************************************************************/
122 BOOL
Prefs_HandleArgs(STRPTR from
, BOOL use
, BOOL save
)
128 if (!Prefs_Load(from
))
130 ShowMessage("Can't read from input file");
136 if (!Prefs_Load(PREFS_PATH_ENV
))
138 if (!Prefs_Load(PREFS_PATH_ENVARC
))
142 "Can't read from file " PREFS_PATH_ENVARC
143 ".\nUsing default values."
152 fh
= Open(PREFS_PATH_ENV
, MODE_NEWFILE
);
160 ShowMessage("Cant' open " PREFS_PATH_ENV
" for writing.");
165 fh
= Open(PREFS_PATH_ENVARC
, MODE_NEWFILE
);
173 ShowMessage("Cant' open " PREFS_PATH_ENVARC
" for writing.");
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;