Beispiel #1
0
/** Both import and capture jobs uses this */
static const char *
_camera_request_image_path(const dt_camera_t *camera, void *data)
{
  struct dt_camera_shared_t *shared;
  shared = (struct dt_camera_shared_t *)data;
  return dt_import_session_path(shared->session, FALSE);
}
Beispiel #2
0
const char *
dt_import_session_filename(struct dt_import_session_t *self, gboolean current)
{
  const char *path;
  char *fname, *previous_fname;
  char *pattern;

  if (current && self->current_filename != NULL)
    return self->current_filename;

  /* expand next filename */
  g_free((void *)self->current_filename);
  pattern = _import_session_filename_pattern();
  if (pattern == NULL)
  {
    fprintf(stderr,"[import_session] Failed to get session filaname pattern.\n");
    return NULL;
  }

  dt_variables_expand(self->vp, pattern, TRUE);

  /* verify that expanded path and filename yields a unique file */
  path = dt_import_session_path(self, TRUE);
  previous_fname = fname = g_build_path(G_DIR_SEPARATOR_S, path,
                                        dt_variables_get_result(self->vp), (char *)NULL);
  if (g_file_test(fname, G_FILE_TEST_EXISTS) == TRUE)
  {
    fprintf(stderr, "[import_session] File %s exists.\n", fname);
    do
    {
      /* file exists, yield a new filename */
      dt_variables_expand(self->vp, pattern, TRUE);
      fname = g_build_path(G_DIR_SEPARATOR_S, path,
                           dt_variables_get_result(self->vp), (char *)NULL);

      fprintf(stderr, "[import_session] Testing %s.\n", fname);
      /* check if same filename was yielded as before */
      if (strcmp(previous_fname ,fname) == 0)
      {
        g_free(previous_fname);
        g_free(fname);
        dt_control_log(_("couldn't expand to a unique filename for session, please check your import session settings."));
        return NULL;
      }

      g_free(previous_fname);
      previous_fname = fname;

    } while (g_file_test(fname, G_FILE_TEST_EXISTS) == TRUE);
  }

  g_free(previous_fname);
  g_free(pattern);

  self->current_filename = g_strdup(dt_variables_get_result(self->vp));
  fprintf(stderr, "[import_session] Using filename %s.\n", self->current_filename);

  return self->current_filename;
}
Beispiel #3
0
static const char *_camera_request_image_path(const dt_camera_t *camera, time_t *exif_time, void *data)
{
  struct dt_camera_shared_t *shared;
  shared = (struct dt_camera_shared_t *)data;
  if(exif_time)
    dt_import_session_set_exif_time(shared->session, *exif_time);
  return dt_import_session_path(shared->session, FALSE);
}
void
dt_import_session_set_name(struct dt_import_session_t *self, const char *name)
{
    /* free previous jobcode name */
    g_free((void *)self->vp->jobcode);

    self->vp->jobcode = g_strdup(name);

    /* setup new filmroll if path has changed */
    dt_import_session_path(self, FALSE);
}
Beispiel #5
0
static const char *_camera_request_image_path(const dt_camera_t *camera, void *data)
{
  struct dt_capture_t *lib = (dt_capture_t *)data;
  return dt_import_session_path(lib->session, FALSE);
}