WIP: extend file notification support, toolbar and statusbar now load their prefs...
[AROS.git] / workbench / system / Wanderer / iconwindow.h
blobb34d57b37ea4a9cb9cb07d797b1626626bf7a7ea
1 #ifndef _ICONWINDOW_H_
2 #define _ICONWINDOW_H_
4 /*
5 Copyright 2004 - 2009, The AROS Development Team. All rights reserved.
6 $Id$
7 */
9 #include <exec/types.h>
10 #include <libraries/mui.h>
12 #include "iconwindow_attributes.h"
14 #include "iconwindowbackfill.h"
16 /*** Public Methods *********************************************************/
18 #define MUIM_IconWindow_Open (MUIB_IconWindow | 0x00000000)
19 #define MUIM_IconWindow_UnselectAll (MUIB_IconWindow | 0x00000001)
21 /*** Private Methods ********************************************************/
23 #define MUIM_IconWindow_DoubleClicked (MUIB_IconWindow | 0x00000002)
24 #define MUIM_IconWindow_IconsDropped (MUIB_IconWindow | 0x00000003)
25 #define MUIM_IconWindow_Clicked (MUIB_IconWindow | 0x00000004)
26 #define MUIM_IconWindow_DirectoryUp (MUIB_IconWindow | 0x00000005)
27 #define MUIM_IconWindow_AppWindowDrop (MUIB_IconWindow | 0x00000006)
28 #define MUIM_IconWindow_Remove (MUIB_IconWindow | 0x00000007)
30 #define MUIM_IconWindow_BackFill_Register (MUIB_IconWindow | 0x00000010)
31 #define MUIM_IconWindow_BackFill_Setup (MUIB_IconWindow | 0x00000012)
32 #define MUIM_IconWindow_BackFill_Cleanup (MUIB_IconWindow | 0x00000013)
33 #define MUIM_IconWindow_BackFill_ProcessBackground (MUIB_IconWindow | 0x0000001a)
34 #define MUIM_IconWindow_BackFill_DrawBackground (MUIB_IconWindow | 0x0000001b)
36 #define MUIA_IconWindow_VolumeInfoMode (MUIB_IconWindow | 0x00000001)
38 #define MUIV_IconWindow_VolumeInfoMode_ShowOnlyIcons 1
39 #define MUIV_IconWindow_VolumeInfoMode_ShowAll 2
40 #define MUIV_IconWindow_VolumeInfoMode_ShowAllIfNoInfo 3
42 struct MUIP_IconWindow_BackFill_Register {STACKED ULONG MethodID; STACKED struct IconWindow_BackFill_Descriptor *register_Node;};
43 struct MUIP_IconWindow_BackFill_Setup {STACKED ULONG MethodID;};
44 struct MUIP_IconWindow_BackFill_Cleanup {STACKED ULONG MethodID; STACKED IPTR BackFill_Data;};
45 struct MUIP_IconWindow_BackFill_ProcessBackground {STACKED ULONG MethodID; STACKED IPTR BackFill_Data; STACKED Object *BackFill_Root;};
46 struct MUIP_IconWindow_BackFill_DrawBackground {STACKED ULONG MethodID; STACKED IPTR BackFill_Data; STACKED struct IconWindowBackFillMsg *draw_BFM; STACKED IPTR draw_RastPort;};
47 /*** Private Constants ********************************************************/
49 extern struct MUI_CustomClass *IconWindow_CLASS;
51 /*** Private Data Structures ********************************************************/
53 struct BackFillMsg
55 STACKED struct Layer *Layer;
56 STACKED struct Rectangle Bounds;
57 STACKED LONG OffsetX;
58 STACKED LONG OffsetY;
61 struct IconWindowBackFillMsg
63 STACKED struct Layer *Layer;
64 STACKED struct Rectangle AreaBounds;
65 STACKED struct Rectangle DrawBounds;
66 STACKED LONG OffsetX;
67 STACKED LONG OffsetY;
70 struct IconWindow_ActionMsg
72 STACKED int type;
73 STACKED Object *iconlist;
74 STACKED int isroot;
75 STACKED struct IconList_Click *click;
76 STACKED struct IconList_Drop_Event *drop;
79 struct IconWindow_BackFill_Descriptor
81 struct Node bfd_Node;
82 char *bfd_BackFillID;
83 IPTR (*bfd_MUIM_IconWindow_BackFill_Setup)(Class *, Object *, struct MUIP_IconWindow_BackFill_Setup *);
84 IPTR (*bfd_MUIM_IconWindow_BackFill_Cleanup)(Class *, Object *, struct MUIP_IconWindow_BackFill_Cleanup *);
85 IPTR (*bfd_MUIM_IconWindow_BackFill_ProcessBackground)(Class *, Object *, struct MUIP_IconWindow_BackFill_ProcessBackground *);
86 IPTR (*bfd_MUIM_IconWindow_BackFill_DrawBackground)(Class *, Object *, struct MUIP_IconWindow_BackFill_DrawBackground *);
89 /*** Private Instance Data **********************************************************/
91 struct IconWindow_BackFillHookData
93 Class *bfhd_IWClass;
94 Object *bfhd_IWObject;
97 struct IconWindow_Panel_Data
99 Object *iwp_PanelContainerObj;
100 Object *iwp_PanelGroupObj;
101 Object *iwp_PanelGroupSpacerObj;
102 IPTR iwp_PanelPrivate;
105 struct IconWindow_DATA
107 struct Screen *iwd_Screen;
108 char *iwd_Title;
109 char iwd_DirectoryPath[IWD_MAX_DIRECTORYPATHLEN];
111 char *iwd_ViewSettings_Attrib;
112 Object *iwd_ViewSettings_PrefsNotificationObject;
114 Object *iwd_RootViewObj;
115 Object *iwd_IconListObj;
117 IPTR iwd_FSNotifyPort;
118 struct IconWindow_Panel_Data iwd_TopPanel;
119 struct IconWindow_Panel_Data iwd_LeftPanel;
120 struct IconWindow_Panel_Data iwd_BottomPanel;
122 #ifdef __AROS__
123 struct Hook iwd_PrefsUpdated_hook;
124 struct Hook iwd_ProcessBackground_hook;
125 #else
126 struct Hook *iwd_PrefsUpdated_hook;
127 struct Hook *iwd_ProcessBackground_hook;
128 #endif
130 struct Hook *iwd_ActionHook;
132 struct Hook *iwd_BackFill_hook;
133 struct BackFillInfo *iwd_BackFillInfo;
134 struct IconWindow_BackFillHookData iwd_BackFillHookData;
136 struct TextFont *iwd_WindowFont;
138 #define IWDFLAG_SETUP (1<<0)
139 #define IWDFLAG_NEEDSUPDATE (1<<1)
140 #define IWDFLAG_ISROOT (1<<4)
141 #define IWDFLAG_ISBACKDROP (1<<5)
142 UBYTE iwd_Flags;
143 UBYTE iwd_VolViewMode;
146 /*** Macros *****************************************************************/
148 #define SETUP_ICONWINDOW_INST_DATA struct IconWindow_DATA *data = INST_DATA(CLASS, self)
150 #ifdef __AROS__
151 #define IconWindowObject BOOPSIOBJMACRO_START(IconWindow_CLASS->mcc_Class)
152 #else
153 #define IconWindowObject NewObject(IconWindow_CLASS->mcc_Class, NULL
154 //#define IconWindowObject NewObject(IconWindow_Class->mcc_Class, NULL
155 #endif
157 struct iconWindow_Extension
159 struct Node iwe_Node;
160 IPTR (*iwe_Setup)(Class *, Object *, struct opSet *);
161 IPTR (*iwe_Cleanup)(Class *, Object *, struct opSet *);
162 IPTR (*iwe_Set)(Class *, Object *, struct opSet *);
163 IPTR (*iwe_Get)(Class *, Object *, struct opGet *);
166 /* this macro is based on the ZUNE_CUSTOMCLASS_10 macros from zune/customclasses.h
167 and temporarily placed here */
168 #define ICONWINDOW_CUSTOMCLASS(name, base, parent_name, parent_class, \
169 m1, m1_msg_type, \
170 m2, m2_msg_type, \
171 m3, m3_msg_type, \
172 m4, m4_msg_type, \
173 m5, m5_msg_type, \
174 m6, m6_msg_type, \
175 m7, m7_msg_type, \
176 m8, m8_msg_type, \
177 m9, m9_msg_type, \
178 m10, m10_msg_type, \
179 m11, m11_msg_type, \
180 m12, m12_msg_type, \
181 m13, m13_msg_type, \
182 m14, m14_msg_type, \
183 m15, m15_msg_type, \
184 m16, m16_msg_type, \
185 m17, m17_msg_type, \
186 m18, m18_msg_type, \
187 m19, m19_msg_type) \
188 __ZUNE_CUSTOMCLASS_START(name) \
189 __ZUNE_CUSTOMCLASS_METHOD(name ## __ ## m1, m1, m1_msg_type); \
190 __ZUNE_CUSTOMCLASS_METHOD(name ## __ ## m2, m2, m2_msg_type); \
191 __ZUNE_CUSTOMCLASS_METHOD(name ## __ ## m3, m3, m3_msg_type); \
192 __ZUNE_CUSTOMCLASS_METHOD(name ## __ ## m4, m4, m4_msg_type); \
193 __ZUNE_CUSTOMCLASS_METHOD(name ## __ ## m5, m5, m5_msg_type); \
194 __ZUNE_CUSTOMCLASS_METHOD(name ## __ ## m6, m6, m6_msg_type); \
195 __ZUNE_CUSTOMCLASS_METHOD(name ## __ ## m7, m7, m7_msg_type); \
196 __ZUNE_CUSTOMCLASS_METHOD(name ## __ ## m8, m8, m8_msg_type); \
197 __ZUNE_CUSTOMCLASS_METHOD(name ## __ ## m9, m9, m9_msg_type); \
198 __ZUNE_CUSTOMCLASS_METHOD(name ## __ ## m10, m10, m10_msg_type); \
199 __ZUNE_CUSTOMCLASS_METHOD(name ## __ ## m11, m11, m11_msg_type); \
200 __ZUNE_CUSTOMCLASS_METHOD(name ## __ ## m12, m12, m12_msg_type); \
201 __ZUNE_CUSTOMCLASS_METHOD(name ## __ ## m13, m13, m13_msg_type); \
202 __ZUNE_CUSTOMCLASS_METHOD(name ## __ ## m14, m14, m14_msg_type); \
203 __ZUNE_CUSTOMCLASS_METHOD(name ## __ ## m15, m15, m15_msg_type); \
204 __ZUNE_CUSTOMCLASS_METHOD(name ## __ ## m16, m16, m16_msg_type); \
205 __ZUNE_CUSTOMCLASS_METHOD(name ## __ ## m17, m17, m17_msg_type); \
206 __ZUNE_CUSTOMCLASS_METHOD(name ## __ ## m18, m18, m18_msg_type); \
207 __ZUNE_CUSTOMCLASS_METHOD(name ## __ ## m19, m19, m19_msg_type); \
208 __ZUNE_CUSTOMCLASS_END(name, base, parent_name, parent_class) \
210 IPTR IconWindow__MUIM_IconWindow_BackFill_Register(Class *CLASS, Object *self, struct MUIP_IconWindow_BackFill_Register *message);
212 #endif /* _ICONWINDOW_H_ */