home *** CD-ROM | disk | FTP | other *** search
- /********************************************************************/
- /* DirView - Drag and drop directory viewer */
- /* Public Domain (P) 1992 Benjamin Cooley */
- /* dirview.h - DirView Main Include File */
- /********************************************************************/
-
- #ifndef _FLDRVIEW_H
- #define _FLDRVIEW_H
-
- /* DirView modules */
- #include "tarrays.h"
- #include "fvrc.h"
-
- #define DESCLEN (41)
- #define TITLELEN (81)
- #define FILELEN (13)
-
- const TIconClass = __firstUserClass;
-
- #define _STREAMDEF(classname)\
- _CLASSDEF(classname)\
- inline Ripstream operator >> ( Ripstream is, classname & cl )\
- { return is >> (RTStreamable)cl; }\
- inline Ripstream operator >> ( Ripstream is, classname * & cl )\
- { return is >> (RPvoid)cl; }\
- inline Ropstream operator << ( Ropstream os, classname & cl )\
- { return os << (RTStreamable)cl; }\
- inline Ropstream operator << ( Ropstream os, classname * cl )\
- { return os << (PTStreamable)cl; }
-
- /********************************************************************/
- /* Variables */
- /********************************************************************/
-
- _STREAMDEF(TMainView)
- _STREAMDEF(TFolderView)
- _STREAMDEF(TIconImage)
- _STREAMDEF(TIcon)
- _STREAMDEF(TFileIcon)
- _STREAMDEF(TDirIcon)
- _STREAMDEF(TProgIcon)
- _CLASSDEF(TIconList)
-
- /* FolderView main window */
- extern PTMainView FolderView;
-
- #define MAXFONTNAME (41)
- #define BORDERSIZE (3)
- #define FILEBUFSIZE (0x7FFF)
- #define TEXTBUFLEN (81)
-
- /* Program global values */
- extern HINSTANCE hInstance;
- extern char ProgramName[];
- extern char TextBuf[];
- extern char FolderViewFileName[];
- extern char FolderViewPath[];
- extern char DefaultFolderInfoDir[];
- extern char FolderInfoPath[];
- extern char FolderInfoFileName[];
- extern char FolderInfoWildcard[];
- extern int FolderInfoFileCountPos;
- extern int FolderInfoFileCountLen;
- extern char ProfileSettings[];
- extern char ProfileDirectories[];
- extern char ProfileName[];
- extern char FileIconName[];
- extern char DirIconName[];
- extern char ProgIconName[];
- extern char BatchIconName[];
- extern char PifIconName[];
- extern int IconWidth, IconHeight, SmallIconWidth, SmallIconHeight;
- extern int IconSpaceWidth, IconSpaceHeight;
- extern int DescWidth, DescHeight, WrapDesc;
- extern int IconNameWidth, IconNameHeight;
- extern char FontName[MAXFONTNAME];
- extern int FontPointSize;
- extern HFONT Font;
- extern COLORREF TextColor, TextBkColor, SelectedTextColor, SelectedTextBkColor;
- extern COLORREF WindowColor;
- extern HBRUSH WindowBrush, SelectedBrush;
- extern int IconLeft, IconTop;
- extern HDC MemDC;
- extern HBITMAP MemBitMap;
- extern HFONT MemFont;
- extern HBRUSH MemBrush;
- extern int AllNameWidth, AllDateWidth, AllTimeWidth, AllSizeWidth,
- AllAttribWidth, AllDescWidth;
- extern BOOL ShuttingDown;
- extern BOOL MouseDown;
- extern PTIcon MouseDownIcon;
- extern int MouseDownIconX, MouseDownIconY;
- extern BOOL Dragging;
- extern HCURSOR DragIconCursor, DragCursor;
-
- /* DIB Bitmap structures */
- extern BITMAPINFO *bmi2;
- extern BITMAPINFOHEADER *bmih2;
- extern BITMAPINFO *bmi16;
- extern BITMAPINFOHEADER *bmih16;
-
- /* Icon list */
- extern TIconList IconList;
-
- /********************************************************************/
- /* Icon Class */
- /********************************************************************/
-
- class _CLASSTYPE TIconImage : public TStreamable, public Sortable
- {
-
- public:
-
- friend class TIconList;
-
- TIconImage(Pchar Afilename, int Animage, HICON Anicon);
- virtual ~TIconImage();
-
- Pchar FileName() { return filename; }
- int Image() { return image; }
- HBITMAP XORBitmap() { return xorbitmap; }
- HBITMAP ANDBitmap() { return andbitmap; }
- HBITMAP SmallXORBitmap() { return smallxorbitmap; }
- HBITMAP SmallANDBitmap() { return smallandbitmap; }
-
- /* Object stuff */
- virtual classType isA() const { return 0; }
- virtual Pchar nameOf() const { return "IconImage"; }
- virtual int isEqual(RCObject object) const
- {
- return !strcmp(filename, ((RCTIconImage)object).filename) &&
- image == ((RCTIconImage)object).image;
- }
- virtual int isLessThan(RCObject object) const
- {
- return (strcmp(filename, ((RCTIconImage)object).filename) < 0) ||
- (image < ((RCTIconImage)object).image);
- }
- virtual hashValueType hashValue() const { return 0; }
- #pragma argsused
- virtual void printOn(Rostream os) const {}
-
- static PTStreamable build()
- { return new TIconImage(streamableInit); }
-
- protected:
- Pchar filename;
- int image;
- HBITMAP xorbitmap;
- HBITMAP andbitmap;
- HBITMAP smallxorbitmap;
- HBITMAP smallandbitmap;
-
- TIconImage(StreamableInit s)
- { filename = NULL; image = 0;
- xorbitmap = andbitmap = smallxorbitmap = smallandbitmap = NULL; }
-
- virtual Pvoid read(Ripstream is);
- virtual void write(Ropstream os);
-
- private:
- virtual const Pchar streamableName() const { return "IconImage"; }
- };
-
- class _CLASSTYPE TIconList : public TkSortedArray
- {
- public:
- TIconList() : TkSortedArray(0, 0, 15) {}
-
- int IconImages() { return itemsInArray(); }
-
- PTIconImage GetIconImage(int index)
- { return (PTIconImage)ptrAt(index); }
-
- PTIconImage FindIconImage(Pchar filename, int image);
- void AddIconImage(PTIconImage iconimage);
-
- };
-
- #define ICON_FILE (1)
- #define ICON_PROGRAM (2)
- #define ICON_DIRECTORY (3)
-
- #define IS_SELECTED (1)
- #define IS_FOCUSED (2)
-
- #define PAINTICON_ALL (1)
- #define PAINTICON_REDRAW (2)
- #define PAINTICON_DESC (3)
- #define PAINTICON_FOCUS (4)
-
- class _CLASSTYPE TIcon : public TStreamable, public Sortable
- {
-
- public:
-
- TIcon(RTFolderView AFolderView, ffblk &Affblk);
-
- PTFolderView FolderView() { return folderview; }
- void SetFolderView(PTFolderView newfolderview)
- { folderview = newfolderview; }
-
- int PosX() { return rect.left; }
- int PosY() { return rect.top; }
- Pchar Name() { return name; }
- Pchar Desc() { return desc; }
- int Attrib() { return (int)attrib; }
- int Date() { return date; }
- int Time() { return time; }
- long Size() { return size; }
-
- virtual int Type() = 0;
- virtual PTIconImage GetIconImage() = 0;
- HCURSOR CreateCursor(int hotspotx, int hotspoty);
- BOOL ShouldUpdate(ffblk &affblk);
- void PaintIcon(HDC PaintDC, int drawmode = PAINTICON_ALL);
- void PaintInfo(HDC PaintDC, int drawmode = PAINTICON_ALL);
- void Paint(HDC PaintDC, int drawmode = PAINTICON_ALL);
- void RedrawIcon();
- void SetRect(RECT &r)
- { rect.left = r.left; rect.top = r.top;
- rect.right = r.right; rect.bottom = r.bottom; textrect.left = -1; }
- RECT *GetRect() { return ▭ }
- BOOL PointOn(POINT p);
- void SetState(int flags);
- int GetState() { return state; }
- void SetStateFlag(int flag, BOOL true)
- { if (true) SetState(flag | state); else SetState(state & (~flag)); }
- int GetStateFlag(int flag) { return (state & flag) != 0; }
- virtual void Open() {}
- virtual void Delete();
- virtual void Move(Pchar to);
- virtual void Copy(Pchar to);
-
- int SortOrder() const;
- int View() const;
-
- static PTIcon NewIcon(RTFolderView AFolderView, ffblk &Affblk);
-
- /* Object stuff */
- virtual classType isA() const { return TIconClass; }
- virtual Pchar nameOf() const { return "Icon"; }
- virtual int isEqual(RCObject object) const;
- virtual int isLessThan(RCObject object) const;
- virtual hashValueType hashValue() const { return 0; }
- #pragma argsused
- virtual void printOn(Rostream os) const {}
-
- protected:
- PTFolderView folderview; /* folder view icon is in */
- char attrib; /* attribute */
- int time; /* file time */
- int date; /* file date (must be right after time) */
- long size; /* file size */
- char name[FILELEN];/* file name */
- PTIconImage icon; /* icon for file */
- char desc[DESCLEN];/* icon description */
- RECT rect; /* icon position */
- int state; /* state of icon */
-
- RECT textrect; /* text rectangle */
-
- TIcon(StreamableInit s) {}
-
- void RedrawDescription();
- void ToggleFocusRect();
-
- virtual Pvoid read(Ripstream is);
- virtual void write(Ropstream os);
- };
-
- class _CLASSTYPE TFileIcon : public TIcon
- {
-
- public:
-
- TFileIcon(RTFolderView AFolderView, ffblk &Affblk) :
- TIcon(AFolderView, Affblk) {}
-
- virtual int Type() { return ICON_FILE; }
- virtual PTIconImage GetIconImage();
- virtual void Open();
-
- static PTStreamable build()
- { return new TFileIcon(streamableInit); }
-
- protected:
- TFileIcon(StreamableInit s) : TIcon(s) {}
-
- private:
- const Pchar streamableName() const { return "FileIcon"; }
- };
-
- class _CLASSTYPE TDirIcon : public TIcon
- {
-
- public:
-
- TDirIcon(RTFolderView AFolderView, ffblk &Affblk) :
- TIcon(AFolderView, Affblk) {}
-
- virtual int Type() { return ICON_DIRECTORY; }
- virtual PTIconImage GetIconImage();
- virtual void Open();
-
- static PTStreamable build()
- { return new TDirIcon(streamableInit); }
-
- protected:
- TDirIcon(StreamableInit s) : TIcon(s) {}
-
- private:
- const Pchar streamableName() const { return "DirIcon"; }
- };
-
- class _CLASSTYPE TProgIcon : public TIcon
- {
-
- public:
-
- TProgIcon(RTFolderView AFolderView, ffblk &Affblk) :
- TIcon(AFolderView, Affblk) {}
-
- virtual int Type() { return ICON_PROGRAM; }
- virtual PTIconImage GetIconImage();
- virtual void Open();
-
- static PTStreamable build()
- { return new TProgIcon(streamableInit); }
-
- protected:
- TProgIcon(StreamableInit s) : TIcon(s) {}
-
- private:
- const Pchar streamableName() const { return "ProgIcon"; }
- };
-
- /********************************************************************/
- /* FolderView Class */
- /********************************************************************/
-
- #define FOLDERVIEW_DRIVE (1)
- #define FOLDERVIEW_DIRECTORY (2)
-
- #define SORT_BYNAME (1)
- #define SORT_BYEXT (2)
- #define SORT_BYDATE (3)
- #define SORT_BYSIZE (4)
- #define SORT_BYDESC (5)
-
- #define VIEW_ICON (1)
- #define VIEW_NAME (2)
- #define VIEW_ALL (3)
-
- #define DISPLAY_NAME (1)
- #define DISPLAY_DESC (2)
- #define DISPLAY_DATE (4)
- #define DISPLAY_TIME (8)
- #define DISPLAY_SIZE (16)
- #define DISPLAY_ATTRIB (32)
-
- #define SELECT_SINGLE (1)
- #define SELECT_RANGE (2)
- #define SELECT_MULTIPLE (3)
-
- #define ADJACENTICON_LEFT (1)
- #define ADJACENTICON_RIGHT (2)
- #define ADJACENTICON_UP (3)
- #define ADJACENTICON_DOWN (4)
-
- /**********************************/
- /* TMainView - Main folder window */
- /**********************************/
-
- class _CLASSTYPE TMainView : public TMDIFrame
- {
-
- public:
- TMainView(Pchar APath);
- virtual ~TMainView();
-
- virtual void ShutDownWindow();
-
- PTIcon GetAllIcon(int index) { return &(RTIcon)((*alliconsarray)[index]); }
- int NumAllIcons() { return (alliconsarray)->itemsInArray(); }
-
- Pchar Title() { return title; }
- Pchar Directory() { return dir; }
- Pchar WildCard() { return wildcard; }
- PTFolderView OtherView() { return otherview; }
-
- PTMainView MainView() { return this; }
- void SaveWindow();
- int FindAllIconIndex(Pchar name);
- PTIcon FindAllIcon(Pchar name);
- PTFolderView GetFileView(Pchar name, int attrib);
- void UpdateAllIcons(PTFolderView newview = NULL);
- void ArrangeAllIcons();
- void UpdateMenu(PTFolderView view);
- void FocusIcon(PTIcon icon);
- PTIcon FocusedIcon() { return focusedicon; }
-
- PTkArray *AllIconsPtr() { return &alliconsarray; }
-
- static PTStreamable build() { return new TMainView(streamableInit); }
-
- protected:
- PTkArray alliconsarray;
- PTIcon focusedicon;
-
- char title[TITLELEN];
- char dir[MAXPATH];
- char wildcard[MAXPATH];
-
- PTFolderView otherview;
-
- TMainView(StreamableInit s);
- virtual Pvoid read(Ripstream is);
- virtual void write(Ropstream os);
-
- virtual void SetupWindow();
- virtual void WMCommand(RTMessage Msg) = [WM_FIRST + WM_COMMAND];
- int ViewType();
- virtual Pchar GetClassName();
- virtual void GetWindowClass(WNDCLASS &AWndClass);
-
- private:
- virtual const Pchar streamableName() const { return "MainView"; }
- };
-
- /**********************************/
- /* TFolderView - Folder subwindow */
- /**********************************/
-
- class _CLASSTYPE TFolderView : public TWindow
- {
-
- public:
- void InitFolderView();
- TFolderView(PTMainView AMainView, Pchar ATitle, Pchar AWildCard);
- virtual ~TFolderView();
-
- virtual void ShutDownWindow();
-
- PTMainView MainView() { return mainview; }
- void SetMainView(PTMainView newmainview);
-
- Pchar Title() { return title; }
- Pchar Wildcard() { return wildcard; }
-
- PTIcon GetIcon(int index) { return &(RTIcon)((*icons)[index]); }
- PTIcon GetAllIcon(int index) { return &(RTIcon)((**allicons)[index]); }
- int NumIcons() { return icons->itemsInArray(); }
- int NumAllIcons() { return (*allicons)->itemsInArray(); }
- void AddIcon(PTIcon icon);
- void DetachIcon(PTIcon icon);
- void DeleteIcon(PTIcon icon);
-
- HDC GetDC();
- void ReleaseDC(HDC dc);
-
- void SaveWindow();
- virtual BOOL InvalidRect(RECT &r) { return FALSE; }
- void ArrangeIcons();
- int FindIconIndex(Pchar name);
- PTIcon FindIcon(Pchar name);
- void SetSortOrder(int neworder);
- int GetSortOrder() { return sortorder; }
- void SetView(int newview);
- int GetView() { return view; }
- void SetDisplayItems(int newdisplayitems);
- int GetDisplayItems()
- { if (view == VIEW_ICON) return DISPLAY_DESC;
- else if (view == VIEW_NAME) return DISPLAY_DESC;
- else return displayitems; }
- PTIcon OnIcon(POINT p);
- int GetIconNumber(PTIcon icon);
- int GetAdjacentIcon(int startnum, int dir);
- void ScrollToIcon(PTIcon icon);
- void FocusIcon(PTIcon icon) { mainview->FocusIcon(icon); }
- PTIcon FocusedIcon() { return mainview->FocusedIcon(); }
- void MenuCommand(WORD command);
-
- void RedrawIcon(PTIcon icon);
- void SelectIcons(PTIcon selicon, int mode);
- void SelectIcon(PTIcon icon);
- void DeselectIcon(PTIcon icon);
- void ToggleIconSelection(PTIcon icon);
- BOOL WildcardMatch(Pchar name, int attrib);
-
- static PTStreamable build() { return new TFolderView(streamableInit); }
-
- protected:
- PTMainView mainview;
- char title[TITLELEN];
- char wildcard[MAXPATH];
- PTkArray icons;
- PTkArray *allicons;
-
- int sortorder; /* Icon display order */
- int view; /* Icon view */
- int displayitems; /* Items to display in VIEW_ALL mode */
-
- virtual void SetupWindow();
- virtual void Paint(HDC PaintDC, PAINTSTRUCT &PaintInfo);
- virtual Pchar GetClassName();
- virtual void GetWindowClass(WNDCLASS _FAR &AWndClass);
- virtual void WMKeyDown(RTMessage Msg) = [WM_FIRST + WM_KEYDOWN];
- virtual void WMSize(RTMessage Msg) = [WM_FIRST + WM_SIZE];
- virtual void WMLButtonDown(RTMessage Msg) = [WM_FIRST + WM_LBUTTONDOWN];
- virtual void WMMouseMove(RTMessage Msg) = [WM_FIRST + WM_MOUSEMOVE];
- virtual void WMLButtonUp(RTMessage Msg) = [WM_FIRST + WM_LBUTTONUP];
- virtual void WMLButtonDblClk(RTMessage Msg) = [WM_FIRST + WM_LBUTTONDBLCLK];
- virtual void WMMDIActivate(RTMessage Msg) = [WM_FIRST + WM_MDIACTIVATE];
-
- void SetScroller();
-
- TFolderView(StreamableInit s);
- virtual Pvoid read(Ripstream is);
- virtual void write(Ropstream os);
-
- private:
- HFONT oldfont;
-
- virtual const Pchar streamableName() const { return "FolderView"; }
- };
-
- #endif