1 /********************************************************************************
2 *                                                                               *
3 *                           Test Icon List Widget                               *
4 *                                                                               *
5 *********************************************************************************
6 * Copyright (C) 1998,2006 by Jeroen van der Zijp.   All Rights Reserved.        *
7 *********************************************************************************
8 * $Id: iconlist.cpp,v 1.23 2006/01/22 17:59:01 fox Exp $                        *
9 ********************************************************************************/
10 #include "fx.h"
11 #include <stdio.h>
12 #include <stdlib.h>
13 
14 
15 
16 
17 /*******************************************************************************/
18 
19 
20 // Window
21 class IconListWindow : public FXMainWindow {
22   FXDECLARE(IconListWindow)
23 protected:
24   FXMenuBar*         menubar;
25   FXMenuPane*        filemenu;
26   FXMenuPane*        arrangemenu;
27   FXMenuPane*        sortmenu;
28   FXSplitter*        splitter;
29   FXVerticalFrame*   group;
30   FXVerticalFrame*   subgroup;
31   FXIconList*        iconlist;
32   FXTextField*       pattern;
33   FXGIFIcon*         big_folder;
34   FXGIFIcon*         mini_folder;
35   FXDebugTarget*     dbg;
36 protected:
IconListWindow()37   IconListWindow(){}
38 public:
39   long onQuit(FXObject*,FXSelector,void*);
40 public:
41   enum{
42     ID_DIRECTORY=FXMainWindow::ID_LAST,
43     ID_PATTERN,
44     ID_LAST
45     };
46 public:
47   IconListWindow(FXApp* a);
48   virtual void create();
49   virtual ~IconListWindow();
50   };
51 
52 
53 
54 /*******************************************************************************/
55 
56 
57 /* Generated by reswrap from file bigfolder.gif */
58 const unsigned char bigfolder[]={
59   0x47,0x49,0x46,0x38,0x37,0x61,0x20,0x00,0x20,0x00,0xf2,0x00,0x00,0xb2,0xc0,0xdc,
60   0x80,0x80,0x80,0xff,0xff,0xff,0xff,0xff,0x00,0xc0,0xc0,0xc0,0x00,0x00,0x00,0x80,
61   0x80,0x00,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x00,0x03,
62   0x83,0x08,0xba,0xdc,0xfe,0x30,0xca,0x49,0x6b,0x0c,0x38,0x67,0x0b,0x83,0xf8,0x20,
63   0x18,0x70,0x8d,0x37,0x10,0x67,0x8a,0x12,0x23,0x09,0x98,0xab,0xaa,0xb6,0x56,0x40,
64   0xdc,0x78,0xae,0x6b,0x3c,0x5f,0xbc,0xa1,0xa0,0x70,0x38,0x2c,0x14,0x60,0xb2,0x98,
65   0x32,0x99,0x34,0x1c,0x05,0xcb,0x28,0x53,0xea,0x44,0x4a,0xaf,0xd3,0x2a,0x74,0xca,
66   0xc5,0x6a,0xbb,0xe0,0xa8,0x16,0x4b,0x66,0x7e,0xcb,0xe8,0xd3,0x38,0xcc,0x46,0x9d,
67   0xdb,0xe1,0x75,0xba,0xfc,0x9e,0x77,0xe5,0x70,0xef,0x33,0x1f,0x7f,0xda,0xe9,0x7b,
68   0x7f,0x77,0x7e,0x7c,0x7a,0x56,0x85,0x4d,0x84,0x82,0x54,0x81,0x88,0x62,0x47,0x06,
69   0x91,0x92,0x93,0x94,0x95,0x96,0x91,0x3f,0x46,0x9a,0x9b,0x9c,0x9d,0x9e,0x9a,0x2e,
70   0xa1,0xa2,0x13,0x09,0x00,0x3b
71   };
72 
73 
74 /* Generated by reswrap from file minifolder.gif */
75 const unsigned char minifolder[]={
76   0x47,0x49,0x46,0x38,0x37,0x61,0x10,0x00,0x10,0x00,0xf2,0x00,0x00,0xb2,0xc0,0xdc,
77   0x80,0x80,0x80,0xc0,0xc0,0xc0,0xff,0xff,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x00,
78   0x00,0x00,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x03,
79   0x3b,0x08,0xba,0xdc,0x1b,0x10,0x3a,0x16,0xc4,0xb0,0x22,0x4c,0x50,0xaf,0xcf,0x91,
80   0xc4,0x15,0x64,0x69,0x92,0x01,0x31,0x7e,0xac,0x95,0x8e,0x58,0x7b,0xbd,0x41,0x21,
81   0xc7,0x74,0x11,0xef,0xb3,0x5a,0xdf,0x9e,0x1c,0x6f,0x97,0x03,0xba,0x7c,0xa1,0x64,
82   0x48,0x05,0x20,0x38,0x9f,0x50,0xe8,0x66,0x4a,0x75,0x24,0x00,0x00,0x3b
83   };
84 
85 
86 // Object implementation
87 FXIMPLEMENT(IconListWindow,FXMainWindow,NULL,0)
88 
89 
90 // Make some windows
IconListWindow(FXApp * a)91 IconListWindow::IconListWindow(FXApp* a):FXMainWindow(a,"Icon List Test",NULL,NULL,DECOR_ALL,0,0,800,600){
92   int i;
93 
94   // Menu bar
95   menubar=new FXMenuBar(this,LAYOUT_SIDE_TOP|LAYOUT_FILL_X);
96 
97   // File menu
98   filemenu=new FXMenuPane(this);
99   new FXMenuCommand(filemenu,"&Quit\tCtl-Q",NULL,getApp(),FXApp::ID_QUIT);
100   new FXMenuTitle(menubar,"&File",NULL,filemenu);
101 
102   // Status bar
103   FXStatusBar *status=new FXStatusBar(this,LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|STATUSBAR_WITH_DRAGCORNER);
104 
105   // Main window interior
106   group=new FXVerticalFrame(this,LAYOUT_FILL_X|LAYOUT_FILL_Y, 0,0,0,0, 0,0,0,0);
107 
108   // Files
109   new FXLabel(group,"Icon List WIdget",NULL,LAYOUT_TOP|LAYOUT_FILL_X|FRAME_SUNKEN);
110   subgroup=new FXVerticalFrame(group,FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y, 0,0,0,0, 0,0,0,0);
111 
112   dbg=new FXDebugTarget();
113 
114   // Icon list on the right
115   iconlist=new FXIconList(subgroup,dbg,1,LAYOUT_FILL_X|LAYOUT_FILL_Y|ICONLIST_DETAILED|ICONLIST_EXTENDEDSELECT);
116   iconlist->appendHeader("Name",NULL,200);
117   iconlist->appendHeader("Type",NULL,100);
118   iconlist->appendHeader("Size",NULL,60);
119   iconlist->appendHeader("Modified Date",NULL,150);
120   iconlist->appendHeader("User",NULL,50);
121   iconlist->appendHeader("Group",NULL,50);
122 
123   big_folder=new FXGIFIcon(getApp(),bigfolder);
124   mini_folder=new FXGIFIcon(getApp(),minifolder);
125 
126   iconlist->appendItem("Really BIG and wide item to test\tDocument\t10000\tJune 13, 1999\tUser\tSoftware",big_folder,mini_folder);
127   for(i=1; i<400; i++){
128     iconlist->appendItem("Filename_"+FXStringVal(i)+"\tDocument\t10000\tJune 13, 1999\tUser\tSoftware",big_folder,mini_folder);
129     }
130   iconlist->setCurrentItem(iconlist->getNumItems()-1);
131 
132   // Arrange menu
133   arrangemenu=new FXMenuPane(this);
134   new FXMenuRadio(arrangemenu,"&Details",iconlist,FXIconList::ID_SHOW_DETAILS);
135   new FXMenuRadio(arrangemenu,"&Small Icons",iconlist,FXIconList::ID_SHOW_MINI_ICONS);
136   new FXMenuRadio(arrangemenu,"&Big Icons",iconlist,FXIconList::ID_SHOW_BIG_ICONS);
137   new FXMenuSeparator(arrangemenu);
138   new FXMenuRadio(arrangemenu,"&Rows",iconlist,FXIconList::ID_ARRANGE_BY_ROWS);
139   new FXMenuRadio(arrangemenu,"&Columns",iconlist,FXIconList::ID_ARRANGE_BY_COLUMNS);
140   new FXMenuTitle(menubar,"&Arrange",NULL,arrangemenu);
141 
142   // Sort menu
143   sortmenu=new FXMenuPane(this);
144   new FXMenuCommand(sortmenu,"&Name",NULL,NULL,0);
145   new FXMenuCommand(sortmenu,"&Type",NULL,NULL,0);
146   new FXMenuCommand(sortmenu,"&Size",NULL,NULL,0);
147   new FXMenuCommand(sortmenu,"T&ime",NULL,NULL,0);
148   new FXMenuCommand(sortmenu,"&User",NULL,NULL,0);
149   new FXMenuCommand(sortmenu,"&Group",NULL,NULL,0);
150   new FXMenuCheck(sortmenu,"&Reverse",NULL,0);
151   new FXMenuCommand(sortmenu,"Hide status",NULL,status,FXWindow::ID_HIDE);
152   new FXMenuCommand(sortmenu,"Show status",NULL,status,FXWindow::ID_SHOW);
153   new FXMenuTitle(menubar,"&Sort",NULL,sortmenu);
154 
155   new FXToolTip(getApp());
156   }
157 
158 
~IconListWindow()159 IconListWindow::~IconListWindow(){
160   delete filemenu;
161   delete arrangemenu;
162   delete sortmenu;
163   delete big_folder;
164   delete mini_folder;
165   delete dbg;
166   }
167 
168 // Make application
create()169 void IconListWindow::create(){
170   FXMainWindow::create();
171   show(PLACEMENT_SCREEN);
172   }
173 
174 
175 
176 /*******************************************************************************/
177 
178 
179 // Start the whole thing
main(int argc,char * argv[])180 int main(int argc,char *argv[]){
181   FXApp application("IconList","FoxTest");
182   application.init(argc,argv);
183   new IconListWindow(&application);
184   application.create();
185   return application.run();
186   }
187 
188 
189