gchar *result = NULL;
gchar vname[51], fsname[51];
- if (GetVolumeInformation(drive, vname, 50, NULL, NULL, NULL, fsname, 51))
+ if (GetVolumeInformation(drive, vname, 50, NULL, NULL, NULL, fsname, 50))
{
result = g_strdup_printf("%s", vname);
}
static gchar*
get_file_label(const gchar *filename)
{
- static gchar *containers[] =
- {".vob", ".mpg", ".m2ts", ".mkv", ".mp4", ".m4v", ".avi", ".ogm", NULL};
- gchar *base;
- gint ii;
+ gchar *base, *pos, *end;
base = g_path_get_basename(filename);
- for (ii = 0; containers[ii] != NULL; ii++)
+ pos = strrchr(base, '.');
+ if (pos != NULL)
{
- if (g_str_has_suffix(base, containers[ii]))
- {
- gchar *pos;
- pos = strrchr(base, '.');
+ // If the last '.' is within 4 chars of end of name, assume
+ // there is an extension we want to strip.
+ end = &base[strlen(base) - 1];
+ if (end - pos <= 4)
*pos = 0;
- break;
- }
}
return base;
}
g_debug("update_source_label()");
len = strlen(filename);
- if (filename[len-1] == G_DIR_SEPARATOR) filename[len-1] = 0;
if (g_file_test(filename, G_FILE_TEST_IS_DIR))
{
// Skip dos drive letters
}
else
{
+ if (filename[len-1] == G_DIR_SEPARATOR) filename[len-1] = 0;
if (start != NULL)
start++;
else
gtk_label_set_text( label, "Scanning ..." );
}
+static void
+start_scan(
+ signal_user_data_t *ud,
+ const gchar *path,
+ gint titlenum,
+ gint preview_count)
+{
+ GtkWidget *widget;
+ GtkAction *action;
+ ghb_status_t status;
+
+ ghb_get_status(&status);
+ if (status.scan.state != GHB_STATE_IDLE)
+ return;
+
+ widget = GHB_WIDGET(ud->builder, "sourcetoolbutton");
+ gtk_widget_set_sensitive(widget, FALSE);
+ action = GHB_ACTION(ud->builder, "source_action");
+ gtk_action_set_sensitive(action, FALSE);
+ action = GHB_ACTION(ud->builder, "source_single_action");
+ gtk_action_set_sensitive(action, FALSE);
+ ghb_backend_scan(path, titlenum, preview_count);
+}
+
void
ghb_do_scan(
signal_user_data_t *ud,
prune_logs(ud);
preview_count = ghb_settings_get_int(ud->settings, "preview_count");
- ghb_backend_scan(path, titlenum, preview_count);
+ start_scan(ud, path, titlenum, preview_count);
g_free(path);
}
else
GtkProgressBar *scan_prog;
GtkLabel *label;
+ GtkWidget *widget;
+ GtkAction *action;
+
+ widget = GHB_WIDGET(ud->builder, "sourcetoolbutton");
+ gtk_widget_set_sensitive(widget, TRUE);
+ action = GHB_ACTION(ud->builder, "source_action");
+ gtk_action_set_sensitive(action, TRUE);
+ action = GHB_ACTION(ud->builder, "source_single_action");
+ gtk_action_set_sensitive(action, TRUE);
+
source = ghb_settings_get_string(ud->settings, "source");
update_source_label(ud, source, FALSE);
update_source_label(ud, device, TRUE);
gint preview_count;
preview_count = ghb_settings_get_int(ud->settings, "preview_count");
- ghb_backend_scan(device, 0, preview_count);
+ start_scan(ud, device, 0, preview_count);
}
}
}
ghb_hb_cleanup(TRUE);
prune_logs(ud);
ghb_settings_set_string(ud->settings, "source", "/dev/null");
- ghb_backend_scan("/dev/null", 0, 1);
+ start_scan(ud, "/dev/null", 0, 1);
}
}
}
update_source_label(ud, device, TRUE);
gint preview_count;
preview_count = ghb_settings_get_int(ud->settings, "preview_count");
- ghb_backend_scan(device, 0, preview_count);
+ start_scan(ud, device, 0, preview_count);
}
}
else
ghb_hb_cleanup(TRUE);
prune_logs(ud);
ghb_settings_set_string(ud->settings, "source", "/dev/null");
- ghb_backend_scan("/dev/null", 0, 1);
+ start_scan(ud, "/dev/null", 0, 1);
}
}
#endif