revert between 56095 -> 55830 in arch
[AROS.git] / workbench / devs / diskimage / ra_gui / snapshot.c
blob78a90cf9fbb51dfc8b556e5b7dcd127e3e0393fb
1 /* Copyright 2007-2012 Fredrik Wikstrom. All rights reserved.
2 **
3 ** Redistribution and use in source and binary forms, with or without
4 ** modification, are permitted provided that the following conditions
5 ** are met:
6 **
7 ** 1. Redistributions of source code must retain the above copyright
8 ** notice, this list of conditions and the following disclaimer.
9 **
10 ** 2. Redistributions in binary form must reproduce the above copyright
11 ** notice, this list of conditions and the following disclaimer in the
12 ** documentation and/or other materials provided with the distribution.
14 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
15 ** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 ** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 ** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
18 ** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19 ** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20 ** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21 ** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22 ** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23 ** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24 ** POSSIBILITY OF SUCH DAMAGE.
27 #include "diskimagegui.h"
28 #include <proto/intuition.h>
30 static void GetWindowSize (Object *window, LONG *w, LONG *h) {
31 struct Window *winptr = NULL;
32 GetAttr(WINDOW_Window, window, (Tag *)&winptr);
33 if (winptr) {
34 *w = winptr->Width;
35 *h = winptr->Height;
39 void RestoreWindowSize (Object *window, CONST_STRPTR name) {
40 PrefsObject *window_prefs;
41 LONG w, h;
42 if (!window) {
43 return;
45 window_prefs = DictGetObjectForKey(ApplicationPrefs, name);
46 w = DictGetIntegerForKey(window_prefs, "width", 320);
47 h = DictGetIntegerForKey(window_prefs, "height", 200);
48 if (w && h) {
49 SetAttrs(window, WA_Width, w, WA_Height, h, TAG_END);
53 void SaveWindowSize (Object *window, CONST_STRPTR name, BOOL envarc) {
54 LONG w, h;
55 if (!window) {
56 return;
58 w = h = 0;
59 GetWindowSize(window, &w, &h);
60 if (w && h) {
61 PrefsObject *env_prefs = ApplicationPrefs;
62 PrefsObject *window_prefs;
63 window_prefs = AllocPrefsDictionary();
64 if (!DictSetObjectForKey(window_prefs, AllocPrefsInteger(w), "width") ||
65 !DictSetObjectForKey(window_prefs, AllocPrefsInteger(h), "height"))
67 FreePrefsObject(window_prefs);
68 return;
70 if (!DictSetObjectForKey(env_prefs, window_prefs, name)) {
71 return;
73 WritePrefs(env_prefs, "ENV:"PROGNAME".a500.org.xml");
74 if (envarc) {
75 PrefsObject *envarc_prefs;
76 envarc_prefs = AllocPrefsDictionary();
77 if (!envarc_prefs) {
78 return;
80 ReadPrefs(envarc_prefs, "ENVARC:"PROGNAME".a500.org.xml");
81 window_prefs = AllocPrefsDictionary();
82 if (!DictSetObjectForKey(window_prefs, AllocPrefsInteger(w), "width") ||
83 !DictSetObjectForKey(window_prefs, AllocPrefsInteger(h), "height"))
85 FreePrefsObject(window_prefs);
86 return;
88 if (!DictSetObjectForKey(envarc_prefs, window_prefs, name)) {
89 return;
91 WritePrefs(envarc_prefs, "ENVARC:"PROGNAME".a500.org.xml");
92 FreePrefsObject(envarc_prefs);