1 /* imagebrowser.c- image browser widget
3 * WPrefs - Window Maker Preferences Program
5 * Copyright (c) 2000-2003 Alfredo K. Kojima
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
26 # include "WPrefs.h" /* only for _() */
31 #include <WINGs/WINGs.h>
32 #include <WINGs/WINGsP.h>
37 #include "imagebrowser.h"
39 struct _ImageBrowser
{
53 WMSize maxPreviewSize
;
55 ImageBrowserDelegate
*delegate
;
60 #define DEFAULT_WIDTH 300
61 #define DEFAULT_HEIGHT 200
63 ImageBrowser
*CreateImageBrowser(WMScreen
* scr
, char *title
, char **paths
, int pathN
,
64 WMSize
* maxSize
, WMWidget
* auxWidget
)
70 br
= wmalloc(sizeof(ImageBrowser
));
72 br
->win
= WMCreateWindow(scr
, "imageBrowser");
73 WMResizeWidget(br
->win
, DEFAULT_WIDTH
, DEFAULT_HEIGHT
);
75 br
->pathP
= WMCreatePopUpButton(br
->win
);
76 WMMoveWidget(br
->pathP
, (DEFAULT_WIDTH
- 80) / 2, 10);
77 WMResizeWidget(br
->pathP
, DEFAULT_WIDTH
- 80, 20);
79 for (i
= 0; i
< pathN
; i
++) {
80 WMAddPopUpButtonItem(br
->pathP
, paths
[i
]);
83 br
->viewBtn
= WMCreateCommandButton(br
->win
);
84 WMSetButtonText(br
->viewBtn
, _("View"));
85 WMResizeWidget(br
->viewBtn
, 80, 24);
86 WMMoveWidget(br
->viewBtn
, 10, DEFAULT_HEIGHT
- 29);
88 br
->cancelBtn
= WMCreateCommandButton(br
->win
);
89 WMSetButtonText(br
->cancelBtn
, _("Cancel"));
90 WMResizeWidget(br
->cancelBtn
, 80, 24);
91 WMMoveWidget(br
->cancelBtn
, DEFAULT_WIDTH
- 10 - 80, DEFAULT_HEIGHT
- 29);
93 br
->okBtn
= WMCreateCommandButton(br
->win
);
94 WMSetButtonText(br
->okBtn
, _("OK"));
95 WMResizeWidget(br
->okBtn
, 80, 24);
96 WMMoveWidget(br
->okBtn
, DEFAULT_WIDTH
- 10 - 160 - 5, DEFAULT_HEIGHT
- 29);
98 br
->auxWidget
= auxWidget
;
100 h
= DEFAULT_HEIGHT
- 20 /* top and bottom spacing */
101 - 25 /* popup menu and spacing */
102 - 29; /* button row and spacing */
104 if (auxWidget
!= NULL
) {
105 h
-= WMWidgetHeight(auxWidget
) + 5;
107 W_ReparentView(WMWidgetView(auxWidget
), WMWidgetView(br
->win
), 10, 10 + 25 + h
+ 5);
110 br
->sview
= WMCreateScrollView(br
->win
);
111 WMResizeWidget(br
->sview
, DEFAULT_WIDTH
- 20, h
);
112 WMMoveWidget(br
->sview
, 10, 5 + 20 + 5);
114 WMMapSubwidgets(br
->win
);
119 void ShowImageBrowser(ImageBrowser
* browser
)
121 WMMapWidget(browser
->win
);
124 void CloseImageBrowser(ImageBrowser
* browser
)
126 WMUnmapWidget(browser
->win
);
129 void SetImageBrowserPathList(ImageBrowser
* browser
, char **paths
, int pathN
)
133 void SetImageBrowserDelegate(ImageBrowser
* browser
, ImageBrowserDelegate
* delegate
)
138 void DestroyImageBrowser(ImageBrowser
* browser
)
140 WMDestroyWidget(browser
->win
);