8 static struct wgt_window *win;
9 static struct wgt_widget *lb_instto, *bn_inst, *bn_cancel, *cb_devs, *ck_usbonly;
11 static struct rawdisk_device rawdev[64];
12 static const char *items[64];
13 static int num_rawdev;
16 static void update_disks(void);
17 static void onclick(struct wgt_widget *w);
18 static void onmodify(struct wgt_widget *w);
19 static void ck_usbonly_handler(struct wgt_widget *w);
22 int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hprevinst, char *cmdline, int showcmd)
28 if(!(win = wgt_window("256boss USB stick installer", 400, 300))) {
31 lb_instto = wgt_label(win, "Install to device:", 10, 10);
33 x = wgt_xpos_after(lb_instto, WGT_AUTO);
34 cb_devs = wgt_combo(win, items, num_rawdev, 0, x, 10, 200, WGT_AUTO, onmodify);
36 y = wgt_ypos_after(cb_devs, 16);
37 ck_usbonly = wgt_checkbox(win, "only show USB devices", 1, x, y,
38 WGT_AUTO, WGT_AUTO, ck_usbonly_handler);
40 y = wgt_ypos_after(ck_usbonly, 16);
41 bn_inst = wgt_button(win, "Install", 10, y, WGT_AUTO, WGT_AUTO, onclick);
43 x = wgt_xpos_after(bn_inst, WGT_AUTO);
44 bn_cancel = wgt_button(win, "Cancel", x, y, WGT_AUTO, WGT_AUTO, onclick);
48 while(GetMessage(&msg, 0, 0, 0)) {
49 TranslateMessage(&msg);
50 DispatchMessage(&msg);
53 wgt_destroy_window(win);
57 static int isusbdev(struct rawdisk_device *dev)
59 char *ptr = dev->path;
64 buf[i] = tolower(ptr[i]);
66 if(memcmp(buf, "usb", 3) == 0) {
74 static void update_disks(void)
78 for(i=0; i<num_rawdev; i++) {
83 if((num_rawdev = rawdisk_detect(rawdev, sizeof rawdev / sizeof *rawdev)) == -1) {
84 MessageBox(0, "Failed to detect storage devices!", 0, MB_OK);
88 if(wgt_checkbox_checked(ck_usbonly)) {
89 for(i=0; i<num_rawdev; i++) {
90 if(!isusbdev(rawdev + i)) {
93 rawdev[i] = rawdev[--num_rawdev];
98 for(i=0; i<num_rawdev; i++) {
99 items[i] = rawdev[i].name;
102 wgt_combo_setitems(cb_devs, items, num_rawdev);
105 wgt_enable_widget(cb_devs);
106 wgt_enable_widget(bn_inst);
108 wgt_disable_widget(cb_devs);
109 wgt_disable_widget(bn_inst);
113 static void onclick(struct wgt_widget *w)
116 MessageBox(0, "clicked", "clicked", MB_OK);
117 } else if(w == bn_cancel) {
119 } else if(w == ck_usbonly) {
124 static void onmodify(struct wgt_widget *w)
126 int sel = wgt_combo_selected(w);
128 const char *selstr = wgt_get_combo_item(w, sel);
129 MessageBox(0, selstr, "selected item", MB_OK);
133 static void ck_usbonly_handler(struct wgt_widget *w)