1 #ifndef XFILEIMAGE_H
2 #define XFILEIMAGE_H
3 
4 #include "InputDialog.h"
5 #include "PathLinker.h"
6 
7 class XFileImage : public FXMainWindow
8 {
9     FXDECLARE(XFileImage)
10 protected:
11     FXbool             hiddenfiles;           // Show or hide hidden files
12     FXbool             thumbnails;            // Show or hide image thumbnails
13     FXuint             fileview;              // File list view
14     FXuint             liststyle;             // Icon list style
15     FXImageView*       imageview;             // Image viewer
16     FXRecentFiles      mrufiles;              // Recent files
17     FXString           filename;              // File being viewed
18     FXMenuBar*         menubar;               // Menu bar
19     FXToolBar*         toolbar;               // Tool bar
20     FXToolBarShell*    dragshell1;            // Shell for floating menubar
21     FXHorizontalFrame* statusbar;             // Status bar
22     FXbool             filelistbefore;
23     FXbool             vertpanels;
24     FXSplitter*        splitter;              // Splitter
25     FXVerticalFrame*   filebox;               // Box containing directories/files
26     FileList*          filelist;              // File List
27     FXLabel*           label;                 // Directory path
28     FXMenuPane*        filemenu;              // File menu
29     FXMenuPane*        viewmenu;              // View menu
30     FXMenuPane*        helpmenu;              // Help menu
31     FXMenuPane*        imagemenu;             // Image menu
32     FXMenuPane*        prefsmenu;             // Preferences menu
33     FXTextField*       filter;                // Filter for tree list
34     FXImage*           img;                   // Image loaded
35     FXImage*           tmpimg;                // Temporary image
36     FXColor*           tmpdata;               // Temporary image data
37     int                indZoom;               // Zoom index
38     double             zoomval;               // Actual zoom factor
39     FXbool             fitwin;                // Fit window when opening an image
40     FXbool             filterimgs;            // List only image files in file list
41     InputDialog*       printdialog;
42     FXbool             smoothscroll;
43     double             filewidth_pct;
44     double             fileheight_pct;
45     FXArrowButton*     btnbackhist;           // Back history
46     FXArrowButton*     btnforwardhist;        // Forward history
47     PathLinker*        pathlink;
48     TextLabel*         pathtext;
49     int                prev_width;
50     int                prev_height;
51 protected:
XFileImage()52     XFileImage() : hiddenfiles(false), thumbnails(false), fileview(0), liststyle(0), imageview(NULL), menubar(NULL), toolbar(NULL), dragshell1(NULL),
53                    statusbar(NULL), filelistbefore(false), vertpanels(false), splitter(NULL),
54                    filebox(NULL), filelist(NULL), label(NULL), filemenu(NULL), viewmenu(NULL), helpmenu(NULL), imagemenu(NULL),
55                    prefsmenu(NULL), filter(NULL), img(NULL), tmpimg(NULL), tmpdata(NULL), indZoom(0),
56                    zoomval(0.0), fitwin(false), filterimgs(false), printdialog(NULL), smoothscroll(false), filewidth_pct(0.0), fileheight_pct(0.0),
57                    btnbackhist(NULL), btnforwardhist(NULL), pathlink(NULL), pathtext(NULL), prev_width(0), prev_height(0)
58     {}
59 public:
60     long onCmdAbout(FXObject*, FXSelector, void*);
61     long onCmdOpen(FXObject*, FXSelector, void*);
62     long onCmdPrint(FXObject*, FXSelector, void*);
63     long onCmdShowMini(FXObject*, FXSelector, void*);
64     long onCmdShowBig(FXObject*, FXSelector, void*);
65     long onCmdShowDetails(FXObject*, FXSelector, void*);
66     long onCmdShowRows(FXObject*, FXSelector, void*);
67     long onCmdShowCols(FXObject*, FXSelector, void*);
68     long onCmdAutosize(FXObject*, FXSelector, void*);
69     long onCmdSave(FXObject*, FXSelector, void*);
70     long onSigHarvest(FXObject*, FXSelector, void*);
71     long onCmdQuit(FXObject*, FXSelector, void*);
72     long onCmdRestart(FXObject*, FXSelector, void*);
73     long onUpdTitle(FXObject*, FXSelector, void*);
74     long onCmdRecentFile(FXObject*, FXSelector, void*);
75     long onCmdRotate(FXObject*, FXSelector, void*);
76     long onCmdMirror(FXObject*, FXSelector, void*);
77     long onCmdZoomIn(FXObject*, FXSelector, void*);
78     long onCmdZoomOut(FXObject*, FXSelector, void*);
79     long onCmdZoom100(FXObject*, FXSelector, void*);
80     long onCmdZoomWin(FXObject*, FXSelector, void*);
81     long onUpdImage(FXObject*, FXSelector, void*);
82     long onUpdFileView(FXObject*, FXSelector, void*);
83     long onUpdIconView(FXObject*, FXSelector, void*);
84     long onCmdToggleHidden(FXObject*, FXSelector, void*);
85     long onUpdToggleHidden(FXObject*, FXSelector, void*);
86     long onCmdToggleThumbnails(FXObject*, FXSelector, void*);
87     long onUpdToggleThumbnails(FXObject*, FXSelector, void*);
88     long onCmdItemDoubleClicked(FXObject*, FXSelector, void*);
89     long onCmdItemClicked(FXObject*, FXSelector, void*);
90     long onCmdToggleFitWin(FXObject*, FXSelector, void*);
91     long onUpdToggleFitWin(FXObject*, FXSelector, void*);
92     long onCmdPopupMenu(FXObject*, FXSelector, void*);
93     long onCmdHome(FXObject*, FXSelector, void*);
94     long onCmdWork(FXObject*, FXSelector, void*);
95     long onCmdDirUp(FXObject*, FXSelector, void*);
96     long onUpdDirUp(FXObject*, FXSelector, void*);
97     long onCmdDirBack(FXObject*, FXSelector, void*);
98     long onUpdDirBack(FXObject*, FXSelector, void*);
99     long onCmdDirForward(FXObject*, FXSelector, void*);
100     long onUpdDirForward(FXObject*, FXSelector, void*);
101     long onCmdDirBackHist(FXObject*, FXSelector, void*);
102     long onUpdDirBackHist(FXObject*, FXSelector, void*);
103     long onCmdDirForwardHist(FXObject*, FXSelector, void*);
104     long onUpdDirForwardHist(FXObject*, FXSelector, void*);
105     long onCmdToggleFilterImages(FXObject*, FXSelector, void*);
106     long onUpdToggleFilterImages(FXObject*, FXSelector, void*);
107     long onCmdHorzVertPanels(FXObject*, FXSelector, void*);
108     long onUpdHorzVertPanels(FXObject*, FXSelector, void*);
109     long onCmdToggleFileListBefore(FXObject*, FXSelector, void*);
110     long onUpdToggleFileListBefore(FXObject*, FXSelector, void*);
111 	long onKeyPress(FXObject*, FXSelector, void*);
112 	long onKeyRelease(FXObject*, FXSelector, void*);
113 
114 
115 public:
116     enum
117     {
118         ID_ABOUT=FXMainWindow::ID_LAST,
119         ID_OPEN,
120         ID_POPUP_MENU,
121         ID_TOGGLE_HIDDEN,
122         ID_TOGGLE_THUMBNAILS,
123         ID_SHOW_MINI_ICONS,
124         ID_SHOW_BIG_ICONS,
125         ID_SHOW_DETAILS,
126         ID_COLS,
127         ID_ROWS,
128         ID_AUTO,
129         ID_TITLE,
130         ID_PRINT,
131         ID_HARVEST,
132         ID_QUIT,
133         ID_RESTART,
134         ID_FILELIST,
135         ID_RECENTFILE,
136         ID_ROTATE_90,
137         ID_ROTATE_270,
138         ID_MIRROR_HOR,
139         ID_MIRROR_VER,
140         ID_SCALE,
141         ID_ZOOM_IN,
142         ID_ZOOM_OUT,
143         ID_ZOOM_100,
144         ID_ZOOM_WIN,
145         ID_TOGGLE_FIT_WIN,
146         ID_TOGGLE_FILTER_IMAGES,
147         ID_GO_HOME,
148         ID_GO_WORK,
149         ID_DIR_UP,
150         ID_DIR_BACK,
151         ID_DIR_FORWARD,
152         ID_DIR_BACK_HIST,
153         ID_DIR_FORWARD_HIST,
154         ID_HORZ_PANELS,
155         ID_VERT_PANELS,
156         ID_TOGGLE_FILELIST_BEFORE,
157         ID_LAST
158     };
159 public:
160     XFileImage(FXApp*, FXbool);
161     virtual void create();
162     FXbool loadimage(const FXString&);
163     void saveConfig();
164 
165     void start(FXString);
166     virtual ~XFileImage();
setSmoothScroll(FXbool smooth)167     void setSmoothScroll(FXbool smooth)
168     {
169         smoothscroll = smooth;
170     }
171 };
172 #endif
173