e - add exif as dependency and option for efm file props
This commit is contained in:
parent
7ca3f8f612
commit
10ac9fb327
|
@ -221,6 +221,11 @@ if get_option('pam') == true
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if get_option('libexif') == true
|
||||||
|
dep_libexif = dependency('libexif', required: true)
|
||||||
|
config_h.set('HAVE_LIBEXIF', '1')
|
||||||
|
endif
|
||||||
|
|
||||||
dep_m = cc.find_library('m', required: false)
|
dep_m = cc.find_library('m', required: false)
|
||||||
dep_dl = cc.find_library('dl', required: false)
|
dep_dl = cc.find_library('dl', required: false)
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,10 @@ option('pam',
|
||||||
type: 'boolean',
|
type: 'boolean',
|
||||||
value: true,
|
value: true,
|
||||||
description: 'enable PAM support: (default=true)')
|
description: 'enable PAM support: (default=true)')
|
||||||
|
option('libexif',
|
||||||
|
type: 'boolean',
|
||||||
|
value: true,
|
||||||
|
description: 'enable EXIF support: (default=true)')
|
||||||
|
|
||||||
option('device-udev',
|
option('device-udev',
|
||||||
type: 'boolean',
|
type: 'boolean',
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
#include "e.h"
|
#include "e.h"
|
||||||
|
#ifdef HAVE_LIBEXIF
|
||||||
|
#include <libexif/exif-data.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
/* FIXME:
|
/* FIXME:
|
||||||
*
|
*
|
||||||
|
@ -69,6 +72,7 @@ struct _E_Config_Dialog_Data
|
||||||
char *mod_date;
|
char *mod_date;
|
||||||
char *acc_date;
|
char *acc_date;
|
||||||
char *pms_date;
|
char *pms_date;
|
||||||
|
char *exif_date;
|
||||||
char *mime;
|
char *mime;
|
||||||
char *owner;
|
char *owner;
|
||||||
char *link;
|
char *link;
|
||||||
|
@ -133,6 +137,41 @@ _fill_data(E_Config_Dialog_Data *cfdata, E_Fm2_Icon *ic)
|
||||||
cfdata->mod_date = e_util_file_time_get(cfdata->fi->statinfo.st_mtime);
|
cfdata->mod_date = e_util_file_time_get(cfdata->fi->statinfo.st_mtime);
|
||||||
cfdata->acc_date = e_util_file_time_get(cfdata->fi->statinfo.st_atime);
|
cfdata->acc_date = e_util_file_time_get(cfdata->fi->statinfo.st_atime);
|
||||||
cfdata->pms_date = e_util_file_time_get(cfdata->fi->statinfo.st_ctime);
|
cfdata->pms_date = e_util_file_time_get(cfdata->fi->statinfo.st_ctime);
|
||||||
|
#ifdef HAVE_LIBEXIF
|
||||||
|
snprintf(loc, sizeof(loc), "%s/%s", e_fm2_real_path_get(cfdata->fi->fm), cfdata->fi->file);
|
||||||
|
ExifData *ed = exif_data_new_from_file(loc);
|
||||||
|
if (ed)
|
||||||
|
{
|
||||||
|
ExifEntry *entry = exif_content_get_entry(ed->ifd[EXIF_IFD_0], EXIF_TAG_DATE_TIME_ORIGINAL);
|
||||||
|
if (!entry)
|
||||||
|
entry = exif_content_get_entry(ed->ifd[EXIF_IFD_0], EXIF_TAG_DATE_TIME_DIGITIZED);
|
||||||
|
if (!entry)
|
||||||
|
entry = exif_content_get_entry(ed->ifd[EXIF_IFD_0], EXIF_TAG_DATE_TIME);
|
||||||
|
if (entry)
|
||||||
|
{
|
||||||
|
char tbuf[128];
|
||||||
|
struct tm tm;
|
||||||
|
time_t tim;
|
||||||
|
|
||||||
|
exif_entry_get_value(entry, tbuf, sizeof(tbuf));
|
||||||
|
tbuf[127] = 0;
|
||||||
|
memset(&tm, 0, sizeof(tm));
|
||||||
|
tm.tm_isdst = -1;
|
||||||
|
// "YYYY:MM:DD HH:MM:SS"
|
||||||
|
if (sscanf(tbuf, "%i:%i:%i %i:%i:%i",
|
||||||
|
&tm.tm_year, &tm.tm_mon, &tm.tm_mday,
|
||||||
|
&tm.tm_hour, &tm.tm_min, &tm.tm_sec) == 6)
|
||||||
|
{
|
||||||
|
tm.tm_year -= 1900;
|
||||||
|
tm.tm_mon -= 1;
|
||||||
|
tim = mktime(&tm);
|
||||||
|
if (tim != (time_t)-1)
|
||||||
|
cfdata->exif_date = e_util_file_time_get(tim);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exif_data_unref(ed);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
if (cfdata->fi->mime) cfdata->mime = strdup(cfdata->fi->mime);
|
if (cfdata->fi->mime) cfdata->mime = strdup(cfdata->fi->mime);
|
||||||
|
|
||||||
snprintf(blks, sizeof(blks), "%lu", (unsigned long)cfdata->fi->statinfo.st_blocks);
|
snprintf(blks, sizeof(blks), "%lu", (unsigned long)cfdata->fi->statinfo.st_blocks);
|
||||||
|
@ -182,6 +221,7 @@ _free_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata)
|
||||||
E_FREE(cfdata->mod_date);
|
E_FREE(cfdata->mod_date);
|
||||||
E_FREE(cfdata->acc_date);
|
E_FREE(cfdata->acc_date);
|
||||||
E_FREE(cfdata->pms_date);
|
E_FREE(cfdata->pms_date);
|
||||||
|
E_FREE(cfdata->exif_date);
|
||||||
E_FREE(cfdata->mime);
|
E_FREE(cfdata->mime);
|
||||||
E_FREE(cfdata->owner);
|
E_FREE(cfdata->owner);
|
||||||
E_FREE(cfdata->link);
|
E_FREE(cfdata->link);
|
||||||
|
@ -380,7 +420,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
||||||
E_Radio_Group *rg;
|
E_Radio_Group *rg;
|
||||||
char buf[PATH_MAX];
|
char buf[PATH_MAX];
|
||||||
const char *itype = NULL;
|
const char *itype = NULL;
|
||||||
int mh;
|
int mh, row = 0;
|
||||||
|
|
||||||
win = cfd->dia->win;
|
win = cfd->dia->win;
|
||||||
snprintf(buf, sizeof(buf), "%s/%s",
|
snprintf(buf, sizeof(buf), "%s/%s",
|
||||||
|
@ -392,68 +432,88 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
||||||
of = e_widget_frametable_add(evas, _("General"), 1);
|
of = e_widget_frametable_add(evas, _("General"), 1);
|
||||||
|
|
||||||
ob = e_widget_label_add(evas, _("Name:"));
|
ob = e_widget_label_add(evas, _("Name:"));
|
||||||
e_widget_frametable_object_append(of, ob, 0, 0, 1, 1, 1, 0, 1, 0);
|
e_widget_frametable_object_append(of, ob, 0, row, 1, 1, 1, 0, 1, 0);
|
||||||
ob = e_widget_entry_add(win, &(cfdata->file), NULL, NULL, NULL);
|
ob = e_widget_entry_add(win, &(cfdata->file), NULL, NULL, NULL);
|
||||||
e_widget_size_min_get(ob, NULL, &mh);
|
e_widget_size_min_get(ob, NULL, &mh);
|
||||||
e_widget_size_min_set(ob, 140, mh);
|
e_widget_size_min_set(ob, 140, mh);
|
||||||
e_widget_entry_readonly_set(ob, 1);
|
e_widget_entry_readonly_set(ob, 1);
|
||||||
e_widget_frametable_object_append(of, ob, 1, 0, 1, 1, 1, 0, 1, 0);
|
e_widget_frametable_object_append(of, ob, 1, row, 1, 1, 1, 0, 1, 0);
|
||||||
|
row++;
|
||||||
|
|
||||||
ob = e_widget_label_add(evas, _("Location:"));
|
ob = e_widget_label_add(evas, _("Location:"));
|
||||||
e_widget_frametable_object_append(of, ob, 0, 1, 1, 1, 1, 0, 1, 0);
|
e_widget_frametable_object_append(of, ob, 0, row, 1, 1, 1, 0, 1, 0);
|
||||||
ob = e_widget_entry_add(win, &(cfdata->location), NULL, NULL, NULL);
|
ob = e_widget_entry_add(win, &(cfdata->location), NULL, NULL, NULL);
|
||||||
e_widget_size_min_get(ob, NULL, &mh);
|
e_widget_size_min_get(ob, NULL, &mh);
|
||||||
e_widget_size_min_set(ob, 140, mh);
|
e_widget_size_min_set(ob, 140, mh);
|
||||||
e_widget_entry_readonly_set(ob, 1);
|
e_widget_entry_readonly_set(ob, 1);
|
||||||
e_widget_frametable_object_append(of, ob, 1, 1, 1, 1, 1, 0, 1, 0);
|
e_widget_frametable_object_append(of, ob, 1, row, 1, 1, 1, 0, 1, 0);
|
||||||
|
row++;
|
||||||
|
|
||||||
ob = e_widget_label_add(evas, _("Size:"));
|
ob = e_widget_label_add(evas, _("Size:"));
|
||||||
e_widget_frametable_object_append(of, ob, 0, 2, 1, 1, 1, 0, 1, 0);
|
e_widget_frametable_object_append(of, ob, 0, row, 1, 1, 1, 0, 1, 0);
|
||||||
ob = e_widget_entry_add(win, &(cfdata->size), NULL, NULL, NULL);
|
ob = e_widget_entry_add(win, &(cfdata->size), NULL, NULL, NULL);
|
||||||
e_widget_size_min_get(ob, NULL, &mh);
|
e_widget_size_min_get(ob, NULL, &mh);
|
||||||
e_widget_size_min_set(ob, 140, mh);
|
e_widget_size_min_set(ob, 140, mh);
|
||||||
e_widget_entry_readonly_set(ob, 1);
|
e_widget_entry_readonly_set(ob, 1);
|
||||||
e_widget_frametable_object_append(of, ob, 1, 2, 1, 1, 1, 0, 1, 0);
|
e_widget_frametable_object_append(of, ob, 1, row, 1, 1, 1, 0, 1, 0);
|
||||||
|
row++;
|
||||||
|
|
||||||
ob = e_widget_label_add(evas, _("Occupied blocks on disk:"));
|
ob = e_widget_label_add(evas, _("Occupied blocks on disk:"));
|
||||||
e_widget_frametable_object_append(of, ob, 0, 3, 1, 1, 1, 0, 1, 0);
|
e_widget_frametable_object_append(of, ob, 0, row, 1, 1, 1, 0, 1, 0);
|
||||||
ob = e_widget_entry_add(win, &(cfdata->blocks), NULL, NULL, NULL);
|
ob = e_widget_entry_add(win, &(cfdata->blocks), NULL, NULL, NULL);
|
||||||
e_widget_size_min_get(ob, NULL, &mh);
|
e_widget_size_min_get(ob, NULL, &mh);
|
||||||
e_widget_size_min_set(ob, 140, mh);
|
e_widget_size_min_set(ob, 140, mh);
|
||||||
e_widget_entry_readonly_set(ob, 1);
|
e_widget_entry_readonly_set(ob, 1);
|
||||||
e_widget_frametable_object_append(of, ob, 1, 3, 1, 1, 1, 0, 1, 0);
|
e_widget_frametable_object_append(of, ob, 1, row, 1, 1, 1, 0, 1, 0);
|
||||||
|
row++;
|
||||||
|
|
||||||
|
if (cfdata->exif_date)
|
||||||
|
{
|
||||||
|
ob = e_widget_label_add(evas, _("Taken on:"));
|
||||||
|
e_widget_frametable_object_append(of, ob, 0, row, 1, 1, 1, 0, 1, 0);
|
||||||
|
ob = e_widget_entry_add(win, &(cfdata->exif_date), NULL, NULL, NULL);
|
||||||
|
e_widget_size_min_get(ob, NULL, &mh);
|
||||||
|
e_widget_size_min_set(ob, 140, mh);
|
||||||
|
e_widget_entry_readonly_set(ob, 1);
|
||||||
|
e_widget_frametable_object_append(of, ob, 1, row, 1, 1, 1, 0, 1, 0);
|
||||||
|
row++;
|
||||||
|
}
|
||||||
|
|
||||||
ob = e_widget_label_add(evas, _("Last Accessed:"));
|
ob = e_widget_label_add(evas, _("Last Accessed:"));
|
||||||
e_widget_frametable_object_append(of, ob, 0, 4, 1, 1, 1, 0, 1, 0);
|
e_widget_frametable_object_append(of, ob, 0, row, 1, 1, 1, 0, 1, 0);
|
||||||
ob = e_widget_entry_add(win, &(cfdata->acc_date), NULL, NULL, NULL);
|
ob = e_widget_entry_add(win, &(cfdata->acc_date), NULL, NULL, NULL);
|
||||||
e_widget_size_min_get(ob, NULL, &mh);
|
e_widget_size_min_get(ob, NULL, &mh);
|
||||||
e_widget_size_min_set(ob, 140, mh);
|
e_widget_size_min_set(ob, 140, mh);
|
||||||
e_widget_entry_readonly_set(ob, 1);
|
e_widget_entry_readonly_set(ob, 1);
|
||||||
e_widget_frametable_object_append(of, ob, 1, 4, 1, 1, 1, 0, 1, 0);
|
e_widget_frametable_object_append(of, ob, 1, row, 1, 1, 1, 0, 1, 0);
|
||||||
|
row++;
|
||||||
|
|
||||||
ob = e_widget_label_add(evas, _("Last Modified:"));
|
ob = e_widget_label_add(evas, _("Last Modified:"));
|
||||||
e_widget_frametable_object_append(of, ob, 0, 5, 1, 1, 1, 0, 1, 0);
|
e_widget_frametable_object_append(of, ob, 0, row, 1, 1, 1, 0, 1, 0);
|
||||||
ob = e_widget_entry_add(win, &(cfdata->mod_date), NULL, NULL, NULL);
|
ob = e_widget_entry_add(win, &(cfdata->mod_date), NULL, NULL, NULL);
|
||||||
e_widget_size_min_get(ob, NULL, &mh);
|
e_widget_size_min_get(ob, NULL, &mh);
|
||||||
e_widget_size_min_set(ob, 140, mh);
|
e_widget_size_min_set(ob, 140, mh);
|
||||||
e_widget_entry_readonly_set(ob, 1);
|
e_widget_entry_readonly_set(ob, 1);
|
||||||
e_widget_frametable_object_append(of, ob, 1, 5, 1, 1, 1, 0, 1, 0);
|
e_widget_frametable_object_append(of, ob, 1, row, 1, 1, 1, 0, 1, 0);
|
||||||
|
row++;
|
||||||
|
|
||||||
ob = e_widget_label_add(evas, _("Last Modified Permissions:"));
|
ob = e_widget_label_add(evas, _("Last Modified Permissions:"));
|
||||||
e_widget_frametable_object_append(of, ob, 0, 6, 1, 1, 1, 0, 1, 0);
|
e_widget_frametable_object_append(of, ob, 0, row, 1, 1, 1, 0, 1, 0);
|
||||||
ob = e_widget_entry_add(win, &(cfdata->pms_date), NULL, NULL, NULL);
|
ob = e_widget_entry_add(win, &(cfdata->pms_date), NULL, NULL, NULL);
|
||||||
e_widget_size_min_get(ob, NULL, &mh);
|
e_widget_size_min_get(ob, NULL, &mh);
|
||||||
e_widget_size_min_set(ob, 140, mh);
|
e_widget_size_min_set(ob, 140, mh);
|
||||||
e_widget_entry_readonly_set(ob, 1);
|
e_widget_entry_readonly_set(ob, 1);
|
||||||
e_widget_frametable_object_append(of, ob, 1, 6, 1, 1, 1, 0, 1, 0);
|
e_widget_frametable_object_append(of, ob, 1, row, 1, 1, 1, 0, 1, 0);
|
||||||
|
row++;
|
||||||
|
|
||||||
ob = e_widget_label_add(evas, _("File Type:"));
|
ob = e_widget_label_add(evas, _("File Type:"));
|
||||||
e_widget_frametable_object_append(of, ob, 0, 7, 1, 1, 1, 0, 1, 0);
|
e_widget_frametable_object_append(of, ob, 0, row, 1, 1, 1, 0, 1, 0);
|
||||||
ob = e_widget_entry_add(win, &(cfdata->mime), NULL, NULL, NULL);
|
ob = e_widget_entry_add(win, &(cfdata->mime), NULL, NULL, NULL);
|
||||||
e_widget_size_min_get(ob, NULL, &mh);
|
e_widget_size_min_get(ob, NULL, &mh);
|
||||||
e_widget_size_min_set(ob, 140, mh);
|
e_widget_size_min_set(ob, 140, mh);
|
||||||
e_widget_entry_readonly_set(ob, 1);
|
e_widget_entry_readonly_set(ob, 1);
|
||||||
e_widget_frametable_object_append(of, ob, 1, 7, 1, 1, 1, 0, 1, 0);
|
e_widget_frametable_object_append(of, ob, 1, row, 1, 1, 1, 0, 1, 0);
|
||||||
|
row++;
|
||||||
|
|
||||||
e_widget_table_object_append(ot, of, 0, 0, 1, 1, 1, 1, 1, 1);
|
e_widget_table_object_append(ot, of, 0, 0, 1, 1, 1, 1, 1, 1);
|
||||||
e_widget_table_object_append(o, ot, 1, 0, 0, 1, 1, 1, 1, 1);
|
e_widget_table_object_append(o, ot, 1, 0, 0, 1, 1, 1, 1, 1);
|
||||||
|
|
|
@ -36,6 +36,10 @@ deps_e = [
|
||||||
dep_intl
|
dep_intl
|
||||||
]
|
]
|
||||||
|
|
||||||
|
if config_h.has('HAVE_LIBEXIF') == true
|
||||||
|
deps_e += dep_libexif
|
||||||
|
endif
|
||||||
|
|
||||||
deps_ckpass = [ dep_eina, dep_ecore, dep_eldbus ]
|
deps_ckpass = [ dep_eina, dep_ecore, dep_eldbus ]
|
||||||
|
|
||||||
if freebsd == true
|
if freebsd == true
|
||||||
|
|
Loading…
Reference in New Issue