void DreamGenContext::startloading() { const Room *room = (Room *)cs.ptr(bx, sizeof(Room)); startloading(room); }
/*-----------------------------------------------------------------------------------*/ PROCESS_THREAD(directory_process, ev, data) { unsigned char i; PROCESS_BEGIN(); width = ctk_draw_width() - 2; height = ctk_draw_height() - 2 - CTK_CONF_MENUS; ctk_window_new(&window, width, height, "Directory"); /* loaddirectory();*/ makewindow(0); show_statustext("Loading directory..."); startloading(); ctk_window_open(&window); while(1) { PROCESS_WAIT_EVENT(); if(ev == PROCESS_EVENT_CONTINUE) { read_dirent(); load_dirent(); if(loading != 0) { process_post(&directory_process, PROCESS_EVENT_CONTINUE, NULL); } } else if(ev == ctk_signal_widget_activate) { if(data == (process_data_t)&reloadbutton) { for(i = 0; dscs[i] != NULL; ++i) { LOADER_UNLOAD_DSC(dscs[i]); dscs[i] = NULL; } /* loaddirectory();*/ startloading(); makewindow(0); ctk_window_open(&window); } else if(data == (process_data_t)&morebutton) { makewindow(morestart); ctk_window_open(&window); } else if(data == (process_data_t)&backbutton) { makewindow(0); ctk_window_open(&window); } else if(data == (process_data_t)&autoexitbutton) { autoexit = 1 - autoexit; if(autoexit == 1) { ctk_label_set_text(&autoexitlabel, autoexiton); } else { ctk_label_set_text(&autoexitlabel, autoexitoff); } CTK_WIDGET_REDRAW(&autoexitlabel); } else { for(i = 0; dscs[i] != NULL; ++i) { if(data == (process_data_t)(dscs[i]->icon)) { program_handler_load(dscs[i]->prgname, NULL); if(autoexit) { ctk_window_close(&window); quit(); } break; } } } } else if(ev == ctk_signal_widget_select) { if(data == (process_data_t)&reloadbutton) { show_statustext("Reload directory"); } else if(data == (process_data_t)&morebutton) { show_statustext("Show more files"); } else if(data == (process_data_t)&backbutton) { show_statustext("Show first files"); } else if(data == (process_data_t)&autoexitbutton) { show_statustext("Exit when loading program"); } else { for(i = 0; dscs[i] != NULL; ++i) { if(data == (process_data_t)(dscs[i]->icon)) { show_statustext(dscs[i]->description); break; } } } } else if(ev == ctk_signal_window_close && data == (process_data_t)&window) { quit(); } else if(ev == PROCESS_EVENT_EXIT) { ctk_window_close(&window); quit(); } } PROCESS_END(); }
/*-----------------------------------------------------------------------------------*/ EK_EVENTHANDLER(directory_eventhandler, ev, data) { unsigned char i; EK_EVENTHANDLER_ARGS(ev, data); if(ev == EK_EVENT_INIT) { ctk_window_new(&window, width, height, "Directory"); /* loaddirectory();*/ makewindow(0); show_statustext("Loading directory..."); startloading(); ctk_window_open(&window); } else if(ev == EK_EVENT_CONTINUE) { read_dirent(); load_dirent(); if(loading != 0) { ek_post(id, EK_EVENT_CONTINUE, NULL); } } else if(ev == ctk_signal_widget_activate) { if(data == (ek_data_t)&reloadbutton) { for(i = 0; dscs[i] != NULL; ++i) { LOADER_UNLOAD_DSC(dscs[i]); dscs[i] = NULL; } /* loaddirectory();*/ startloading(); makewindow(0); ctk_window_open(&window); } else if(data == (ek_data_t)&morebutton) { makewindow(morestart); ctk_window_open(&window); } else if(data == (ek_data_t)&backbutton) { makewindow(0); ctk_window_open(&window); } else if(data == (ek_data_t)&autoexitbutton) { autoexit = 1 - autoexit; if(autoexit == 1) { ctk_label_set_text(&autoexitlabel, autoexiton); } else { ctk_label_set_text(&autoexitlabel, autoexitoff); } CTK_WIDGET_REDRAW(&autoexitlabel); } else { for(i = 0; dscs[i] != NULL; ++i) { if(data == (ek_data_t)(dscs[i]->icon)) { program_handler_load(dscs[i]->prgname, NULL); if(autoexit) { ctk_window_close(&window); quit(); } break; } } } } else if(ev == ctk_signal_widget_select) { if(data == (ek_data_t)&reloadbutton) { show_statustext("Reload directory"); } else if(data == (ek_data_t)&morebutton) { show_statustext("Show more files"); } else if(data == (ek_data_t)&backbutton) { show_statustext("Show first files"); } else if(data == (ek_data_t)&autoexitbutton) { show_statustext("Exit when loading program"); } else { for(i = 0; dscs[i] != NULL; ++i) { if(data == (ek_data_t)(dscs[i]->icon)) { show_statustext(dscs[i]->description); break; } } } } else if(ev == ctk_signal_window_close && data == (ek_data_t)&window) { quit(); } else if(ev == EK_EVENT_REQUEST_EXIT) { ctk_window_close(&window); quit(); } }