aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/General/gen_ml/navigation.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Plugins/General/gen_ml/navigation.h')
-rw-r--r--Src/Plugins/General/gen_ml/navigation.h267
1 files changed, 267 insertions, 0 deletions
diff --git a/Src/Plugins/General/gen_ml/navigation.h b/Src/Plugins/General/gen_ml/navigation.h
new file mode 100644
index 00000000..7ea68059
--- /dev/null
+++ b/Src/Plugins/General/gen_ml/navigation.h
@@ -0,0 +1,267 @@
+#ifndef NULLOSFT_MEDIALIBRARY_NAVIGATION_HEADER
+#define NULLOSFT_MEDIALIBRARY_NAVIGATION_HEADER
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+#include <windows.h>
+#include "./config.h"
+#include "./ml_imagelist.h"
+
+typedef LPVOID HNAVCTRL;
+typedef LPVOID HNAVITEM;
+
+typedef struct _NAVITEM_I
+{
+ UINT mask;
+ INT id;
+ LPWSTR pszText;
+ INT cchTextMax;
+ LPWSTR pszInvariant;
+ INT cchInvariantMax;
+ INT iImage;
+ INT iSelectedImage;
+ UINT state;
+ UINT stateMask;
+ UINT style;
+ UINT styleMask;
+ HFONT hFont;
+ LPARAM lParam;
+} NAVITEM_I;
+
+typedef struct _NAVITEMDRAW_I
+{
+ HDC hdc; //
+ COLORREF clrText; //
+ COLORREF clrTextBk; //
+ HFONT hFont; //
+ RECT *prc; //
+ UINT itemState; // NIS_XXX
+ UINT drawStage; // NIDS_XXX
+ INT iLevel; // Zero-based level of the item being drawn.
+} NAVITEMDRAW_I;
+
+
+// navigation control styles
+#define NCS_NORMAL_I 0x0000
+#define NCS_FULLROWSELECT_I 0x0001
+#define NCS_SHOWICONS_I 0x0002
+
+// nav item draw stage
+#define NIDS_PREPAINT_I 0x0001
+#define NIDS_POSTPAINT_I 0x0002
+
+// item custom draw callback return values
+#define NICDRF_DODEFAULT_I 0x0001
+#define NICDRF_SKIPDEFAULT_I 0x0002
+#define NICDRF_NOTIFYPOSTPAINT_I 0x0004
+#define NICDRF_NEWFONT_I 0x0008
+
+
+// hit test flags
+#define NAVHT_NOWHERE_I 0x0001
+#define NAVHT_ONITEM_I 0x0002
+#define NAVHT_ONITEMBUTTON_I 0x0004 // only if item currently has children
+#define NAVHT_ONITEMINDENT_I 0x0010
+#define NAVHT_ONITEMRIGHT_I 0x0020
+#define NAVHT_ABOVE_I 0x0100
+#define NAVHT_BELOW_I 0x0200
+#define NAVHT_TORIGHT_I 0x0400
+#define NAVHT_TOLEFT_I 0x0800
+
+// navigation item masks
+#define NIMF_ITEMID_I 0x0001
+#define NIMF_TEXT_I 0x0002
+#define NIMF_TEXTINVARIANT_I 0x0004
+#define NIMF_IMAGE_I 0x0008
+#define NIMF_IMAGESEL_I 0x0010
+#define NIMF_STATE_I 0x0020
+#define NIMF_STYLE_I 0x0040
+#define NIMF_FONT_I 0x0080
+#define NIMF_PARAM_I 0x0100
+
+// states
+#define NIS_NORMAL_I 0x0000
+#define NIS_SELECTED_I 0x0001
+#define NIS_EXPANDED_I 0x0002
+#define NIS_DROPHILITED_I 0x0004
+#define NIS_FOCUSED_I 0x0008 // used with draw item
+
+// styles
+#define NIS_HASCHILDREN_I 0x0001 // item has children
+#define NIS_ALLOWCHILDMOVE_I 0x0002 // allow children to be moved (re-ordered)
+#define NIS_ALLOWEDIT_I 0x0004 // allow title edit
+#define NIS_ITALIC_I 0x0100 // when displaying item text draw it with italic style
+#define NIS_BOLD_I 0x0200 // when displaying item text draw it with bold style
+#define NIS_UNDERLINE_I 0x0400 // when displaying item text draw it with underline style
+#define NIS_CUSTOMDRAW_I 0x0010 // custom draw calback
+#define NIS_WANTSETCURSOR_I 0x0020 // item want to recive set cursor notification
+#define NIS_WANTHITTEST_I 0x0040 // item want to monitor/modify hittest results
+/// internal style - do not use
+#define NIS_WANTPOSTPAINT_I 0x8000 // custom draw calback
+
+
+// image types
+#define IMAGE_NORMAL_I 0x0000
+#define IMAGE_SELECTED_I 0x0001
+
+// item expand command flags
+#define NAVITEM_TOGGLE_I 0x0000
+#define NAVITEM_EXPAND_I 0x0001
+#define NAVITEM_COLLAPSE_I 0x0002
+
+// action codes
+#define ACTION_CLICKL_I 0x0000
+#define ACTION_CLICKR_I 0x0001
+#define ACTION_ENTER_I 0x0002
+#define ACTION_DBLCLICKL_I 0x0003
+#define ACTION_DBLCLICKR_I 0x0004
+
+// navigation callbacks ident
+#define CALLBACK_ONCLICK_I 0x0001
+#define CALLBACK_ONSELECTED_I 0x0002
+#define CALLBACK_ONKEYDOWN_I 0x0003
+#define CALLBACK_ONBEGINDRAG_I 0x0004
+#define CALLBACK_ONGETIMAGEINDEX_I 0x0005
+#define CALLBACK_ONBEGINTITLEEDIT_I 0x0006
+#define CALLBACK_ONENDTITLEEDIT_I 0x0007
+#define CALLBACK_ONITEMDELETE_I 0x0008
+#define CALLBACK_ONITEMDRAW_I 0x0009
+#define CALLBACK_ONSETCURSOR_I 0x000A
+#define CALLBACK_ONHITTEST_I 0x000B
+#define CALLBACK_ONDESTROY_I 0x000C
+
+typedef BOOL (CALLBACK *ONNAVITEMCLICK_I)(HNAVCTRL /*hNav*/, HNAVITEM /*hItem*/, INT /*actionId*/); // return TRUE if you want to prevent further processing
+typedef void (CALLBACK *ONNAVITEMSELECTED_I)(HNAVCTRL /*hNav*/, HNAVITEM /*hItemOld*/, HNAVITEM /*hItemNew*/);
+typedef BOOL (CALLBACK *ONNAVCTRLKEYDOWN_I)(HNAVCTRL /*hNav*/, HNAVITEM /*hItem*/, NMTVKEYDOWN* /*ptvkd*/);
+typedef void (CALLBACK *ONNAVCTRLBEGINDRAG_I)(HNAVCTRL /*hNav*/, HNAVITEM /*hItem*/, POINT /*pt*/);
+typedef INT (CALLBACK *ONNAVITEMGETIMAGEINDEX_I)(HNAVCTRL /*hNav*/, HNAVITEM /*hItem*/, INT /*imageType*/); // if item image index == -1 you can provide some some other index
+typedef BOOL (CALLBACK *ONNAVITEMBEGINTITLEEDIT_I)(HNAVCTRL /*hNav*/, HNAVITEM /*hItem*/); // return TRUE to allow edit
+typedef BOOL (CALLBACK *ONNAVCTRLENDTITLEEDIT_I)(HNAVCTRL /*hNav*/, HNAVITEM /*hItem*/, LPCWSTR /*pszNewTitle*/); // if pszNewTitle == NULL edit wa canceled. Return TRUE to accept new title
+typedef void (CALLBACK *ONNAVITEMDELETE_I)(HNAVCTRL /*hNav*/, HNAVITEM /*hItem*/); //
+typedef UINT (CALLBACK *ONNAVITEMDRAW_I)(HNAVCTRL /*hNav*/, HNAVITEM /*hItem*/, NAVITEMDRAW_I* /*pnicd*/, LPARAM /*lParam*/); // custom draw
+typedef BOOL (CALLBACK *ONNAVITEMSETCURSOR_I)(HNAVCTRL /*hNav*/, HNAVITEM /*hItem*/, LPARAM /*lParam*/); // set cursor
+typedef void (CALLBACK *ONNAVITEMHITTEST_I)(HNAVCTRL /*hNav*/, POINT /*pt*/, UINT* /*pFlags*/, HNAVITEM* /*phItem*/, LPARAM /*lParam*/);
+typedef void (CALLBACK *ONNAVCTRLDESTROY_I)(HNAVCTRL /*hNav*/);
+
+// name compare flags
+#define NICF_DISPLAY_I 0x0001 // compare display name (if specified in combination with othe flags will be used last)
+#define NICF_INVARIANT_I 0x0002 // compare invariant name (if specified in combination with other flags will be used after FULL and before DISPLAY
+#define NICF_IGNORECASE_I 0x0004 // ignore case (always used when comparing invariant names)
+
+// NavItemI_SetOrder flags
+#define NOF_MOVEONEBEFORE_I 0x00 // if order inded already used set order for this item and move old item on one position after until all items rearranged
+#define NOF_MOVEONEAFTER_I 0x01 //
+#define NOF_MOVEBEFORE_I 0x02 //
+#define NOF_MOVEAFTER_I 0x03 //
+
+// NavCtrlI_EnumItems callback
+typedef BOOL (CALLBACK *NAVENUMPROC_I)(HNAVITEM /*hItem*/, LPARAM /*lParam*/); // return FALSE to stop enumeration
+
+// Use this to in NavCtrlI_InertItem to create hInsertAfter
+#define MAKE_NAVITEMSORTORDER(o) ((HNAVITEM)((ULONG_PTR)((WORD)(o))))
+#define IS_NAVITEMSORTORDER(_i) ((((ULONG_PTR)(_i)) >> 16) == 0)
+
+#define NUF_LOCK_NONE_I 0x00
+#define NUF_LOCK_SELECTED_I 0x01 // try to remember selected position if no selected items in the view it will fallback to NUF_REMEMBER_TOP_I
+#define NUF_LOCK_TOP_I 0x02 // try to remeber top item...
+
+// insert item Insert after flags
+#define NCI_FIRST_I ((HNAVITEM)(ULONG_PTR)-0x0FFFF) // insert first item
+#define NCI_LAST_I ((HNAVITEM)(ULONG_PTR)-0x00000) // insert as last item
+
+// Navigation Control
+
+// NavCtrlI_Create - create new navigation manager
+HNAVCTRL NavCtrlI_Create(HWND hwndParent);
+BOOL NavCtrlI_SetRect(HNAVCTRL hNav, RECT *prc);
+BOOL NavCtrlI_Show(HNAVCTRL hNav, INT nCmdShow);
+BOOL NavCtrlI_Enable(HNAVCTRL hNav, BOOL fEnable);
+BOOL NavCtrlI_Destroy(HNAVCTRL hNav);
+BOOL NavCtrlI_Update(HNAVCTRL hNav); // calls UpdateWindow for the host;
+BOOL NavCtrlI_ProcessNotifications(HNAVCTRL hNav, LPNMHDR pnmh, LRESULT *pResult);
+C_Config *NavCtrlI_SetConfig(HNAVCTRL hNav, C_Config *pConfig);
+
+BOOL NavCtrlI_BeginUpdate(HNAVCTRL hNav, UINT fRememberPos); // call to prevent redraw (use NUF_REMEMBER_XXX)
+BOOL NavCtrlI_EndUpdate(HNAVCTRL hNav); // call to allow redraw
+
+BOOL NavCtrlI_DeleteItem(HNAVCTRL hNav, HNAVITEM hItem);
+BOOL NavCtrlI_DeleteAll(HNAVCTRL hNav);
+HNAVITEM NavCtrlI_FindItem(HNAVCTRL hNav, INT itemId);
+HNAVITEM NavCtrlI_FindItemByName(HNAVCTRL hNav, LCID Locale, UINT compFlags, LPCWSTR pszName, INT cchLength); // use one of the NICF_* flags
+HNAVITEM NavCtrlI_FindItemByFullName(HNAVCTRL hNav, LCID Locale, UINT compFlags, LPCWSTR pszName, INT cchLength, BOOL fAncestorOk); // use one of the NICF_* flags. if fAncestor is set and item with this name not exist - will fall back to closest ancestor
+
+HNAVITEM NavCtrlI_InsertItem(HNAVCTRL hNav, HNAVITEM hInsertAfter, HNAVITEM hParent, NAVITEM_I *pnis); // if hInsertAfter > 0xFFFF it is consider as an item otherwise it is sort order, Use MAKE_NAVITEMSORTORDER macro
+HNAVITEM NavCtrlI_GetRoot(HNAVCTRL hNav);
+HNAVITEM NavCtrlI_GetSelection(HNAVCTRL hNav);
+HNAVITEM NavCtrlI_GetFirstVisible(HNAVCTRL hNav);
+HNAVITEM NavCtrlI_GetLastVisible(HNAVCTRL hNav);
+BOOL NavCtrlI_UpdateLook(HNAVCTRL hNav);
+
+HMLIMGLST NavCtrlI_SetImageList(HNAVCTRL hNav, HMLIMGLST hmlil);
+HMLIMGLST NavCtrlI_GetImageList(HNAVCTRL hNav);
+
+HWND NavCtrlI_GetHWND(HNAVCTRL hNav);
+LPVOID NavCtrlI_RegisterCallback(HNAVCTRL hNav, LPVOID fnCallback, INT cbType);
+HNAVITEM NavCtrlI_HitTest(HNAVCTRL hNav, POINT *ppt, UINT *pFlags);
+BOOL NavCtrlI_SetInsertMark(HNAVCTRL hNav, HNAVITEM hItem, BOOL fAfter);
+
+BOOL NavCtrlI_EnumItems(HNAVCTRL hNav, NAVENUMPROC_I pEnumFunc, HNAVITEM hItemStart, LPARAM lParam);
+INT NavCtrlI_MapPointsTo(HNAVCTRL hNav, HWND hwndTo, POINT *ppt, UINT cPoints);
+INT NavCtrlI_MapPointsFrom(HNAVCTRL hNav, HWND hwndFrom, POINT *ppt, UINT cPoints);
+
+BOOL NavCtrlI_EndEditTitle(HNAVCTRL hNav, BOOL fCancel);
+INT NavCtrlI_GetIndent(HNAVCTRL hNav);
+DWORD NavCtrlI_GetStyle(HNAVCTRL hNav); // NCS_XXX
+
+// Navigation Item
+
+BOOL NavItemI_EditTitle(HNAVITEM hItem);
+HNAVITEM NavItemI_GetChild(HNAVITEM hItem);
+INT NavItemI_GetChildrenCount(HNAVITEM hItem);
+HFONT NavItemI_GetFont(HNAVITEM hItem);
+INT NavItemI_GetId(HNAVITEM hItem);
+INT NavItemI_GetImageIndex(HNAVITEM hItem, INT imageType);
+BOOL NavItemI_GetIndirect(HNAVITEM hItem, NAVITEM_I *pnis);
+BOOL NavItemI_GetText(HNAVITEM hItem, LPWSTR pszText, INT cchMaxLen);
+BOOL NavItemI_GetInvariantText(HNAVITEM hItem, LPWSTR pszText, INT cchMaxLen);
+HNAVITEM NavItemI_GetNext(HNAVITEM hItem);
+WORD NavItemI_GetOrder(HNAVITEM hItem);
+HNAVITEM NavItemI_GetParent(HNAVITEM hItem);
+HNAVITEM NavItemI_GetPrevious(HNAVITEM hItem);
+BOOL NavItemI_GetRect(HNAVITEM hItem, RECT *prc, BOOL fItemRect);
+HNAVITEM NavItemI_GetRoot(HNAVITEM hItem);
+UINT NavItemI_GetState(HNAVITEM hItem, UINT stateMask);
+UINT NavItemI_GetStyle(HNAVITEM hItem, UINT styleMask);
+INT NavItemI_GetFullName(HNAVITEM hItem, LPWSTR pszFullName, INT cchMaxLen);
+
+
+BOOL NavItemI_HasChildren(HNAVITEM hItem); // checks if item style for NIS_HASCHILDREN_I
+BOOL NavItemI_HasChildrenReal(HNAVITEM hItem); // cheks if item actually has at least one child
+BOOL NavItemI_IsSelected(HNAVITEM hItem);
+BOOL NavItemI_IsExpanded(HNAVITEM hItem);
+BOOL NavItemI_Expand(HNAVITEM hItem, UINT flag);
+BOOL NavItemI_Move(HNAVITEM hItem, HNAVITEM hItemDest, BOOL fAfter);
+HFONT NavItemI_SetFont(HNAVITEM hItem, HFONT hFont); // you stil own this font !!! (set hFont to NULL if you want to use treeview font). Returns previously set font.
+BOOL NavItemI_SetId(HNAVITEM hItem, INT itemId);
+BOOL NavItemI_SetImageIndex(HNAVITEM hItem, INT mlilIndex, INT imageType);
+BOOL NavItemI_SetIndirect(HNAVITEM hItem, NAVITEM_I *pnis);
+BOOL NavItemI_SetState(HNAVITEM hItem, UINT state, UINT stateMask);
+BOOL NavItemI_SetStyle(HNAVITEM hItem, UINT style, UINT mask);
+BOOL NavItemI_SetText(HNAVITEM hItem, LPCWSTR pszText);
+BOOL NavItemI_SetInvariantText(HNAVITEM hItem, LPCWSTR pszText);
+
+
+// Sets Item order and modifies all items oreder after it if required.
+// if oder == 0xFFFF order will be set to max + 1 for this group
+// returns new item order or 0xFFFF if error;
+// minimal order value 1.
+// flags one of the NOF_XXX
+WORD NavItemI_SetOrder(HNAVITEM hItem, WORD order, UINT flags);
+BOOL NavItemI_EnsureVisible(HNAVITEM hItem);
+BOOL NavItemI_Select(HNAVITEM hItem);
+HIMAGELIST NavItemI_CreateDragImage(HNAVITEM hItem, LPCWSTR pszTipText);
+BOOL NavItemI_Invalidate(HNAVITEM hItem, RECT *prc, BOOL fErase);
+
+#endif //NULLOSFT_MEDIALIBRARY_NAVIGATION_HEADER \ No newline at end of file