static void list_monitor_items(void) { GVolumeMonitor *volume_monitor; GList *drives, *volumes, *mounts; volume_monitor = g_volume_monitor_get(); /* populate gvfs network mounts */ iterate_gmain(); drives = g_volume_monitor_get_connected_drives (volume_monitor); list_drives (drives, 0); g_list_foreach (drives, (GFunc)g_object_unref, NULL); g_list_free (drives); volumes = g_volume_monitor_get_volumes (volume_monitor); list_volumes (volumes, 0, TRUE); g_list_foreach (volumes, (GFunc)g_object_unref, NULL); g_list_free (volumes); mounts = g_volume_monitor_get_mounts (volume_monitor); list_mounts (mounts, 0, TRUE); g_list_foreach (mounts, (GFunc)g_object_unref, NULL); g_list_free (mounts); g_object_unref (volume_monitor); }
static void monitor_print_drive (GDrive *drive) { if (extra_detail) { GList *l; l = g_list_prepend (NULL, drive); list_drives (l, 2); g_list_free (l); g_print ("\n"); } }
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; }