From e0c0b4d4ea33413595da4a17d6b648cb830fec37 Mon Sep 17 00:00:00 2001 From: NicJA Date: Tue, 17 Mar 2009 01:13:40 +0000 Subject: [PATCH] Format status bar size display, and cleanup code a little git-svn-id: https://svn.aros.org/svn/aros/trunk/AROS@30939 fb15a70f-31f2-0310-bbcc-cdcc74a49acc --- workbench/prefs/wanderer/wpeditor.c | 187 ++-- workbench/system/Wanderer/Classes/iconlist.c | 577 ++++++---- workbench/system/Wanderer/Classes/iconlist.conf | 8 +- workbench/system/Wanderer/iconwindow.c | 9 +- workbench/system/Wanderer/iconwindow.h | 6 - workbench/system/Wanderer/iconwindow_attributes.h | 158 +-- workbench/system/Wanderer/panel_statusbar.c | 82 +- workbench/system/Wanderer/wanderer.c | 1213 +++++++++++---------- workbench/system/Wanderer/wanderer.h | 8 +- workbench/system/Wanderer/wandererprefs.c | 46 +- 10 files changed, 1269 insertions(+), 1025 deletions(-) rewrite workbench/system/Wanderer/iconwindow_attributes.h (76%) diff --git a/workbench/prefs/wanderer/wpeditor.c b/workbench/prefs/wanderer/wpeditor.c index 7a03baff36..8b4d330e09 100644 --- a/workbench/prefs/wanderer/wpeditor.c +++ b/workbench/prefs/wanderer/wpeditor.c @@ -56,8 +56,8 @@ #include "../../system/Wanderer/iconwindow_attributes.h" struct TagItem32 { - ULONG ti_Tag; - ULONG ti_Data; + ULONG ti_Tag; + ULONG ti_Data; }; /*** Private Methods ********************************************************/ @@ -65,104 +65,103 @@ struct TagItem32 { /*** Instance Data **********************************************************/ struct WPEditor_ViewSettingsObject { - struct Node wpedbo_Node; - char *wpedbo_ViewName; - Object *wpedbo_ImageSpecObject; - Object *wpedbo_AdvancedOptionsObject; - IPTR *wpedbo_Type; + struct Node wpedbo_Node; + char *wpedbo_ViewName; + Object *wpedbo_ImageSpecObject; + Object *wpedbo_AdvancedOptionsObject; + IPTR *wpedbo_Type; #warning "TODO: Replace _wpeditor_intern_IconTextRenderModeNames and co. with per view list" - IPTR *wpedbo_LabelRenderModeNames; - IPTR *wpedbo_LabelRenderModeEntries; - IPTR wpedbo_LabelRenderModeCount; + IPTR *wpedbo_LabelRenderModeNames; + IPTR *wpedbo_LabelRenderModeEntries; + IPTR wpedbo_LabelRenderModeCount; #warning "TODO: Replace _wpeditor_intern_IconListModeNames and co. with per view list" - IPTR *wpedbo_ListModeNames; - IPTR *wpedbo_ListModeEntries; - IPTR wpedbo_ListModeCount; - - IPTR *wpedbo_BFRenderModeNames; - IPTR *wpedbo_BFRenderModeEntries; - IPTR *wpedbo_BFRenderModePages; - IPTR wpedbo_BFRenderModeCount; - - IPTR *wpedbo_BFTileModeNames; - IPTR *wpedbo_BFTileModeEntries; - IPTR wpedbo_BFTileModeCount; - - struct TagItem32 *wpedbo_Options; - struct Hook wpedbo_Hook_CheckImage; - struct Hook wpedbo_Hook_OpenAdvancedOptions; - IPTR wpedbo_state_AdvancedDisabled; + IPTR *wpedbo_ListModeNames; + IPTR *wpedbo_ListModeEntries; + IPTR wpedbo_ListModeCount; + + IPTR *wpedbo_BFRenderModeNames; + IPTR *wpedbo_BFRenderModeEntries; + IPTR *wpedbo_BFRenderModePages; + IPTR wpedbo_BFRenderModeCount; + + IPTR *wpedbo_BFTileModeNames; + IPTR *wpedbo_BFTileModeEntries; + IPTR wpedbo_BFTileModeCount; + + struct TagItem32 *wpedbo_Options; + struct Hook wpedbo_Hook_CheckImage; + struct Hook wpedbo_Hook_OpenAdvancedOptions; + IPTR wpedbo_state_AdvancedDisabled; }; struct WPEditor_AdvancedBackgroundWindow_DATA { - Object *wpedabwd_Window_WindowObj, - *wpedabwd_Window_UseObj, - *wpedabwd_Window_CancelObj, - *wpedabwd_Window_BackgroundGrpObj, - *wpedabwd_Window_RenderModeGrpObj, - *wpedabwd_Window_RenderModeObj, - *wpedabwd_Window_RenderModePageObj, - *wpedabwd_Window_TileModeObjContainer, - *wpedabwd_Window_TileModeObj, - *wpedabwd_Window_XOffsetObj, - *wpedabwd_Window_YOffsetObj, - *wpedabwd_Window_IconLabel_LabelFont, - *wpedabwd_Window_IconLabel_InfoFont, - *wpedabwd_Window_Icon_ListMode, - *wpedabwd_Window_Icon_TextMode, - *wpedabwd_Window_IconLabel_MaxLineLen, + Object *wpedabwd_Window_WindowObj, + *wpedabwd_Window_UseObj, + *wpedabwd_Window_CancelObj, + *wpedabwd_Window_BackgroundGrpObj, + *wpedabwd_Window_RenderModeGrpObj, + *wpedabwd_Window_RenderModeObj, + *wpedabwd_Window_RenderModePageObj, + *wpedabwd_Window_TileModeObjContainer, + *wpedabwd_Window_TileModeObj, + *wpedabwd_Window_XOffsetObj, + *wpedabwd_Window_YOffsetObj, + *wpedabwd_Window_IconLabel_LabelFont, + *wpedabwd_Window_IconLabel_InfoFont, + *wpedabwd_Window_Icon_ListMode, + *wpedabwd_Window_Icon_TextMode, + *wpedabwd_Window_IconLabel_MaxLineLen, #if defined(DEBUG_MULTLINE) - *wpedabwd_Window_IconLabel_TextMultiLine, - *wpedabwd_Window_IconLabel_MultiLineonFocus, - *wpedabwd_Window_IconLabel_MultiLineNo, + *wpedabwd_Window_IconLabel_TextMultiLine, + *wpedabwd_Window_IconLabel_MultiLineonFocus, + *wpedabwd_Window_IconLabel_MultiLineNo, #endif - *wpedabwd_Window_Icon_HorSpacing, - *wpedabwd_Window_Icon_VertSpacing, - *wpedabwd_Window_Icon_ImageSpacing, - *wpedabwd_Window_IconLabel_HorPadd, - *wpedabwd_Window_IconLabel_VertPadd, - *wpedabwd_Window_IconLabel_BorderWidth, - *wpedabwd_Window_IconLabel_BorderHeight; - - struct List wpedabwd_Window_AdvancedViewRenderModes; - struct List wpedabwd_Window_AdvancedViewTileModes; - struct List wpedabwd_Window_AdvancedViewIconListModes; - struct List wpedabwd_Window_AdvancedViewIconTextRenderModes; - - struct Hook wpedabwd_Hook_DrawModeChage; + *wpedabwd_Window_Icon_HorSpacing, + *wpedabwd_Window_Icon_VertSpacing, + *wpedabwd_Window_Icon_ImageSpacing, + *wpedabwd_Window_IconLabel_HorPadd, + *wpedabwd_Window_IconLabel_VertPadd, + *wpedabwd_Window_IconLabel_BorderWidth, + *wpedabwd_Window_IconLabel_BorderHeight; + + struct List wpedabwd_Window_AdvancedViewRenderModes; + struct List wpedabwd_Window_AdvancedViewTileModes; + struct List wpedabwd_Window_AdvancedViewIconListModes; + struct List wpedabwd_Window_AdvancedViewIconTextRenderModes; + + struct Hook wpedabwd_Hook_DrawModeChage; }; struct WPEditor_DATA { - struct WPEditor_AdvancedBackgroundWindow_DATA *wped_AdvancedViewSettings_WindowData; + struct WPEditor_AdvancedBackgroundWindow_DATA *wped_AdvancedViewSettings_WindowData; - struct WPEditor_ViewSettingsObject *wped_ViewSettings_Current; + struct WPEditor_ViewSettingsObject *wped_ViewSettings_Current; - Object *wped_FirstBGImSpecObj, - *wped_FirstBGAdvancedObj; + Object *wped_FirstBGImSpecObj, + *wped_FirstBGAdvancedObj; - ULONG wped_DimensionsSet; + ULONG wped_DimensionsSet; - Object *wped_ViewSettings_GroupObj, - *wped_ViewSettings_SpacerObj, - *wped_c_NavigationMethod, - *wped_cm_ToolbarEnabled, + Object *wped_ViewSettings_GroupObj, + *wped_ViewSettings_SpacerObj, + *wped_c_NavigationMethod, + *wped_cm_ToolbarEnabled, #if defined(DEBUG_CHANGESCREENTITLE) - *wped_s_screentitle, + *wped_s_screentitle, #endif - *wped_toolbarpreview, + *wped_toolbarpreview, #if defined(DEBUG_NETWORKBROWSER) - *wped_cm_EnableNetworkBrowser, + *wped_cm_EnableNetworkBrowser, #endif #if defined(DEBUG_SHOWUSERFILES) - *wped_cm_EnableUserFiles, + *wped_cm_EnableUserFiles, #endif - *wped_toolbarGroup; - - struct Hook wped_Hook_CloseAdvancedOptions; + *wped_toolbarGroup; + struct Hook wped_Hook_CloseAdvancedOptions; }; //static struct Hook navichangehook; @@ -1942,18 +1941,12 @@ D(bug("[WPEditor] WPEditor_ProccessGlobalChunk(%d tags)\n", tag_count)); /* prefs file is stored in little endian */ switch ((int)AROS_LE2LONG(global_chunk[i].ti_Tag)) { -/* case MUIA_IconWindowExt_Toolbar_Enabled: - { -D(bug("[WPEditor] WPEditor_ProccessGlobalChunk: Tag %d = MUIA_IconWindowExt_Toolbar_Enabled, val = %d\n", i, AROS_LE2LONG(global_chunk[i].ti_Data))); - SET(data->wped_cm_ToolbarEnabled, MUIA_Selected, (BOOL)AROS_LE2LONG(global_chunk[i].ti_Data)); - break; - } - case MUIA_IconWindowExt_Toolbar_NavigationMethod: + case MUIA_IconWindow_WindowNavigationMethod: { -D(bug("[WPEditor] WPEditor_ProccessGlobalChunk: Tag %d = MUIA_IconWindowExt_Toolbar_NavigationMethod, val = %d\n", i, AROS_LE2LONG(global_chunk[i].ti_Data))); +D(bug("[WPEditor] WPEditor_ProccessGlobalChunk: Tag %d = MUIA_IconWindow_WindowNavigationMethod, val = %d\n", i, AROS_LE2LONG(global_chunk[i].ti_Data))); SET(data->wped_c_NavigationMethod, MUIA_Cycle_Active, (IPTR)AROS_LE2LONG(global_chunk[i].ti_Data)); break; - }*/ + } #if defined(DEBUG_SHOWUSERFILES) case MUIA_IconWindowExt_UserFiles_ShowFilesFolder: { @@ -2351,26 +2344,16 @@ D(bug("[WPEditor] WPEditor__MUIM_PrefsEditor_ExportFH: Prepare 'global' Wanderer /* save toolbar state*/ struct TagItem32 *_wp_GlobalTags = AllocVec((256 * sizeof(struct TagItem32)), MEMF_ANY|MEMF_CLEAR); ULONG _wp_GlobalTagCounter = 0; - /* helper to convert to little endian */ + /* helper to convert to little endian */ STACKED IPTR ti_Data; -/* - _wp_GlobalTags[_wp_GlobalTagCounter].ti_Tag = AROS_LONG2LE(MUIA_IconWindowExt_Toolbar_Enabled); - GET(data->wped_cm_ToolbarEnabled, MUIA_Selected, &ti_Data); - _wp_GlobalTags[_wp_GlobalTagCounter].ti_Data = AROS_LONG2LE(ti_Data); -D(bug("[WPEditor] WPEditor__MUIM_PrefsEditor_ExportFH: 'global' MUIA_IconWindowExt_Toolbar_Enabled @ Tag %d, data = %d\n", _wp_GlobalTagCounter, ti_Data)); - _wp_GlobalTagCounter += 1; + // save navigation bahaviour + _wp_GlobalTags[_wp_GlobalTagCounter].ti_Tag = AROS_LONG2LE(MUIA_IconWindow_WindowNavigationMethod); + GET(data->wped_c_NavigationMethod, MUIA_Cycle_Active, &ti_Data); + _wp_GlobalTags[_wp_GlobalTagCounter].ti_Data = AROS_LONG2LE(ti_Data); +D(bug("[WPEditor] WPEditor__MUIM_PrefsEditor_ExportFH: 'global' MUIA_IconWindow_WindowNavigationMethod @ Tag %d, data = %d\n", _wp_GlobalTagCounter, ti_Data)); + _wp_GlobalTagCounter += 1; - if ((BOOL)ti_Data == TRUE) - { - // save navigation bahaviour - _wp_GlobalTags[_wp_GlobalTagCounter].ti_Tag = AROS_LONG2LE(MUIA_IconWindowExt_Toolbar_NavigationMethod); - GET(data->wped_c_NavigationMethod, MUIA_Cycle_Active, &ti_Data); - _wp_GlobalTags[_wp_GlobalTagCounter].ti_Data = AROS_LONG2LE(ti_Data); -D(bug("[WPEditor] WPEditor__MUIM_PrefsEditor_ExportFH: 'global' MUIA_IconWindowExt_Toolbar_NavigationMethod @ Tag %d, data = %d\n", _wp_GlobalTagCounter, ti_Data)); - _wp_GlobalTagCounter += 1; - } -*/ #if defined(DEBUG_SHOWUSERFILES) _wp_GlobalTags[_wp_GlobalTagCounter].ti_Tag = AROS_LONG2LE(MUIA_IconWindowExt_UserFiles_ShowFilesFolder); GET(data->wped_cm_EnableUserFiles, MUIA_Selected, &ti_Data); diff --git a/workbench/system/Wanderer/Classes/iconlist.c b/workbench/system/Wanderer/Classes/iconlist.c index d504ad0ad2..12f9eb9e25 100644 --- a/workbench/system/Wanderer/Classes/iconlist.c +++ b/workbench/system/Wanderer/Classes/iconlist.c @@ -11,9 +11,11 @@ $Id$ #include #endif +//#define DEBUG_ILC_FUNCS +//#define DEBUG_ILC_ATTRIBS //#define DEBUG_ILC_EVENTS //#define DEBUG_ILC_KEYEVENTS -#define DEBUG_ILC_ICONDRAGDROP +//#define DEBUG_ILC_ICONDRAGDROP //#define DEBUG_ILC_ICONRENDERING //#define DEBUG_ILC_ICONSORTING //#define DEBUG_ILC_ICONSORTING_DUMP @@ -107,7 +109,7 @@ $Id$ extern struct Library *MUIMasterBase; -struct Hook __iconlist_UpdateLabels_hook; +static struct Hook __iconlist_UpdateLabels_hook; // N.B: We Handle frame/background rendering so make sure icon.library doesnt do it .. struct TagItem __iconList_DrawIconStateTags[] = { @@ -158,7 +160,7 @@ for \ #define RPALPHAFLAT (1 << 0) #define RPALPHARADIAL (1 << 1) -void RastPortSetAlpha(struct RastPort *arport, ULONG ax, ULONG ay, ULONG width, ULONG height, UBYTE val, UBYTE alphamode) +static void RastPortSetAlpha(struct RastPort *arport, ULONG ax, ULONG ay, ULONG width, ULONG height, UBYTE val, UBYTE alphamode) { ULONG x, y; ULONG alphaval, pixelval; @@ -182,7 +184,7 @@ void RastPortSetAlpha(struct RastPort *arport, ULONG ax, ULONG ay, ULONG width, ///RectAndRect() // Icon/Label Area support functions -int RectAndRect(struct Rectangle *a, struct Rectangle *b) +static int RectAndRect(struct Rectangle *a, struct Rectangle *b) { if ((a->MinX > b->MaxX) || (a->MinY > b->MaxY) || (a->MaxX < b->MinX) || (a->MaxY < b->MinY)) return 0; @@ -192,7 +194,7 @@ int RectAndRect(struct Rectangle *a, struct Rectangle *b) ///Node_NextVisible() // IconEntry List navigation functions .. -struct IconEntry *Node_NextVisible(struct IconEntry *current_Node) +static struct IconEntry *Node_NextVisible(struct IconEntry *current_Node) { current_Node = (struct IconEntry *)GetSucc(¤t_Node->ie_IconNode); while ((current_Node != NULL) && (!(current_Node->ie_Flags & ICONENTRY_FLAG_VISIBLE))) @@ -204,7 +206,7 @@ struct IconEntry *Node_NextVisible(struct IconEntry *current_Node) /// ///Node_FirstVisible() -struct IconEntry *Node_FirstVisible(struct List *icon_list) +static struct IconEntry *Node_FirstVisible(struct List *icon_list) { struct IconEntry *current_Node = (struct IconEntry *)GetHead(icon_list); @@ -216,7 +218,7 @@ struct IconEntry *Node_FirstVisible(struct List *icon_list) /// ///Node_PreviousVisible() -struct IconEntry *Node_PreviousVisible(struct IconEntry *current_Node) +static struct IconEntry *Node_PreviousVisible(struct IconEntry *current_Node) { current_Node = (struct IconEntry *)GetPred(¤t_Node->ie_IconNode); while ((current_Node != NULL) && (!(current_Node->ie_Flags & ICONENTRY_FLAG_VISIBLE))) @@ -228,7 +230,7 @@ struct IconEntry *Node_PreviousVisible(struct IconEntry *current_Node) /// ///Node_LastVisible() -struct IconEntry *Node_LastVisible(struct List *icon_list) +static struct IconEntry *Node_LastVisible(struct List *icon_list) { struct IconEntry *current_Node = (struct IconEntry *)GetTail(icon_list); @@ -248,7 +250,7 @@ static void GetAbsoluteLassoRect(struct IconList_DATA *data, struct Rectangle *L WORD maxx = data->icld_LassoRectangle.MaxX; WORD maxy = data->icld_LassoRectangle.MaxY; -#if defined(DEBUG_ILC_LASSO) +#if defined(DEBUG_ILC_LASSO) && defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); #endif @@ -280,7 +282,7 @@ static void IconList_InvertPixelRect(struct RastPort *rp, WORD minx, WORD miny, { struct Rectangle r, clipped_r; -#if defined(DEBUG_ILC_RENDERING) +#if defined(DEBUG_ILC_RENDERING) && defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); #endif @@ -315,12 +317,12 @@ D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); ///IconList_InvertLassoOutlines() // Simple lasso drawing by inverting area outlines -void IconList_InvertLassoOutlines(Object *obj, struct Rectangle *rect) +static void IconList_InvertLassoOutlines(Object *obj, struct Rectangle *rect) { struct Rectangle lasso; struct Rectangle clip; -#if defined(DEBUG_ILC_LASSO) +#if defined(DEBUG_ILC_LASSO) && defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); #endif @@ -349,7 +351,7 @@ D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); //We don't use icon.library's label drawing so we do this by hand static void IconList_GetIconImageRectangle(Object *obj, struct IconList_DATA *data, struct IconEntry *icon, struct Rectangle *rect) { -#if defined(DEBUG_ILC_ICONPOSITIONING) +#if defined(DEBUG_ILC_ICONPOSITIONING) && defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s(icon @ %p)\n", __PRETTY_FUNCTION__, icon)); #endif @@ -372,7 +374,7 @@ static void IconList_GetIconLabelRectangle(Object *obj, struct IconList_DATA *da ULONG outline_offset = 0; ULONG textwidth = 0; -#if defined(DEBUG_ILC_ICONPOSITIONING) +#if defined(DEBUG_ILC_ICONPOSITIONING) && defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); #endif @@ -393,7 +395,7 @@ D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); /* Get icon box width including text width */ if ((icon->ie_IconListEntry.label != NULL) && (icon->ie_TxtBuf_DisplayedLabel != NULL)) { - ULONG curlabel_TotalLines; + ULONG curlabel_TotalLines; SetFont(data->icld_BufferRastPort, data->icld_IconLabelFont); rect->MinX = 0; @@ -460,7 +462,7 @@ static void IconList_GetIconAreaRectangle(Object *obj, struct IconList_DATA *dat ULONG iconlabel_Width; ULONG iconlabel_Height; -#if defined(DEBUG_ILC_ICONPOSITIONING) +#if defined(DEBUG_ILC_ICONPOSITIONING) && defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); #endif @@ -802,7 +804,7 @@ D(bug("[IconList]: %s: labelSplit_CurSplitLength = %d\n", __PRETTY_FUNCTION__, l ///IconList__LabelFunc_CreateLabel() IPTR IconList__LabelFunc_CreateLabel(Object *obj, struct IconList_DATA *data, struct IconEntry *icon) { -#if defined(DEBUG_ILC_ICONRENDERING) +#if defined(DEBUG_ILC_ICONRENDERING) && defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s('%s')\n", __PRETTY_FUNCTION__, icon->ie_IconListEntry.label)); #endif if (icon->ie_TxtBuf_DisplayedLabel) @@ -877,7 +879,7 @@ AROS_UFH3( struct IconList_DATA *data = INST_DATA(CLASS, obj); -#if defined(DEBUG_ILC_LASSO) +#if defined(DEBUG_ILC_LASSO) && defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); #endif @@ -937,7 +939,7 @@ IPTR IconList__MUIM_IconList_DrawEntryLabel(struct IClass *CLASS, Object *obj, s ULONG txtarea_width; ULONG curlabel_TotalLines, curlabel_CurrentLine, offset_y; -#if defined(DEBUG_ILC_ICONRENDERING) +#if defined(DEBUG_ILC_ICONRENDERING) && defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s(message->icon = 0x%p), '%s'\n", __PRETTY_FUNCTION__, message->icon, message->icon->ie_IconListEntry.label)); #endif @@ -1096,8 +1098,9 @@ D(bug("[IconList] %s: Drawing Label '%s' .. %d, %d\n", __PRETTY_FUNCTION__, mess ty = labelY - 1; - D(bug("[IconList] %s: Font YSize %d Baseline %d\n", __PRETTY_FUNCTION__,data->icld_IconLabelFont->tf_YSize, data->icld_IconLabelFont->tf_Baseline)); - +#if defined(DEBUG_ILC_ICONRENDERING) +D(bug("[IconList] %s: Font YSize %d Baseline %d\n", __PRETTY_FUNCTION__,data->icld_IconLabelFont->tf_YSize, data->icld_IconLabelFont->tf_Baseline)); +#endif for (curlabel_CurrentLine = 0; curlabel_CurrentLine < curlabel_TotalLines; curlabel_CurrentLine++) { ULONG ie_LabelLength; @@ -1261,7 +1264,7 @@ IPTR IconList__MUIM_IconList_RethinkDimensions(struct IClass *CLASS, Object *obj maxy = 0; struct Rectangle icon_rect; -#if defined(DEBUG_ILC_ICONPOSITIONING) +#if defined(DEBUG_ILC_ICONPOSITIONING) && defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); #endif @@ -1273,12 +1276,12 @@ D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); icon = message->singleicon; maxx = data->icld_AreaWidth - 1, maxy = data->icld_AreaHeight - 1; +#if defined(DEBUG_ILC_ICONPOSITIONING) D(bug("[IconList] %s: SingleIcon - maxx = %d, maxy = %d\n", __PRETTY_FUNCTION__, maxx, maxy)); +#endif } else icon = (struct IconEntry *)GetHead(&data->icld_IconList); - - while (icon != NULL) { if (icon->ie_DiskObj && @@ -1300,7 +1303,7 @@ D(bug("[IconList] %s: SingleIcon - maxx = %d, maxy = %d\n", __PRETTY_FUNCTION__, } if (message->singleicon) break; - + icon = (struct IconEntry *)GetSucc(&icon->ie_IconNode); } @@ -1420,7 +1423,7 @@ IPTR IconList__MUIM_IconList_PositionIcons(struct IClass *CLASS, Object *obj, st BOOL next; struct Rectangle iconrect; -#if defined(DEBUG_ILC_ICONPOSITIONING) +#if defined(DEBUG_ILC_ICONPOSITIONING) && defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); #endif @@ -1586,7 +1589,9 @@ IPTR IconList__OM_NEW(struct IClass *CLASS, Object *obj, struct opSet *message) struct TextFont *icl_WindowFont = NULL; // struct RastPort *icl_RastPort = NULL; +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif icl_WindowFont = (struct TextFont *) GetTagData(MUIA_Font, (IPTR) NULL, message->ops_AttrList); @@ -1606,16 +1611,17 @@ D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); CoerceMethod(CLASS,obj,OM_DISPOSE); return (IPTR)NULL; } - -D(bug("[IconList] %s: SELF = 0x%p, muiRenderInfo = 0x%p\n", __PRETTY_FUNCTION__, obj, muiRenderInfo(obj))); +#if defined(DEBUG_ILC_FUNCS) +D(bug("[IconList] %s: SELF = 0x%p, muiRenderInfo = 0x%p\n", __PRETTY_FUNCTION__, obj, muiRenderInfo(obj))); +#endif NewList((struct List*)&data->icld_IconList); NewList((struct List*)&data->icld_SelectionList); data->icld_IconLabelFont = icl_WindowFont; /* Get/Set initial values */ #warning "TODO: TrimVolumeNames should be prefs settable" - data->icld__Option_TrimVolumeNames = TRUE; + data->icld__Option_TrimVolumeNames = TRUE; #warning "TODO: Adjust overlap by window border width" data->icld__Option_IconBorderOverlap = 10; @@ -1626,10 +1632,11 @@ D(bug("[IconList] %s: SELF = 0x%p, muiRenderInfo = 0x%p\n", __PRETTY_FUNCTION__, if ( data->icld__Option_LabelTextMaxLen < ILC_ICONLABEL_SHORTEST ) data->icld__Option_LabelTextMaxLen = ILC_ICONLABEL_MAXLINELEN_DEFAULT; - data->icld__Option_LastLabelTextMaxLen = data->icld__Option_LabelTextMaxLen; + data->icld__Option_LastLabelTextMaxLen = data->icld__Option_LabelTextMaxLen; +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList] %s: MaxLineLen : %ld\n", __PRETTY_FUNCTION__, data->icld__Option_LabelTextMaxLen)); - +#endif data->ehn.ehn_Events = IDCMP_MOUSEBUTTONS | IDCMP_RAWKEY; data->ehn.ehn_Priority = 0; data->ehn.ehn_Flags = 0; @@ -1655,7 +1662,9 @@ D(bug("[IconList] %s: MaxLineLen : %ld\n", __PRETTY_FUNCTION__, data->icld__Opti MUIM_CallHook, &__iconlist_UpdateLabels_hook, (IPTR)CLASS ); +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList] obj = %ld\n", obj)); +#endif return (IPTR)obj; } /// @@ -1669,13 +1678,15 @@ IPTR IconList__OM_DISPOSE(struct IClass *CLASS, Object *obj, Msg message) struct IconList_DATA *data = INST_DATA(CLASS, obj); struct IconEntry *node = NULL; +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif - #ifdef __AROS__ +#ifdef __AROS__ ForeachNode(&data->icld_IconList, node) - #else +#else Foreach_Node(&data->icld_IconList, node); - #endif +#endif { if (node->ie_DiskObj) FreeDiskObject(node->ie_DiskObj); } @@ -1702,7 +1713,9 @@ IPTR IconList__OM_SET(struct IClass *CLASS, Object *obj, struct opSet *message) //oldwidth = data->icld_ViewWidth, //oldheight = data->icld_ViewHeight; +#if defined(DEBUG_ILC_FUNCS) && defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif /* parse initial taglist */ for (tags = message->ops_AttrList; (tag = NextTagItem((TAGITEM)&tags)); ) @@ -1710,19 +1723,25 @@ D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); switch (tag->ti_Tag) { case MUIA_Virtgroup_Left: +#if defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList] %s: MUIA_Virtgroup_Left %ld\n", __PRETTY_FUNCTION__, tag->ti_Data)); +#endif if (data->icld_ViewX != tag->ti_Data) data->icld_ViewX = tag->ti_Data; break; case MUIA_Virtgroup_Top: +#if defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList] %s: MUIA_Virtgroup_Top %ld\n", __PRETTY_FUNCTION__, tag->ti_Data)); +#endif if (data->icld_ViewY != tag->ti_Data) data->icld_ViewY = tag->ti_Data; break; case MUIA_IconList_Rastport: +#if defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList] %s: MUIA_IconList_Rastport 0x%p\n", __PRETTY_FUNCTION__, tag->ti_Data)); +#endif data->icld_DisplayRastPort = (struct RastPort*)tag->ti_Data; data->icld_DrawOffsetX = _mleft(obj); data->icld_DrawOffsetY = _mtop(obj); @@ -1734,23 +1753,31 @@ D(bug("[IconList] %s: MUIA_IconList_Rastport 0x%p\n", __PRETTY_FUNCTION__, tag-> break; case MUIA_IconList_BufferRastport: +#if defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList] %s: MUIA_IconList_BufferRastport 0x%p\n", __PRETTY_FUNCTION__, tag->ti_Data)); +#endif data->icld_BufferRastPort = (struct RastPort*)tag->ti_Data; break; case MUIA_Font: +#if defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList] %s: MUIA_Font 0x%p\n", __PRETTY_FUNCTION__, tag->ti_Data)); +#endif data->icld_IconLabelFont = (struct TextFont*)tag->ti_Data; break; case MUIA_IconList_LabelInfoText_Font: +#if defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList] %s: MUIA_IconList_LabelInfoText_Font 0x%p\n", __PRETTY_FUNCTION__, tag->ti_Data)); +#endif data->icld_IconInfoFont = (struct TextFont*)tag->ti_Data; break; case MUIA_IconList_DisplayFlags: { -D(bug("[IconList] %s: MUIA_IconList_DisplayFlags\n", __PRETTY_FUNCTION__)); +#if defined(DEBUG_ILC_ATTRIBS) +D(bug("[IconList] %s: MUIA_IconList_DisplayFlags %08x\n", __PRETTY_FUNCTION__, tag->ti_Data)); +#endif data->icld_DisplayFlags = (ULONG)tag->ti_Data; if (data->icld_DisplayFlags & ICONLIST_DISP_BUFFERED) @@ -1758,7 +1785,7 @@ D(bug("[IconList] %s: MUIA_IconList_DisplayFlags\n", __PRETTY_FUNCTION__)); struct BitMap *tmp_BuffBitMap = NULL; ULONG tmp_RastDepth; -#if defined(DEBUG_ILC_ICONRENDERING) +#if defined(DEBUG_ILC_ATTRIBS) && defined(DEBUG_ILC_ICONRENDERING) D(bug("[IconList] %s: MUIA_IconList_DisplayFlags & ICONLIST_DISP_BUFFERED\n", __PRETTY_FUNCTION__)); #endif if ((data->icld_BufferRastPort) && (data->icld_BufferRastPort != data->icld_DisplayRastPort)) @@ -1808,22 +1835,30 @@ D(bug("[IconList] %s: MUIA_IconList_DisplayFlags & ICONLIST_DISP_BUFFERED\n", __ break; case MUIA_IconList_SortFlags: -D(bug("[IconList] %s: MUIA_IconList_SortFlags\n", __PRETTY_FUNCTION__)); +#if defined(DEBUG_ILC_ATTRIBS) +bug("[IconList] %s: MUIA_IconList_SortFlags %08x\n", __PRETTY_FUNCTION__, tag->ti_Data); +#endif data->icld_SortFlags = (ULONG)tag->ti_Data; break; case MUIA_IconList_IconListMode: +#if defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList] %s: MUIA_IconList_IconListMode %d\n", __PRETTY_FUNCTION__, tag->ti_Data)); +#endif data->icld__Option_IconListMode = (UBYTE)tag->ti_Data; break; case MUIA_IconList_LabelText_Mode: +#if defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList] %s: MUIA_IconList_LabelText_Mode %d\n", __PRETTY_FUNCTION__, tag->ti_Data)); +#endif data->icld__Option_LabelTextMode = (UBYTE)tag->ti_Data; break; case MUIA_IconList_LabelText_MaxLineLen: +#if defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList] %s: MUIA_IconList_LabelText_MaxLineLen %d\n", __PRETTY_FUNCTION__, tag->ti_Data)); +#endif if (tag->ti_Data >= ILC_ICONLABEL_SHORTEST) { data->icld__Option_LabelTextMaxLen = (ULONG)tag->ti_Data; @@ -1835,48 +1870,66 @@ D(bug("[IconList] %s: MUIA_IconList_LabelText_MaxLineLen %d\n", __PRETTY_FUNCTIO break; case MUIA_IconList_LabelText_MultiLine: +#if defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList] %s: MUIA_IconList_LabelText_MultiLine %d\n", __PRETTY_FUNCTION__, tag->ti_Data)); +#endif data->icld__Option_LabelTextMultiLine = (ULONG)tag->ti_Data; if (data->icld__Option_LabelTextMultiLine == 0)data->icld__Option_LabelTextMultiLine = 1; break; case MUIA_IconList_LabelText_MultiLineOnFocus: +#if defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList] %s: MUIA_IconList_LabelText_MultiLineOnFocus %d\n", __PRETTY_FUNCTION__, tag->ti_Data)); +#endif data->icld__Option_LabelTextMultiLineOnFocus = (BOOL)tag->ti_Data; break; case MUIA_IconList_Icon_HorizontalSpacing: +#if defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList] %s: MUIA_IconList_Icon_HorizontalSpacing %d\n", __PRETTY_FUNCTION__, tag->ti_Data)); +#endif data->icld__Option_IconHorizontalSpacing = (UBYTE)tag->ti_Data; break; case MUIA_IconList_Icon_VerticalSpacing: +#if defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList] %s: MUIA_IconList_Icon_VerticalSpacing %d\n", __PRETTY_FUNCTION__, tag->ti_Data)); +#endif data->icld__Option_IconVerticalSpacing = (UBYTE)tag->ti_Data; break; case MUIA_IconList_Icon_ImageSpacing: +#if defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList] %s: MUIA_IconList_Icon_ImageSpacing %d\n", __PRETTY_FUNCTION__, tag->ti_Data)); +#endif data->icld__Option_IconImageSpacing = (UBYTE)tag->ti_Data; break; case MUIA_IconList_LabelText_HorizontalPadding: +#if defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList] %s: MUIA_IconList_LabelText_HorizontalPadding %d\n", __PRETTY_FUNCTION__, tag->ti_Data)); +#endif data->icld__Option_LabelTextHorizontalPadding = (UBYTE)tag->ti_Data; break; case MUIA_IconList_LabelText_VerticalPadding: +#if defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList] %s: MUIA_IconList_LabelText_VerticalPadding %d\n", __PRETTY_FUNCTION__, tag->ti_Data)); +#endif data->icld__Option_LabelTextVerticalPadding = (UBYTE)tag->ti_Data; break; case MUIA_IconList_LabelText_BorderWidth: +#if defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList] %s: MUIA_IconList_LabelText_BorderWidth %d\n", __PRETTY_FUNCTION__, tag->ti_Data)); +#endif data->icld__Option_LabelTextBorderWidth = (UBYTE)tag->ti_Data; break; case MUIA_IconList_LabelText_BorderHeight: +#if defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList] %s: MUIA_IconList_LabelText_BorderHeight %d\n", __PRETTY_FUNCTION__, tag->ti_Data)); +#endif data->icld__Option_LabelTextBorderHeight = (UBYTE)tag->ti_Data; break; @@ -1898,27 +1951,31 @@ D(bug("[IconList] %s: MUIA_IconList_LabelText_BorderHeight %d\n", __PRETTY_FUNCT /* Settings defined by the view class */ case MUIA_IconListview_FixedBackground: +#if defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList] %s: MUIA_IconListview_FixedBackground\n", __PRETTY_FUNCTION__)); +#endif data->icld__Option_IconListFixedBackground = (BOOL)tag->ti_Data; break; case MUIA_IconListview_ScaledBackground: +#if defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList] %s: MUIA_IconListview_ScaledBackground\n", __PRETTY_FUNCTION__)); +#endif data->icld__Option_IconListScaledBackground = (BOOL)tag->ti_Data; break; /* We listen for MUIA_Background and set default values for known types */ case MUIA_Background: -#if defined(DEBUG_ILC_ICONRENDERING) +#if defined(DEBUG_ILC_ATTRIBS) && defined(DEBUG_ILC_ICONRENDERING) D(bug("[IconList] %s: MUIA_Background\n", __PRETTY_FUNCTION__)); #endif { char *bgmode_string = (char *)tag->ti_Data; BYTE this_mode = bgmode_string[0] - 48; - #if defined(DEBUG_ILC_ICONRENDERING) +#if defined(DEBUG_ILC_ATTRIBS) && defined(DEBUG_ILC_ICONRENDERING) D(bug("[IconList] %s: MUIA_Background | MUI BG Mode = %d\n", __PRETTY_FUNCTION__, this_mode)); - #endif +#endif switch (this_mode) { case 0: @@ -1950,18 +2007,23 @@ D(bug("[IconList] %s: MUIA_Background\n", __PRETTY_FUNCTION__)); } } +#if defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList] %s(), out of switch\n", __PRETTY_FUNCTION__)); - +#endif if ((oldleft != data->icld_ViewX) || (oldtop != data->icld_ViewY)) { data->icld_UpdateMode = UPDATE_SCROLL; data->update_scrolldx = data->icld_ViewX - oldleft; data->update_scrolldy = data->icld_ViewY - oldtop; +#if defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList] %s(), call MUI_Redraw()\n", __PRETTY_FUNCTION__)); +#endif MUI_Redraw(obj, MADF_DRAWUPDATE); } +#if defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList] %s(), call DoSuperMethodA()\n", __PRETTY_FUNCTION__)); +#endif return DoSuperMethodA(CLASS, obj, (Msg)message); } /// @@ -1976,62 +2038,83 @@ IPTR IconList__OM_GET(struct IClass *CLASS, Object *obj, struct opGet *message) #define STORE *(message->opg_Storage) struct IconList_DATA *data = INST_DATA(CLASS, obj); +#if defined(DEBUG_ILC_FUNCS) && defined(DEBUG_ILC_ATTRIBS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif switch (message->opg_AttrID) { - case MUIA_IconList_Rastport: STORE = (IPTR)data->icld_DisplayRastPort; return 1; - case MUIA_IconList_BufferRastport: STORE = (IPTR)data->icld_BufferRastPort; return 1; - case MUIA_IconList_BufferLeft: STORE = (IPTR)data->icld_DrawOffsetX; return 1; - case MUIA_IconList_BufferTop: STORE = (IPTR)data->icld_DrawOffsetY; return 1; - case MUIA_Virtgroup_Left: STORE = (IPTR)data->icld_ViewX; return 1; - case MUIA_Virtgroup_Top: STORE = (IPTR)data->icld_ViewY; return 1; + case MUIA_IconList_Rastport: STORE = (IPTR)data->icld_DisplayRastPort; return 1; + case MUIA_IconList_BufferRastport: STORE = (IPTR)data->icld_BufferRastPort; return 1; + case MUIA_IconList_BufferLeft: STORE = (IPTR)data->icld_DrawOffsetX; return 1; + case MUIA_IconList_BufferTop: STORE = (IPTR)data->icld_DrawOffsetY; return 1; case MUIA_IconList_BufferWidth: - case MUIA_IconList_Width: STORE = (IPTR)data->icld_AreaWidth; return 1; + case MUIA_IconList_Width: STORE = (IPTR)data->icld_AreaWidth; return 1; case MUIA_IconList_BufferHeight: - case MUIA_IconList_Height: STORE = (IPTR)data->icld_AreaHeight; return 1; - case MUIA_IconList_IconsDropped: STORE = (IPTR)data->icld_DragDropEvent; return 1; - case MUIA_IconList_Clicked: STORE = (IPTR)&data->icld_ClickEvent; return 1; - case MUIA_IconList_IconListMode: STORE = (IPTR)data->icld__Option_IconListMode; return 1; - case MUIA_IconList_LabelText_Mode: STORE = (IPTR)data->icld__Option_LabelTextMode; return 1; - case MUIA_IconList_LabelText_MaxLineLen: STORE = (IPTR)data->icld__Option_LabelTextMaxLen; return 1; - case MUIA_IconList_LabelText_MultiLine: STORE = (IPTR)data->icld__Option_LabelTextMultiLine; return 1; - case MUIA_IconList_LabelText_MultiLineOnFocus: STORE = (IPTR)data->icld__Option_LabelTextMultiLineOnFocus; return 1; - case MUIA_IconList_DisplayFlags: STORE = (IPTR)data->icld_DisplayFlags; return 1; - case MUIA_IconList_SortFlags: STORE = (IPTR)data->icld_SortFlags; return 1; - - case MUIA_IconList_FocusIcon: STORE = (IPTR)data->icld_FocusIcon; return 1; - - case MUIA_Font: STORE = (IPTR)data->icld_IconLabelFont; return 1; - case MUIA_IconList_LabelText_Pen: STORE = (IPTR)data->icld_LabelPen; return 1; - case MUIA_IconList_LabelText_ShadowPen: STORE = (IPTR)data->icld_LabelShadowPen; return 1; - case MUIA_IconList_LabelInfoText_Font: STORE = (IPTR)data->icld_IconInfoFont; return 1; - case MUIA_IconList_LabelInfoText_Pen: STORE = (IPTR)data->icld_InfoPen; return 1; - case MUIA_IconList_LabelInfoText_ShadowPen: STORE = (IPTR)data->icld_InfoShadowPen; return 1; - - case MUIA_IconList_Icon_HorizontalSpacing: STORE = (IPTR)data->icld__Option_IconHorizontalSpacing; return 1; - case MUIA_IconList_Icon_VerticalSpacing: STORE = (IPTR)data->icld__Option_IconVerticalSpacing; return 1; - case MUIA_IconList_Icon_ImageSpacing: STORE = (IPTR)data->icld__Option_IconImageSpacing; return 1; - case MUIA_IconList_LabelText_HorizontalPadding: STORE = (IPTR)data->icld__Option_LabelTextHorizontalPadding; return 1; - case MUIA_IconList_LabelText_VerticalPadding: STORE = (IPTR)data->icld__Option_LabelTextVerticalPadding; return 1; - case MUIA_IconList_LabelText_BorderWidth: STORE = (IPTR)data->icld__Option_LabelTextBorderWidth; return 1; - case MUIA_IconList_LabelText_BorderHeight: STORE = (IPTR)data->icld__Option_LabelTextBorderHeight; return 1; + case MUIA_IconList_Height: STORE = (IPTR)data->icld_AreaHeight; return 1; + case MUIA_IconList_IconsDropped: STORE = (IPTR)data->icld_DragDropEvent; return 1; + case MUIA_IconList_Clicked: STORE = (IPTR)&data->icld_ClickEvent; return 1; + case MUIA_IconList_IconListMode: STORE = (IPTR)data->icld__Option_IconListMode; return 1; + case MUIA_IconList_LabelText_Mode: STORE = (IPTR)data->icld__Option_LabelTextMode; return 1; + case MUIA_IconList_LabelText_MaxLineLen: STORE = (IPTR)data->icld__Option_LabelTextMaxLen; return 1; + case MUIA_IconList_LabelText_MultiLine: STORE = (IPTR)data->icld__Option_LabelTextMultiLine; return 1; + case MUIA_IconList_LabelText_MultiLineOnFocus: STORE = (IPTR)data->icld__Option_LabelTextMultiLineOnFocus; return 1; + case MUIA_IconList_DisplayFlags: STORE = (IPTR)data->icld_DisplayFlags; return 1; + case MUIA_IconList_SortFlags: STORE = (IPTR)data->icld_SortFlags; return 1; + + case MUIA_IconList_FocusIcon: STORE = (IPTR)data->icld_FocusIcon; return 1; + + case MUIA_Font: STORE = (IPTR)data->icld_IconLabelFont; return 1; + case MUIA_IconList_LabelText_Pen: STORE = (IPTR)data->icld_LabelPen; return 1; + case MUIA_IconList_LabelText_ShadowPen: STORE = (IPTR)data->icld_LabelShadowPen; return 1; + case MUIA_IconList_LabelInfoText_Font: STORE = (IPTR)data->icld_IconInfoFont; return 1; + case MUIA_IconList_LabelInfoText_Pen: STORE = (IPTR)data->icld_InfoPen; return 1; + case MUIA_IconList_LabelInfoText_ShadowPen: STORE = (IPTR)data->icld_InfoShadowPen; return 1; + + case MUIA_IconList_Icon_HorizontalSpacing: STORE = (IPTR)data->icld__Option_IconHorizontalSpacing; return 1; + case MUIA_IconList_Icon_VerticalSpacing: STORE = (IPTR)data->icld__Option_IconVerticalSpacing; return 1; + case MUIA_IconList_Icon_ImageSpacing: STORE = (IPTR)data->icld__Option_IconImageSpacing; return 1; + case MUIA_IconList_LabelText_HorizontalPadding: STORE = (IPTR)data->icld__Option_LabelTextHorizontalPadding; return 1; + case MUIA_IconList_LabelText_VerticalPadding: STORE = (IPTR)data->icld__Option_LabelTextVerticalPadding; return 1; + case MUIA_IconList_LabelText_BorderWidth: STORE = (IPTR)data->icld__Option_LabelTextBorderWidth; return 1; + case MUIA_IconList_LabelText_BorderHeight: STORE = (IPTR)data->icld__Option_LabelTextBorderHeight; return 1; /* Settings defined by the view class */ - case MUIA_IconListview_FixedBackground: STORE = (IPTR)data->icld__Option_IconListFixedBackground; return 1; - case MUIA_IconListview_ScaledBackground: STORE = (IPTR)data->icld__Option_IconListScaledBackground; return 1; + case MUIA_IconListview_FixedBackground: STORE = (IPTR)data->icld__Option_IconListFixedBackground; return 1; + case MUIA_IconListview_ScaledBackground: STORE = (IPTR)data->icld__Option_IconListScaledBackground; return 1; /* ICON obj Changes */ - case MUIA_Group_ChildList : STORE = (IPTR)&data->icld_IconList; return 1; /* Get our list object */ + case MUIA_Virtgroup_Left: STORE = (IPTR)data->icld_ViewX; return 1; + case MUIA_Virtgroup_Top: STORE = (IPTR)data->icld_ViewY; return 1; + case MUIA_Group_ChildList: STORE = (IPTR)&data->icld_IconList; return 1; /* Get our list object */ } - if (DoSuperMethodA(CLASS, obj, (Msg) message)) + if (DoSuperMethodA(CLASS, obj, (Msg) message)) return 1; + return 0; #undef STORE } /// +IPTR IconList__OM_ADDMEMBER(struct IClass *CLASS, Object *obj, APTR message) +{ +#if defined(DEBUG_ILC_FUNCS) +D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif + + return NULL; +} + +IPTR IconList__OM_REMMEMBER(struct IClass *CLASS, Object *obj, APTR message) +{ +#if defined(DEBUG_ILC_FUNCS) +D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif + + return NULL; +} + ///MUIM_Setup() /************************************************************************** MUIM_Setup @@ -2042,7 +2125,9 @@ IPTR IconList__MUIM_Setup(struct IClass *CLASS, Object *obj, struct MUIP_Setup * struct IconEntry *node = NULL; IPTR geticon_error = 0; +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif if (!DoSuperMethodA(CLASS, obj, (Msg) message)) return 0; @@ -2054,7 +2139,9 @@ D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); if (data->icld_IconLabelFont == NULL) data->icld_IconLabelFont = _font(obj); if (data->icld_IconInfoFont == NULL) data->icld_IconInfoFont = data->icld_IconLabelFont; +#if defined(DEBUG_ILC_ICONRENDERING) D(bug("[IconList] %s: Use Font @ 0x%p, RastPort @ 0x%p\n", __PRETTY_FUNCTION__, data->icld_IconLabelFont, data->icld_BufferRastPort )); +#endif /* Set our base options .. */ data->icld_LabelPen = _pens(obj)[MPEN_SHINE]; @@ -2075,16 +2162,18 @@ D(bug("[IconList] %s: Use Font @ 0x%p, RastPort @ 0x%p\n", __PRETTY_FUNCTION__, data->icld__Option_LabelTextBorderWidth = ILC_ICONLABEL_BORDERWIDTH_DEFAULT; data->icld__Option_LabelTextBorderHeight = ILC_ICONLABEL_BORDERHEIGHT_DEFAULT; - #ifdef __AROS__ +#ifdef __AROS__ ForeachNode(&data->icld_IconList, node) - #else +#else Foreach_Node(&data->icld_IconList, node); - #endif +#endif { if (!node->ie_DiskObj) { IPTR iconlistScreen = _screen(obj); +#if defined(DEBUG_ILC_ICONRENDERING) bug("[IconList] %s: IconList Screen @ 0x%p)\n", __PRETTY_FUNCTION__, iconlistScreen); +#endif if (!(node->ie_DiskObj = GetIconTags(node->ie_IconNode.ln_Name, (iconlistScreen) ? ICONGETA_Screen : TAG_IGNORE, iconlistScreen, (iconlistScreen) ? ICONGETA_RemapIcon : TAG_IGNORE, TRUE, @@ -2093,7 +2182,9 @@ bug("[IconList] %s: IconList Screen @ 0x%p)\n", __PRETTY_FUNCTION__, iconlistScr ICONA_ErrorCode, &geticon_error, TAG_DONE))) { +#if defined(DEBUG_ILC_ICONRENDERING) D(bug("[IconList] %s: Failed to obtain Icon '%s's diskobj! (error code = 0x%p)\n", __PRETTY_FUNCTION__, node->ie_IconNode.ln_Name, geticon_error)); +#endif /* We should probably remove this node if the icon cant be obtained ? */ } } @@ -2113,7 +2204,9 @@ IPTR IconList__MUIM_Show(struct IClass *CLASS, Object *obj, struct MUIP_Show *me newtop; IPTR rc; +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif if ((rc = DoSuperMethodA(CLASS, obj, (Msg)message))) { @@ -2143,7 +2236,9 @@ D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); } else { +#if defined(DEBUG_ILC_ICONRENDERING) D(bug("[IconList] IconList__MUIM_Show: ERROR - NULL RastPort!\n")); +#endif } } @@ -2180,7 +2275,9 @@ D(bug("[IconList] IconList__MUIM_Show: ERROR - NULL RastPort!\n")); } if (data->icld_IconLabelFont == NULL) data->icld_IconLabelFont = _font(obj); if (data->icld_IconInfoFont == NULL) data->icld_IconInfoFont = data->icld_IconLabelFont; +#if defined(DEBUG_ILC_ICONRENDERING) D(bug("[IconList] IconList__MUIM_Show: Use Font @ 0x%p, RastPort @ 0x%p\n", data->icld_IconLabelFont, data->icld_BufferRastPort )); +#endif if ((data->icld_BufferRastPort) && (data->icld_IconLabelFont)) SetFont(data->icld_BufferRastPort, data->icld_IconLabelFont); @@ -2198,7 +2295,9 @@ IPTR IconList__MUIM_Hide(struct IClass *CLASS, Object *obj, struct MUIP_Hide *me struct IconList_DATA *data = INST_DATA(CLASS, obj); IPTR rc; +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif if ((rc = DoSuperMethodA(CLASS, obj, (Msg)message))) { @@ -2228,7 +2327,10 @@ IPTR IconList__MUIM_Cleanup(struct IClass *CLASS, Object *obj, struct MUIP_Clean struct IconList_DATA *data = INST_DATA(CLASS, obj); struct IconEntry *node = NULL; +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif + #ifdef __AROS__ ForeachNode(&data->icld_IconList, node) #else @@ -2256,7 +2358,9 @@ IPTR IconList__MUIM_AskMinMax(struct IClass *CLASS, Object *obj, struct MUIP_Ask { ULONG rc = DoSuperMethodA(CLASS, obj, (Msg) message); +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif message->MinMaxInfo->MinWidth += 96; message->MinMaxInfo->MinHeight += 64; @@ -2280,7 +2384,9 @@ IPTR IconList__MUIM_Layout(struct IClass *CLASS, Object *obj,struct MUIP_Layout struct IconList_DATA *data = INST_DATA(CLASS, obj); ULONG rc; +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif rc = DoSuperMethodA(CLASS, obj, (Msg)message); @@ -2311,7 +2417,9 @@ IPTR IconList__MUIM_Draw(struct IClass *CLASS, Object *obj, struct MUIP_Draw *me IPTR draw_id = DrawCount++; +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s(obj @ 0x%p)\n", __PRETTY_FUNCTION__, obj)); +#endif D(bug("[IconList] %s: id %d\n", __PRETTY_FUNCTION__, draw_id)); @@ -2341,14 +2449,16 @@ D(bug("[IconList] %s: id %d\n", __PRETTY_FUNCTION__, draw_id)); if ((message->flags & MADF_DRAWUPDATE) || (data->icld_UpdateMode == UPDATE_RESIZE)) { #if defined(DEBUG_ILC_ICONRENDERING) - if (message->flags & MADF_DRAWUPDATE) - { -D(bug("[IconList] %s#%d: MADF_DRAWUPDATE\n", __PRETTY_FUNCTION__, draw_id)); - } - else - { -D(bug("[IconList] %s#%d: UPDATE_RESIZE\n", __PRETTY_FUNCTION__, draw_id)); - } + D( + if (message->flags & MADF_DRAWUPDATE) + { + bug("[IconList] %s#%d: MADF_DRAWUPDATE\n", __PRETTY_FUNCTION__, draw_id); + } + else + { + bug("[IconList] %s#%d: UPDATE_RESIZE\n", __PRETTY_FUNCTION__, draw_id); + } + ) #endif if ((data->icld_UpdateMode == UPDATE_SINGLEICON) && (data->update_icon != NULL)) /* draw only a single icon at update_icon */ { @@ -2816,7 +2926,9 @@ IPTR IconList__MUIM_IconList_Update(struct IClass *CLASS, Object *obj, struct MU { struct IconList_DATA *data = INST_DATA(CLASS, obj); +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif data->icld_FocusIcon = NULL; SET(obj, MUIA_IconList_Changed, TRUE); @@ -2834,7 +2946,9 @@ IPTR IconList__MUIM_IconList_Clear(struct IClass *CLASS, Object *obj, struct MUI struct IconList_DATA *data = INST_DATA(CLASS, obj); struct IconEntry *node = NULL; +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif while ((node = (struct IconEntry*)RemTail((struct List*)&data->icld_IconList))) { @@ -2871,7 +2985,9 @@ IPTR IconList__MUIM_IconList_DestroyEntry(struct IClass *CLASS, Object *obj, str { struct IconList_DATA *data = INST_DATA(CLASS, obj); +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif if (message->icon) { @@ -2924,8 +3040,10 @@ IPTR IconList__MUIM_IconList_CreateEntry(struct IClass *CLASS, Object *obj, stru struct Rectangle rect; IPTR geticon_error = 0; - + +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif /*disk object (icon)*/ if (message->icon_dob == NULL) @@ -3165,7 +3283,9 @@ IPTR IconList__MUIM_HandleEvent(struct IClass *CLASS, Object *obj, struct MUIP_H { struct IconList_DATA *data = INST_DATA(CLASS, obj); +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif if (message->imsg) { @@ -4512,11 +4632,12 @@ D(bug("[IconList] %s: Rendered 'new_selected' icon '%s'\n", __PRETTY_FUNCTION__, /* get absolute Lasso coordinates */ GetAbsoluteLassoRect(data, &new_lasso); - #ifdef __AROS__ + +#ifdef __AROS__ ForeachNode(&data->icld_IconList, node) - #else +#else Foreach_Node(&data->icld_IconList, node); - #endif +#endif { IPTR update_icon = (IPTR)NULL; @@ -4631,7 +4752,9 @@ IPTR IconList__MUIM_IconList_NextIcon(struct IClass *CLASS, Object *obj, struct if (message->entry == NULL) return (IPTR)NULL; ent = *message->entry; +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif if ((IPTR)ent == (IPTR)MUIV_IconList_NextIcon_Start) { @@ -4708,12 +4831,12 @@ IPTR IconList__MUIM_IconList_GetIconPrivate(struct IClass *CLASS, Object *obj, s { // struct IconList_DATA *data = INST_DATA(CLASS, obj); struct IconEntry *node = NULL; - + if (message->entry == NULL) return (IPTR)NULL; - node = (struct IconEntry *)((IPTR)message->entry - ((IPTR)&node->ie_IconListEntry - (IPTR)node)); + node = (struct IconEntry *)((IPTR)message->entry - ((IPTR)&node->ie_IconListEntry - (IPTR)node)); - return (IPTR)node; + return (IPTR)node; } ///MUIM_CreateDragImage() @@ -4727,7 +4850,9 @@ IPTR IconList__MUIM_CreateDragImage(struct IClass *CLASS, Object *obj, struct MU LONG first_x = -1, first_y = -1; +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif if (!(data->icld_SelectionLastClicked)) DoSuperMethodA(CLASS, obj, (Msg)message); @@ -4820,7 +4945,9 @@ IPTR IconList__MUIM_DeleteDragImage(struct IClass *CLASS, Object *obj, struct MU { struct IconList_DATA *data = INST_DATA(CLASS, obj); +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif if (!(data->icld_SelectionLastClicked)) return DoSuperMethodA(CLASS,obj,(Msg)message); @@ -4840,8 +4967,11 @@ MUIM_DragQuery **************************************************************************/ IPTR IconList__MUIM_DragQuery(struct IClass *CLASS, Object *obj, struct MUIP_DragQuery *message) { +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); - if (message->obj == obj) return MUIV_DragQuery_Accept; +#endif + if (message->obj == obj) + return MUIV_DragQuery_Accept; else { BOOL is_iconlist = FALSE; @@ -4856,7 +4986,8 @@ D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); } msg_cl = msg_cl->cl_Super; } - if (is_iconlist) return MUIV_DragQuery_Accept; + if (is_iconlist) + return MUIV_DragQuery_Accept; } return MUIV_DragQuery_Refuse; @@ -4871,7 +5002,9 @@ IPTR IconList__MUIM_DragDrop(struct IClass *CLASS, Object *obj, struct MUIP_Drag { struct IconList_DATA *data = INST_DATA(CLASS, obj); +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif struct IconList_Entry *entry = (IPTR)MUIV_IconList_NextIcon_Start; @@ -5115,15 +5248,17 @@ IPTR IconList__MUIM_IconList_UnselectAll(struct IClass *CLASS, Object *obj, Msg struct Node *node = NULL, *next_node = NULL; BOOL changed = FALSE; +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif data->icld_SelectionLastClicked = NULL; data->icld_FocusIcon = NULL; - #ifdef __AROS__ +#ifdef __AROS__ ForeachNodeSafe(&data->icld_SelectionList, node, next_node) - #else +#else Foreach_NodeSafe(&data->icld_SelectionList, node, next_node); - #endif +#endif { struct IconEntry *entry = (struct IconEntry *)((IPTR)node - ((IPTR)&entry->ie_SelectionNode - (IPTR)entry)); BOOL update_icon = FALSE; @@ -5169,7 +5304,9 @@ IPTR IconList__MUIM_IconList_SelectAll(struct IClass *CLASS, Object *obj, Msg me struct IconEntry *node = NULL; BOOL changed = FALSE; +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif node = (struct IconEntry *)GetHead(&data->icld_IconList); @@ -5195,7 +5332,7 @@ D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); if (update_icon) { - changed = TRUE; + changed = TRUE; data->icld_UpdateMode = UPDATE_SINGLEICON; data->update_icon = node; MUI_Redraw(obj, MADF_DRAWUPDATE); @@ -5209,16 +5346,16 @@ D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); data->icld_FocusIcon = data->icld_SelectionLastClicked; if (!(data->icld_FocusIcon->ie_Flags & ICONENTRY_FLAG_FOCUS)) { - data->icld_FocusIcon->ie_Flags &= ~ICONENTRY_FLAG_FOCUS; - data->icld_FocusIcon->ie_Flags |= ICONENTRY_FLAG_FOCUS; - data->icld_UpdateMode = UPDATE_SINGLEICON; - data->update_icon = data->icld_FocusIcon; - MUI_Redraw(obj, MADF_DRAWUPDATE); + data->icld_FocusIcon->ie_Flags &= ~ICONENTRY_FLAG_FOCUS; + data->icld_FocusIcon->ie_Flags |= ICONENTRY_FLAG_FOCUS; + data->icld_UpdateMode = UPDATE_SINGLEICON; + data->update_icon = data->icld_FocusIcon; + MUI_Redraw(obj, MADF_DRAWUPDATE); } } - if (changed) - SET(obj, MUIA_IconList_SelectionChanged, TRUE); + if (changed) + SET(obj, MUIA_IconList_SelectionChanged, TRUE); return 1; } @@ -5239,7 +5376,7 @@ IPTR IconList__MUIM_IconList_CoordsSort(struct IClass *CLASS, Object *obj, struc perform a quick sort of the iconlist based on icon coords this method DOESNT cause any visual output. */ -#if defined(DEBUG_ILC_ICONSORTING) +#if defined(DEBUG_ILC_FUNCS) && defined(DEBUG_ILC_ICONSORTING) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); #endif @@ -5257,30 +5394,33 @@ D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); while ((entry = (struct IconEntry *)RemTail((struct List*)&list_VisibleIcons))) { - test_icon = (struct IconEntry *)GetTail(&data->icld_IconList); - - while (test_icon != NULL) + if ((test_icon = (struct IconEntry *)GetTail(&data->icld_IconList)) != NULL) { - if (((data->icld_DisplayFlags & ICONLIST_DISP_VERTICAL) && (test_icon->ie_IconX > entry->ie_IconX)) || - (!(data->icld_DisplayFlags & ICONLIST_DISP_VERTICAL) && (test_icon->ie_IconY > entry->ie_IconY))) + while (test_icon != NULL) { - test_icon = (struct IconEntry *)GetPred(&test_icon->ie_IconNode); - continue; + if (((data->icld_DisplayFlags & ICONLIST_DISP_VERTICAL) && (test_icon->ie_IconX > entry->ie_IconX)) || + (!(data->icld_DisplayFlags & ICONLIST_DISP_VERTICAL) && (test_icon->ie_IconY > entry->ie_IconY))) + { + test_icon = (struct IconEntry *)GetPred(&test_icon->ie_IconNode); + continue; + } + else break; } - else break; - } - while (test_icon != NULL) - { - if (((data->icld_DisplayFlags & ICONLIST_DISP_VERTICAL) && (test_icon->ie_IconY > entry->ie_IconY)) || - (!(data->icld_DisplayFlags & ICONLIST_DISP_VERTICAL) && (test_icon->ie_IconX > entry->ie_IconX))) + while (test_icon != NULL) { - test_icon = (struct IconEntry *)GetPred(&test_icon->ie_IconNode); - continue; + if (((data->icld_DisplayFlags & ICONLIST_DISP_VERTICAL) && (test_icon->ie_IconY > entry->ie_IconY)) || + (!(data->icld_DisplayFlags & ICONLIST_DISP_VERTICAL) && (test_icon->ie_IconX > entry->ie_IconX))) + { + test_icon = (struct IconEntry *)GetPred(&test_icon->ie_IconNode); + continue; + } + else break; } - else break; + Insert((struct List*)&data->icld_IconList, (struct Node *)&entry->ie_IconNode, (struct Node *)&test_icon->ie_IconNode); } - Insert((struct List*)&data->icld_IconList, (struct Node *)&entry->ie_IconNode, (struct Node *)&test_icon->ie_IconNode); + else + AddTail((struct List*)&data->icld_IconList, (struct Node *)&entry->ie_IconNode); } #if defined(DEBUG_ILC_ICONSORTING) D(bug("[IconList] %s: Done\n", __PRETTY_FUNCTION__)); @@ -5323,91 +5463,95 @@ IPTR IconList__MUIM_IconList_Sort(struct IClass *CLASS, Object *obj, struct MUIP BOOL sortme, enqueue = FALSE; int i, visible_count = 0; -#if defined(DEBUG_ILC_ICONSORTING) +#if defined(DEBUG_ILC_FUNCS) && defined(DEBUG_ILC_ICONSORTING) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); #endif - NewList((struct List*)&list_VisibleIcons); - NewList((struct List*)&list_SortedIcons); - NewList((struct List*)&list_HiddenIcons); - /* Reset incase view options have changed .. */ data->icld_IconAreaLargestWidth = 0; data->icld_IconAreaLargestHeight = 0; data->icld_IconLargestHeight = 0; data->icld_LabelLargestHeight = 0; - /*move list into our local list struct(s)*/ - while ((entry = (struct IconEntry *)RemTail((struct List*)&data->icld_IconList))) + if ((data->icld_SortFlags & ICONLIST_SORT_MASK) != 0) { - if (entry->ie_DiskObj) - { - if (entry->ie_IconX != entry->ie_DiskObj->do_CurrentX) - { - entry->ie_IconX = entry->ie_DiskObj->do_CurrentX; - if ((data->icld_SortFlags & ICONLIST_SORT_MASK) == 0) - entry->ie_Flags |= ICONENTRY_FLAG_NEEDSUPDATE; - } - if (entry->ie_IconY != entry->ie_DiskObj->do_CurrentY) - { - entry->ie_IconY = entry->ie_DiskObj->do_CurrentY; - if ((data->icld_SortFlags & ICONLIST_SORT_MASK) == 0) - entry->ie_Flags |= ICONENTRY_FLAG_NEEDSUPDATE; - } - } +#if defined(DEBUG_ILC_ICONSORTING) +D(bug("[IconList] %s: Sorting (Flags %x)\n", __PRETTY_FUNCTION__, (data->icld_SortFlags & ICONLIST_SORT_MASK))); +#endif + NewList((struct List*)&list_VisibleIcons); + NewList((struct List*)&list_SortedIcons); + NewList((struct List*)&list_HiddenIcons); - if (!(entry->ie_Flags & ICONENTRY_FLAG_HASICON)) + /*move list into our local list struct(s)*/ + while ((entry = (struct IconEntry *)RemTail((struct List*)&data->icld_IconList))) { - if (data->icld_DisplayFlags & ICONLIST_DISP_SHOWINFO) + if (entry->ie_DiskObj) { - if (entry->ie_Flags & ICONENTRY_FLAG_VISIBLE) + if (entry->ie_IconX != entry->ie_DiskObj->do_CurrentX) { - entry->ie_Flags &= ~(ICONENTRY_FLAG_VISIBLE|ICONENTRY_FLAG_NEEDSUPDATE); + entry->ie_IconX = entry->ie_DiskObj->do_CurrentX; + if ((data->icld_SortFlags & ICONLIST_SORT_MASK) == 0) + entry->ie_Flags |= ICONENTRY_FLAG_NEEDSUPDATE; + } + if (entry->ie_IconY != entry->ie_DiskObj->do_CurrentY) + { + entry->ie_IconY = entry->ie_DiskObj->do_CurrentY; + if ((data->icld_SortFlags & ICONLIST_SORT_MASK) == 0) + entry->ie_Flags |= ICONENTRY_FLAG_NEEDSUPDATE; } } - else if (!(entry->ie_Flags & ICONENTRY_FLAG_VISIBLE)) + + if (!(entry->ie_Flags & ICONENTRY_FLAG_HASICON)) { - entry->ie_Flags |= (ICONENTRY_FLAG_VISIBLE|ICONENTRY_FLAG_NEEDSUPDATE); + if (data->icld_DisplayFlags & ICONLIST_DISP_SHOWINFO) + { + if (entry->ie_Flags & ICONENTRY_FLAG_VISIBLE) + { + entry->ie_Flags &= ~(ICONENTRY_FLAG_VISIBLE|ICONENTRY_FLAG_NEEDSUPDATE); + } + } + else if (!(entry->ie_Flags & ICONENTRY_FLAG_VISIBLE)) + { + entry->ie_Flags |= (ICONENTRY_FLAG_VISIBLE|ICONENTRY_FLAG_NEEDSUPDATE); + } } - } - else - { - if (!(entry->ie_Flags & ICONENTRY_FLAG_VISIBLE)) + else { - entry->ie_Flags |= (ICONENTRY_FLAG_VISIBLE|ICONENTRY_FLAG_NEEDSUPDATE); + if (!(entry->ie_Flags & ICONENTRY_FLAG_VISIBLE)) + { + entry->ie_Flags |= (ICONENTRY_FLAG_VISIBLE|ICONENTRY_FLAG_NEEDSUPDATE); + } } - } - /* Now we have fixed visibility lets dump them into the correct list for sorting */ - if (entry->ie_Flags & ICONENTRY_FLAG_VISIBLE) - { - if(entry->ie_AreaWidth > data->icld_IconAreaLargestWidth) data->icld_IconAreaLargestWidth = entry->ie_AreaWidth; - if(entry->ie_AreaHeight > data->icld_IconAreaLargestHeight) data->icld_IconAreaLargestHeight = entry->ie_AreaHeight; - if(entry->ie_IconHeight > data->icld_IconLargestHeight) data->icld_IconLargestHeight = entry->ie_IconHeight; - if((entry->ie_AreaHeight - entry->ie_IconHeight) > data->icld_LabelLargestHeight) data->icld_LabelLargestHeight = entry->ie_AreaHeight - entry->ie_IconHeight; + /* Now we have fixed visibility lets dump them into the correct list for sorting */ + if (entry->ie_Flags & ICONENTRY_FLAG_VISIBLE) + { + if(entry->ie_AreaWidth > data->icld_IconAreaLargestWidth) data->icld_IconAreaLargestWidth = entry->ie_AreaWidth; + if(entry->ie_AreaHeight > data->icld_IconAreaLargestHeight) data->icld_IconAreaLargestHeight = entry->ie_AreaHeight; + if(entry->ie_IconHeight > data->icld_IconLargestHeight) data->icld_IconLargestHeight = entry->ie_IconHeight; + if((entry->ie_AreaHeight - entry->ie_IconHeight) > data->icld_LabelLargestHeight) data->icld_LabelLargestHeight = entry->ie_AreaHeight - entry->ie_IconHeight; - if (((data->icld_SortFlags & ICONLIST_SORT_MASK) == 0) && (entry->ie_IconX == NO_ICON_POSITION)) - AddTail((struct List*)&list_VisibleIcons, (struct Node *)&entry->ie_IconNode); + if (((data->icld_SortFlags & ICONLIST_SORT_MASK) == 0) && (entry->ie_IconX == NO_ICON_POSITION)) + AddTail((struct List*)&list_VisibleIcons, (struct Node *)&entry->ie_IconNode); + else + AddHead((struct List*)&list_VisibleIcons, (struct Node *)&entry->ie_IconNode); + visible_count++; + } else - AddHead((struct List*)&list_VisibleIcons, (struct Node *)&entry->ie_IconNode); - visible_count++; - } - else - { - if (entry->ie_Flags & ICONENTRY_FLAG_SELECTED) { - Remove(&entry->ie_SelectionNode); + if (entry->ie_Flags & ICONENTRY_FLAG_SELECTED) + { + Remove(&entry->ie_SelectionNode); + } + entry->ie_Flags &= ~(ICONENTRY_FLAG_SELECTED|ICONENTRY_FLAG_FOCUS); + if (data->icld_SelectionLastClicked == entry) data->icld_SelectionLastClicked = NULL; + if (data->icld_FocusIcon == entry) data->icld_FocusIcon = data->icld_SelectionLastClicked; + AddHead((struct List*)&list_HiddenIcons, (struct Node *)&entry->ie_IconNode); } - entry->ie_Flags &= ~(ICONENTRY_FLAG_SELECTED|ICONENTRY_FLAG_FOCUS); - if (data->icld_SelectionLastClicked == entry) data->icld_SelectionLastClicked = NULL; - if (data->icld_FocusIcon == entry) data->icld_FocusIcon = data->icld_SelectionLastClicked; - AddHead((struct List*)&list_HiddenIcons, (struct Node *)&entry->ie_IconNode); } - } - /* Copy each visible icon entry back to the main list, sorting as we go*/ - if ((data->icld_SortFlags & ICONLIST_SORT_MASK) != 0) - { + /* Copy each visible icon entry back to the main list, sorting as we go*/ + while ((entry = (struct IconEntry *)RemHead((struct List*)&list_VisibleIcons))) { icon1 = (struct IconEntry *)GetHead(&list_SortedIcons); @@ -5508,22 +5652,25 @@ D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); } if (enqueue) { - /* Quickly resort based on node priorities .. */ - while ((entry = (struct IconEntry *)RemHead((struct List*)&list_SortedIcons))) - { - Enqueue((struct List*)&data->icld_IconList, (struct Node *)&entry->ie_IconNode); - } + /* Quickly resort based on node priorities .. */ + while ((entry = (struct IconEntry *)RemHead((struct List*)&list_SortedIcons))) + { + Enqueue((struct List*)&data->icld_IconList, (struct Node *)&entry->ie_IconNode); + } } else { - while ((entry = (struct IconEntry *)RemHead((struct List*)&list_SortedIcons))) - { - AddTail((struct List*)&data->icld_IconList, (struct Node *)&entry->ie_IconNode); - } + while ((entry = (struct IconEntry *)RemHead((struct List*)&list_SortedIcons))) + { + AddTail((struct List*)&data->icld_IconList, (struct Node *)&entry->ie_IconNode); + } } } else { +#if defined(DEBUG_ILC_ICONSORTING) +D(bug("[IconList] %s: Coord Sorting\n", __PRETTY_FUNCTION__)); +#endif DoMethod(obj, MUIM_IconList_CoordsSort); } @@ -5533,14 +5680,13 @@ D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); if ((data->icld_SortFlags & ICONLIST_SORT_MASK) != 0) { DoMethod(obj, MUIM_IconList_CoordsSort); - } - /* leave hidden icons on a seperate list to speed up normal list parsing ? */ - while ((entry = (struct IconEntry *)RemHead((struct List*)&list_HiddenIcons))) - { - AddTail((struct List*)&data->icld_IconList, (struct Node *)&entry->ie_IconNode); + /* leave hidden icons on a seperate list to speed up normal list parsing ? */ + while ((entry = (struct IconEntry *)RemHead((struct List*)&list_HiddenIcons))) + { + AddTail((struct List*)&data->icld_IconList, (struct Node *)&entry->ie_IconNode); + } } - SET(obj, MUIA_IconList_Changed, TRUE); return 1; @@ -5559,7 +5705,9 @@ IPTR IconList__MUIM_DragReport(struct IClass *CLASS, Object *obj, struct MUIP_Dr struct Window *wnd = _window(obj); struct Layer *l = NULL; +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif l = WhichLayer(&wnd->WScreen->LayerInfo, wnd->LeftEdge + message->x, wnd->TopEdge + message->y); @@ -5576,7 +5724,9 @@ D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); IPTR IconList__MUIM_UnknownDropDestination(struct IClass *CLASS, Object *obj, struct MUIP_UnknownDropDestination *message) { +#if defined(DEBUG_ILC_FUNCS) D(bug("[IconList]: %s()\n", __PRETTY_FUNCTION__)); +#endif D(bug("[IconList] %s: icons dropped on custom window \n", __PRETTY_FUNCTION__)); SET(obj, MUIA_IconList_AppWindowDrop, (IPTR)message); /* Now notify */ @@ -5588,20 +5738,22 @@ D(bug("[IconList] %s: icons dropped on custom window \n", __PRETTY_FUNCTION__)); #if WANDERER_BUILTIN_ICONLIST BOOPSI_DISPATCHER(IPTR,IconList_Dispatcher, CLASS, obj, message) { - #ifdef __AROS__ +#ifdef __AROS__ switch (message->MethodID) - #else +#else struct IClass *CLASS = cl; Msg message = msg; switch (msg->MethodID) - #endif +#endif { case OM_NEW: return IconList__OM_NEW(CLASS, obj, (struct opSet *)message); case OM_DISPOSE: return IconList__OM_DISPOSE(CLASS, obj, message); case OM_SET: return IconList__OM_SET(CLASS, obj, (struct opSet *)message); case OM_GET: return IconList__OM_GET(CLASS, obj, (struct opGet *)message); - + case OM_ADDMEMBER: return IconList__OM_ADDMEMBER(CLASS, obj, (APTR)message); + case OM_REMMEMBER: return IconList__OM_REMMEMBER(CLASS, obj, (APTR)message); + case MUIM_Setup: return IconList__MUIM_Setup(CLASS, obj, (struct MUIP_Setup *)message); case MUIM_Show: return IconList__MUIM_Show(CLASS,obj, (struct MUIP_Show *)message); @@ -5609,18 +5761,18 @@ BOOPSI_DISPATCHER(IPTR,IconList_Dispatcher, CLASS, obj, message) case MUIM_Cleanup: return IconList__MUIM_Cleanup(CLASS, obj, (struct MUIP_Cleanup *)message); case MUIM_AskMinMax: return IconList__MUIM_AskMinMax(CLASS, obj, (struct MUIP_AskMinMax *)message); case MUIM_Draw: return IconList__MUIM_Draw(CLASS, obj, (struct MUIP_Draw *)message); - #ifdef __AROS__ +#ifdef __AROS__ case MUIM_Layout: return IconList__MUIM_Layout(CLASS, obj, (struct MUIP_Layout *)message); - #endif +#endif case MUIM_HandleEvent: return IconList__MUIM_HandleEvent(CLASS, obj, (struct MUIP_HandleEvent *)message); case MUIM_CreateDragImage: return IconList__MUIM_CreateDragImage(CLASS, obj, (APTR)message); case MUIM_DeleteDragImage: return IconList__MUIM_DeleteDragImage(CLASS, obj, (APTR)message); case MUIM_DragQuery: return IconList__MUIM_DragQuery(CLASS, obj, (APTR)message); case MUIM_DragReport: return IconList__MUIM_DragReport(CLASS, obj, (APTR)message); case MUIM_DragDrop: return IconList__MUIM_DragDrop(CLASS, obj, (APTR)message); - #ifdef __AROS__ +#ifdef __AROS__ case MUIM_UnknownDropDestination: return IconList__MUIM_UnknownDropDestination(CLASS, obj, (APTR)message); - #endif +#endif case MUIM_IconList_Update: return IconList__MUIM_IconList_Update(CLASS, obj, (APTR)message); case MUIM_IconList_Clear: return IconList__MUIM_IconList_Clear(CLASS, obj, (APTR)message); case MUIM_IconList_RethinkDimensions: return IconList__MUIM_IconList_RethinkDimensions(CLASS, obj, (APTR)message); @@ -5636,10 +5788,6 @@ BOOPSI_DISPATCHER(IPTR,IconList_Dispatcher, CLASS, obj, message) case MUIM_IconList_PositionIcons: return IconList__MUIM_IconList_PositionIcons(CLASS, obj, (APTR)message); case MUIM_IconList_SelectAll: return IconList__MUIM_IconList_SelectAll(CLASS, obj, (APTR)message); // case MUIM_IconList_ViewIcon: return IconList__MUIM_IconList_ViewIcon(CLASS, obj, (APTR)message); - - /* NEW Icon class changes */ - //case OM_ADDMEMBER: return IconList__MUIM_IconList_AddMember(CLASS, obj, (APTR)message); - //case OM_REMMEMBER: return IconList__MUIM_IconList_RemMember(CLASS, obj, (APTR)message); } return DoSuperMethodA(CLASS, obj, message); @@ -5655,12 +5803,11 @@ const struct __MUIBuiltinClass _MUI_IconList_desc = { (void*)IconList_Dispatcher }; #endif -#endif +#endif /* WANDERER_BUILTIN_ICONLIST */ #ifndef __AROS__ struct MUI_CustomClass *initIconListClass(void) { return (struct MUI_CustomClass *) MUI_CreateCustomClass(NULL, MUIC_Area, NULL, sizeof(struct IconList_DATA), ENTRY(IconList_Dispatcher)); } - #endif diff --git a/workbench/system/Wanderer/Classes/iconlist.conf b/workbench/system/Wanderer/Classes/iconlist.conf index e59cc7c31e..57880a1955 100644 --- a/workbench/system/Wanderer/Classes/iconlist.conf +++ b/workbench/system/Wanderer/Classes/iconlist.conf @@ -1,7 +1,7 @@ ##begin config basename IconList -version 1.3 -date 14.05.2008 +version 1.5 +date 16.03.2009 superclass MUIC_Area classdatatype struct IconList_DATA ##end config @@ -16,6 +16,8 @@ OM_NEW OM_DISPOSE OM_SET OM_GET +OM_ADDMEMBER +OM_REMMEMBER MUIM_Setup MUIM_Show MUIM_Hide @@ -39,9 +41,9 @@ MUIM_IconList_DrawEntry MUIM_IconList_DrawEntryLabel MUIM_IconList_NextIcon MUIM_IconList_GetIconPrivate -MUIM_IconList_SelectAll MUIM_IconList_UnselectAll MUIM_IconList_Sort MUIM_IconList_CoordsSort MUIM_IconList_PositionIcons +MUIM_IconList_SelectAll ##end methodlist diff --git a/workbench/system/Wanderer/iconwindow.c b/workbench/system/Wanderer/iconwindow.c index c3d14d0c08..f104db8640 100644 --- a/workbench/system/Wanderer/iconwindow.c +++ b/workbench/system/Wanderer/iconwindow.c @@ -964,6 +964,8 @@ IPTR IconWindow__OM_SET(Class *CLASS, Object *self, struct opSet *message) } } + rv = DoSuperMethodA(CLASS, self, (Msg) message); + if (data->iwd_Flags & IWDFLAG_SETUP) { ForeachNode(&iconwindow_Extensions, iw_Extension) @@ -976,8 +978,6 @@ IPTR IconWindow__OM_SET(Class *CLASS, Object *self, struct opSet *message) if (UpdateIconlist) DoMethod(data->iwd_IconListObj, MUIM_IconList_Update); - rv = DoSuperMethodA(CLASS, self, (Msg) message); - if (focusicon) { D(bug("[iconwindow] %s: Updating focused icon (@ 0x%p)\n", __PRETTY_FUNCTION__, focusicon)); @@ -1037,6 +1037,9 @@ IPTR IconWindow__OM_GET(Class *CLASS, Object *self, struct opGet *message) } if (!rv) + rv = DoSuperMethodA(CLASS, self, (Msg) message); + + if (!rv) { ForeachNode(&iconwindow_Extensions, iw_Extension) { @@ -1045,8 +1048,6 @@ IPTR IconWindow__OM_GET(Class *CLASS, Object *self, struct opGet *message) break; } } - if (!rv) - rv = DoSuperMethodA(CLASS, self, (Msg) message); return rv; } diff --git a/workbench/system/Wanderer/iconwindow.h b/workbench/system/Wanderer/iconwindow.h index b34d57b37e..db1b8b2741 100644 --- a/workbench/system/Wanderer/iconwindow.h +++ b/workbench/system/Wanderer/iconwindow.h @@ -33,12 +33,6 @@ #define MUIM_IconWindow_BackFill_ProcessBackground (MUIB_IconWindow | 0x0000001a) #define MUIM_IconWindow_BackFill_DrawBackground (MUIB_IconWindow | 0x0000001b) -#define MUIA_IconWindow_VolumeInfoMode (MUIB_IconWindow | 0x00000001) - -#define MUIV_IconWindow_VolumeInfoMode_ShowOnlyIcons 1 -#define MUIV_IconWindow_VolumeInfoMode_ShowAll 2 -#define MUIV_IconWindow_VolumeInfoMode_ShowAllIfNoInfo 3 - struct MUIP_IconWindow_BackFill_Register {STACKED ULONG MethodID; STACKED struct IconWindow_BackFill_Descriptor *register_Node;}; struct MUIP_IconWindow_BackFill_Setup {STACKED ULONG MethodID;}; struct MUIP_IconWindow_BackFill_Cleanup {STACKED ULONG MethodID; STACKED IPTR BackFill_Data;}; diff --git a/workbench/system/Wanderer/iconwindow_attributes.h b/workbench/system/Wanderer/iconwindow_attributes.h dissimilarity index 76% index 93a765f2a5..80382db136 100644 --- a/workbench/system/Wanderer/iconwindow_attributes.h +++ b/workbench/system/Wanderer/iconwindow_attributes.h @@ -1,75 +1,83 @@ -#ifndef _ICONWINDOW_ATTRIBUTES_H_ -#define _ICONWINDOW_ATTRIBUTES_H_ - -/* - Copyright 2004 - 2009, The AROS Development Team. All rights reserved. - $Id$ -*/ - -/*** Identifier Base ********************************************************/ -#define MUIB_IconWindow (TAG_USER | 0x10000000) - -/*** Public Attributes ******************************************************/ -#define MUIA_IconWindow_Location (MUIB_IconWindow | 0x00000001) /* ISG */ -#define MUIA_IconWindow_Window (MUIB_IconWindow | 0x00000002) /* I-G */ -#define MUIA_IconWindow_Font (MUIB_IconWindow | 0x00000003) /* ISG */ -#define MUIA_IconWindow_IconList (MUIB_IconWindow | 0x00000004) /* --G */ - -#define MUIA_IconWindow_ActionHook (MUIB_IconWindow | 0x00000010) /* I-- */ /* Hook to call when some action happens */ - -#define MUIA_IconWindow_BackgroundAttrib (MUIB_IconWindow | 0x00000020) /* --G */ -#define MUIA_IconWindow_BackFillData (MUIB_IconWindow | 0x00000021) /* --G */ - -#define MUIA_IconWindow_IsRoot (MUIB_IconWindow | 0x000000A1) /* I-G */ -#define MUIA_IconWindow_IsBackdrop (MUIB_IconWindow | 0x000000A2) /* ISG */ /* is Backdrop window ? */ - -#define MUIA_IconWindow_Changed (MUIB_IconWindow | 0x000000FF) /* -SG (TRUE) if the window(s) settings - have changed (ie window needs refereshed) - used in combination with MUIA_WandererPrefs_Processing - to determine if we need to redraw */ - -#define ICONWINDOW_ACTION_OPEN 1 -#define ICONWINDOW_ACTION_CLICK 2 -#define ICONWINDOW_ACTION_ICONDROP 3 -#define ICONWINDOW_ACTION_DIRUP 4 -#define ICONWINDOW_ACTION_APPWINDOWDROP 5 - -#warning "TODO: ImageBackFills Attributes etc should be in an own file" -/*** Identifier Base ********************************************************/ -#define MUIB_IconWindowExt (MUIB_IconWindow | 0x0f000000) -#define MUIB_IconWindowExt_ImageBackFill (MUIB_IconWindowExt | 0x100000) - -/*** Public Attributes ******************************************************/ - -#define MUIA_IconWindowExt_ImageBackFill_BGRenderMode (MUIB_IconWindowExt_ImageBackFill | 0x00000001) /* ISG */ -#define MUIA_IconWindowExt_ImageBackFill_BGTileMode (MUIB_IconWindowExt_ImageBackFill | 0x00000002) /* ISG */ -#define MUIA_IconWindowExt_ImageBackFill_BGXOffset (MUIB_IconWindowExt_ImageBackFill | 0x00000003) /* ISG */ -#define MUIA_IconWindowExt_ImageBackFill_BGYOffset (MUIB_IconWindowExt_ImageBackFill | 0x00000004) /* ISG */ - -/*** Private Constants ********************************************************/ - -#define IconWindowExt_ImageBackFill_RenderMode_Tiled 1 // Default -#define IconWindowExt_ImageBackFill_RenderMode_Scale 2 // Scaled to screen - -#define IconWindowExt_ImageBackFill_TileMode_Float 1 // Default (moves with window scrolling) -#define IconWindowExt_ImageBackFill_TileMode_Fixed 2 // Tile's are fixed in the background - -#warning "TODO: NetworkBrowser Attributes etc should be in an own file" -/*** Identifier Base ********************************************************/ -#define MUIB_IconWindowExt_NetworkBrowser (MUIB_IconWindowExt | 0x300000) - -#define MUIA_IconWindowExt_NetworkBrowser_Show (MUIB_IconWindowExt_NetworkBrowser | 0x00000001) /* ISG */ -/*** Variables **************************************************************/ - -#warning "TODO: UserFiles Attributes etc should be in an own file" -/*** Identifier Base ********************************************************/ -#define MUIB_IconWindowExt_UserFiles (MUIB_IconWindowExt | 0x400000) - -#define MUIA_IconWindowExt_UserFiles_ShowFilesFolder (MUIB_IconWindowExt_UserFiles | 0x00000001) /* ISG */ -#define MUIA_IconWindowExt_UserFiles_UseDesktopFolder (MUIB_IconWindowExt_UserFiles | 0x00000002) /* ISG */ - -#define MUIA_IconWindowExt_ScreenTitle_String (MUIB_IconWindowExt_UserFiles | 0x00000003) /* ISG */ - -#define IWD_MAX_DIRECTORYPATHLEN 1024 - -#endif /* _ICONWINDOW_ATTRIBUTES_H_ */ +#ifndef _ICONWINDOW_ATTRIBUTES_H_ +#define _ICONWINDOW_ATTRIBUTES_H_ + +/* + Copyright 2004 - 2009, The AROS Development Team. All rights reserved. + $Id$ +*/ + +/*** Identifier Base ********************************************************/ +#define MUIB_IconWindow (TAG_USER | 0x10000000) + +/*** Public Attributes ******************************************************/ +#define MUIA_IconWindow_Location (MUIB_IconWindow | 0x00000001) /* ISG */ +#define MUIA_IconWindow_Window (MUIB_IconWindow | 0x00000002) /* I-G */ +#define MUIA_IconWindow_Font (MUIB_IconWindow | 0x00000003) /* ISG */ +#define MUIA_IconWindow_IconList (MUIB_IconWindow | 0x00000004) /* --G */ +#define MUIA_IconWindow_WindowNavigationMethod (MUIB_IconWindow | 0x00000005) /* ISG */ + +#define MUIA_IconWindow_ActionHook (MUIB_IconWindow | 0x00000010) /* I-- */ /* Hook to call when some action happens */ + +#define MUIA_IconWindow_BackgroundAttrib (MUIB_IconWindow | 0x00000020) /* --G */ +#define MUIA_IconWindow_BackFillData (MUIB_IconWindow | 0x00000021) /* --G */ + +#define MUIA_IconWindow_IsRoot (MUIB_IconWindow | 0x000000A1) /* I-G */ +#define MUIA_IconWindow_IsBackdrop (MUIB_IconWindow | 0x000000A2) /* ISG */ /* is Backdrop window ? */ + +#define MUIA_IconWindow_Changed (MUIB_IconWindow | 0x000000FF) /* -SG (TRUE) if the window(s) settings + have changed (ie window needs refereshed) + used in combination with MUIA_WandererPrefs_Processing + to determine if we need to redraw */ + +#define MUIA_IconWindow_VolumeInfoMode (MUIB_IconWindow | 0x000000B1) + +#define MUIV_IconWindow_VolumeInfoMode_ShowOnlyIcons 1 +#define MUIV_IconWindow_VolumeInfoMode_ShowAll 2 +#define MUIV_IconWindow_VolumeInfoMode_ShowAllIfNoInfo 3 + + +#define ICONWINDOW_ACTION_OPEN 1 +#define ICONWINDOW_ACTION_CLICK 2 +#define ICONWINDOW_ACTION_ICONDROP 3 +#define ICONWINDOW_ACTION_DIRUP 4 +#define ICONWINDOW_ACTION_APPWINDOWDROP 5 + +#warning "TODO: ImageBackFills Attributes etc should be in an own file" +/*** Identifier Base ********************************************************/ +#define MUIB_IconWindowExt (MUIB_IconWindow | 0x0f000000) +#define MUIB_IconWindowExt_ImageBackFill (MUIB_IconWindowExt | 0x100000) + +/*** Public Attributes ******************************************************/ + +#define MUIA_IconWindowExt_ImageBackFill_BGRenderMode (MUIB_IconWindowExt_ImageBackFill | 0x00000001) /* ISG */ +#define MUIA_IconWindowExt_ImageBackFill_BGTileMode (MUIB_IconWindowExt_ImageBackFill | 0x00000002) /* ISG */ +#define MUIA_IconWindowExt_ImageBackFill_BGXOffset (MUIB_IconWindowExt_ImageBackFill | 0x00000003) /* ISG */ +#define MUIA_IconWindowExt_ImageBackFill_BGYOffset (MUIB_IconWindowExt_ImageBackFill | 0x00000004) /* ISG */ + +/*** Private Constants ********************************************************/ + +#define IconWindowExt_ImageBackFill_RenderMode_Tiled 1 // Default +#define IconWindowExt_ImageBackFill_RenderMode_Scale 2 // Scaled to screen + +#define IconWindowExt_ImageBackFill_TileMode_Float 1 // Default (moves with window scrolling) +#define IconWindowExt_ImageBackFill_TileMode_Fixed 2 // Tile's are fixed in the background + +#warning "TODO: NetworkBrowser Attributes etc should be in an own file" +/*** Identifier Base ********************************************************/ +#define MUIB_IconWindowExt_NetworkBrowser (MUIB_IconWindowExt | 0x300000) + +#define MUIA_IconWindowExt_NetworkBrowser_Show (MUIB_IconWindowExt_NetworkBrowser | 0x00000001) /* ISG */ +/*** Variables **************************************************************/ + +#warning "TODO: UserFiles Attributes etc should be in an own file" +/*** Identifier Base ********************************************************/ +#define MUIB_IconWindowExt_UserFiles (MUIB_IconWindowExt | 0x400000) + +#define MUIA_IconWindowExt_UserFiles_ShowFilesFolder (MUIB_IconWindowExt_UserFiles | 0x00000001) /* ISG */ +#define MUIA_IconWindowExt_UserFiles_UseDesktopFolder (MUIB_IconWindowExt_UserFiles | 0x00000002) /* ISG */ + +#define MUIA_IconWindowExt_ScreenTitle_String (MUIB_IconWindowExt_UserFiles | 0x00000003) /* ISG */ + +#define IWD_MAX_DIRECTORYPATHLEN 1024 + +#endif /* _ICONWINDOW_ATTRIBUTES_H_ */ diff --git a/workbench/system/Wanderer/panel_statusbar.c b/workbench/system/Wanderer/panel_statusbar.c index 3fd95901d1..ff44a4c1d3 100644 --- a/workbench/system/Wanderer/panel_statusbar.c +++ b/workbench/system/Wanderer/panel_statusbar.c @@ -125,9 +125,77 @@ static STRPTR ExpandEnvName(STRPTR env_path) } /// -static -/*** Hook functions *********************************************************/ +const UBYTE MSG_MEM_G[] = "GB"; +const UBYTE MSG_MEM_M[] = "MB"; +const UBYTE MSG_MEM_K[] = "KB"; +const UBYTE MSG_MEM_B[] = "Bytes"; + +///fmtlarge() +static void fmtlarge(UBYTE *buf, ULONG num) +{ + UQUAD d; + UBYTE *ch; + struct + { + IPTR val; + IPTR dec; + } array = + { + num, + 0 + }; + + if (num >= 1073741824) + { + //Gigabytes + array.val = num >> 30; + d = ((UQUAD)num * 10 + 536870912) / 1073741824; + array.dec = d % 10; + ch = MSG_MEM_G; + } + else if (num >= 1048576) + { + //Megabytes + array.val = num >> 20; + d = ((UQUAD)num * 10 + 524288) / 1048576; + array.dec = d % 10; + ch = MSG_MEM_M; + } + else if (num >= 1024) + { + //Kilobytes + array.val = num >> 10; + d = (num * 10 + 512) / 1024; + array.dec = d % 10; + ch = MSG_MEM_K; + } + else + { + //Bytes + array.val = num; + array.dec = 0; + d = 0; + ch = MSG_MEM_B; + } + + if (!array.dec && (d > array.val * 10)) + { + array.val++; + } + + RawDoFmt(array.dec ? "%lu.%lu" : "%lu", &array, NULL, buf); + + while (*buf) + { + buf++; + } + + sprintf(buf, " %s", ch); +} +/// +/*** Hook functions *********************************************************/ +static ///panelStatusBar__HookFunc_UpdateStatusFunc() #ifdef __AROS__ AROS_UFH3( @@ -163,7 +231,8 @@ HOOKPROTO(panelStatusBar__HookFunc_UpdateStatusFunc, void, APTR *obj, APTR param struct List *iconList = NULL; struct IconEntry *icon = NULL; - UBYTE buffer[1024]; + UBYTE status_str[1024]; + UBYTE size_str[256]; int files = 0, dirs = 0, hidden = 0; ULONG size = 0; @@ -191,8 +260,9 @@ HOOKPROTO(panelStatusBar__HookFunc_UpdateStatusFunc, void, APTR *obj, APTR param } } } - sprintf(buffer, "%dbytes in %d files, %d drawers (%d hidden)", size, files, dirs, hidden); - SET(panelStatusBarPrivate->iwp_StatusBar_StatusTextObj, MUIA_Text_Contents, (IPTR)buffer); + fmtlarge(size_str, size); + sprintf(status_str, "%s in %d files, %d drawers (%d hidden)", size_str, files, dirs, hidden); + SET(panelStatusBarPrivate->iwp_StatusBar_StatusTextObj, MUIA_Text_Contents, (IPTR)status_str); } AROS_USERFUNC_EXIT @@ -204,7 +274,7 @@ MakeStaticHook(StatusBar_updateHook, panelStatusBar__HookFunc_UpdateStatusFunc); /*** Main Functions ****************************************************************/ #define STATUSBAR_PREFSSIZE 1024 -IPTR panelStatusBar__HandleFSUpdate() +static IPTR panelStatusBar__HandleFSUpdate() { if (GetVar(extension_PrefsFile, extension_PrefsData, STATUSBAR_PREFSSIZE, GVF_GLOBAL_ONLY) != -1) { diff --git a/workbench/system/Wanderer/wanderer.c b/workbench/system/Wanderer/wanderer.c index 3f56809a77..fd36cbf33b 100644 --- a/workbench/system/Wanderer/wanderer.c +++ b/workbench/system/Wanderer/wanderer.c @@ -100,12 +100,6 @@ #define NO_ICON_POSITION (0x8000000) /* belongs to workbench/workbench.h */ #endif -#warning "TODO: Toolbars Attributes etc should be in an own file" -/*** Identifier Base ********************************************************/ -#define MUIB_IconWindowExt_Toolbar (MUIB_IconWindowExt | 0x200000) - -#define MUIA_IconWindowExt_Toolbar_NavigationMethod (MUIB_IconWindowExt_Toolbar | 0x00000002) /* ISG */ - #define KeyButton(name,key) TextObject, ButtonFrame, MUIA_Font, MUIV_Font_Button, MUIA_Text_Contents, (IPTR)(name), MUIA_Text_PreParse, "\33c", MUIA_Text_HiChar, (IPTR)(key), MUIA_ControlChar, key, MUIA_InputMode, MUIV_InputMode_RelVerify, MUIA_Background, MUII_ButtonBack, TAG_DONE) extern IPTR InitWandererPrefs(void); @@ -153,11 +147,13 @@ struct Wanderer_DATA BOOL wd_Option_BackDropMode; }; -const UBYTE wand_titlestr[] = WANDERERSTR; -const UBYTE wand_versionstr[] = VERSION; -const UBYTE wand_copyrightstr[] = WANDERERCOPY; -const UBYTE wand_authorstr[] = "The AROS Dev Team"; -const char wand_namestr[] = "Wanderer"; +const UBYTE wand_titlestr[] = WANDERERSTR; +const UBYTE wand_versionstr[] = VERSION; +const UBYTE wand_copyrightstr[] = WANDERERCOPY; +const UBYTE wand_authorstr[] = "The AROS Dev Team"; +const UBYTE wand_namestr[] = "Wanderer"; + +const UBYTE wand_copyprocnamestr[] = "Wanderer FileCopy Operation"; /*** Macros *****************************************************************/ #define SETUP_WANDERER_INST_DATA struct Wanderer_DATA *data = INST_DATA(CLASS, self) @@ -429,11 +425,11 @@ HOOKPROTO(Wanderer__HookFunc_ActionFunc, void, Object *obj, struct IconWindow_Ac AROS_USERFUNC_INIT D(bug("[Wanderer]: %s()\n", __PRETTY_FUNCTION__)); - + if (msg->type == ICONWINDOW_ACTION_OPEN) { static unsigned char buf[1024]; - IPTR offset; + IPTR offset; struct IconList_Entry *ent = (void*)MUIV_IconList_NextIcon_Start; DoMethod(msg->iconlist, MUIM_IconList_NextIcon, MUIV_IconList_NextIcon_Selected, (IPTR)&ent); @@ -454,8 +450,8 @@ D(bug("[Wanderer] %s: ICONWINDOW_ACTION_OPEN: NextIcon returned MUIV_IconList_Ne strcpy((STRPTR)buf, ent->ile_IconEntry->ie_IconNode.ln_Name); } -D(bug("[Wanderer] %s: ICONWINDOW_ACTION_OPEN - offset = %d, buf = %s\n", __PRETTY_FUNCTION__, offset, buf)); - +D(bug("[Wanderer] %s: ICONWINDOW_ACTION_OPEN: offset = %d, buf = %s\n", __PRETTY_FUNCTION__, offset, buf)); + if ((ent->type == ST_ROOT) || (ent->type == ST_USERDIR) || (ent->type == ST_LINKDIR)) { Object *cstate = (Object*)(((struct List*)XGET(_app(obj), MUIA_Application_WindowList))->lh_Head); @@ -463,7 +459,7 @@ D(bug("[Wanderer] %s: ICONWINDOW_ACTION_OPEN - offset = %d, buf = %s\n", __PRETT Object *child; /* open new window if root or classic navigation set */ - if ( (msg->isroot) || (XGET(prefs, MUIA_IconWindowExt_Toolbar_NavigationMethod) == WPD_NAVIGATION_CLASSIC) ) + if ( (msg->isroot) || (XGET(prefs, MUIA_IconWindow_WindowNavigationMethod) == WPD_NAVIGATION_CLASSIC) ) { while ((child = NextObject(&cstate))) { @@ -473,7 +469,7 @@ D(bug("[Wanderer] %s: ICONWINDOW_ACTION_OPEN - offset = %d, buf = %s\n", __PRETT if (child_drawer && !Stricmp(buf,(CONST_STRPTR)child_drawer)) { BOOL is_open = ( BOOL )XGET(child, MUIA_Window_Open); - + if (!is_open) { DoMethod(child, MUIM_IconWindow_Open); @@ -483,12 +479,11 @@ D(bug("[Wanderer] %s: ICONWINDOW_ACTION_OPEN - offset = %d, buf = %s\n", __PRETT DoMethod(child, MUIM_Window_ToFront); SET(child, MUIA_Window_Activate, TRUE); } - + return; } } } - /* Check if the window for this drawer is already opened */ DoMethod(_WandererIntern_AppObj, MUIM_Wanderer_CreateDrawerWindow, (IPTR) buf); // FIXME: error handling @@ -498,24 +493,23 @@ D(bug("[Wanderer] %s: ICONWINDOW_ACTION_OPEN - offset = %d, buf = %s\n", __PRETT /* open drawer in same window */ SET(obj, MUIA_IconWindow_Location, (IPTR) buf); } - } else if ((ent->type == ST_FILE) || (ent->type == ST_LINKFILE)) { BPTR newwd, oldwd, file; - + /* Set the CurrentDir to the path of the executable to be started */ file = Lock(ent->ile_IconEntry->ie_IconNode.ln_Name, SHARED_LOCK); if(file) { newwd = ParentDir(file); oldwd = CurrentDir(newwd); - + if (!OpenWorkbenchObject(ent->ile_IconEntry->ie_IconNode.ln_Name, TAG_DONE)) { execute_open_with_command(newwd, FilePart(ent->ile_IconEntry->ie_IconNode.ln_Name)); } - + CurrentDir(oldwd); UnLock(newwd); UnLock(file); @@ -524,11 +518,10 @@ D(bug("[Wanderer] %s: ICONWINDOW_ACTION_OPEN - offset = %d, buf = %s\n", __PRETT } else if (msg->type == ICONWINDOW_ACTION_DIRUP) { - STRPTR actual_drawer = (STRPTR)XGET(obj, MUIA_IconWindow_Location); STRPTR parent_drawer = strrchr(actual_drawer,'/'); STRPTR root_drawer = strrchr(actual_drawer,':'); - + /* check if dir is not drive root dir */ if ( strlen(root_drawer) > 1 ) { @@ -553,7 +546,7 @@ D(bug("[Wanderer] %s: ICONWINDOW_ACTION_OPEN - offset = %d, buf = %s\n", __PRETT { Object *cstate = (Object*)(((struct List*)XGET(_WandererIntern_AppObj, MUIA_Application_WindowList))->lh_Head); Object *child; - + while ((child = NextObject(&cstate))) { if (XGET(child, MUIA_UserData)) @@ -571,7 +564,7 @@ D(bug("[Wanderer] %s: ICONWINDOW_ACTION_OPEN - offset = %d, buf = %s\n", __PRETT { wandererCopyProcess = CreateNewProcTags( NP_Entry, (IPTR)Wanderer__Func_CopyDropEntries, - NP_Name, "Wanderer FileCopy Operation", + NP_Name, (IPTR)wand_copyprocnamestr, NP_Synchronous, FALSE, NP_UserData, (IPTR)dropevent, NP_StackSize, 40000, @@ -595,7 +588,7 @@ D(bug("[Wanderer] %s: ICONWINDOW_ACTION_OPEN - offset = %d, buf = %s\n", __PRETT struct List AppList; ULONG files = 0; BOOL fail = FALSE; - struct IconList_Entry *ent; + struct IconList_Entry *ent; NewList(&AppList); @@ -627,7 +620,7 @@ D(bug("[Wanderer] %s: ICONWINDOW_ACTION_OPEN - offset = %d, buf = %s\n", __PRETT } } while ( ((int)ent != MUIV_IconList_NextIcon_End) && !fail); - + if (!fail && (files > 0)) { STRPTR *filelist = AllocVec(sizeof(STRPTR) * files, MEMF_CLEAR); @@ -644,7 +637,10 @@ D(bug("[Wanderer] %s: ICONWINDOW_ACTION_OPEN - offset = %d, buf = %s\n", __PRETT s = succ; } -D(bug("[WANDERER] AppWindowMsg: win:%s files:%s mx:%d my:%d\n",win->Title, filelist, wscreen->MouseX - win->LeftEdge, wscreen->MouseY - win->TopEdge);) +D(bug("[Wanderer] %s: win:%s files:%s mx:%d my:%d\n", __PRETTY_FUNCTION__, + win->Title, filelist, + wscreen->MouseX - win->LeftEdge, wscreen->MouseY - win->TopEdge);) + /* send appwindow msg struct containing selected files to destination */ SendAppWindowMessage(win, files, (char **)filelist, 0, wscreen->MouseX - win->LeftEdge, wscreen->MouseY - win->TopEdge, 0, 0); @@ -691,10 +687,10 @@ HOOKPROTO(Wanderer__HookFunc_StandardFunc, void, void *dummy, void **funcptr) { #endif AROS_USERFUNC_INIT - + void (*func) (ULONG *) = (void (*)(ULONG *)) (*funcptr); if (func) func((ULONG *)(funcptr + 1)); - + AROS_USERFUNC_EXIT } #ifndef __AROS__ @@ -721,12 +717,13 @@ HOOKPROTO(Wanderer__HookFunc_BackdropFunc, void, void *dummy, void **funcptr) struct Wanderer_DATA *data = INST_DATA(_WandererIntern_CLASS, _WandererIntern_AppObj); BOOL wb_iscurrentlybd; -D(bug("[WANDERER] Wanderer__HookFunc_BackdropFunc()\n")); -D(bug("[WANDERER] Wanderer__HookFunc_BackdropFunc: Private data @ %x\n", data)); +D(bug("[Wanderer]: %s()\n", __PRETTY_FUNCTION__)); + +D(bug("[Wanderer] %s: Private data @ %x\n", __PRETTY_FUNCTION__, data)); if (!data->wd_WorkbenchWindow) { -D(bug("[WANDERER] Wanderer__HookFunc_BackdropFunc: No Workbench Window\n")); +D(bug("[Wanderer] %s: No Workbench Window\n", __PRETTY_FUNCTION__)); return; } @@ -737,8 +734,8 @@ D(bug("[WANDERER] Wanderer__HookFunc_BackdropFunc: No Workbench Window\n")); BOOL isOpen = (BOOL)XGET(data->wd_WorkbenchWindow, MUIA_Window_Open); Object *win_Active = NULL; -D(bug("[WANDERER] Wanderer__HookFunc_BackdropFunc: Backdrop mode change requested!\n")); -D(bug("[WANDERER] Wanderer__HookFunc_BackdropFunc: Disposing of existing Workbench window Obj ..\n")); +D(bug("[Wanderer] %s: Backdrop mode change requested!\n", __PRETTY_FUNCTION__)); +D(bug("[Wanderer] %s: Disposing of existing Workbench window Obj ..\n", __PRETTY_FUNCTION__)); if (isOpen) SET(data->wd_WorkbenchWindow, MUIA_Window_Open, FALSE); @@ -753,10 +750,10 @@ D(bug("[WANDERER] Wanderer__HookFunc_BackdropFunc: Disposing of existing Workben /* Kill our close request notification .. */ DoMethod - ( + ( data->wd_WorkbenchWindow, MUIM_KillNotify, MUIA_Window_CloseRequest - ); - + ); + /* .. And dispose of the window */ DoMethod(_WandererIntern_AppObj, OM_REMMEMBER, data->wd_WorkbenchWindow); MUI_DisposeObject(data->wd_WorkbenchWindow); @@ -765,21 +762,21 @@ D(bug("[WANDERER] Wanderer__HookFunc_BackdropFunc: Disposing of existing Workben #if defined(DEBUG) if (data->wd_Option_BackDropMode) { -D(bug("[WANDERER] Wanderer__HookFunc_BackdropFunc: Creating new Workbench window Obj (BACKDROP MODE)..\n")); +D(bug("[Wanderer] %s: Creating new Workbench window Obj (BACKDROP MODE)..\n", __PRETTY_FUNCTION__)); } else { -D(bug("[WANDERER] Wanderer__HookFunc_BackdropFunc: Creating new Workbench window Obj (NORMAL MODE)..\n")); +D(bug("[Wanderer] %s: Creating new Workbench window Obj (NORMAL MODE)..\n", __PRETTY_FUNCTION__)); } #endif data->wd_WorkbenchWindow = (Object *) DoMethod - ( + ( _WandererIntern_AppObj, MUIM_Wanderer_CreateDrawerWindow, (IPTR) NULL - ); + ); if ((data->wd_WorkbenchWindow) && (isOpen)) { -D(bug("[WANDERER] Wanderer__HookFunc_BackdropFunc: Making Workbench window visable..\n")); +D(bug("[Wanderer] %s: Making Workbench window visable..\n", __PRETTY_FUNCTION__)); DoMethod(data->wd_WorkbenchWindow, MUIM_IconWindow_Open); DoMethod(data->wd_WorkbenchWindow, MUIM_Window_ToBack); } @@ -885,9 +882,9 @@ STRPTR GetUserScreenTitle(Object *self) */ char *screentitlestr; int screentitleleng; - + GET(self, MUIA_IconWindowExt_ScreenTitle_String, &screentitlestr); - + screentitleleng = strlen(screentitlestr); if (screentitleleng<1) @@ -910,7 +907,7 @@ enum MEN_WANDERER_ABOUT, MEN_WANDERER_QUIT, MEN_WANDERER_SHUTDOWN, - + MEN_WINDOW_NEW_DRAWER, MEN_WINDOW_OPEN_PARENT, MEN_WINDOW_CLOSE, @@ -925,7 +922,7 @@ enum MEN_WINDOW_VIEW_ICON, MEN_WINDOW_VIEW_DETAIL, MEN_WINDOW_VIEW_ALL, - MEN_WINDOW_VIEW_HIDDEN, + MEN_WINDOW_VIEW_HIDDEN, MEN_WINDOW_SORT_ENABLE, MEN_WINDOW_SORT_NOW, @@ -936,17 +933,17 @@ enum MEN_WINDOW_SORT_REVERSE, MEN_WINDOW_SORT_TOPDRAWERS, MEN_WINDOW_SORT_GROUP, - + MEN_ICON_OPEN, MEN_ICON_RENAME, MEN_ICON_INFORMATION, - MEN_ICON_SNAPSHOT, - MEN_ICON_UNSNAPSHOT, - MEN_ICON_LEAVEOUT, - MEN_ICON_PUTAWAY, + MEN_ICON_SNAPSHOT, + MEN_ICON_UNSNAPSHOT, + MEN_ICON_LEAVEOUT, + MEN_ICON_PUTAWAY, MEN_ICON_DELETE, MEN_ICON_FORMAT, - MEN_ICON_EMPTYTRASH + MEN_ICON_EMPTYTRASH }; @@ -958,18 +955,18 @@ command. Called when item is openend void execute_open_with_command(BPTR cd, STRPTR contents) { BPTR lock; - + if (cd !=(BPTR) NULL) lock = cd; else lock = Lock("RAM:", ACCESS_READ); - + OpenWorkbenchObject - ( + ( "WANDERER:Tools/ExecuteCommand", WBOPENA_ArgLock, (IPTR) lock, WBOPENA_ArgName, (IPTR) contents, TAG_DONE - ); - + ); + if (cd ==(BPTR) NULL) UnLock(lock); } /// @@ -1025,7 +1022,7 @@ void wanderer_menufunc_wanderer_backdrop(Object **pstrip) Object *strip = *pstrip; Object *item = FindMenuitem(strip, MEN_WANDERER_BACKDROP); -D(bug("[WANDERER] wanderer_menufunc_wanderer_backdrop()\n")); +D(bug("[Wanderer]: %s()\n", __PRETTY_FUNCTION__)); if (item != NULL) { @@ -1039,34 +1036,35 @@ D(bug("[WANDERER] wanderer_menufunc_wanderer_backdrop()\n")); void wanderer_menufunc_window_newdrawer(STRPTR *cdptr) { //TODO: remove the STRPTR *cdptr from top - + Object *win = (Object *) XGET(_WandererIntern_AppObj, MUIA_Wanderer_ActiveWindow); STRPTR dr = ( STRPTR )XGET( win, MUIA_IconWindow_Location ); Object *actwindow = (Object *) XGET(_WandererIntern_AppObj, MUIA_Wanderer_ActiveWindow); Object *wbwindow = (Object *) XGET(_WandererIntern_AppObj, MUIA_Wanderer_WorkbenchWindow); BPTR lock; -D(bug("[wanderer] wanderer_menufunc_window_newdrawer(%s)\n", dr)); +D(bug("[Wanderer]: %s('%s')\n", __PRETTY_FUNCTION__, dr)); + if (actwindow == wbwindow) { /* This check is necessary because WorkbenchWindow has path RAM: */ -D(bug("[wanderer] wanderer_menufunc_window_newdrawer: Can't call WBNewDrawer for WorkbenchWindow\n")); +D(bug("[Wanderer] %s: Can't call WBNewDrawer for WorkbenchWindow\n", __PRETTY_FUNCTION__)); return; } if ( XGET(actwindow, MUIA_Window_Open) == FALSE ) { -D(bug("[wanderer] wanderer_menufunc_window_newdrawer: Can't call WBNewDrawer: the active window isn't open\n")); +D(bug("[Wanderer] %s: Can't call WBNewDrawer: the active window isn't open\n", __PRETTY_FUNCTION__)); return; } lock = Lock(dr, ACCESS_READ); OpenWorkbenchObject - ( + ( "WANDERER:Tools/WBNewDrawer", WBOPENA_ArgLock, (IPTR) lock, WBOPENA_ArgName, 0, TAG_DONE - ); + ); UnLock(lock); } /// @@ -1077,7 +1075,7 @@ void wanderer_menufunc_window_openparent(STRPTR *cdptr) //TODO: Remove the **cdptr stuff from top Object *win = (Object *) XGET(_WandererIntern_AppObj, MUIA_Wanderer_ActiveWindow); STRPTR dr = ( STRPTR )XGET( win, MUIA_IconWindow_Location ); - + IPTR path_len=0; STRPTR last_letter=NULL; STRPTR thispath; @@ -1087,25 +1085,26 @@ void wanderer_menufunc_window_openparent(STRPTR *cdptr) BOOL foundSlash, foundColon; int i = 0; +D(bug("[Wanderer]: %s()\n", __PRETTY_FUNCTION__)); + last_letter = &dr[ strlen(dr) - 1 ]; - + thispath = FilePart(dr); - + if (*last_letter==0x3a) return; /* Top Drawer has no parent to open */ - + last_letter = &thispath[strlen(thispath)-1]; - + if (*last_letter==0x3a) path_len = (IPTR)(thispath-(IPTR)(dr)); else path_len = (IPTR)((thispath-(IPTR)(dr))-1); - + buf = AllocVec((path_len+1),MEMF_PUBLIC|MEMF_CLEAR); CopyMem(dr, buf, path_len); - + cstate = (Object*)(((struct List*)XGET(_WandererIntern_AppObj, MUIA_Application_WindowList))->lh_Head); - - + // Make sure we have a correct path foundSlash = FALSE, foundColon = FALSE; i = 0; for ( ; i < path_len; i++ ) @@ -1121,7 +1120,7 @@ void wanderer_menufunc_window_openparent(STRPTR *cdptr) buf = newbuf; } // Done with path correction check - + while ((child = NextObject(&cstate))) { if (XGET(child, MUIA_UserData)) @@ -1142,7 +1141,7 @@ void wanderer_menufunc_window_openparent(STRPTR *cdptr) } } } - + DoMethod(_WandererIntern_AppObj, MUIM_Wanderer_CreateDrawerWindow, (IPTR) buf); FreeVec(buf); } @@ -1152,6 +1151,9 @@ void wanderer_menufunc_window_openparent(STRPTR *cdptr) void wanderer_menufunc_window_close() { Object *window = (Object *) XGET(_WandererIntern_AppObj, MUIA_Wanderer_ActiveWindow); + +D(bug("[Wanderer]: %s()\n", __PRETTY_FUNCTION__)); + SET(window, MUIA_Window_CloseRequest, TRUE); } /// @@ -1162,6 +1164,8 @@ void wanderer_menufunc_window_update() Object *window = (Object *) XGET(_WandererIntern_AppObj, MUIA_Wanderer_ActiveWindow); Object *iconList = (Object *) XGET(window, MUIA_IconWindow_IconList); +D(bug("[Wanderer]: %s()\n", __PRETTY_FUNCTION__)); + if (iconList != NULL) { DoMethod(iconList, MUIM_IconList_Update); @@ -1175,6 +1179,8 @@ void wanderer_menufunc_window_clear() Object *window = (Object *) XGET(_WandererIntern_AppObj, MUIA_Wanderer_ActiveWindow); Object *iconList = (Object *) XGET(window, MUIA_IconWindow_IconList); +D(bug("[Wanderer]: %s()\n", __PRETTY_FUNCTION__)); + if (iconList != NULL) { DoMethod(iconList, MUIM_IconList_UnselectAll); @@ -1188,6 +1194,8 @@ void wanderer_menufunc_window_select() Object *window = (Object *) XGET(_WandererIntern_AppObj, MUIA_Wanderer_ActiveWindow); Object *iconList = (Object *) XGET(window, MUIA_IconWindow_IconList); +D(bug("[Wanderer]: %s()\n", __PRETTY_FUNCTION__)); + if (iconList != NULL) { DoMethod(iconList, MUIM_IconList_SelectAll); @@ -1198,105 +1206,104 @@ void wanderer_menufunc_window_select() ///wanderer_menufunc_window_snapshot() void wanderer_menufunc_window_snapshot(IPTR *flags) { - Object *window = (Object *) XGET(_WandererIntern_AppObj, MUIA_Wanderer_ActiveWindow); - Object *iconList = (Object *) XGET(window, MUIA_IconWindow_IconList); - char *dir_name = (char *)XGET(window, MUIA_IconWindow_Location); - struct DiskObject *drawericon = NULL; - IPTR geticon_error = 0; - IPTR display_bits = 0, sort_bits = 0; - BOOL snapshot_all = *flags; - -D(bug("[wanderer] wanderer_menufunc_window_snapshot()\n")); -D(bug("[wanderer] wanderer_menufunc_window_snapshot: Dir '%s'\n", dir_name)); - - if (snapshot_all == TRUE) - { - struct IconList_Entry *icon_entry = (IPTR)MUIV_IconList_NextIcon_Start; - struct IconEntry *node = NULL; - struct TagItem icon_tags[] = - { - { ICONPUTA_OnlyUpdatePosition, TRUE }, - { TAG_DONE, 0 } - }; -D(bug("[wanderer] wanderer_menufunc_window_snapshot: snapshot ALL\n")); - - do - { - DoMethod(iconList, MUIM_IconList_NextIcon, MUIV_IconList_NextIcon_Visible, (IPTR)&icon_entry); - - if ((IPTR)icon_entry != MUIV_IconList_NextIcon_End) - { - node = (struct IconEntry *)((IPTR)icon_entry - ((IPTR)&node->ie_IconListEntry - (IPTR)node)); -D(bug("[wanderer] wanderer_menufunc_window_snapshot: SNAPSHOT entry = '%s' @ %p, (%p)\n", icon_entry->ile_IconEntry->ie_IconNode.ln_Name, icon_entry, node)); - if (node->ie_DiskObj) - { - node->ie_DiskObj->do_CurrentX = node->ie_IconX; - node->ie_DiskObj->do_CurrentY = node->ie_IconY; - PutIconTagList(icon_entry->ile_IconEntry->ie_IconNode.ln_Name, node->ie_DiskObj, icon_tags); - } - else - { -D(bug("[wanderer] wanderer_menufunc_window_snapshot: icon has no diskobj!\n")); - } - } - else - { - break; - } - } while (TRUE); - } - else - { -D(bug("[wanderer] wanderer_menufunc_window_snapshot: snapshot WINDOW\n")); - } - - drawericon = GetIconTags(dir_name, - ICONGETA_FailIfUnavailable, FALSE, - ICONA_ErrorCode, &geticon_error, - TAG_DONE); - - if (drawericon != NULL) - { - if (drawericon->do_DrawerData == NULL) - { -D(bug("[wanderer] wanderer_menufunc_window_snapshot: Icon for '%s' has no DRAWER data!\n", dir_name)); - drawericon->do_DrawerData = AllocMem(sizeof(struct DrawerData), MEMF_CLEAR|MEMF_PUBLIC); - } - - drawericon->do_Gadget.UserData = (APTR)1; - - drawericon->do_DrawerData->dd_NewWindow.TopEdge = XGET(window, MUIA_Window_TopEdge); - drawericon->do_DrawerData->dd_NewWindow.LeftEdge = XGET(window, MUIA_Window_LeftEdge); - drawericon->do_DrawerData->dd_NewWindow.Width = XGET(window, MUIA_Window_Width); - drawericon->do_DrawerData->dd_NewWindow.Height = XGET(window, MUIA_Window_Height); - - GET(iconList, MUIA_IconList_DisplayFlags, &display_bits); - if (display_bits & ICONLIST_DISP_SHOWINFO) - { -D(bug("[wanderer] wanderer_menufunc_window_snapshot: ICONLIST_DISP_SHOWINFO\n")); - drawericon->do_DrawerData->dd_Flags = 1; - } - else - { - drawericon->do_DrawerData->dd_Flags = 2; - } + Object *window = (Object *) XGET(_WandererIntern_AppObj, MUIA_Wanderer_ActiveWindow); + Object *iconList = (Object *) XGET(window, MUIA_IconWindow_IconList); + char *dir_name = (char *)XGET(window, MUIA_IconWindow_Location); + struct DiskObject *drawericon = NULL; + IPTR geticon_error = 0; + IPTR display_bits = 0, sort_bits = 0; + BOOL snapshot_all = *flags; + +D(bug("[Wanderer]: %s('%s')\n", __PRETTY_FUNCTION__, dir_name)); + + if (snapshot_all == TRUE) + { + struct IconList_Entry *icon_entry = (IPTR)MUIV_IconList_NextIcon_Start; + struct IconEntry *node = NULL; + struct TagItem icon_tags[] = + { + { ICONPUTA_OnlyUpdatePosition, TRUE }, + { TAG_DONE, 0 } + }; +D(bug("[Wanderer] %s: snapshot ALL\n", __PRETTY_FUNCTION__)); + + do + { + DoMethod(iconList, MUIM_IconList_NextIcon, MUIV_IconList_NextIcon_Visible, (IPTR)&icon_entry); + + if ((IPTR)icon_entry != MUIV_IconList_NextIcon_End) + { + node = (struct IconEntry *)((IPTR)icon_entry - ((IPTR)&node->ie_IconListEntry - (IPTR)node)); +D(bug("[Wanderer] %s: SNAPSHOT entry = '%s' @ %p, (%p)\n", __PRETTY_FUNCTION__, icon_entry->ile_IconEntry->ie_IconNode.ln_Name, icon_entry, node)); + if (node->ie_DiskObj) + { + node->ie_DiskObj->do_CurrentX = node->ie_IconX; + node->ie_DiskObj->do_CurrentY = node->ie_IconY; + PutIconTagList(icon_entry->ile_IconEntry->ie_IconNode.ln_Name, node->ie_DiskObj, icon_tags); + } + else + { +D(bug("[Wanderer] %s: icon has no diskobj!\n", __PRETTY_FUNCTION__)); + } + } + else + { + break; + } + } while (TRUE); + } + else + { +D(bug("[Wanderer] %s: snapshot WINDOW\n", __PRETTY_FUNCTION__)); + } + + drawericon = GetIconTags(dir_name, + ICONGETA_FailIfUnavailable, FALSE, + ICONA_ErrorCode, &geticon_error, + TAG_DONE); + + if (drawericon != NULL) + { + if (drawericon->do_DrawerData == NULL) + { +D(bug("[Wanderer] %s: Icon for '%s' has no DRAWER data!\n", __PRETTY_FUNCTION__, dir_name)); + drawericon->do_DrawerData = AllocMem(sizeof(struct DrawerData), MEMF_CLEAR|MEMF_PUBLIC); + } + + drawericon->do_Gadget.UserData = (APTR)1; + + drawericon->do_DrawerData->dd_NewWindow.TopEdge = XGET(window, MUIA_Window_TopEdge); + drawericon->do_DrawerData->dd_NewWindow.LeftEdge = XGET(window, MUIA_Window_LeftEdge); + drawericon->do_DrawerData->dd_NewWindow.Width = XGET(window, MUIA_Window_Width); + drawericon->do_DrawerData->dd_NewWindow.Height = XGET(window, MUIA_Window_Height); + + GET(iconList, MUIA_IconList_DisplayFlags, &display_bits); + if (display_bits & ICONLIST_DISP_SHOWINFO) + { +D(bug("[Wanderer] %s: ICONLIST_DISP_SHOWINFO\n", __PRETTY_FUNCTION__)); + drawericon->do_DrawerData->dd_Flags = 1; + } + else + { + drawericon->do_DrawerData->dd_Flags = 2; + } #warning "TODO: Icon sort flags are only really for text list mode ... fix" - GET(iconList, MUIA_IconList_SortFlags, &sort_bits); - if (sort_bits & ICONLIST_SORT_BY_DATE) - { - drawericon->do_DrawerData->dd_ViewModes = 3; - } - else if (sort_bits & ICONLIST_SORT_BY_SIZE) - { - drawericon->do_DrawerData->dd_ViewModes = 4; - } - else - { - drawericon->do_DrawerData->dd_ViewModes = 2; - } - PutDiskObject(dir_name, drawericon); - } + GET(iconList, MUIA_IconList_SortFlags, &sort_bits); + if (sort_bits & ICONLIST_SORT_BY_DATE) + { + drawericon->do_DrawerData->dd_ViewModes = 3; + } + else if (sort_bits & ICONLIST_SORT_BY_SIZE) + { + drawericon->do_DrawerData->dd_ViewModes = 4; + } + else + { + drawericon->do_DrawerData->dd_ViewModes = 2; + } + PutDiskObject(dir_name, drawericon); + } } /// @@ -1308,6 +1315,8 @@ void wanderer_menufunc_window_view_icons(Object **pstrip) Object *window = (Object *) XGET(_WandererIntern_AppObj, MUIA_Wanderer_ActiveWindow); Object *iconList = (Object *) XGET(window, MUIA_IconWindow_IconList); +D(bug("[Wanderer]: %s()\n", __PRETTY_FUNCTION__)); + if ((item != NULL) && (iconList != NULL)) { IPTR display_bits = 0, menu_view_state = 0; @@ -1338,6 +1347,8 @@ void wanderer_menufunc_window_view_hidden(Object **pstrip) Object *window = (Object *) XGET(_WandererIntern_AppObj, MUIA_Wanderer_ActiveWindow); Object *iconList = (Object *) XGET(window, MUIA_IconWindow_IconList); +D(bug("[Wanderer]: %s()\n", __PRETTY_FUNCTION__)); + if ((item != NULL) && (iconList != NULL)) { IPTR display_bits = 0, menu_view_state = 0; @@ -1367,6 +1378,8 @@ void wanderer_menufunc_window_sort_enable(Object **pstrip) Object *window = (Object *) XGET(_WandererIntern_AppObj, MUIA_Wanderer_ActiveWindow); Object *iconList = (Object *) XGET(window, MUIA_IconWindow_IconList); +D(bug("[Wanderer]: %s()\n", __PRETTY_FUNCTION__)); + if (item != NULL) { if (!XGET(item, MUIA_Disabled) && (iconList != NULL)) @@ -1382,7 +1395,7 @@ void wanderer_menufunc_window_sort_enable(Object **pstrip) { if ((item = FindMenuitem(strip, MEN_WINDOW_SORT_DATE)) != NULL) { - SET(item, MUIA_Disabled, FALSE); + NNSET(item, MUIA_Disabled, FALSE); if( XGET(item, MUIA_Menuitem_Checked) ) { sort_bits |= ICONLIST_SORT_BY_DATE; @@ -1390,7 +1403,7 @@ void wanderer_menufunc_window_sort_enable(Object **pstrip) } if ((item = FindMenuitem(strip, MEN_WINDOW_SORT_SIZE)) != NULL) { - SET(item, MUIA_Disabled, FALSE); + NNSET(item, MUIA_Disabled, FALSE); if( XGET(item, MUIA_Menuitem_Checked) ) { sort_bits |= ICONLIST_SORT_BY_SIZE; @@ -1398,7 +1411,7 @@ void wanderer_menufunc_window_sort_enable(Object **pstrip) } if ((item = FindMenuitem(strip, MEN_WINDOW_SORT_TYPE)) != NULL) { - SET(item, MUIA_Disabled, FALSE); + NNSET(item, MUIA_Disabled, FALSE); if( XGET(item, MUIA_Menuitem_Checked) ) { sort_bits |= ICONLIST_SORT_MASK; @@ -1406,7 +1419,7 @@ void wanderer_menufunc_window_sort_enable(Object **pstrip) } if ((item = FindMenuitem(strip, MEN_WINDOW_SORT_NAME)) != NULL) { - SET(item, MUIA_Disabled, FALSE); + NNSET(item, MUIA_Disabled, FALSE); if( XGET(item, MUIA_Menuitem_Checked) ) { sort_bits |= ICONLIST_SORT_BY_NAME; @@ -1420,7 +1433,7 @@ void wanderer_menufunc_window_sort_enable(Object **pstrip) } if ((item = FindMenuitem(strip, MEN_WINDOW_SORT_REVERSE)) != NULL) { - SET(item, MUIA_Disabled, FALSE); + NNSET(item, MUIA_Disabled, FALSE); if( XGET(item, MUIA_Menuitem_Checked) ) { sort_bits |= ICONLIST_SORT_REVERSE; @@ -1428,44 +1441,44 @@ void wanderer_menufunc_window_sort_enable(Object **pstrip) } if ((item = FindMenuitem(strip, MEN_WINDOW_SORT_TOPDRAWERS)) != NULL) { - SET(item, MUIA_Disabled, FALSE); + NNSET(item, MUIA_Disabled, FALSE); if( XGET(item, MUIA_Menuitem_Checked) ) { sort_bits &= ~ICONLIST_SORT_DRAWERS_MIXED; } } -D(bug("[wanderer] wanderer_menufunc_window_sort_enable: Setting sort flags %08x\n", sort_bits)); +D(bug("[Wanderer] %s: Setting sort flags %08x\n", __PRETTY_FUNCTION__, sort_bits)); } else { if ((item = FindMenuitem(strip, MEN_WINDOW_SORT_DATE)) != NULL) { - SET(item, MUIA_Disabled, TRUE); + NNSET(item, MUIA_Disabled, TRUE); } if ((item = FindMenuitem(strip, MEN_WINDOW_SORT_SIZE)) != NULL) { - SET(item, MUIA_Disabled, TRUE); + NNSET(item, MUIA_Disabled, TRUE); } if ((item = FindMenuitem(strip, MEN_WINDOW_SORT_TYPE)) != NULL) { - SET(item, MUIA_Disabled, TRUE); + NNSET(item, MUIA_Disabled, TRUE); } if ((item = FindMenuitem(strip, MEN_WINDOW_SORT_NAME)) != NULL) { - SET(item, MUIA_Disabled, TRUE); + NNSET(item, MUIA_Disabled, TRUE); } if ((item = FindMenuitem(strip, MEN_WINDOW_SORT_REVERSE)) != NULL) { - SET(item, MUIA_Disabled, TRUE); + NNSET(item, MUIA_Disabled, TRUE); } if ((item = FindMenuitem(strip, MEN_WINDOW_SORT_TOPDRAWERS)) != NULL) { - SET(item, MUIA_Disabled, TRUE); + NNSET(item, MUIA_Disabled, TRUE); } -D(bug("[wanderer] wanderer_menufunc_window_sort_disable: Setting sort flags %08x\n", sort_bits)); +D(bug("[Wanderer] %s: Setting sort flags %08x\n", __PRETTY_FUNCTION__, sort_bits)); } - NNSET(iconList, MUIA_IconList_SortFlags, sort_bits); + SET(iconList, MUIA_IconList_SortFlags, sort_bits); DoMethod(iconList, MUIM_IconList_Sort); } } @@ -1480,14 +1493,17 @@ void wanderer_menufunc_window_sort_name(Object **pstrip) Object *window = (Object *) XGET(_WandererIntern_AppObj, MUIA_Wanderer_ActiveWindow); Object *iconList = (Object *) XGET(window, MUIA_IconWindow_IconList); +D(bug("[Wanderer]: %s()\n", __PRETTY_FUNCTION__)); + if (item != NULL && iconList != NULL) { - IPTR sort_bits = 0; + IPTR sort_bits = 0, checked = FALSE; GET(iconList, MUIA_IconList_SortFlags, &sort_bits); + GET(item, MUIA_Menuitem_Checked, &checked); /*name = date and size bit both NOT set*/ - sort_bits &= ~ICONLIST_SORT_MASK; - if( XGET(item, MUIA_Menuitem_Checked) ) + sort_bits &= ~ICONLIST_SORT_MASK; + if (checked == TRUE) { sort_bits |= ICONLIST_SORT_BY_NAME; } @@ -1505,14 +1521,17 @@ void wanderer_menufunc_window_sort_date(Object **pstrip) Object *window = (Object *) XGET(_WandererIntern_AppObj, MUIA_Wanderer_ActiveWindow); Object *iconList = (Object *) XGET(window, MUIA_IconWindow_IconList); +D(bug("[Wanderer]: %s()\n", __PRETTY_FUNCTION__)); + if (item != NULL && iconList != NULL) { - IPTR sort_bits = 0; + IPTR sort_bits = 0, checked = FALSE; GET(iconList, MUIA_IconList_SortFlags, &sort_bits); + GET(item, MUIA_Menuitem_Checked, &checked); /*exclude size bit*/ - sort_bits &= ~ICONLIST_SORT_MASK; - if( XGET(item, MUIA_Menuitem_Checked) ) + sort_bits &= ~ICONLIST_SORT_MASK; + if (checked == TRUE) { sort_bits |= ICONLIST_SORT_BY_DATE; } @@ -1530,17 +1549,23 @@ void wanderer_menufunc_window_sort_size(Object **pstrip) Object *window = (Object *) XGET(_WandererIntern_AppObj, MUIA_Wanderer_ActiveWindow); Object *iconList = (Object *) XGET(window, MUIA_IconWindow_IconList); +D(bug("[Wanderer]: %s()\n", __PRETTY_FUNCTION__)); + if (item != NULL && iconList != NULL) { - IPTR sort_bits = 0; + IPTR sort_bits = 0, checked = FALSE; GET(iconList, MUIA_IconList_SortFlags, &sort_bits); + GET(item, MUIA_Menuitem_Checked, &checked); +D(bug("[Wanderer]: %s: (start) sort flags %08x\n", __PRETTY_FUNCTION__, sort_bits)); /*exclude date bit*/ - sort_bits &= ~ICONLIST_SORT_MASK; - if( XGET(item, MUIA_Menuitem_Checked) ) + sort_bits &= ~ICONLIST_SORT_MASK; + + if (checked == TRUE) { sort_bits |= ICONLIST_SORT_BY_SIZE; } +D(bug("[Wanderer]: %s: (end) sort flags %08x\n", __PRETTY_FUNCTION__, sort_bits)); SET(iconList, MUIA_IconList_SortFlags, sort_bits); DoMethod(iconList, MUIM_IconList_Sort); } @@ -1555,14 +1580,17 @@ void wanderer_menufunc_window_sort_type(Object **pstrip) Object *window = (Object *) XGET(_WandererIntern_AppObj, MUIA_Wanderer_ActiveWindow); Object *iconList = (Object *) XGET(window, MUIA_IconWindow_IconList); +D(bug("[Wanderer]: %s()\n", __PRETTY_FUNCTION__)); + if (item != NULL && iconList != NULL) { - IPTR sort_bits = 0; + IPTR sort_bits = 0, checked = FALSE; GET(iconList, MUIA_IconList_SortFlags, &sort_bits); + GET(item, MUIA_Menuitem_Checked, &checked); /*type = all sort bits set (name+date+size) */ - sort_bits &= ~ICONLIST_SORT_MASK; - if( XGET(item, MUIA_Menuitem_Checked) ) + sort_bits &= ~ICONLIST_SORT_MASK; + if (checked == TRUE) { sort_bits |= ICONLIST_SORT_MASK; } @@ -1580,12 +1608,15 @@ void wanderer_menufunc_window_sort_reverse(Object **pstrip) Object *window = (Object *) XGET(_WandererIntern_AppObj, MUIA_Wanderer_ActiveWindow); Object *iconList = (Object *) XGET(window, MUIA_IconWindow_IconList); +D(bug("[Wanderer]: %s()\n", __PRETTY_FUNCTION__)); + if (item != NULL && iconList != NULL) { - IPTR sort_bits = 0; + IPTR sort_bits = 0, checked = FALSE; GET(iconList, MUIA_IconList_SortFlags, &sort_bits); + GET(item, MUIA_Menuitem_Checked, &checked); - if( XGET(item, MUIA_Menuitem_Checked) ) + if (checked == TRUE) { sort_bits |= ICONLIST_SORT_REVERSE; } @@ -1608,12 +1639,15 @@ void wanderer_menufunc_window_sort_topdrawers(Object **pstrip) Object *window = (Object *) XGET(_WandererIntern_AppObj, MUIA_Wanderer_ActiveWindow); Object *iconList = (Object *) XGET(window, MUIA_IconWindow_IconList); +D(bug("[Wanderer]: %s()\n", __PRETTY_FUNCTION__)); + if (item != NULL && iconList != NULL) { - IPTR sort_bits = 0; + IPTR sort_bits = 0, checked = FALSE; GET(iconList, MUIA_IconList_SortFlags, &sort_bits); + GET(item, MUIA_Menuitem_Checked, &checked); - if( XGET(item, MUIA_Menuitem_Checked) ) + if (checked == TRUE) { sort_bits &= ~ICONLIST_SORT_DRAWERS_MIXED; } @@ -1642,19 +1676,19 @@ void wanderer_menufunc_icon_rename(void) Object *window = (Object *) XGET(_WandererIntern_AppObj, MUIA_Wanderer_ActiveWindow); Object *iconList = (Object *) XGET(window, MUIA_IconWindow_IconList); struct IconList_Entry *entry = (APTR) MUIV_IconList_NextIcon_Start; - + do { DoMethod(iconList, MUIM_IconList_NextIcon, MUIV_IconList_NextIcon_Selected, (IPTR) &entry); - + if ((int)entry != MUIV_IconList_NextIcon_End) { BPTR lock = Lock(entry->ile_IconEntry->ie_IconNode.ln_Name, ACCESS_READ); BPTR parent = ParentDir(lock); UnLock(lock); - -D(bug("[wanderer] wanderer_menufunc_icon_rename: selected = '%s'\n", entry->ile_IconEntry->ie_IconNode.ln_Name)); - + +D(bug("[Wanderer] %s: selected = '%s'\n", __PRETTY_FUNCTION__, entry->ile_IconEntry->ie_IconNode.ln_Name)); + OpenWorkbenchObject ( "WANDERER:Tools/WBRename", @@ -1662,9 +1696,9 @@ D(bug("[wanderer] wanderer_menufunc_icon_rename: selected = '%s'\n", entry->ile_ WBOPENA_ArgName, (IPTR) FilePart(entry->ile_IconEntry->ie_IconNode.ln_Name), TAG_DONE ); - -D(bug("[wanderer] wanderer_menufunc_icon_rename: selected = '%s'\n", entry->ile_IconEntry->ie_IconNode.ln_Name)); - + +D(bug("[Wanderer] %s: selected = '%s'\n", __PRETTY_FUNCTION__, entry->ile_IconEntry->ie_IconNode.ln_Name)); + UnLock(parent); } else @@ -1681,26 +1715,26 @@ void wanderer_menufunc_icon_information() Object *window = (Object *) XGET(_WandererIntern_AppObj, MUIA_Wanderer_ActiveWindow); Object *iconList = (Object *) XGET(window, MUIA_IconWindow_IconList); struct IconList_Entry *entry = (IPTR)MUIV_IconList_NextIcon_Start; - + do { DoMethod(iconList, MUIM_IconList_NextIcon, MUIV_IconList_NextIcon_Selected, (IPTR)&entry); - + if ((IPTR)entry != MUIV_IconList_NextIcon_End) { BPTR lock, parent; - STRPTR name; - -D(bug("[wanderer] wanderer_menufunc_icon_information: selected = '%s'\n", entry->ile_IconEntry->ie_IconNode.ln_Name)); - lock = Lock(entry->ile_IconEntry->ie_IconNode.ln_Name, ACCESS_READ); - name = FilePart(entry->ile_IconEntry->ie_IconNode.ln_Name); - if (name[0]) { - parent = ParentDir(lock); - UnLock(lock); - } else - parent = lock; - - D(bug("[wanderer] wanderer_menufunc_icon_information: name = '%s' lock = 0x%08lX\n", name, lock)); + STRPTR name; + +D(bug("[Wanderer] %s: selected = '%s'\n", __PRETTY_FUNCTION__, entry->ile_IconEntry->ie_IconNode.ln_Name)); + lock = Lock(entry->ile_IconEntry->ie_IconNode.ln_Name, ACCESS_READ); + name = FilePart(entry->ile_IconEntry->ie_IconNode.ln_Name); + if (name[0]) { + parent = ParentDir(lock); + UnLock(lock); + } else + parent = lock; + +D(bug("[Wanderer] %s: name = '%s' lock = 0x%08lX\n", __PRETTY_FUNCTION__, name, lock)); WBInfo(parent, name, NULL); UnLock(parent); @@ -1716,18 +1750,18 @@ D(bug("[wanderer] wanderer_menufunc_icon_information: selected = '%s'\n", entry- ///wanderer_menufunc_icon_snapshot() void wanderer_menufunc_icon_snapshot(IPTR *flags) { - Object *window = (Object *) XGET(_WandererIntern_AppObj, MUIA_Wanderer_ActiveWindow); - Object *iconList = (Object *) XGET(window, MUIA_IconWindow_IconList); - struct IconList_Entry *entry = (IPTR)MUIV_IconList_NextIcon_Start; - struct IconEntry *node = NULL; - BOOL snapshot = *flags; - struct TagItem icontags[] = - { - { ICONPUTA_OnlyUpdatePosition, TRUE }, - { TAG_DONE, 0 } - }; + Object *window = (Object *) XGET(_WandererIntern_AppObj, MUIA_Wanderer_ActiveWindow); + Object *iconList = (Object *) XGET(window, MUIA_IconWindow_IconList); + struct IconList_Entry *entry = (IPTR)MUIV_IconList_NextIcon_Start; + struct IconEntry *node = NULL; + BOOL snapshot = *flags; + struct TagItem icontags[] = + { + { ICONPUTA_OnlyUpdatePosition, TRUE }, + { TAG_DONE, 0 } + }; -D(bug("[wanderer] wanderer_menufunc_icon_snapshot()\n")); +D(bug("[Wanderer]: %s()\n", __PRETTY_FUNCTION__)); do { @@ -1735,34 +1769,34 @@ D(bug("[wanderer] wanderer_menufunc_icon_snapshot()\n")); if ((IPTR)entry != MUIV_IconList_NextIcon_End) { - node = (struct IconEntry *)((IPTR)entry - ((IPTR)&node->ie_IconListEntry - (IPTR)node)); -D(bug("[wanderer] wanderer_menufunc_icon_snapshot: %s entry = '%s' @ %p, (%p)\n", (snapshot) ? "SNAPSHOT" : "UNSNAPSHOT", entry->ile_IconEntry->ie_IconNode.ln_Name, entry, node)); - if (node->ie_DiskObj) - { - if (snapshot) - { - node->ie_DiskObj->do_CurrentX = node->ie_IconX; - node->ie_DiskObj->do_CurrentY = node->ie_IconY; - } - else - { - node->ie_DiskObj->do_CurrentX = NO_ICON_POSITION; - node->ie_DiskObj->do_CurrentY = NO_ICON_POSITION; - } - PutIconTagList(entry->ile_IconEntry->ie_IconNode.ln_Name, node->ie_DiskObj, icontags); -D(bug("[wanderer] wanderer_menufunc_icon_snapshot: saved ..\n")); - } - else - { -D(bug("[wanderer] wanderer_menufunc_icon_snapshot: icon has no diskobj!\n")); - } - } + node = (struct IconEntry *)((IPTR)entry - ((IPTR)&node->ie_IconListEntry - (IPTR)node)); +D(bug("[Wanderer] %s: %s entry = '%s' @ %p, (%p)\n", __PRETTY_FUNCTION__, (snapshot) ? "SNAPSHOT" : "UNSNAPSHOT", entry->ile_IconEntry->ie_IconNode.ln_Name, entry, node)); + if (node->ie_DiskObj) + { + if (snapshot) + { + node->ie_DiskObj->do_CurrentX = node->ie_IconX; + node->ie_DiskObj->do_CurrentY = node->ie_IconY; + } + else + { + node->ie_DiskObj->do_CurrentX = NO_ICON_POSITION; + node->ie_DiskObj->do_CurrentY = NO_ICON_POSITION; + } + PutIconTagList(entry->ile_IconEntry->ie_IconNode.ln_Name, node->ie_DiskObj, icontags); +D(bug("[Wanderer] %s: saved ..\n", __PRETTY_FUNCTION__)); + } + else + { +D(bug("[Wanderer] %s: icon has no diskobj!\n", __PRETTY_FUNCTION__)); + } + } else { break; } } while (TRUE); -D(bug("[wanderer] wanderer_menufunc_icon_snapshot: finished ..\n")); +D(bug("[Wanderer] %s: finished ..\n", __PRETTY_FUNCTION__)); } ///wanderer_menufunc_icon_leaveout() @@ -1772,32 +1806,32 @@ void wanderer_menufunc_icon_leaveout(void) Object *iconList = (Object *) XGET(window, MUIA_IconWindow_IconList); struct IconList_Entry *entry = (IPTR)MUIV_IconList_NextIcon_Start; struct IconEntry *node = NULL; - char *leavout_dir = NULL; - -D(bug("[wanderer] wanderer_menufunc_icon_leaveout()\n")); - - GET(window, MUIA_IconWindow_Location, &leavout_dir); - - if (leavout_dir != NULL) - { -D(bug("[wanderer] wanderer_menufunc_icon_leaveout: dir '%s'\n", leavout_dir)); - do - { - DoMethod(iconList, MUIM_IconList_NextIcon, MUIV_IconList_NextIcon_Selected, (IPTR)&entry); - - if (((IPTR)entry != MUIV_IconList_NextIcon_End) && ((entry->type == ST_FILE) || (entry->type == ST_USERDIR))) - { - node = (struct IconEntry *)((IPTR)entry - ((IPTR)&node->ie_IconListEntry - (IPTR)node)); -D(bug("[wanderer] wanderer_menufunc_icon_leaveout: entry = '%s' @ %p, (%p)\n", entry->ile_IconEntry->ie_IconNode.ln_Name, entry, node)); - } - else - { - break; - } - } while (TRUE); - } - -D(bug("[wanderer] wanderer_menufunc_icon_leaveout: finished ..\n")); + char *leavout_dir = NULL; + +D(bug("[Wanderer]: %s()\n", __PRETTY_FUNCTION__)); + + GET(window, MUIA_IconWindow_Location, &leavout_dir); + + if (leavout_dir != NULL) + { +D(bug("[Wanderer] %s: dir '%s'\n", __PRETTY_FUNCTION__, leavout_dir)); + do + { + DoMethod(iconList, MUIM_IconList_NextIcon, MUIV_IconList_NextIcon_Selected, (IPTR)&entry); + + if (((IPTR)entry != MUIV_IconList_NextIcon_End) && ((entry->type == ST_FILE) || (entry->type == ST_USERDIR))) + { + node = (struct IconEntry *)((IPTR)entry - ((IPTR)&node->ie_IconListEntry - (IPTR)node)); +D(bug("[Wanderer] %s: entry = '%s' @ %p, (%p)\n", __PRETTY_FUNCTION__, entry->ile_IconEntry->ie_IconNode.ln_Name, entry, node)); + } + else + { + break; + } + } while (TRUE); + } + +D(bug("[Wanderer] %s: finished ..\n", __PRETTY_FUNCTION__)); } ///wanderer_menufunc_icon_putaway() @@ -1809,9 +1843,9 @@ void wanderer_menufunc_icon_putaway(void) struct IconEntry *node = NULL; struct List putawayicons; -D(bug("[wanderer] wanderer_menufunc_icon_putaway()\n")); +D(bug("[Wanderer]: %s()\n", __PRETTY_FUNCTION__)); - NEWLIST(&putawayicons); + NEWLIST(&putawayicons); do { @@ -1819,18 +1853,18 @@ D(bug("[wanderer] wanderer_menufunc_icon_putaway()\n")); if (((IPTR)entry != MUIV_IconList_NextIcon_End) && ((entry->type == ST_LINKFILE) || (entry->type == ST_LINKDIR))) { - node = (struct IconEntry *)((IPTR)entry - ((IPTR)&node->ie_IconListEntry - (IPTR)node)); -D(bug("[wanderer] wanderer_menufunc_icon_putaway: entry = '%s' @ %p, (%p)\n", entry->ile_IconEntry->ie_IconNode.ln_Name, entry, node)); - /* Remove the node from the iconlist .. */ - /* Add it to our internal list for cleanup.. */ - //AddTail(&putawayicons, node); - } + node = (struct IconEntry *)((IPTR)entry - ((IPTR)&node->ie_IconListEntry - (IPTR)node)); +D(bug("[Wanderer] %s: entry = '%s' @ %p, (%p)\n", __PRETTY_FUNCTION__, entry->ile_IconEntry->ie_IconNode.ln_Name, entry, node)); + /* Remove the node from the iconlist .. */ + /* Add it to our internal list for cleanup.. */ + //AddTail(&putawayicons, node); + } else { break; } } while (TRUE); -D(bug("[wanderer] wanderer_menufunc_icon_putaway: finished ..\n")); +D(bug("[Wanderer] %s: finished ..\n", __PRETTY_FUNCTION__)); } ///DisposeCopyDisplay() @@ -1850,7 +1884,7 @@ void DisposeCopyDisplay(struct MUIDisplayObjects *d) BOOL CreateCopyDisplay(UWORD flags, struct MUIDisplayObjects *d) { BOOL back = FALSE; - + Object *group, *fromObject, *toObject, *fileTextObject, *fileLengthObject, *gaugeGroup; d->stopflag = 0; // will be set to 1 when clicking on stop, than the displayhook can tell actionDir() to stop copy @@ -1859,10 +1893,14 @@ BOOL CreateCopyDisplay(UWORD flags, struct MUIDisplayObjects *d) d->action = flags; d->smallobjects = 0; d->copyApp = MUI_NewObject(MUIC_Application, - MUIA_Application_Title, (IPTR)"CopyRequester", - MUIA_Application_Base, (IPTR)"WANDERER_COPY", - MUIA_Application_Window, (IPTR)(d->win = MUI_NewObject(MUIC_Window, + MUIA_Application_Title, (IPTR)wand_copyprocnamestr, + MUIA_Application_Base, (IPTR)"WANDERER_COPY", + MUIA_Application_Copyright, (IPTR) wand_copyrightstr, + MUIA_Application_Author, (IPTR) wand_authorstr, + MUIA_Application_SingleTask, (IPTR)FALSE, + MUIA_Application_Window, (IPTR)(d->win = MUI_NewObject(MUIC_Window, MUIA_Window_Title, (IPTR)_(MSG_WANDERER_FILEACCESS), + MUIA_Window_ID, (IPTR)MAKE_ID('W','F','C','R'), MUIA_Window_Activate, TRUE, MUIA_Window_DepthGadget, TRUE, MUIA_Window_DragBar, TRUE, @@ -1873,7 +1911,7 @@ BOOL CreateCopyDisplay(UWORD flags, struct MUIDisplayObjects *d) MUIA_Window_TopEdge, MUIV_Window_TopEdge_Centered, MUIA_Window_LeftEdge, MUIV_Window_LeftEdge_Centered, MUIA_Window_Width, MUIV_Window_Width_Visible(60), - WindowContents, (group = MUI_NewObject(MUIC_Group, + WindowContents, (group = MUI_NewObject(MUIC_Group, Child, (IPTR)(fromObject = MUI_NewObject(MUIC_Text, MUIA_InnerLeft,(8), MUIA_InnerRight,(8), @@ -1959,7 +1997,6 @@ BOOL CreateCopyDisplay(UWORD flags, struct MUIDisplayObjects *d) TAG_DONE)), TAG_DONE); - if (d->copyApp) { if ((flags & (ACTION_COPY|ACTION_DELETE)) == (ACTION_COPY|ACTION_DELETE)) @@ -2012,9 +2049,9 @@ void wanderer_menufunc_icon_delete(void) DoMethod(iconList, MUIM_IconList_NextIcon, MUIV_IconList_NextIcon_Selected, (IPTR) &entry); displayCopyHook.h_Entry = (HOOKFUNC) Wanderer__HookFunc_DisplayCopyFunc; displayDelHook.h_Entry = (HOOKFUNC) Wanderer__HookFunc_AskDeleteFunc; - + updatedIcons = 0; - + /* Process all selected entries */ if (CreateCopyDisplay(ACTION_DELETE, &dobjects)) { @@ -2023,7 +2060,7 @@ void wanderer_menufunc_icon_delete(void) if ((int)entry != MUIV_IconList_NextIcon_End) { /* copy via filesystems.c */ - D(bug("[WANDERER] Delete \"%s\"\n", entry->ile_IconEntry->ie_IconNode.ln_Name);) + D(bug("[Wanderer] Delete \"%s\"\n", entry->ile_IconEntry->ie_IconNode.ln_Name);) CopyContent( NULL, entry->ile_IconEntry->ie_IconNode.ln_Name, NULL, TRUE, ACTION_DELETE, &displayCopyHook, &displayDelHook, (APTR) &dobjects); updatedIcons++; } @@ -2049,21 +2086,21 @@ void wanderer_menufunc_icon_format(void) struct IconList_Entry *entry = ( void*) MUIV_IconList_NextIcon_Start; DoMethod(iconList, MUIM_IconList_NextIcon, MUIV_IconList_NextIcon_Selected, (IPTR) &entry); - + /* Process only first selected entry */ if ((int)entry != MUIV_IconList_NextIcon_End) { BPTR lock = Lock(entry->ile_IconEntry->ie_IconNode.ln_Name, ACCESS_READ); - D(bug("[WANDERER] Format \"%s\"\n", entry->ile_IconEntry->ie_IconNode.ln_Name);) +D(bug("[Wanderer]: %s('%s')\n", __PRETTY_FUNCTION__, entry->ile_IconEntry->ie_IconNode.ln_Name);) /* Usually we pass object name and parent lock. Here we do the same thing. Just object name is empty string and its parent is device's root. */ OpenWorkbenchObject - ( + ( "SYS:System/Format", WBOPENA_ArgLock, (IPTR) lock, WBOPENA_ArgName, lock ? (IPTR)"" : (IPTR)entry->ile_IconEntry->ie_IconNode.ln_Name, TAG_DONE - ); + ); if (lock) UnLock(lock); } @@ -2083,7 +2120,8 @@ void wanderer_menufunc_wanderer_AROS_guisettings(void) ///wanderer_menufunc_wanderer_AROS_about() void wanderer_menufunc_wanderer_AROS_about(void) { - OpenWorkbenchObject("SYS:System/About", TAG_DONE); + OpenWorkbenchObject("SYS:System/About", + TAG_DONE); } /// @@ -2098,8 +2136,9 @@ void wanderer_menufunc_wanderer_about(Object **pwand) if (data->wd_AboutWindow == NULL) { data->wd_AboutWindow = WindowObject, - MUIA_Window_Title, "About Wanderer...", - WindowContents, VGroup, + MUIA_Window_Title, "About Wanderer...", + MUIA_Window_ID, (IPTR)MAKE_ID('W','A','B','T'), + WindowContents, VGroup, Child, HGroup, Child, (IPTR) IconImageObject, MUIA_InputMode, MUIV_InputMode_Toggle, @@ -2134,7 +2173,7 @@ void wanderer_menufunc_wanderer_about(Object **pwand) (IPTR)data->wd_AboutWindow, 3, MUIM_Set, MUIA_Window_Open, FALSE ); } - + if (data->wd_AboutWindow) { IPTR isOpen = (IPTR)FALSE; @@ -2156,7 +2195,9 @@ void wanderer_menufunc_wanderer_about(Object **pwand) void wanderer_menufunc_wanderer_quit(void) { if (OpenWorkbenchObject("WANDERER:Tools/Quit", TAG_DONE)) - ; + { + ; + } else { if (MUI_RequestA(_WandererIntern_AppObj, NULL, 0, wand_namestr, _(MSG_YESNO), _(MSG_REALLYQUIT), NULL)) @@ -2203,18 +2244,18 @@ Object *FindMenuitem(Object* strip, int id) /************************************************************************** This connects a notify to the given menu entry id **************************************************************************/ -VOID DoMenuNotify(Object* strip, int id, void *function, void *arg) +VOID DoMenuNotify(Object* strip, int id, IPTR trigattrib, void *function, void *arg) { Object *entry; entry = FindMenuitem(strip,id); if (entry) { - DoMethod - ( - entry, MUIM_Notify, MUIA_Menuitem_Trigger, MUIV_EveryTime, + DoMethod + ( + entry, MUIM_Notify, trigattrib, MUIV_EveryTime, (IPTR) entry, 4, MUIM_CallHook, (IPTR) &_WandererIntern_hook_standard, (IPTR) function, (IPTR) arg - ); + ); } } /// @@ -2226,75 +2267,75 @@ VOID DoAllMenuNotifies(Object *wanderer, Object *strip, STRPTR path) if (!strip) return; - DoMenuNotify(strip, MEN_WANDERER_EXECUTE, + DoMenuNotify(strip, MEN_WANDERER_EXECUTE, MUIA_Menuitem_Trigger, wanderer_menufunc_wanderer_execute, path); - DoMenuNotify(strip, MEN_WANDERER_SHELL, + DoMenuNotify(strip, MEN_WANDERER_SHELL, MUIA_Menuitem_Trigger, wanderer_menufunc_wanderer_shell, path); - DoMenuNotify(strip, MEN_WANDERER_AROS_GUISETTINGS, + DoMenuNotify(strip, MEN_WANDERER_AROS_GUISETTINGS, MUIA_Menuitem_Trigger, wanderer_menufunc_wanderer_AROS_guisettings, NULL); - DoMenuNotify(strip, MEN_WANDERER_AROS_ABOUT, + DoMenuNotify(strip, MEN_WANDERER_AROS_ABOUT, MUIA_Menuitem_Trigger, wanderer_menufunc_wanderer_AROS_about, NULL); - DoMenuNotify(strip, MEN_WANDERER_ABOUT, + DoMenuNotify(strip, MEN_WANDERER_ABOUT, MUIA_Menuitem_Trigger, wanderer_menufunc_wanderer_about, wanderer); - DoMenuNotify(strip, MEN_WANDERER_QUIT, + DoMenuNotify(strip, MEN_WANDERER_QUIT, MUIA_Menuitem_Trigger, wanderer_menufunc_wanderer_quit, NULL); - DoMenuNotify(strip, MEN_WANDERER_SHUTDOWN, + DoMenuNotify(strip, MEN_WANDERER_SHUTDOWN, MUIA_Menuitem_Trigger, wanderer_menufunc_wanderer_shutdown, NULL); - DoMenuNotify(strip, MEN_WINDOW_NEW_DRAWER, + DoMenuNotify(strip, MEN_WINDOW_NEW_DRAWER, MUIA_Menuitem_Trigger, wanderer_menufunc_window_newdrawer, path); - DoMenuNotify(strip, MEN_WINDOW_OPEN_PARENT, + DoMenuNotify(strip, MEN_WINDOW_OPEN_PARENT, MUIA_Menuitem_Trigger, wanderer_menufunc_window_openparent, path); - DoMenuNotify(strip, MEN_WINDOW_CLOSE, + DoMenuNotify(strip, MEN_WINDOW_CLOSE, MUIA_Menuitem_Trigger, wanderer_menufunc_window_close, NULL); - DoMenuNotify(strip, MEN_WINDOW_UPDATE, + DoMenuNotify(strip, MEN_WINDOW_UPDATE, MUIA_Menuitem_Trigger, wanderer_menufunc_window_update, NULL); - DoMenuNotify(strip, MEN_WINDOW_CLEAR, + DoMenuNotify(strip, MEN_WINDOW_CLEAR, MUIA_Menuitem_Trigger, wanderer_menufunc_window_clear, NULL); - DoMenuNotify(strip, MEN_WINDOW_SNAP_WIN, + DoMenuNotify(strip, MEN_WINDOW_SNAP_WIN, MUIA_Menuitem_Trigger, wanderer_menufunc_window_snapshot, FALSE); - DoMenuNotify(strip, MEN_WINDOW_SNAP_ALL, + DoMenuNotify(strip, MEN_WINDOW_SNAP_ALL, MUIA_Menuitem_Trigger, wanderer_menufunc_window_snapshot, (APTR)TRUE); - DoMenuNotify(strip, MEN_WINDOW_SELECT, + DoMenuNotify(strip, MEN_WINDOW_SELECT, MUIA_Menuitem_Trigger, wanderer_menufunc_window_select, NULL); - DoMenuNotify(strip, MEN_WINDOW_VIEW_ALL, + DoMenuNotify(strip, MEN_WINDOW_VIEW_ALL, MUIA_Menuitem_Checked, wanderer_menufunc_window_view_icons, strip); - DoMenuNotify(strip, MEN_WINDOW_VIEW_HIDDEN, - wanderer_menufunc_window_view_hidden, strip); - DoMenuNotify(strip, MEN_WINDOW_SORT_ENABLE, +// DoMenuNotify(strip, MEN_WINDOW_VIEW_HIDDEN, MUIA_Menuitem_Checked, +// wanderer_menufunc_window_view_hidden, strip); + DoMenuNotify(strip, MEN_WINDOW_SORT_ENABLE, MUIA_Menuitem_Checked, wanderer_menufunc_window_sort_enable, strip); - DoMenuNotify(strip, MEN_WINDOW_SORT_NAME, + DoMenuNotify(strip, MEN_WINDOW_SORT_NAME, MUIA_Menuitem_Checked, wanderer_menufunc_window_sort_name, strip); - DoMenuNotify(strip, MEN_WINDOW_SORT_TYPE, + DoMenuNotify(strip, MEN_WINDOW_SORT_TYPE, MUIA_Menuitem_Checked, wanderer_menufunc_window_sort_type, strip); - DoMenuNotify(strip, MEN_WINDOW_SORT_DATE, + DoMenuNotify(strip, MEN_WINDOW_SORT_DATE, MUIA_Menuitem_Checked, wanderer_menufunc_window_sort_date, strip); - DoMenuNotify(strip, MEN_WINDOW_SORT_SIZE, + DoMenuNotify(strip, MEN_WINDOW_SORT_SIZE, MUIA_Menuitem_Checked, wanderer_menufunc_window_sort_size, strip); - DoMenuNotify(strip, MEN_WINDOW_SORT_REVERSE, + DoMenuNotify(strip, MEN_WINDOW_SORT_REVERSE, MUIA_Menuitem_Checked, wanderer_menufunc_window_sort_reverse, strip); - DoMenuNotify(strip, MEN_WINDOW_SORT_TOPDRAWERS, + DoMenuNotify(strip, MEN_WINDOW_SORT_TOPDRAWERS, MUIA_Menuitem_Checked, wanderer_menufunc_window_sort_topdrawers, strip); - DoMenuNotify(strip, MEN_ICON_OPEN, + DoMenuNotify(strip, MEN_ICON_OPEN, MUIA_Menuitem_Trigger, wanderer_menufunc_icon_open, NULL); - DoMenuNotify(strip, MEN_ICON_RENAME, + DoMenuNotify(strip, MEN_ICON_RENAME, MUIA_Menuitem_Trigger, wanderer_menufunc_icon_rename, NULL); - DoMenuNotify(strip, MEN_ICON_INFORMATION, + DoMenuNotify(strip, MEN_ICON_INFORMATION, MUIA_Menuitem_Trigger, wanderer_menufunc_icon_information, NULL); - DoMenuNotify(strip, MEN_ICON_SNAPSHOT, + DoMenuNotify(strip, MEN_ICON_SNAPSHOT, MUIA_Menuitem_Trigger, wanderer_menufunc_icon_snapshot, (APTR)TRUE); - DoMenuNotify(strip, MEN_ICON_UNSNAPSHOT, + DoMenuNotify(strip, MEN_ICON_UNSNAPSHOT, MUIA_Menuitem_Trigger, wanderer_menufunc_icon_snapshot, FALSE); - DoMenuNotify(strip, MEN_ICON_LEAVEOUT, + DoMenuNotify(strip, MEN_ICON_LEAVEOUT, MUIA_Menuitem_Trigger, wanderer_menufunc_icon_leaveout, NULL); - DoMenuNotify(strip, MEN_ICON_PUTAWAY, + DoMenuNotify(strip, MEN_ICON_PUTAWAY, MUIA_Menuitem_Trigger, wanderer_menufunc_icon_putaway, NULL); - DoMenuNotify(strip, MEN_ICON_DELETE, + DoMenuNotify(strip, MEN_ICON_DELETE, MUIA_Menuitem_Trigger, wanderer_menufunc_icon_delete, NULL); - DoMenuNotify(strip, MEN_ICON_FORMAT, + DoMenuNotify(strip, MEN_ICON_FORMAT, MUIA_Menuitem_Trigger, wanderer_menufunc_icon_format, NULL); if ((item = FindMenuitem(strip, MEN_WANDERER_BACKDROP))) @@ -2313,7 +2354,7 @@ VOID DoAllMenuNotifies(Object *wanderer, Object *strip, STRPTR path) ///Wanderer__Func_UpdateMenuStates() VOID Wanderer__Func_UpdateMenuStates(Object *WindowObj, Object *IconlistObj) { - IPTR current_DispFlags = 0, current_SortFlags = 0; + IPTR isRoot = 0, current_DispFlags = 0, current_SortFlags = 0; Object *current_Menustrip = NULL, *current_MenuItem = NULL; struct IconList_Entry *icon_entry = (IPTR)MUIV_IconList_NextIcon_Start; int selected_count = 0; @@ -2322,17 +2363,19 @@ VOID Wanderer__Func_UpdateMenuStates(Object *WindowObj, Object *IconlistObj) BOOL icon_men_LeaveOut = FALSE; BOOL icon_men_Format = FALSE; BOOL icon_men_EmptyTrash = FALSE; + BOOL icon_men_IconSort = FALSE; if (IconlistObj == NULL) - return; + return; -D(bug("[Wanderer] Wanderer__Func_UpdateMenuStates(IconList @ %p)\n", IconlistObj)); +D(bug("[Wanderer]: %s(IconList @ %p)\n", __PRETTY_FUNCTION__, IconlistObj)); GET(IconlistObj, MUIA_IconList_SortFlags, ¤t_SortFlags); GET(IconlistObj, MUIA_IconList_DisplayFlags, ¤t_DispFlags); GET(WindowObj, MUIA_Window_Menustrip, ¤t_Menustrip); + GET(WindowObj, MUIA_IconWindow_IsRoot, &isRoot); -D(bug("[Wanderer] Wanderer__Func_UpdateMenuStates: Menu @ %p, Display Flags : %x, Sort Flags : %x\n", current_Menustrip, current_DispFlags, current_SortFlags)); +D(bug("[Wanderer] %s: Menu @ %p, Display Flags : %x, Sort Flags : %x\n", __PRETTY_FUNCTION__, current_Menustrip, current_DispFlags, current_SortFlags)); do { @@ -2340,19 +2383,19 @@ D(bug("[Wanderer] Wanderer__Func_UpdateMenuStates: Menu @ %p, Display Flags : %x if ((IPTR)icon_entry != MUIV_IconList_NextIcon_End) { - if (icon_entry->type == ST_ROOT) + if (isRoot && (icon_entry->type == ST_ROOT)) { -D(bug("[Wanderer] Wanderer__Func_UpdateMenuStates: ST_ROOT\n")); +D(bug("[Wanderer] %s: ST_ROOT\n", __PRETTY_FUNCTION__)); icon_men_Format = TRUE; } - if ((icon_entry->type == ST_LINKDIR) || (icon_entry->type == ST_LINKFILE)) + if (isRoot && ((icon_entry->type == ST_LINKDIR) || (icon_entry->type == ST_LINKFILE))) { -D(bug("[Wanderer] Wanderer__Func_UpdateMenuStates: ST_LINKDIR/ST_LINKFILE\n")); +D(bug("[Wanderer] %s: ST_LINKDIR/ST_LINKFILE\n", __PRETTY_FUNCTION__)); icon_men_PutAway = TRUE; } - if ((icon_entry->type == ST_USERDIR) || (icon_entry->type == ST_FILE)) + if (!(isRoot) && ((icon_entry->type == ST_USERDIR) || (icon_entry->type == ST_FILE))) { -D(bug("[Wanderer] Wanderer__Func_UpdateMenuStates: ST_USERDIR/ST_FILE\n")); +D(bug("[Wanderer] %s: ST_USERDIR/ST_FILE\n", __PRETTY_FUNCTION__)); icon_men_LeaveOut = TRUE; } selected_count++; @@ -2389,7 +2432,7 @@ D(bug("[Wanderer] Wanderer__Func_UpdateMenuStates: ST_USERDIR/ST_FILE\n")); } if ((current_MenuItem = FindMenuitem(current_Menustrip, MEN_ICON_DELETE)) != NULL) { - NNSET(current_MenuItem, MUIA_Menuitem_Enabled, TRUE); + NNSET(current_MenuItem, MUIA_Menuitem_Enabled, icon_men_LeaveOut); } if ((current_MenuItem = FindMenuitem(current_Menustrip, MEN_ICON_FORMAT)) != NULL) { @@ -2461,27 +2504,40 @@ D(bug("[Wanderer] Wanderer__Func_UpdateMenuStates: ST_USERDIR/ST_FILE\n")); } if ((current_MenuItem = FindMenuitem(current_Menustrip, MEN_WINDOW_VIEW_ALL)) != NULL) { - NNSET(current_MenuItem, MUIA_Menuitem_Checked, (BOOL)!(current_DispFlags & ICONLIST_DISP_SHOWINFO)); - } - if ((current_MenuItem = FindMenuitem(current_Menustrip, MEN_WINDOW_VIEW_HIDDEN)) != NULL) - { - NNSET(current_MenuItem, MUIA_Menuitem_Checked, (BOOL)(current_DispFlags & ICONLIST_DISP_SHOWHIDDEN)); + NNSET(current_MenuItem, MUIA_Menuitem_Checked, !(current_DispFlags & ICONLIST_DISP_SHOWINFO) ? TRUE : FALSE); } +// if ((current_MenuItem = FindMenuitem(current_Menustrip, MEN_WINDOW_VIEW_HIDDEN)) != NULL) +// { +// NNSET(current_MenuItem, MUIA_Menuitem_Checked, (current_DispFlags & ICONLIST_DISP_SHOWHIDDEN) ? TRUE : FALSE); +// } if ((current_MenuItem = FindMenuitem(current_Menustrip, MEN_WINDOW_SORT_NAME)) != NULL) { - NNSET(current_MenuItem, MUIA_Menuitem_Checked, (BOOL)((current_SortFlags & ICONLIST_SORT_MASK) == ICONLIST_SORT_BY_NAME)); + NNSET(current_MenuItem, MUIA_Menuitem_Checked, ((current_SortFlags & ICONLIST_SORT_MASK) == ICONLIST_SORT_BY_NAME) ? TRUE : FALSE); } if ((current_MenuItem = FindMenuitem(current_Menustrip, MEN_WINDOW_SORT_DATE)) != NULL) { - NNSET(current_MenuItem, MUIA_Menuitem_Checked, (BOOL)((current_SortFlags & ICONLIST_SORT_MASK) == ICONLIST_SORT_BY_DATE)); + NNSET(current_MenuItem, MUIA_Menuitem_Checked, ((current_SortFlags & ICONLIST_SORT_MASK) == ICONLIST_SORT_BY_DATE) ? TRUE : FALSE); } if ((current_MenuItem = FindMenuitem(current_Menustrip, MEN_WINDOW_SORT_SIZE)) != NULL) { - NNSET(current_MenuItem, MUIA_Menuitem_Checked, (BOOL)((current_SortFlags & ICONLIST_SORT_MASK) == ICONLIST_SORT_BY_SIZE)); + NNSET(current_MenuItem, MUIA_Menuitem_Checked, ((current_SortFlags & ICONLIST_SORT_MASK) == ICONLIST_SORT_BY_SIZE) ? TRUE : FALSE); } if ((current_MenuItem = FindMenuitem(current_Menustrip, MEN_WINDOW_SORT_TYPE)) != NULL) { - NNSET(current_MenuItem, MUIA_Menuitem_Checked, (BOOL)((current_SortFlags & ICONLIST_SORT_MASK) == ICONLIST_SORT_MASK)); + NNSET(current_MenuItem, MUIA_Menuitem_Checked, ((current_SortFlags & ICONLIST_SORT_MASK) == ICONLIST_SORT_MASK) ? TRUE : FALSE); + } + if ((current_MenuItem = FindMenuitem(current_Menustrip, MEN_WINDOW_SORT_ENABLE)) != NULL) + { + if (isRoot) + { + NNSET(current_MenuItem, MUIA_Menuitem_Enabled, FALSE); + } + else + { + NNSET(current_MenuItem, MUIA_Menuitem_Enabled, TRUE); + } + + NNSET(current_MenuItem, MUIA_Menuitem_Checked, ((current_SortFlags & ICONLIST_SORT_MASK) == 0) ? TRUE : FALSE); } } } @@ -2506,15 +2562,15 @@ HOOKPROTO(Wanderer__HookFunc_UpdateMenuStatesFunc, ULONG, struct dCopyStruct *ob Object *window = *( Object **)param; Object *iconlist = NULL; -D(bug("[Wanderer] Wanderer__HookFunc_UpdateMenuStatesFunc(self @ %p, window @ %p)\n", self, window)); +D(bug("[Wanderer]: %s(self @ %p, window @ %p)\n", __PRETTY_FUNCTION__, self, window)); GET(window, MUIA_IconWindow_IconList, &iconlist); -D(bug("[Wanderer] Wanderer__HookFunc_UpdateMenuStatesFunc: iconlist @ %p\n", iconlist)); +D(bug("[Wanderer] %s: iconlist @ %p\n", __PRETTY_FUNCTION__, iconlist)); Wanderer__Func_UpdateMenuStates(window, iconlist); -D(bug("[Wanderer] Wanderer__HookFunc_UpdateMenuStatesFunc: Update Complete.\n")); +D(bug("[Wanderer] %s: Update Complete.\n", __PRETTY_FUNCTION__)); return 0; @@ -2525,12 +2581,12 @@ D(bug("[Wanderer] Wanderer__HookFunc_UpdateMenuStatesFunc: Update Complete.\n")) ///OM_NEW() Object *Wanderer__OM_NEW(Class *CLASS, Object *self, struct opSet *message) { -D(bug("[Wanderer] Wanderer__OM_NEW()\n")); +D(bug("[Wanderer]: %s()\n", __PRETTY_FUNCTION__)); self = (Object *) DoSuperNewTags ( CLASS, self, NULL, - + MUIA_Application_Title, (IPTR) wand_namestr, MUIA_Application_Base, (IPTR) "WANDERER", MUIA_Application_Version, (IPTR) VERSION, @@ -2543,19 +2599,19 @@ D(bug("[Wanderer] Wanderer__OM_NEW()\n")); TAG_MORE, (IPTR) message->ops_AttrList ); - + if (self != NULL) { SETUP_WANDERER_INST_DATA; // ULONG updatedIcons; -D(bug("[Wanderer] Wanderer__OM_NEW: SELF = %d, Private data @ %p\n", self, data)); +D(bug("[Wanderer] %s: Wanderer Obj @ %p, Instance data @ %p\n", __PRETTY_FUNCTION__, self, data)); _WandererIntern_CLASS = CLASS; NewList(&_WandererIntern_FSHandlerList); -D(bug("[Wanderer] Wanderer__OM_NEW: FSHandlerList @ %p\n", &_WandererIntern_FSHandlerList)); +D(bug("[Wanderer] %s: FSHandlerList @ %p\n", __PRETTY_FUNCTION__, &_WandererIntern_FSHandlerList)); #if defined(WANDERER_DEFAULT_BACKDROP) data->wd_Option_BackDropMode = TRUE; @@ -2564,15 +2620,15 @@ D(bug("[Wanderer] Wanderer__OM_NEW: FSHandlerList @ %p\n", &_WandererIntern_FSHa #endif /*-- Setup hooks structures ----------------------------------------*/ - #ifdef __AROS__ +#ifdef __AROS__ _WandererIntern_hook_standard.h_Entry = (HOOKFUNC) Wanderer__HookFunc_StandardFunc; _WandererIntern_hook_action.h_Entry = (HOOKFUNC) Wanderer__HookFunc_ActionFunc; _WandererIntern_hook_backdrop.h_Entry = (HOOKFUNC) Wanderer__HookFunc_BackdropFunc; - #else - _WandererIntern_hook_standard = &Hook_StandardFunc; +#else + _WandererIntern_hook_standard = &Hook_StandardFunc; _WandererIntern_hook_action = &Hook_ActionFunc; _WandererIntern_hook_backdrop = &Hook_BackdropFunc; - #endif +#endif // --- if ((data->wd_CommandPort = CreateMsgPort()) == NULL) @@ -2580,13 +2636,13 @@ D(bug("[Wanderer] Wanderer__OM_NEW: FSHandlerList @ %p\n", &_WandererIntern_FSHa CoerceMethod(CLASS, self, OM_DISPOSE); return NULL; } - + if ((data->wd_NotifyPort = CreateMsgPort()) == NULL) { CoerceMethod(CLASS, self, OM_DISPOSE); return NULL; } - + RegisterWorkbench(data->wd_CommandPort); /* Setup command port handler --------------------------------------*/ @@ -2633,11 +2689,11 @@ D(bug("[Wanderer] Wanderer__OM_NEW: FSHandlerList @ %p\n", &_WandererIntern_FSHa if (data->wd_Prefs) { -D(bug("[Wanderer] Wanderer__OM_NEW: Prefs-Screentitle = '%s'\n",XGET(data->wd_Prefs, MUIA_IconWindowExt_ScreenTitle_String))); +D(bug("[Wanderer] %s: Prefs-Screentitle = '%s'\n", __PRETTY_FUNCTION__, XGET(data->wd_Prefs, MUIA_IconWindowExt_ScreenTitle_String))); data->wd_PrefsIntern = InitWandererPrefs(); } } -D(bug("[Wanderer] obj = %ld\n", self)); +D(bug("[Wanderer] %s: WandererObj @ %p\n", __PRETTY_FUNCTION__, self)); return self; } /// @@ -2646,29 +2702,27 @@ D(bug("[Wanderer] obj = %ld\n", self)); IPTR Wanderer__OM_DISPOSE(Class *CLASS, Object *self, Msg message) { SETUP_WANDERER_INST_DATA; - + if (data->wd_CommandPort) { - /* - They only have been added if the creation of the msg port was - successful - */ + /* InputHandler's have only been added if the creation + of the msg port was successful */ DoMethod(self, MUIM_Application_RemInputHandler, (IPTR) &data->wd_TimerIHN); DoMethod(self, MUIM_Application_RemInputHandler, (IPTR) &data->wd_CommandIHN); DoMethod(self, MUIM_Application_RemInputHandler, (IPTR) &data->wd_NotifyIHN); - + UnregisterWorkbench(data->wd_CommandPort); - + DeleteMsgPort(data->wd_NotifyPort); data->wd_NotifyPort = NULL; - + DeleteMsgPort(data->wd_CommandPort); data->wd_CommandPort = NULL; - + DisposeObject(data->wd_Prefs); data->wd_Prefs = NULL; } - + return DoSuperMethodA(CLASS, self, (Msg) message); } /// @@ -2684,29 +2738,29 @@ IPTR Wanderer__OM_SET(Class *CLASS, Object *self, struct opSet *message) switch (tag->ti_Tag) { case MUIA_Wanderer_Screen: -D(bug("[Wanderer] Wanderer__OM_SET: MUIA_Wanderer_Screen = %p\n", tag->ti_Data)); -D(bug("[Wanderer] Wanderer__OM_SET: setting MUIA_Wanderer_Screen isnt yet handled!\n")); - break; +D(bug("[Wanderer] %s: MUIA_Wanderer_Screen = %p\n", __PRETTY_FUNCTION__, tag->ti_Data)); +D(bug("[Wanderer] %s: setting MUIA_Wanderer_Screen isnt yet handled!\n", __PRETTY_FUNCTION__)); + break; case MUIA_Wanderer_ActiveWindow: - data->wd_ActiveWindow = (Object *) tag->ti_Data; -D(bug("[Wanderer] Wanderer__OM_SET: MUIA_Wanderer_ActiveWindow = %p\n", tag->ti_Data)); - if (!(XGET(data->wd_ActiveWindow, MUIA_Window_Activate))) - { - NNSET(data->wd_ActiveWindow, MUIA_Window_Activate, TRUE); - } - Object *activatewin_Iconlist = NULL; - - GET(data->wd_ActiveWindow, MUIA_IconWindow_IconList, &activatewin_Iconlist); - Wanderer__Func_UpdateMenuStates(data->wd_ActiveWindow, activatewin_Iconlist); - break; - + data->wd_ActiveWindow = (Object *) tag->ti_Data; +D(bug("[Wanderer] %s: MUIA_Wanderer_ActiveWindow = %p\n", __PRETTY_FUNCTION__, tag->ti_Data)); + if (!(XGET(data->wd_ActiveWindow, MUIA_Window_Activate))) + { + NNSET(data->wd_ActiveWindow, MUIA_Window_Activate, TRUE); + } + Object *activatewin_Iconlist = NULL; + + GET(data->wd_ActiveWindow, MUIA_IconWindow_IconList, &activatewin_Iconlist); + Wanderer__Func_UpdateMenuStates(data->wd_ActiveWindow, activatewin_Iconlist); + break; + case MUIA_Application_Iconified: /* Wanderer itself cannot be iconified, - just hide, instead. */ + just hide, instead. */ tag->ti_Tag = MUIA_ShowMe; tag->ti_Data = !tag->ti_Data; - break; + break; } } @@ -2758,7 +2812,7 @@ IPTR Wanderer__OM_GET(Class *CLASS, Object *self, struct opGet *message) default: rv = DoSuperMethodA(CLASS, self, (Msg) message); } - + return rv; } /// @@ -2776,40 +2830,38 @@ IPTR Wanderer__MUIM_Application_Execute ) { SETUP_WANDERER_INST_DATA; - -D(bug("[Wanderer] Wanderer__MUIM_Application_Execute() ##\n[Wanderer] Wanderer__MUIM_Application_Execute: Creating 'Workbench' Window..\n")); + +D(bug("[Wanderer] %s() ##\n[Wanderer] %s: Creating 'Workbench' Window..\n", __PRETTY_FUNCTION__, __PRETTY_FUNCTION__)); data->wd_WorkbenchWindow = (Object *) DoMethod ( self, MUIM_Wanderer_CreateDrawerWindow, (IPTR) NULL ); - + if (data->wd_WorkbenchWindow != NULL) { -D(bug("[Wanderer] Wanderer__MUIM_Application_Execute: Workbench Window Obj @ %x\n", data->wd_WorkbenchWindow)); +D(bug("[Wanderer] %s: Workbench Window Obj @ %x\n", __PRETTY_FUNCTION__, data->wd_WorkbenchWindow)); Detach(); -D(bug("[Wanderer] Wanderer__MUIM_Application_Execute: Really handing control to Zune ..\n")); +D(bug("[Wanderer] %s: Really handing control to Zune ..\n", __PRETTY_FUNCTION__)); - #ifdef __AROS__ +#ifdef __AROS__ DoSuperMethodA(CLASS, self, message); - #else +#else { - IPTR sigs = 0; - while (DoMethod(self,MUIM_Application_NewInput,&sigs) != MUIV_Application_ReturnID_Quit) - { - if (sigs) + IPTR sigs = 0; + while (DoMethod(self,MUIM_Application_NewInput,&sigs) != MUIV_Application_ReturnID_Quit) { - sigs = Wait(sigs | SIGBREAKF_CTRL_C); - if (sigs & SIGBREAKF_CTRL_C) break; + if (sigs) + { + sigs = Wait(sigs | SIGBREAKF_CTRL_C); + if (sigs & SIGBREAKF_CTRL_C) break; + } } - } - - return 0; + return 0; } - #endif - +#endif return RETURN_OK; } @@ -2879,11 +2931,11 @@ D(bug("[Wanderer] %s: Couldnt Lock WB Screen!!\n", __PRETTY_FUNCTION__)); D(bug("[Wanderer] %s: WBHM_TYPE_HIDE\n", __PRETTY_FUNCTION__)); pub_screen_list = LockPubScreenList(); - #ifdef __AROS__ +#ifdef __AROS__ ForeachNode (pub_screen_list, pub_screen_node) - #else - Foreach_Node(pub_screen_list, pub_screen_node); - #endif +#else + Foreach_Node(pub_screen_list, pub_screen_node); +#endif { if (pub_screen_node->psn_Screen == data->wd_Screen) visitor_count = pub_screen_node->psn_VisitorCount; @@ -3004,11 +3056,11 @@ IPTR Wanderer__MUIM_Wanderer_HandleNotify { struct NotifyMessage *notifyMessage = (struct NotifyMessage *) plainMessage; IPTR notifyMessage_UserData = notifyMessage->nm_NReq->nr_UserData; -D(bug("[Wanderer] Wanderer__MUIM_Wanderer_HandleNotify: got FS notification ('%s' @ 0x%p) userdata = 0x%p!\n", notifyMessage->nm_NReq->nr_Name, notifyMessage, notifyMessage_UserData)); +D(bug("[Wanderer] %s: got FS notification ('%s' @ 0x%p) userdata = 0x%p!\n", __PRETTY_FUNCTION__, notifyMessage->nm_NReq->nr_Name, notifyMessage, notifyMessage_UserData)); if (notifyMessage_UserData != (IPTR) NULL) { -D(bug("[Wanderer] Wanderer__MUIM_Wanderer_HandleNotify: Drawer Window contents changed .. Updating\n")); +D(bug("[Wanderer] %s: Drawer Window contents changed .. Updating\n", __PRETTY_FUNCTION__)); DoMethod((Object *)notifyMessage_UserData, MUIM_IconList_Update); } @@ -3017,7 +3069,7 @@ D(bug("[Wanderer] Wanderer__MUIM_Wanderer_HandleNotify: Drawer Window contents c if ((notifyMessage_UserData == (IPTR)NULL) && (strcmp(notifyMessage->nm_NReq->nr_Name, nodeFSHandler->fshn_Node.ln_Name) == 0)) { /* reload prefs file */ -D(bug("[Wanderer] Wanderer__MUIM_Wanderer_HandleNotify: Wanderer Prefs-File Changed .. Reloading\n")); +D(bug("[Wanderer] %s: Wanderer Prefs-File Changed .. Reloading\n", __PRETTY_FUNCTION__)); nodeFSHandler->HandleFSUpdate(); } @@ -3045,60 +3097,59 @@ Object * Wanderer__Func_CreateWandererIntuitionMenu( BOOL isRoot, BOOL isBackdro if ( isRoot ) { struct NewMenu nm[] = { - {NM_TITLE, _(MSG_MEN_WANDERER)}, - {NM_ITEM, _(MSG_MEN_BACKDROP),_(MSG_MEN_SC_BACKDROP), _NewWandIntMenu__OPTION_BACKDROP , 0, (APTR) MEN_WANDERER_BACKDROP}, - {NM_ITEM, _(MSG_MEN_EXECUTE), _(MSG_MEN_SC_EXECUTE), 0 , 0, (APTR) MEN_WANDERER_EXECUTE}, - - {NM_ITEM, _(MSG_MEN_SHELL), _(MSG_MEN_SC_SHELL) , 0 , 0, (APTR) MEN_WANDERER_SHELL}, + {NM_TITLE, _(MSG_MEN_WANDERER) }, + {NM_ITEM, _(MSG_MEN_BACKDROP), _(MSG_MEN_SC_BACKDROP) , _NewWandIntMenu__OPTION_BACKDROP , 0, (APTR) MEN_WANDERER_BACKDROP }, + {NM_ITEM, _(MSG_MEN_EXECUTE), _(MSG_MEN_SC_EXECUTE) , 0 , 0, (APTR) MEN_WANDERER_EXECUTE }, + {NM_ITEM, _(MSG_MEN_SHELL), _(MSG_MEN_SC_SHELL) , 0 , 0, (APTR) MEN_WANDERER_SHELL }, #if defined(__AROS__) - {NM_ITEM, "AROS"}, - {NM_SUB, _(MSG_MEN_ABOUT), NULL , 0 , 0, (APTR) MEN_WANDERER_AROS_ABOUT}, - {NM_SUB, _(MSG_MEN_GUISET), NULL , 0 , 0, (APTR) MEN_WANDERER_AROS_GUISETTINGS}, + {NM_ITEM, "AROS" }, + {NM_SUB, _(MSG_MEN_ABOUT), NULL , 0 , 0, (APTR) MEN_WANDERER_AROS_ABOUT }, + {NM_SUB, _(MSG_MEN_GUISET), NULL , 0 , 0, (APTR) MEN_WANDERER_AROS_GUISETTINGS }, #endif - {NM_ITEM, _(MSG_MEN_ABOUT), NULL , 0 , 0, (APTR) MEN_WANDERER_ABOUT}, - {NM_ITEM, _(MSG_MEN_QUIT) , _(MSG_MEN_SC_QUIT) , 0 , 0, (APTR) MEN_WANDERER_QUIT}, - {NM_ITEM, _(MSG_MEN_SHUTDOWN), NULL , 0 , 0, (APTR) MEN_WANDERER_SHUTDOWN}, - {NM_TITLE, _(MSG_MEN_WINDOW), NULL, 0}, - {NM_ITEM, _(MSG_MEN_UPDATE), NULL , 0 , 0, (APTR) MEN_WINDOW_UPDATE}, - {NM_ITEM, NM_BARLABEL}, - {NM_ITEM, _(MSG_MEN_CONTENTS), _(MSG_MEN_SC_CONTENTS), 0 , 0, (APTR) MEN_WINDOW_SELECT}, - {NM_ITEM, _(MSG_MEN_CLRSEL), _(MSG_MEN_SC_CLRSEL) , 0 , 0, (APTR) MEN_WINDOW_CLEAR}, - {NM_ITEM, NM_BARLABEL}, - {NM_ITEM, _(MSG_MEN_SNAPSHT) }, - {NM_SUB, _(MSG_MEN_WINDOW), NULL , 0 , 0, (APTR) MEN_WINDOW_SNAP_WIN}, - {NM_SUB, _(MSG_MEN_ALL), NULL , 0 , 0, (APTR) MEN_WINDOW_SNAP_ALL}, - {NM_ITEM, NM_BARLABEL}, - {NM_ITEM, _(MSG_MEN_VIEW)}, - {NM_SUB, _(MSG_MEN_ICVIEW), NULL , CHECKIT|CHECKED , ~1, (APTR) MEN_WINDOW_VIEW_ICON}, - {NM_SUB, _(MSG_MEN_DCVIEW), NULL , CHECKIT , ~2, (APTR) MEN_WINDOW_VIEW_DETAIL}, - {NM_SUB, NM_BARLABEL}, - {NM_SUB, _(MSG_MEN_ALLFIL), NULL , _NewWandIntMenu__OPTION_SHOWALL , 0, (APTR) MEN_WINDOW_VIEW_ALL}, - {NM_ITEM, _(MSG_MEN_SORTIC)}, - {NM_SUB, _(MSG_MEN_CLNUP), _(MSG_MEN_SC_CLNUP) , 0 , 0, (APTR) MEN_WINDOW_SORT_NOW}, - {NM_SUB, "Enable Icon Sorting", NULL , CHECKIT|MENUTOGGLE|CHECKED|ITEMENABLED , 0, (APTR) MEN_WINDOW_SORT_ENABLE}, - {NM_SUB, NM_BARLABEL}, - {NM_SUB, _(MSG_MEN_BYNAME), NULL , CHECKIT|MENUTOGGLE , ~1, (APTR) MEN_WINDOW_SORT_NAME}, - {NM_SUB, _(MSG_MEN_BYDATE), NULL , CHECKIT|MENUTOGGLE , ~2, (APTR) MEN_WINDOW_SORT_DATE}, - {NM_SUB, _(MSG_MEN_BYSIZE), NULL , CHECKIT|MENUTOGGLE , ~3, (APTR) MEN_WINDOW_SORT_SIZE}, - {NM_SUB, _(MSG_MEN_BYTYPE), NULL , CHECKIT|MENUTOGGLE , ~4, (APTR) MEN_WINDOW_SORT_TYPE}, - {NM_SUB, NM_BARLABEL}, - {NM_SUB, _(MSG_MEN_REVERSE), NULL , CHECKIT|MENUTOGGLE , 0, (APTR) MEN_WINDOW_SORT_REVERSE}, - {NM_SUB, _(MSG_MEN_DRWFRST), NULL , CHECKIT|MENUTOGGLE|ITEMENABLED , 0, (APTR) MEN_WINDOW_SORT_TOPDRAWERS}, - //{NM_SUB, "Group Icons", NULL , CHECKIT|MENUTOGGLE|CHECKED, 0, (APTR) MEN_WINDOW_SORT_GROUP}, - {NM_TITLE, _(MSG_MEN_ICON), NULL, 0}, - {NM_ITEM, _(MSG_MEN_OPEN), _(MSG_MEN_SC_OPEN) , ITEMENABLED, 0, (APTR) MEN_ICON_OPEN}, - //{NM_ITEM, "Close","C" }, - {NM_ITEM, _(MSG_MEN_RENAME), _(MSG_MEN_SC_RENAME) , ITEMENABLED, 0, (APTR) MEN_ICON_RENAME}, - {NM_ITEM, _(MSG_MEN_INFO), _(MSG_MEN_SC_INFO) , ITEMENABLED, 0, (APTR) MEN_ICON_INFORMATION}, - {NM_ITEM, _(MSG_SNAPSHOT), "S" , ITEMENABLED, 0, (APTR) MEN_ICON_SNAPSHOT}, - {NM_ITEM, _(MSG_UNSNAPSHOT), "U" , ITEMENABLED, 0, (APTR) MEN_ICON_UNSNAPSHOT}, - {NM_ITEM, _(MSG_LEAVE_OUT), "L" , ITEMENABLED, 0, (APTR) MEN_ICON_LEAVEOUT}, - {NM_ITEM, _(MSG_PUT_AWAY), "P" , ITEMENABLED, 0, (APTR) MEN_ICON_PUTAWAY}, - {NM_ITEM, NM_BARLABEL}, - {NM_ITEM, _(MSG_MEN_DELETE), NULL , ITEMENABLED, 0, (APTR) MEN_ICON_DELETE}, - {NM_ITEM, _(MSG_MEN_FORMAT), NULL , ITEMENABLED, 0, (APTR) MEN_ICON_FORMAT}, - {NM_ITEM, _(MSG_EMPTY_TRASH), NULL , ITEMENABLED}, - {NM_TITLE, _(MSG_MEN_TOOLS), NULL, 0}, + {NM_ITEM, _(MSG_MEN_ABOUT), NULL , 0 , 0, (APTR) MEN_WANDERER_ABOUT }, + {NM_ITEM, _(MSG_MEN_QUIT) , _(MSG_MEN_SC_QUIT) , 0 , 0, (APTR) MEN_WANDERER_QUIT }, + {NM_ITEM, _(MSG_MEN_SHUTDOWN), NULL , 0 , 0, (APTR) MEN_WANDERER_SHUTDOWN }, + {NM_TITLE, _(MSG_MEN_WINDOW), NULL , 0 }, + {NM_ITEM, _(MSG_MEN_UPDATE), NULL , 0 , 0, (APTR) MEN_WINDOW_UPDATE }, + {NM_ITEM, NM_BARLABEL }, + {NM_ITEM, _(MSG_MEN_CONTENTS), _(MSG_MEN_SC_CONTENTS) , 0 , 0, (APTR) MEN_WINDOW_SELECT }, + {NM_ITEM, _(MSG_MEN_CLRSEL), _(MSG_MEN_SC_CLRSEL) , 0 , 0, (APTR) MEN_WINDOW_CLEAR }, + {NM_ITEM, NM_BARLABEL }, + {NM_ITEM, _(MSG_MEN_SNAPSHT) }, + {NM_SUB, _(MSG_MEN_WINDOW), NULL , 0 , 0, (APTR) MEN_WINDOW_SNAP_WIN }, + {NM_SUB, _(MSG_MEN_ALL), NULL , 0 , 0, (APTR) MEN_WINDOW_SNAP_ALL }, + {NM_ITEM, NM_BARLABEL }, + {NM_ITEM, _(MSG_MEN_VIEW) }, + {NM_SUB, _(MSG_MEN_ICVIEW), NULL , CHECKIT|CHECKED , ~0x1, (APTR) MEN_WINDOW_VIEW_ICON }, + {NM_SUB, _(MSG_MEN_DCVIEW), NULL , CHECKIT , ~0x2, (APTR) MEN_WINDOW_VIEW_DETAIL }, + {NM_SUB, NM_BARLABEL }, + {NM_SUB, _(MSG_MEN_ALLFIL), NULL , _NewWandIntMenu__OPTION_SHOWALL , 0, (APTR) MEN_WINDOW_VIEW_ALL }, + {NM_ITEM, _(MSG_MEN_SORTIC) }, + {NM_SUB, _(MSG_MEN_CLNUP), _(MSG_MEN_SC_CLNUP) , 0 , 0, (APTR) MEN_WINDOW_SORT_NOW }, + {NM_SUB, "Enable Icon Sorting", NULL , CHECKIT|MENUTOGGLE|CHECKED|ITEMENABLED , 0, (APTR) MEN_WINDOW_SORT_ENABLE }, + {NM_SUB, NM_BARLABEL }, + {NM_SUB, _(MSG_MEN_BYNAME), NULL , CHECKIT|MENUTOGGLE , ~0x4, (APTR) MEN_WINDOW_SORT_NAME }, + {NM_SUB, _(MSG_MEN_BYDATE), NULL , CHECKIT|MENUTOGGLE , ~0x8, (APTR) MEN_WINDOW_SORT_DATE }, + {NM_SUB, _(MSG_MEN_BYSIZE), NULL , CHECKIT|MENUTOGGLE , ~0x10, (APTR) MEN_WINDOW_SORT_SIZE }, + {NM_SUB, _(MSG_MEN_BYTYPE), NULL , CHECKIT|MENUTOGGLE , ~0x20, (APTR) MEN_WINDOW_SORT_TYPE }, + {NM_SUB, NM_BARLABEL }, + {NM_SUB, _(MSG_MEN_REVERSE), NULL , CHECKIT|MENUTOGGLE , 0, (APTR) MEN_WINDOW_SORT_REVERSE }, + {NM_SUB, _(MSG_MEN_DRWFRST), NULL , CHECKIT|MENUTOGGLE|ITEMENABLED , 0, (APTR) MEN_WINDOW_SORT_TOPDRAWERS }, + {NM_SUB, "Group Icons", NULL , CHECKIT|MENUTOGGLE|CHECKED , 0, (APTR) MEN_WINDOW_SORT_GROUP }, + {NM_TITLE, _(MSG_MEN_ICON), NULL , 0 }, + {NM_ITEM, _(MSG_MEN_OPEN), _(MSG_MEN_SC_OPEN) , ITEMENABLED , 0, (APTR) MEN_ICON_OPEN }, + {NM_ITEM, "Close","C" }, + {NM_ITEM, _(MSG_MEN_RENAME), _(MSG_MEN_SC_RENAME) , ITEMENABLED , 0, (APTR) MEN_ICON_RENAME }, + {NM_ITEM, _(MSG_MEN_INFO), _(MSG_MEN_SC_INFO) , ITEMENABLED , 0, (APTR) MEN_ICON_INFORMATION }, + {NM_ITEM, _(MSG_SNAPSHOT), "S" , ITEMENABLED , 0, (APTR) MEN_ICON_SNAPSHOT }, + {NM_ITEM, _(MSG_UNSNAPSHOT), "U" , ITEMENABLED , 0, (APTR) MEN_ICON_UNSNAPSHOT }, + {NM_ITEM, _(MSG_LEAVE_OUT), "L" , ITEMENABLED , 0, (APTR) MEN_ICON_LEAVEOUT }, + {NM_ITEM, _(MSG_PUT_AWAY), "P" , ITEMENABLED , 0, (APTR) MEN_ICON_PUTAWAY }, + {NM_ITEM, NM_BARLABEL }, + {NM_ITEM, _(MSG_MEN_DELETE), NULL , ITEMENABLED , 0, (APTR) MEN_ICON_DELETE }, + {NM_ITEM, _(MSG_MEN_FORMAT), NULL , ITEMENABLED , 0, (APTR) MEN_ICON_FORMAT }, + {NM_ITEM, _(MSG_EMPTY_TRASH), NULL , ITEMENABLED }, + {NM_TITLE, _(MSG_MEN_TOOLS), NULL , 0 }, {NM_END} }; _NewWandIntMenu__menustrip = MUI_MakeObject(MUIO_MenustripNM, nm, (IPTR) NULL); @@ -3106,67 +3157,63 @@ Object * Wanderer__Func_CreateWandererIntuitionMenu( BOOL isRoot, BOOL isBackdro else { struct NewMenu nm[] = { - {NM_TITLE, _(MSG_MEN_WANDERER)}, - {NM_ITEM, _(MSG_MEN_BACKDROP),_(MSG_MEN_SC_BACKDROP), _NewWandIntMenu__OPTION_BACKDROP, 0, (APTR) MEN_WANDERER_BACKDROP}, - {NM_ITEM, _(MSG_MEN_EXECUTE), _(MSG_MEN_SC_EXECUTE) , 0 , 0, (APTR) MEN_WANDERER_EXECUTE}, - - {NM_ITEM, _(MSG_MEN_SHELL), _(MSG_MEN_SC_SHELL) , 0 , 0, (APTR) MEN_WANDERER_SHELL}, + {NM_TITLE, _(MSG_MEN_WANDERER) }, + {NM_ITEM, _(MSG_MEN_BACKDROP), _(MSG_MEN_SC_BACKDROP) , _NewWandIntMenu__OPTION_BACKDROP , 0, (APTR) MEN_WANDERER_BACKDROP }, + {NM_ITEM, _(MSG_MEN_EXECUTE), _(MSG_MEN_SC_EXECUTE) , 0 , 0, (APTR) MEN_WANDERER_EXECUTE }, + {NM_ITEM, _(MSG_MEN_SHELL), _(MSG_MEN_SC_SHELL) , 0 , 0, (APTR) MEN_WANDERER_SHELL }, #if defined(__AROS__) - {NM_ITEM, "AROS"}, - {NM_SUB, _(MSG_MEN_ABOUT), NULL , 0 , 0, (APTR) MEN_WANDERER_AROS_ABOUT}, - {NM_SUB, _(MSG_MEN_GUISET), NULL , 0 , 0, (APTR) MEN_WANDERER_AROS_GUISETTINGS}, + {NM_ITEM, "AROS" }, + {NM_SUB, _(MSG_MEN_ABOUT), NULL , 0 , 0, (APTR) MEN_WANDERER_AROS_ABOUT }, + {NM_SUB, _(MSG_MEN_GUISET), NULL , 0 , 0, (APTR) MEN_WANDERER_AROS_GUISETTINGS }, #endif - {NM_ITEM, _(MSG_MEN_ABOUT), NULL , 0 , 0, (APTR) MEN_WANDERER_ABOUT}, - {NM_ITEM, _(MSG_MEN_QUIT) , _(MSG_MEN_SC_QUIT) , 0 , 0, (APTR) MEN_WANDERER_QUIT}, - {NM_ITEM, _(MSG_MEN_SHUTDOWN), NULL , 0 , 0, (APTR) MEN_WANDERER_SHUTDOWN}, - - {NM_TITLE, _(MSG_MEN_WINDOW), NULL, 0}, - - {NM_ITEM, _(MSG_MEN_NEWDRAW), _(MSG_MEN_SC_NEWDRAW) , 0 , 0, (APTR) MEN_WINDOW_NEW_DRAWER}, - {NM_ITEM, _(MSG_MEN_OPENPAR), NULL , 0 , 0, (APTR) MEN_WINDOW_OPEN_PARENT}, - {NM_ITEM, _(MSG_MEN_CLOSE), _(MSG_MEN_SC_CLOSE) , 0 , 0, (APTR) MEN_WINDOW_CLOSE}, - {NM_ITEM, _(MSG_MEN_UPDATE), NULL , 0 , 0, (APTR) MEN_WINDOW_UPDATE}, - {NM_ITEM, NM_BARLABEL}, - {NM_ITEM, _(MSG_MEN_CONTENTS), _(MSG_MEN_SC_CONTENTS), 0 , 0, (APTR) MEN_WINDOW_SELECT}, - {NM_ITEM, _(MSG_MEN_CLRSEL), _(MSG_MEN_SC_CLRSEL) , 0 , 0, (APTR) MEN_WINDOW_CLEAR}, - {NM_ITEM, NM_BARLABEL}, - {NM_ITEM, _(MSG_MEN_SNAPSHT) }, - {NM_SUB, _(MSG_MEN_WINDOW), NULL , 0 , 0, (APTR) MEN_WINDOW_SNAP_WIN}, - {NM_SUB, _(MSG_MEN_ALL), NULL , 0 , 0, (APTR) MEN_WINDOW_SNAP_ALL}, - {NM_ITEM, NM_BARLABEL}, - {NM_ITEM, _(MSG_MEN_VIEW)}, - {NM_SUB, _(MSG_MEN_ICVIEW), NULL , CHECKIT|CHECKED ,~1, (APTR) MEN_WINDOW_VIEW_ICON}, - {NM_SUB, _(MSG_MEN_DCVIEW), NULL , CHECKIT ,~2, (APTR) MEN_WINDOW_VIEW_DETAIL}, - {NM_SUB, NM_BARLABEL}, - {NM_SUB, _(MSG_MEN_ALLFIL), NULL , _NewWandIntMenu__OPTION_SHOWALL, 0, (APTR) MEN_WINDOW_VIEW_ALL}, - {NM_ITEM, _(MSG_MEN_SORTIC)}, - {NM_SUB, _(MSG_MEN_CLNUP), _(MSG_MEN_SC_CLNUP) , 0 , 0, (APTR) MEN_WINDOW_SORT_NOW}, - {NM_SUB, "Enable Icon Sorting", NULL , CHECKIT|MENUTOGGLE|CHECKED , 0, (APTR) MEN_WINDOW_SORT_ENABLE}, - {NM_SUB, NM_BARLABEL}, - {NM_SUB, _(MSG_MEN_BYNAME), NULL , CHECKIT|MENUTOGGLE , ~1, (APTR) MEN_WINDOW_SORT_NAME}, - {NM_SUB, _(MSG_MEN_BYDATE), NULL , CHECKIT|MENUTOGGLE , ~2, (APTR) MEN_WINDOW_SORT_DATE}, - {NM_SUB, _(MSG_MEN_BYSIZE), NULL , CHECKIT|MENUTOGGLE , ~3, (APTR) MEN_WINDOW_SORT_SIZE}, - {NM_SUB, _(MSG_MEN_BYTYPE), NULL , CHECKIT|MENUTOGGLE|ITEMENABLED , ~4, (APTR) MEN_WINDOW_SORT_TYPE}, - {NM_SUB, NM_BARLABEL}, - {NM_SUB, _(MSG_MEN_REVERSE), NULL , CHECKIT|MENUTOGGLE , 0, (APTR) MEN_WINDOW_SORT_REVERSE}, - {NM_SUB, _(MSG_MEN_DRWFRST), NULL , CHECKIT|MENUTOGGLE|CHECKED, 0, (APTR) MEN_WINDOW_SORT_TOPDRAWERS}, - //{NM_SUB, "Group Icons", NULL, CHECKIT|MENUTOGGLE|CHECKED, 0, (APTR) MEN_WINDOW_SORT_GROUP}, - {NM_TITLE, _(MSG_MEN_ICON), NULL, 0}, - {NM_ITEM, _(MSG_MEN_OPEN), _(MSG_MEN_SC_OPEN) , ITEMENABLED, 0, (APTR) MEN_ICON_OPEN}, - // {NM_ITEM, "Close","C" }, - {NM_ITEM, _(MSG_MEN_RENAME), _(MSG_MEN_SC_RENAME) , ITEMENABLED, 0, (APTR) MEN_ICON_RENAME}, - {NM_ITEM, _(MSG_MEN_INFO), _(MSG_MEN_SC_INFO) , ITEMENABLED, 0, (APTR) MEN_ICON_INFORMATION}, - {NM_ITEM, _(MSG_SNAPSHOT), "S" , ITEMENABLED, 0, (APTR) MEN_ICON_SNAPSHOT}, - {NM_ITEM, _(MSG_UNSNAPSHOT), "U" , ITEMENABLED, 0, (APTR) MEN_ICON_UNSNAPSHOT}, - {NM_ITEM, _(MSG_LEAVE_OUT), "L" , ITEMENABLED, 0, (APTR) MEN_ICON_LEAVEOUT}, - {NM_ITEM, _(MSG_PUT_AWAY), "P" , ITEMENABLED, 0, (APTR) MEN_ICON_PUTAWAY}, - {NM_ITEM, NM_BARLABEL}, - {NM_ITEM, _(MSG_MEN_DELETE), NULL , ITEMENABLED, 0, (APTR) MEN_ICON_DELETE}, - {NM_ITEM, _(MSG_MEN_FORMAT), NULL , ITEMENABLED}, - {NM_ITEM, _(MSG_EMPTY_TRASH),NULL , ITEMENABLED}, - - {NM_TITLE, _(MSG_MEN_TOOLS), NULL, 0}, - {NM_END} + {NM_ITEM, _(MSG_MEN_ABOUT), NULL , 0 , 0, (APTR) MEN_WANDERER_ABOUT }, + {NM_ITEM, _(MSG_MEN_QUIT) , _(MSG_MEN_SC_QUIT) , 0 , 0, (APTR) MEN_WANDERER_QUIT }, + {NM_ITEM, _(MSG_MEN_SHUTDOWN), NULL , 0 , 0, (APTR) MEN_WANDERER_SHUTDOWN }, + {NM_TITLE, _(MSG_MEN_WINDOW), NULL , 0 }, + {NM_ITEM, _(MSG_MEN_NEWDRAW), _(MSG_MEN_SC_NEWDRAW) , 0 , 0, (APTR) MEN_WINDOW_NEW_DRAWER }, + {NM_ITEM, _(MSG_MEN_OPENPAR), NULL , 0 , 0, (APTR) MEN_WINDOW_OPEN_PARENT }, + {NM_ITEM, _(MSG_MEN_CLOSE), _(MSG_MEN_SC_CLOSE) , 0 , 0, (APTR) MEN_WINDOW_CLOSE }, + {NM_ITEM, _(MSG_MEN_UPDATE), NULL , 0 , 0, (APTR) MEN_WINDOW_UPDATE }, + {NM_ITEM, NM_BARLABEL}, + {NM_ITEM, _(MSG_MEN_CONTENTS), _(MSG_MEN_SC_CONTENTS) , 0 , 0, (APTR) MEN_WINDOW_SELECT }, + {NM_ITEM, _(MSG_MEN_CLRSEL), _(MSG_MEN_SC_CLRSEL) , 0 , 0, (APTR) MEN_WINDOW_CLEAR }, + {NM_ITEM, NM_BARLABEL }, + {NM_ITEM, _(MSG_MEN_SNAPSHT) }, + {NM_SUB, _(MSG_MEN_WINDOW), NULL , 0 , 0, (APTR) MEN_WINDOW_SNAP_WIN }, + {NM_SUB, _(MSG_MEN_ALL), NULL , 0 , 0, (APTR) MEN_WINDOW_SNAP_ALL }, + {NM_ITEM, NM_BARLABEL }, + {NM_ITEM, _(MSG_MEN_VIEW)}, + {NM_SUB, _(MSG_MEN_ICVIEW), NULL , CHECKIT|CHECKED ,~0x1, (APTR) MEN_WINDOW_VIEW_ICON }, + {NM_SUB, _(MSG_MEN_DCVIEW), NULL , CHECKIT ,~0x2, (APTR) MEN_WINDOW_VIEW_DETAIL }, + {NM_SUB, NM_BARLABEL }, + {NM_SUB, _(MSG_MEN_ALLFIL), NULL , _NewWandIntMenu__OPTION_SHOWALL , 0, (APTR) MEN_WINDOW_VIEW_ALL }, + {NM_ITEM, _(MSG_MEN_SORTIC)}, + {NM_SUB, _(MSG_MEN_CLNUP), _(MSG_MEN_SC_CLNUP) , 0 , 0, (APTR) MEN_WINDOW_SORT_NOW }, + {NM_SUB, "Enable Icon Sorting", NULL , CHECKIT|MENUTOGGLE|CHECKED , 0, (APTR) MEN_WINDOW_SORT_ENABLE }, + {NM_SUB, NM_BARLABEL }, + {NM_SUB, _(MSG_MEN_BYNAME), NULL , CHECKIT|MENUTOGGLE , ~0x4, (APTR) MEN_WINDOW_SORT_NAME }, + {NM_SUB, _(MSG_MEN_BYDATE), NULL , CHECKIT|MENUTOGGLE , ~0x8, (APTR) MEN_WINDOW_SORT_DATE }, + {NM_SUB, _(MSG_MEN_BYSIZE), NULL , CHECKIT|MENUTOGGLE , ~0x10, (APTR) MEN_WINDOW_SORT_SIZE }, + {NM_SUB, _(MSG_MEN_BYTYPE), NULL , CHECKIT|MENUTOGGLE|ITEMENABLED , ~0x20, (APTR) MEN_WINDOW_SORT_TYPE }, + {NM_SUB, NM_BARLABEL }, + {NM_SUB, _(MSG_MEN_REVERSE), NULL , CHECKIT|MENUTOGGLE , 0, (APTR) MEN_WINDOW_SORT_REVERSE }, + {NM_SUB, _(MSG_MEN_DRWFRST), NULL , CHECKIT|MENUTOGGLE|CHECKED , 0, (APTR) MEN_WINDOW_SORT_TOPDRAWERS }, + {NM_SUB, "Group Icons", NULL , CHECKIT|MENUTOGGLE|CHECKED , 0, (APTR) MEN_WINDOW_SORT_GROUP }, + {NM_TITLE, _(MSG_MEN_ICON), NULL , 0 }, + {NM_ITEM, _(MSG_MEN_OPEN), _(MSG_MEN_SC_OPEN) , ITEMENABLED , 0, (APTR) MEN_ICON_OPEN }, + {NM_ITEM, "Close", "C" }, + {NM_ITEM, _(MSG_MEN_RENAME), _(MSG_MEN_SC_RENAME) , ITEMENABLED , 0, (APTR) MEN_ICON_RENAME }, + {NM_ITEM, _(MSG_MEN_INFO), _(MSG_MEN_SC_INFO) , ITEMENABLED , 0, (APTR) MEN_ICON_INFORMATION }, + {NM_ITEM, _(MSG_SNAPSHOT), "S" , ITEMENABLED , 0, (APTR) MEN_ICON_SNAPSHOT }, + {NM_ITEM, _(MSG_UNSNAPSHOT), "U" , ITEMENABLED , 0, (APTR) MEN_ICON_UNSNAPSHOT }, + {NM_ITEM, _(MSG_LEAVE_OUT), "L" , ITEMENABLED , 0, (APTR) MEN_ICON_LEAVEOUT }, + {NM_ITEM, _(MSG_PUT_AWAY), "P" , ITEMENABLED , 0, (APTR) MEN_ICON_PUTAWAY }, + {NM_ITEM, NM_BARLABEL }, + {NM_ITEM, _(MSG_MEN_DELETE), NULL , ITEMENABLED , 0, (APTR) MEN_ICON_DELETE }, + {NM_ITEM, _(MSG_MEN_FORMAT), NULL , ITEMENABLED }, + {NM_ITEM, _(MSG_EMPTY_TRASH), NULL , ITEMENABLED }, + {NM_TITLE, _(MSG_MEN_TOOLS), NULL , 0 }, + {NM_END} }; _NewWandIntMenu__menustrip = MUI_MakeObject(MUIO_MenustripNM, nm, (IPTR) NULL); } @@ -3192,7 +3239,7 @@ Object *Wanderer__MUIM_Wanderer_CreateDrawerWindow Object *window_IconList = NULL; -D(bug("[Wanderer] Wanderer__MUIM_Wanderer_CreateDrawerWindow()\n")); +D(bug("[Wanderer]: %s()\n", __PRETTY_FUNCTION__)); if ((isWorkbenchWindow = (message->drawer == NULL ? TRUE : FALSE))) { @@ -3202,17 +3249,17 @@ D(bug("[Wanderer] Wanderer__MUIM_Wanderer_CreateDrawerWindow()\n")); TAG_IconWindow_Drawer = isWorkbenchWindow ? TAG_IGNORE : MUIA_IconWindow_Location; useFont = (IPTR)NULL; - + data->wd_Screen = LockPubScreen(NULL); - + if(data->wd_Screen == NULL) { -D(bug("[Wanderer] Wanderer__MUIM_Wanderer_CreateDrawerWindow: Couldn't lock screen!\n")); +D(bug("[Wanderer] %s: Couldn't lock screen!\n", __PRETTY_FUNCTION__)); CoerceMethod(CLASS, self, OM_DISPOSE); return NULL; } -D(bug("[Wanderer] Wanderer__MUIM_Wanderer_CreateDrawerWindow: Using Screen @ %p\n", data->wd_Screen)); - +D(bug("[Wanderer] %s: Using Screen @ %p\n", __PRETTY_FUNCTION__, data->wd_Screen)); + if (data->wd_PrefsIntern) { useFont = (IPTR)((struct WandererInternalPrefsData *)data->wd_PrefsIntern)->WIPD_IconFont; @@ -3220,10 +3267,8 @@ D(bug("[Wanderer] Wanderer__MUIM_Wanderer_CreateDrawerWindow: Using Screen @ %p\ _NewWandDrawerMenu__menustrip = Wanderer__Func_CreateWandererIntuitionMenu (isWorkbenchWindow, useBackdrop); -//D(bug("1\n\n")); Delay(100); /* Create a new icon drawer window with the correct drawer being set */ - - #ifdef __AROS__ +#ifdef __AROS__ window = (Object *)IconWindowObject, MUIA_UserData, 1, MUIA_Wanderer_Prefs, (IPTR)data->wd_Prefs, @@ -3239,7 +3284,7 @@ D(bug("[Wanderer] Wanderer__MUIM_Wanderer_CreateDrawerWindow: Using Screen @ %p\ isWorkbenchWindow ? TAG_IGNORE : MUIA_Wanderer_FileSysNotifyList, (IPTR)&_WandererIntern_FSHandlerList, MUIA_Window_IsSubWindow, isWorkbenchWindow ? FALSE : TRUE, End; - #else +#else window = NewObject(IconWindow_CLASS->mcc_Class, NULL, MUIA_UserData, 1, MUIA_Wanderer_Prefs, data->wd_Prefs, @@ -3254,33 +3299,33 @@ D(bug("[Wanderer] Wanderer__MUIM_Wanderer_CreateDrawerWindow: Using Screen @ %p\ isWorkbenchWindow ? TAG_IGNORE : MUIA_Wanderer_FileSysNotifyPort, data->wd_NotifyPort, MUIA_Window_IsSubWindow, isWorkbenchWindow ? FALSE : TRUE, TAG_DONE); - #endif -//D(bug("2\n\n")); Delay(100); +#endif + if (data->wd_Screen) { -D(bug("[Wanderer] Wanderer__MUIM_Wanderer_CreateDrawerWindow: Unlocking access to screen @ %p\n", data->wd_Screen)); +D(bug("[Wanderer] %s: Unlocking access to screen @ %p\n", __PRETTY_FUNCTION__, data->wd_Screen)); UnlockPubScreen(NULL, data->wd_Screen); } if (window != NULL) { -D(bug("Wanderer__MUIM_Wanderer_CreateDrawerWindow: window != NULL\n")); +D(bug("[Wanderer] %s: window != NULL\n", __PRETTY_FUNCTION__)); /* Get the drawer path back so we can use it also outside this function */ STRPTR drw = NULL; BOOL freeDrwStr = FALSE; - + if (!isWorkbenchWindow) drw = (STRPTR) XGET(window, MUIA_IconWindow_Location); else { -D(bug("Wanderer__MUIM_Wanderer_CreateDrawerWindow: call AllocVec()\n")); +D(bug("[Wanderer] %s: call AllocVec()\n", __PRETTY_FUNCTION__)); drw = AllocVec ( 5, MEMF_CLEAR ); sprintf ( drw, "RAM:" ); freeDrwStr = TRUE; } - + if (isWorkbenchWindow) { -D(bug("Wanderer__MUIM_Wanderer_CreateDrawerWindow: isWorkbenchWindow\n")); +D(bug("[Wanderer] %s: isWorkbenchWindow\n", __PRETTY_FUNCTION__)); DoMethod ( window, MUIM_Notify, MUIA_Window_CloseRequest, TRUE, @@ -3296,15 +3341,15 @@ D(bug("Wanderer__MUIM_Wanderer_CreateDrawerWindow: isWorkbenchWindow\n")); ); } -D(bug("Wanderer__MUIM_Wanderer_CreateDrawerWindow: call get with MUIA_IconWindow_IconList\n")); +D(bug("[Wanderer] %s: call get with MUIA_IconWindow_IconList\n", __PRETTY_FUNCTION__)); GET(window, MUIA_IconWindow_IconList, &window_IconList); -D(bug("[Wanderer] Wanderer__MUIM_Wanderer_CreateDrawerWindow: IconWindows IconList @ %p\n", window_IconList)); +D(bug("[Wanderer] %s: IconWindows IconList @ %p\n", __PRETTY_FUNCTION__, window_IconList)); if (window_IconList != NULL) { struct Hook *_wand_UpdateMenuStates_hook = NULL; - + if ((_wand_UpdateMenuStates_hook = AllocMem(sizeof(struct Hook), MEMF_CLEAR|MEMF_PUBLIC)) != NULL) { _wand_UpdateMenuStates_hook->h_Entry = ( HOOKFUNC )Wanderer__HookFunc_UpdateMenuStatesFunc; @@ -3317,7 +3362,7 @@ D(bug("[Wanderer] Wanderer__MUIM_Wanderer_CreateDrawerWindow: IconWindows IconLi } Wanderer__Func_UpdateMenuStates(window, window_IconList); } -D(bug("Wanderer__MUIM_Wanderer_CreateDrawerWindow: setup notifications\n")); +D(bug("[Wanderer] %s: setup notifications\n", __PRETTY_FUNCTION__)); DoMethod ( window, MUIM_Notify, MUIA_Window_Activate, TRUE, @@ -3337,25 +3382,25 @@ D(bug("Wanderer__MUIM_Wanderer_CreateDrawerWindow: setup notifications\n")); (IPTR)_app(self), 2, MUIM_CallHook, (IPTR) &_WandererIntern_hook_backdrop ); #endif -D(bug("Wanderer__MUIM_Wanderer_CreateDrawerWindow: execute all notifies\n")); +D(bug("[Wanderer] %s: execute all notifies\n", __PRETTY_FUNCTION__)); /* If "Execute Command" entry is clicked open the execute window */ DoAllMenuNotifies(self, _NewWandDrawerMenu__menustrip, drw); -D(bug("Wanderer__MUIM_Wanderer_CreateDrawerWindow: add window to app\n")); +D(bug("[Wanderer] %s: add window to app\n", __PRETTY_FUNCTION__)); /* Add the window to the application */ - #ifdef __AROS__ +#ifdef __AROS__ DoMethod(_app(self), OM_ADDMEMBER, (IPTR) window); - #else +#else DoMethod(self, OM_ADDMEMBER, (IPTR) window); - #endif -D(bug("Wanderer__MUIM_Wanderer_CreateDrawerWindow: open window\n")); +#endif +D(bug("[Wanderer] %s: open window\n", __PRETTY_FUNCTION__)); /* And now open it */ DoMethod(window, MUIM_IconWindow_Open); -D(bug("Wanderer__MUIM_Wanderer_CreateDrawerWindow: clean up memory\n")); +D(bug("[Wanderer] %s: clean up memory\n", __PRETTY_FUNCTION__)); /* Clean up ram string */ if ( freeDrwStr && drw ) FreeVec ( drw ); } -D(bug("Wanderer__MUIM_Wanderer_CreateDrawerWindow: exit\n")); +D(bug("[Wanderer] %s: exit\n", __PRETTY_FUNCTION__)); return window; } /// diff --git a/workbench/system/Wanderer/wanderer.h b/workbench/system/Wanderer/wanderer.h index 6366f43961..e9700088af 100644 --- a/workbench/system/Wanderer/wanderer.h +++ b/workbench/system/Wanderer/wanderer.h @@ -32,14 +32,14 @@ extern struct MUI_CustomClass *Wanderer_CLASS; struct AppW { - struct Node n; - char *name; + struct Node n; + char *name; }; struct Wanderer_FSHandler { - struct Node fshn_Node; - IPTR (*HandleFSUpdate)(); + struct Node fshn_Node; + IPTR (*HandleFSUpdate)(); }; /*** Macros *****************************************************************/ diff --git a/workbench/system/Wanderer/wandererprefs.c b/workbench/system/Wanderer/wandererprefs.c index 65995467c8..b52b643b02 100644 --- a/workbench/system/Wanderer/wandererprefs.c +++ b/workbench/system/Wanderer/wandererprefs.c @@ -85,12 +85,6 @@ #endif #endif -#warning "TODO: Toolbars Attributes etc should be in an own file" -/*** Identifier Base ********************************************************/ -#define MUIB_IconWindowExt_Toolbar (MUIB_IconWindowExt | 0x200000) - -#define MUIA_IconWindowExt_Toolbar_NavigationMethod (MUIB_IconWindowExt_Toolbar | 0x00000002) /* ISG */ - static CONST_STRPTR wandererPrefs_PrefsFile = "ENV:SYS/Wanderer/global.prefs"; static Object *wandererPrefs_PrefsObject; struct Wanderer_FSHandler *wandererPrefs_PrefsNotifyHandler = NULL; @@ -118,11 +112,11 @@ struct WandererPrefs_DATA struct WandererPrefs_ViewSettingsNode { - struct Node wpbn_Node; - char *wpbn_Name; - IPTR wpbn_Background; - struct TagItem32 *wpbn_Options; - Object *wpbn_NotifyObject; + struct Node wpbn_Node; + char *wpbn_Name; + IPTR wpbn_Background; + struct TagItem32 *wpbn_Options; + Object *wpbn_NotifyObject; }; /*** Macros *****************************************************************/ @@ -132,30 +126,30 @@ struct WandererPrefs_ViewSettingsNode ///SetString() BOOL SetString(STRPTR *dst, STRPTR src) { - if (src != NULL) - { - if ((*dst == NULL) || (strcmp(src, *dst) != 0)) + if (src != NULL) { - STRPTR tmp =(STRPTR) StrDup(src); + if ((*dst == NULL) || (strcmp(src, *dst) != 0)) + { + STRPTR tmp =(STRPTR) StrDup(src); - if (tmp != NULL) - { - FreeVec(*dst); - *dst = tmp; + if (tmp != NULL) + { + FreeVec(*dst); + *dst = tmp; - return TRUE; - } + return TRUE; + } + } } - } - return FALSE; + return FALSE; } /// ///strtochar() static unsigned char strtochar(STRPTR st) { - return *st++; + return *st++; } /// /******** code from workbench/c/Info.c **************************************/ @@ -571,7 +565,7 @@ IPTR WandererPrefs__OM_SET(Class *CLASS, Object *self, struct opSet *message) //data->wpd_ScreenTitleString = (LONG)tag->ti_Data; break; - case MUIA_IconWindowExt_Toolbar_NavigationMethod: + case MUIA_IconWindow_WindowNavigationMethod: data->wpd_NavigationMethod = (LONG)tag->ti_Data; break; } @@ -607,7 +601,7 @@ IPTR WandererPrefs__OM_GET(Class *CLASS, Object *self, struct opGet *message) D(bug("[Wanderer:Prefs] WandererPrefs__GET: MUIA_IconWindowExt_ScreenTitle_String '%s'\n", data->wpd_ScreenTitleString)); break; - case MUIA_IconWindowExt_Toolbar_NavigationMethod: + case MUIA_IconWindow_WindowNavigationMethod: *store = (IPTR)data->wpd_NavigationMethod; break; -- 2.11.4.GIT