void menu_rom_init() { if(!load_dir()) { to_base_dir(); } list = menu_new_list("Choose ROM"); list->back_func = back; }
void SingleBrowser::calc_self() { BrowserBig::calc_self(); if (box_delete) { box_delete->set_draw_required(); // Damit Buttons eingedrueckt werd. switch (box_delete->get_button_clicked()) { case 1: { Filename to_delete = get_current_file(); highlight_neighboring_level_before_deletion(); ::delete_file(to_delete.get_rootful().c_str()); } load_dir(get_current_file(), true); // falls through case 2: delete box_delete; box_delete = 0; set_draw_required(); break; default: ; } } else { // No additional windows open if (button_edit.get_clicked()) { on_file_select(get_current_file()); } else if (button_export.get_clicked()) { Level l(get_current_file()); std::string s = get_current_file().get_rootless(); for (size_t i = 0; i < s.size(); ++i) if (s[i] == '/') s[i] = '-'; s += ".png"; l.export_image(Filename(s)); button_export.set_text(Language::browser_export_image_done); Sound::play_loud(Sound::DISKSAVE); } else if (button_delete.get_clicked()) { if (exists(get_current_file().get_rootful().c_str())) { std::string s1 = Language::editor_file_name + ' ' + get_current_file().get_rootless(); std::string s2 = Language::editor_level_name + ' ' + LevelMetaData(get_current_file()).get_name(); box_delete = new Api::BoxMessage(500, 3, Language::browser_box_delete_tit_lev); box_delete->add_text(Language::browser_box_delete_que_lev); box_delete->add_text(s1); box_delete->add_text(s2); box_delete->add_button(Language::common_yes,useR->key_me_okay); box_delete->add_button(Language::common_no, useR->key_me_exit); Manager::add_focus(box_delete); } } } // end of windows open/not open }
void ui_init_save_file(const char *path, int (*filter)(const char *fn)) { char dir[PATH_MAX], *p; fc.filter = filter; fz_strlcpy(dir, path, sizeof dir); for (p=dir; *p; ++p) if (*p == '\\') *p = '/'; fz_cleanname(dir); p = strrchr(dir, '/'); if (p) { *p = 0; load_dir(dir); ui_input_init(&fc.input_file, p+1); } else { load_dir("."); ui_input_init(&fc.input_file, dir); } }
static void list_drives(void) { static struct list drive_list; char dir[PATH_MAX], vis[PATH_MAX]; const char *home = getenv("HOME"); const char *user = getenv("USER"); int i; ui_list_begin(&drive_list, nelem(common_dirs), 0, nelem(common_dirs) * ui.lineheight + 4); for (i = 0; i < nelem(common_dirs); ++i) if (has_dir(home, user, i, dir, vis)) if (ui_list_item(&drive_list, common_dirs[i].name, vis, 0)) load_dir(dir); ui_list_end(&drive_list); }
static int do_load(struct pkgdir *pkgdir, unsigned ldflags) { int n; if (pkgdir->pkgroups == NULL) pkgdir->pkgroups = pkgroup_idx_new(); if (pkgdir->prev_pkgdir) /* make sense for mkidx only */ ldflags |= PKGDIR_LD_DESC; /* load descriptions now, it's faster although consumes about 15% more memory */ n = load_dir(pkgdir, pkgdir->path, pkgdir->pkgs, pkgdir->pkgroups, ldflags, pkgdir->prev_pkgdir, pkgdir->na); return n; }
int main(){ const char * s; char path[256]; int handle; struct controller_data_s pad; int pos=0,ppos=-1,start,count,i; xenos_init(VIDEO_MODE_AUTO); console_init(); xenon_make_it_faster(XENON_SPEED_FULL); usb_init(); usb_do_poll(); xenon_ata_init(); xenon_atapi_init(); fatInitDefault(); handle=-1; handle=bdev_enum(handle,&s); if(handle<0) return 0; strcpy(path,s); strcat(path,":/"); load_dir(path); for(;;){ usb_do_poll(); get_controller_data(&pad, 0); if (pad.s1_y>STICK_THRESHOLD) --pos; if (pad.s1_y<-STICK_THRESHOLD) ++pos; if (entrycount && (pos<0 || pos>=entrycount)){ pos=ppos; continue; } if (pad.logo) return 0; if (pad.a){ if(entries[pos].d_type&DT_DIR){ append_dir_to_path(path,entries[pos].d_name); load_dir(path); ppos=-1; pos=0; }else{ char fn[256]; strcpy(fn,path); strcat(fn,entries[pos].d_name); printf("%s\n",fn); if (strstr(entries[pos].d_name,".elf") || strstr(entries[pos].d_name,".elf32")) { // ugly elf_runFromDisk(fn); }else{ FILE * f=fopen(fn,"rb"); if(f){ int size=1024*1024; int totred=0,red; void * buf=malloc(size); u64 beg=mftb(); do{ red=fread(buf,1,size,f); totred+=red; console_putch('.'); }while(red==size); printf("\n%d bytes, %f KB/s\n",totred, (float)(totred/1024.0)/((float)(mftb()-beg)/PPC_TIMEBASE_FREQ)); free(buf); fclose(f); } } } } if(pad.back){ append_dir_to_path(path,".."); load_dir(path); ppos=-1; pos=0; } if(pad.b){ do{ handle=bdev_enum(handle,&s); }while(handle<0); strcpy(path,s); strcat(path,":/"); load_dir(path); ppos=-1; pos=0; } if (ppos==pos) continue; memset(&pad,0,sizeof(struct controller_data_s)); console_set_colors(BG_COL,FG_COL); console_clrscr(); printf("A: select, B: change disk, Back: parent dir, Logo: reload Xell\n\n%s\n\n",path); start=MAX(0,pos-MAX_DISPLAYED_ENTRIES/2); count=MIN(MAX_DISPLAYED_ENTRIES,entrycount-start); for(i=start;i<start+count;++i){ struct dirent *de = &entries[i]; if (i==pos){ console_set_colors(FG_COL,BG_COL); }else{ console_set_colors(BG_COL,FG_COL); } if (de->d_type&DT_DIR) console_putch('['); s=de->d_name; while(*s) console_putch(*s++); if (de->d_type&DT_DIR) console_putch(']'); console_putch('\r'); console_putch('\n'); } ppos=pos; do{ usb_do_poll(); get_controller_data(&pad, 0); }while(pad.a || pad.b || pad.back || pad.s1_y>STICK_THRESHOLD || pad.s1_y<-STICK_THRESHOLD); } return 0; }
void ReplayBrowser::calc_self() { BrowserBig::calc_self(); if (browser_save) { browser_save->set_draw_required(); if (browser_save->get_exit()) { if (browser_save->get_exit_with()) { useR->single_last_level = browser_save->get_current_file(); // Replay-Verzeichnis und -Datei wurden aktualisiert, als // auf den Extraktions-Button gedrueckt wurde // Extract exactly the replay, not the level it points to! Level l(get_current_file()); l.save_to_file(browser_save->get_current_file()); Sound::play_loud(Sound::DISKSAVE); load_dir(get_current_file()); } delete browser_save; browser_save = 0; set_draw_required(); } } else if (box_delete) { box_delete->set_draw_required(); // Damit Buttons eingedrueckt werd. switch (box_delete->get_button_clicked()) { case 1: { Filename to_delete = get_current_file(); highlight_neighboring_level_before_deletion(); ::delete_file(to_delete.get_rootful().c_str()); } load_dir(get_current_file()); // falls through case 2: delete box_delete; box_delete = 0; set_draw_required(); break; default: ; } } // Replaybrowser normal, also ohne Extraktionsdialog else { if (!button_extract.get_hidden() && button_extract.get_clicked()) { useR->replay_last_level = get_current_file(); browser_save = new Api::SaveBrowser(gloB->dir_levels, gloB->ext_level, useR->single_last_level, Api::SaveBrowser::search_criterion_level, Api::SaveBrowser::new_box_overwrite_level); browser_save->set_y(50); // mittig, nicht der Editor-Standard browser_save->set_info_level_name(LevelMetaData( useR->replay_last_level).get_name()); browser_save->set_info_filename(useR->replay_last_level); Manager::add_focus(browser_save); } else if (!button_delete.get_hidden() && button_delete.get_clicked()) { if (exists(get_current_file().get_rootful().c_str())) { Replay r(get_current_file()); std::string s1 = Language::editor_file_name + ' ' + get_current_file().get_rootless(); std::string s2 = Language::editor_level_name + ' ' + LevelMetaData(r.get_level_filename()).get_name(); box_delete = new Api::BoxMessage(500, 3, Language::browser_box_delete_tit_rep); box_delete->add_text(Language::browser_box_delete_que_rep); box_delete->add_text(s1); box_delete->add_text(s2); box_delete->add_button(Language::common_yes,useR->key_me_okay); box_delete->add_button(Language::common_no, useR->key_me_exit); Manager::add_focus(box_delete); } } // Den normalen Dialog-Siedler-2-Rechtsklick realisieren: else if (hardware.get_mr()) { set_exit_with(EXIT_WITH_EXIT); } } }
int ui_save_file(char filename[PATH_MAX], void (*extra_panel)(void)) { int i, rv = 0; ui_panel_begin(0, 0, 4, 4, 1); { ui_layout(L, Y, NW, 0, 0); ui_panel_begin(150, 0, 0, 0, 0); { ui_layout(T, X, NW, 2, 2); list_drives(); if (extra_panel) { ui_spacer(); extra_panel(); } ui_layout(B, X, NW, 2, 2); if (ui_button("Cancel") || (!ui.focus && ui.key == KEY_ESCAPE)) { filename[0] = 0; rv = 1; } } ui_panel_end(); ui_layout(T, X, NW, 2, 2); if (ui_input(&fc.input_dir, 0, 1) == UI_INPUT_ACCEPT) load_dir(fc.input_dir.text); ui_layout(T, X, NW, 2, 2); ui_panel_begin(0, ui.gridsize, 0, 0, 0); { ui_layout(R, NONE, CENTER, 0, 0); if (ui_button("Save")) { fz_snprintf(filename, PATH_MAX, "%s/%s", fc.curdir, fc.input_file.text); rv = 1; } ui_spacer(); if (ui_button("\xe2\x9e\x95")) /* U+2795 HEAVY PLUS */ bump_file_version(1); if (ui_button("\xe2\x9e\x96")) /* U+2796 HEAVY MINUS */ bump_file_version(-1); ui_spacer(); ui_layout(ALL, X, CENTER, 0, 0); ui_input(&fc.input_file, 0, 1); } ui_panel_end(); ui_layout(ALL, BOTH, NW, 2, 2); ui_list_begin(&fc.list_dir, fc.count, 0, 0); for (i = 0; i < fc.count; ++i) { const char *name = fc.files[i].name; char buf[PATH_MAX]; if (fc.files[i].is_dir) fz_snprintf(buf, sizeof buf, "\xf0\x9f\x93\x81 %s", name); else fz_snprintf(buf, sizeof buf, "\xf0\x9f\x93\x84 %s", name); if (ui_list_item(&fc.list_dir, &fc.files[i], buf, i==fc.selected)) { fc.selected = i; if (fc.files[i].is_dir) { fz_snprintf(buf, sizeof buf, "%s/%s", fc.curdir, name); load_dir(buf); ui.active = NULL; } else { ui_input_init(&fc.input_file, name); } } } ui_list_end(&fc.list_dir); } ui_panel_end(); return rv; }
int ui_open_file(char filename[PATH_MAX]) { static int last_click_time = 0; static int last_click_sel = -1; int i, rv = 0; ui_panel_begin(0, 0, 4, 4, 1); { ui_layout(L, Y, NW, 0, 0); ui_panel_begin(150, 0, 0, 0, 0); { ui_layout(T, X, NW, 2, 2); list_drives(); ui_layout(B, X, NW, 2, 2); if (ui_button("Cancel") || (!ui.focus && ui.key == KEY_ESCAPE)) { filename[0] = 0; rv = 1; } } ui_panel_end(); ui_layout(T, X, NW, 2, 2); ui_panel_begin(0, ui.gridsize, 0, 0, 0); { if (fc.selected >= 0) { ui_layout(R, NONE, CENTER, 0, 0); if (ui_button("Open") || (!ui.focus && ui.key == KEY_ENTER)) { fz_snprintf(filename, PATH_MAX, "%s/%s", fc.curdir, fc.files[fc.selected].name); rv = 1; } ui_spacer(); } ui_layout(ALL, X, CENTER, 0, 0); if (ui_input(&fc.input_dir, 0, 1) == UI_INPUT_ACCEPT) load_dir(fc.input_dir.text); } ui_panel_end(); ui_layout(ALL, BOTH, NW, 2, 2); ui_list_begin(&fc.list_dir, fc.count, 0, 0); for (i = 0; i < fc.count; ++i) { const char *name = fc.files[i].name; char buf[PATH_MAX]; if (fc.files[i].is_dir) fz_snprintf(buf, sizeof buf, "%C %s", ICON_FOLDER, name); else fz_snprintf(buf, sizeof buf, "%C %s", ICON_DOCUMENT, name); if (ui_list_item(&fc.list_dir, &fc.files[i], buf, i==fc.selected)) { fc.selected = i; if (fc.files[i].is_dir) { fz_snprintf(buf, sizeof buf, "%s/%s", fc.curdir, name); load_dir(buf); ui.active = NULL; last_click_sel = -1; } else { int click_time = glutGet(GLUT_ELAPSED_TIME); if (i == last_click_sel && click_time < last_click_time + 250) { fz_snprintf(filename, PATH_MAX, "%s/%s", fc.curdir, name); rv = 1; } last_click_time = click_time; last_click_sel = i; } } } ui_list_end(&fc.list_dir); } ui_panel_end(); return rv; }
void ui_init_open_file(const char *dir, int (*filter)(const char *fn)) { fc.filter = filter; load_dir(dir); }
static void list_drives(void) { static struct list drive_list; DWORD drives; char dir[PATH_MAX], vis[PATH_MAX], buf[100]; const char *user, *home; char personal[MAX_PATH], desktop[MAX_PATH]; int i, n; drives = GetLogicalDrives(); n = 5; /* curdir + home + desktop + documents + downloads */ for (i=0; i < 26; ++i) if (drives & (1<<i)) ++n; ui_list_begin(&drive_list, n, 0, 10 * ui.lineheight + 4); user = getenv("USERNAME"); home = getenv("USERPROFILE"); if (user && home) { fz_snprintf(vis, sizeof vis, "%C %s", ICON_HOME, user); if (ui_list_item(&drive_list, "~", vis, 0)) load_dir(home); } if (SHGetFolderPathA(NULL, CSIDL_DESKTOPDIRECTORY, NULL, 0, desktop) == S_OK) { fz_snprintf(vis, sizeof vis, "%C Desktop", ICON_PC); if (ui_list_item(&drive_list, "~/Desktop", vis, 0)) load_dir(desktop); } if (SHGetFolderPathA(NULL, CSIDL_PERSONAL, NULL, 0, personal) == S_OK) { fz_snprintf(vis, sizeof vis, "%C Documents", ICON_FOLDER); if (ui_list_item(&drive_list, "~/Documents", vis, 0)) load_dir(personal); } if (home) { fz_snprintf(vis, sizeof vis, "%C Downloads", ICON_FOLDER); fz_snprintf(dir, sizeof dir, "%s/Downloads", home); if (ui_list_item(&drive_list, "~/Downloads", vis, 0)) load_dir(dir); } for (i = 0; i < 26; ++i) { if (drives & (1<<i)) { fz_snprintf(dir, sizeof dir, "%c:\\", i+'A'); if (!GetVolumeInformationA(dir, buf, sizeof buf, NULL, NULL, NULL, NULL, 0)) buf[0] = 0; fz_snprintf(vis, sizeof vis, "%C %c: %s", ICON_DISK, i+'A', buf); if (ui_list_item(&drive_list, "ABCDEFGHIJKLMNOPQRSTUVWXYZ"+i, vis, 0)) { load_dir(dir); } } } fz_snprintf(vis, sizeof vis, "%C .", ICON_PIN); if (ui_list_item(&drive_list, ".", vis, 0)) load_dir("."); ui_list_end(&drive_list); }
int main(void) { const char *s = NULL; char path[256]; int handle; struct controller_data_s pad; int pos = 0, ppos = -1; xenos_init(VIDEO_MODE_AUTO); console_init(); xenon_make_it_faster(XENON_SPEED_FULL); usb_init(); usb_do_poll(); xenon_ata_init(); dvd_init(); handle = -1; handle = bdev_enum(handle, &s); if (handle < 0) return 0; strcpy(path, s); strcat(path, ":/"); load_dir(path); for (;;) { usb_do_poll(); get_controller_data(&pad, 0); if (pad.s1_y > STICK_THRESHOLD || pad.up) pos--; if (pad.s1_y < -STICK_THRESHOLD || pad.down) pos++; if (entrycount && (pos < 0 || pos >= entrycount)) { pos = ppos; continue; } if (pad.logo) return 0; if (pad.a) { if (entries[pos].d_type & DT_DIR) { append_dir_to_path(path,entries[pos].d_name); load_dir(path); ppos = -1; pos = 0; } else { char fn[256]; strcpy(fn, path); strcat(fn, entries[pos].d_name); printf("%s\n", fn); start_ssnes(fn); } } if (pad.select) { append_dir_to_path(path, ".."); load_dir(path); ppos = -1; pos = 0; } if (pad.b) { do { handle = bdev_enum(handle, &s); } while (handle < 0); strcpy(path, s); strcat(path, ":/"); load_dir(path); ppos = -1; pos = 0; } if (ppos == pos) continue; memset(&pad, 0, sizeof(pad)); console_set_colors(BG_COL, FG_COL); console_clrscr(); printf("A: select, B: change disk, Back: parent dir, Logo: reload Xell\n\n%s\n\n", path); int start = MAX(0, pos - MAX_DISPLAYED_ENTRIES / 2); int count = MIN(MAX_DISPLAYED_ENTRIES, entrycount - start); for (int i = start; i < start + count; i++) { struct dirent *de = &entries[i]; if (i == pos) console_set_colors(FG_COL, BG_COL); else console_set_colors(BG_COL, FG_COL); if (de->d_type & DT_DIR) console_putch('['); s = de->d_name; while (*s) console_putch(*s++); if (de->d_type & DT_DIR) console_putch(']'); console_putch('\r'); console_putch('\n'); } ppos = pos; do { usb_do_poll(); get_controller_data(&pad, 0); } while (pad.a || pad.b || pad.select || pad.s1_y > STICK_THRESHOLD || pad.s1_y < -STICK_THRESHOLD); } return 0; }