Added "Show all" button in Exif panel + astylized exifpanel.cc/.h
See #4008
This commit is contained in:
parent
9543a43281
commit
615dfcbb6c
@ -68,6 +68,7 @@ EXIFPANEL_RESET;Réinitialiser
|
|||||||
EXIFPANEL_RESETALL;Réinitialiser tout
|
EXIFPANEL_RESETALL;Réinitialiser tout
|
||||||
EXIFPANEL_RESETALLHINT;Réinitialise tous les tags à leur valeur initiale
|
EXIFPANEL_RESETALLHINT;Réinitialise tous les tags à leur valeur initiale
|
||||||
EXIFPANEL_RESETHINT;Réinitialise les données sélectionnées à la valeur initiale
|
EXIFPANEL_RESETHINT;Réinitialise les données sélectionnées à la valeur initiale
|
||||||
|
EXIFPANEL_SHOWALL;Voir tout
|
||||||
EXIFPANEL_SUBDIRECTORY;Sous-répertoire
|
EXIFPANEL_SUBDIRECTORY;Sous-répertoire
|
||||||
EXPORT_BYPASS;Étapes de traitement à ignorer
|
EXPORT_BYPASS;Étapes de traitement à ignorer
|
||||||
EXPORT_BYPASS_ALL;Sélectionner / Désélectionner tout
|
EXPORT_BYPASS_ALL;Sélectionner / Désélectionner tout
|
||||||
|
@ -826,7 +826,7 @@ const TagAttrib ifdAttribs[] = {
|
|||||||
{0, AC_WRITE, 0, nullptr, 0xc62f, AUTO, "CameraSerialNumber", &stdInterpreter},
|
{0, AC_WRITE, 0, nullptr, 0xc62f, AUTO, "CameraSerialNumber", &stdInterpreter},
|
||||||
{0, AC_SYSTEM, 0, nullptr, 0xc630, AUTO, "DNGLensInfo", &stdInterpreter},
|
{0, AC_SYSTEM, 0, nullptr, 0xc630, AUTO, "DNGLensInfo", &stdInterpreter},
|
||||||
{0, AC_DONTWRITE, 0, nullptr, 0xC634, AUTO, "MakerNote", &stdInterpreter}, //DNGPrivateData
|
{0, AC_DONTWRITE, 0, nullptr, 0xC634, AUTO, "MakerNote", &stdInterpreter}, //DNGPrivateData
|
||||||
{0, AC_DONTWRITE, 0, nullptr, 0xC640, AUTO, "RawImageSegmentation", &rawImageSegmentationInterpreter},
|
{0, AC_SYSTEM, 0, nullptr, 0xC640, AUTO, "RawImageSegmentation", &rawImageSegmentationInterpreter},
|
||||||
{0, AC_WRITE, 0, nullptr, 0xc65d, AUTO, "RawDataUniqueID", &stdInterpreter},
|
{0, AC_WRITE, 0, nullptr, 0xc65d, AUTO, "RawDataUniqueID", &stdInterpreter},
|
||||||
{0, AC_DONTWRITE, 0, nullptr, 0xc761, AUTO, "NoiseProfile", &stdInterpreter},
|
{0, AC_DONTWRITE, 0, nullptr, 0xc761, AUTO, "NoiseProfile", &stdInterpreter},
|
||||||
{ -1, AC_DONTWRITE, 0, nullptr, 0, AUTO, "", nullptr}
|
{ -1, AC_DONTWRITE, 0, nullptr, 0, AUTO, "", nullptr}
|
||||||
|
@ -25,49 +25,50 @@ using namespace rtengine;
|
|||||||
using namespace rtengine::procparams;
|
using namespace rtengine::procparams;
|
||||||
using namespace rtexif;
|
using namespace rtexif;
|
||||||
|
|
||||||
ExifPanel::ExifPanel () : idata(nullptr)
|
ExifPanel::ExifPanel () : idata (nullptr)
|
||||||
{
|
{
|
||||||
|
|
||||||
recursiveOp = true;
|
recursiveOp = true;
|
||||||
|
|
||||||
exifTree = Gtk::manage(new Gtk::TreeView());
|
exifTree = Gtk::manage (new Gtk::TreeView());
|
||||||
scrolledWindow = Gtk::manage(new Gtk::ScrolledWindow());
|
scrolledWindow = Gtk::manage (new Gtk::ScrolledWindow());
|
||||||
|
|
||||||
exifTree->set_headers_visible(false);
|
exifTree->set_headers_visible (false);
|
||||||
exifTree->set_rules_hint(false);
|
exifTree->set_rules_hint (false);
|
||||||
exifTree->set_reorderable(false);
|
exifTree->set_reorderable (false);
|
||||||
exifTree->set_enable_search(true);
|
exifTree->set_enable_search (true);
|
||||||
exifTree->get_selection()->set_mode (Gtk::SELECTION_MULTIPLE);
|
exifTree->get_selection()->set_mode (Gtk::SELECTION_MULTIPLE);
|
||||||
scrolledWindow->set_shadow_type(Gtk::SHADOW_NONE);
|
scrolledWindow->set_shadow_type (Gtk::SHADOW_NONE);
|
||||||
scrolledWindow->set_policy(Gtk::POLICY_ALWAYS, Gtk::POLICY_ALWAYS);
|
scrolledWindow->set_policy (Gtk::POLICY_ALWAYS, Gtk::POLICY_ALWAYS);
|
||||||
scrolledWindow->property_window_placement().set_value(Gtk::CORNER_TOP_LEFT);
|
scrolledWindow->property_window_placement().set_value (Gtk::CORNER_TOP_LEFT);
|
||||||
scrolledWindow->add(*exifTree);
|
scrolledWindow->add (*exifTree);
|
||||||
|
|
||||||
exifTreeModel = Gtk::TreeStore::create(exifColumns);
|
exifTreeModel = Gtk::TreeStore::create (exifColumns);
|
||||||
exifTree->set_model (exifTreeModel);
|
exifTree->set_model (exifTreeModel);
|
||||||
exifTree->set_grid_lines(Gtk::TREE_VIEW_GRID_LINES_NONE);
|
exifTree->set_grid_lines (Gtk::TREE_VIEW_GRID_LINES_NONE);
|
||||||
exifTree->set_row_separator_func(
|
exifTree->set_row_separator_func (
|
||||||
[&](const Glib::RefPtr<Gtk::TreeModel>& model, const Gtk::TreeModel::iterator& row)
|
[&] (const Glib::RefPtr<Gtk::TreeModel>& model, const Gtk::TreeModel::iterator & row) {
|
||||||
{ return row->get_value (exifColumns.isSeparator); }
|
return row->get_value (exifColumns.isSeparator);
|
||||||
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
delicon = RTImage::createFromFile ("gtk-close.png");
|
delicon = RTImage::createFromFile ("gtk-close.png");
|
||||||
keepicon = RTImage::createFromFile ("gtk-apply.png");
|
keepicon = RTImage::createFromFile ("gtk-apply.png");
|
||||||
editicon = RTImage::createFromFile ("gtk-add.png");
|
editicon = RTImage::createFromFile ("gtk-add.png");
|
||||||
|
|
||||||
Gtk::TreeView::Column *viewcol = Gtk::manage(new Gtk::TreeView::Column ("Field Name"));
|
Gtk::TreeView::Column *viewcol = Gtk::manage (new Gtk::TreeView::Column ("Field Name"));
|
||||||
Gtk::CellRendererPixbuf* render_pb = Gtk::manage(new Gtk::CellRendererPixbuf ());
|
Gtk::CellRendererPixbuf* render_pb = Gtk::manage (new Gtk::CellRendererPixbuf ());
|
||||||
Gtk::CellRendererText *render_txt = Gtk::manage(new Gtk::CellRendererText());
|
Gtk::CellRendererText *render_txt = Gtk::manage (new Gtk::CellRendererText());
|
||||||
render_txt->property_ellipsize() = Pango::ELLIPSIZE_END;
|
render_txt->property_ellipsize() = Pango::ELLIPSIZE_END;
|
||||||
viewcol->pack_start (*render_pb, false);
|
viewcol->pack_start (*render_pb, false);
|
||||||
viewcol->pack_start (*render_txt, true);
|
viewcol->pack_start (*render_txt, true);
|
||||||
viewcol->add_attribute (*render_pb, "pixbuf", exifColumns.icon);
|
viewcol->add_attribute (*render_pb, "pixbuf", exifColumns.icon);
|
||||||
viewcol->add_attribute (*render_txt, "markup", exifColumns.field);
|
viewcol->add_attribute (*render_txt, "markup", exifColumns.field);
|
||||||
viewcol->set_expand(true);
|
viewcol->set_expand (true);
|
||||||
viewcol->set_resizable (true);
|
viewcol->set_resizable (true);
|
||||||
viewcol->set_fixed_width(35);
|
viewcol->set_fixed_width (35);
|
||||||
viewcol->set_min_width(35);
|
viewcol->set_min_width (35);
|
||||||
viewcol->set_sizing(Gtk::TREE_VIEW_COLUMN_AUTOSIZE);
|
viewcol->set_sizing (Gtk::TREE_VIEW_COLUMN_AUTOSIZE);
|
||||||
|
|
||||||
render_pb->property_ypad() = 0;
|
render_pb->property_ypad() = 0;
|
||||||
render_txt->property_ypad() = 0;
|
render_txt->property_ypad() = 0;
|
||||||
@ -76,16 +77,16 @@ ExifPanel::ExifPanel () : idata(nullptr)
|
|||||||
|
|
||||||
exifTree->append_column (*viewcol);
|
exifTree->append_column (*viewcol);
|
||||||
|
|
||||||
Gtk::TreeView::Column *viewcolv = Gtk::manage(new Gtk::TreeView::Column ("Value"));
|
Gtk::TreeView::Column *viewcolv = Gtk::manage (new Gtk::TreeView::Column ("Value"));
|
||||||
Gtk::CellRendererText *render_txtv = Gtk::manage(new Gtk::CellRendererText());
|
Gtk::CellRendererText *render_txtv = Gtk::manage (new Gtk::CellRendererText());
|
||||||
render_txtv->property_ellipsize() = Pango::ELLIPSIZE_END;
|
render_txtv->property_ellipsize() = Pango::ELLIPSIZE_END;
|
||||||
viewcolv->pack_start (*render_txtv, true);
|
viewcolv->pack_start (*render_txtv, true);
|
||||||
viewcolv->add_attribute (*render_txtv, "markup", exifColumns.value);
|
viewcolv->add_attribute (*render_txtv, "markup", exifColumns.value);
|
||||||
viewcolv->set_expand(true);
|
viewcolv->set_expand (true);
|
||||||
viewcolv->set_resizable (true);
|
viewcolv->set_resizable (true);
|
||||||
viewcol->set_fixed_width(35);
|
viewcol->set_fixed_width (35);
|
||||||
viewcolv->set_min_width(35);
|
viewcolv->set_min_width (35);
|
||||||
viewcolv->set_sizing(Gtk::TREE_VIEW_COLUMN_AUTOSIZE);
|
viewcolv->set_sizing (Gtk::TREE_VIEW_COLUMN_AUTOSIZE);
|
||||||
|
|
||||||
render_txtv->property_ypad() = 0;
|
render_txtv->property_ypad() = 0;
|
||||||
|
|
||||||
@ -93,61 +94,68 @@ ExifPanel::ExifPanel () : idata(nullptr)
|
|||||||
|
|
||||||
pack_start (*scrolledWindow);
|
pack_start (*scrolledWindow);
|
||||||
|
|
||||||
Gtk::Grid* buttons1 = Gtk::manage(new Gtk::Grid());
|
Gtk::Grid* buttons1 = Gtk::manage (new Gtk::Grid());
|
||||||
buttons1->set_row_homogeneous(true);
|
buttons1->set_row_homogeneous (true);
|
||||||
buttons1->set_column_homogeneous(true);
|
buttons1->set_column_homogeneous (true);
|
||||||
setExpandAlignProperties(buttons1, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
|
setExpandAlignProperties (buttons1, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
|
||||||
Gtk::Grid* buttons2 = Gtk::manage(new Gtk::Grid());
|
Gtk::Grid* buttons2 = Gtk::manage (new Gtk::Grid());
|
||||||
buttons2->set_row_homogeneous(true);
|
buttons2->set_row_homogeneous (true);
|
||||||
buttons2->set_column_homogeneous(true);
|
buttons2->set_column_homogeneous (true);
|
||||||
setExpandAlignProperties(buttons2, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
|
setExpandAlignProperties (buttons2, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
|
||||||
|
|
||||||
remove = Gtk::manage(new Gtk::Button ()); // M("EXIFPANEL_REMOVE")
|
remove = Gtk::manage (new Gtk::Button ()); // M("EXIFPANEL_REMOVE")
|
||||||
remove->set_image (*Gtk::manage(new Gtk::Image (delicon)));
|
remove->set_image (*Gtk::manage (new Gtk::Image (delicon)));
|
||||||
remove->set_tooltip_text (M("EXIFPANEL_REMOVEHINT"));
|
remove->set_tooltip_text (M ("EXIFPANEL_REMOVEHINT"));
|
||||||
remove->get_style_context()->add_class("Left");
|
remove->get_style_context()->add_class ("Left");
|
||||||
setExpandAlignProperties(remove, true, true, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL);
|
setExpandAlignProperties (remove, true, true, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL);
|
||||||
buttons1->attach_next_to(*remove, Gtk::POS_LEFT, 1, 1);
|
buttons1->attach_next_to (*remove, Gtk::POS_LEFT, 1, 1);
|
||||||
|
|
||||||
keep = Gtk::manage(new Gtk::Button ()); // M("EXIFPANEL_KEEP")
|
keep = Gtk::manage (new Gtk::Button ()); // M("EXIFPANEL_KEEP")
|
||||||
keep->set_image (*Gtk::manage(new Gtk::Image (keepicon)));
|
keep->set_image (*Gtk::manage (new Gtk::Image (keepicon)));
|
||||||
keep->set_tooltip_text (M("EXIFPANEL_KEEPHINT"));
|
keep->set_tooltip_text (M ("EXIFPANEL_KEEPHINT"));
|
||||||
keep->get_style_context()->add_class("MiddleH");
|
keep->get_style_context()->add_class ("MiddleH");
|
||||||
setExpandAlignProperties(keep, true, true, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL);
|
setExpandAlignProperties (keep, true, true, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL);
|
||||||
buttons1->attach_next_to(*keep, Gtk::POS_RIGHT, 1, 1);
|
buttons1->attach_next_to (*keep, Gtk::POS_RIGHT, 1, 1);
|
||||||
|
|
||||||
add = Gtk::manage(new Gtk::Button ()); // M("EXIFPANEL_ADDEDIT")
|
add = Gtk::manage (new Gtk::Button ()); // M("EXIFPANEL_ADDEDIT")
|
||||||
add->set_image (*Gtk::manage(new Gtk::Image (editicon)));
|
add->set_image (*Gtk::manage (new Gtk::Image (editicon)));
|
||||||
add->set_tooltip_text (M("EXIFPANEL_ADDEDITHINT"));
|
add->set_tooltip_text (M ("EXIFPANEL_ADDEDITHINT"));
|
||||||
add->get_style_context()->add_class("Right");
|
add->get_style_context()->add_class ("Right");
|
||||||
setExpandAlignProperties(add, true, true, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL);
|
setExpandAlignProperties (add, true, true, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL);
|
||||||
buttons1->attach_next_to(*add, Gtk::POS_RIGHT, 1, 1);
|
buttons1->attach_next_to (*add, Gtk::POS_RIGHT, 1, 1);
|
||||||
|
|
||||||
reset = Gtk::manage(new Gtk::Button ()); // M("EXIFPANEL_RESET")
|
showAll = Gtk::manage (new Gtk::ToggleButton (M ("EXIFPANEL_SHOWALL")));
|
||||||
reset->set_image (*Gtk::manage(new RTImage ("gtk-undo-ltr.png", "gtk-undo-rtl.png")));
|
//add->set_tooltip_text (M("EXIFPANEL_SHOWALL"));
|
||||||
reset->set_tooltip_text (M("EXIFPANEL_RESETHINT"));
|
setExpandAlignProperties (showAll, false, true, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL);
|
||||||
reset->get_style_context()->add_class("Left");
|
showAll->set_active (options.lastShowAllExif);
|
||||||
setExpandAlignProperties(reset, true, true, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL);
|
buttons2->attach_next_to (*showAll, Gtk::POS_LEFT, 1, 1);
|
||||||
buttons2->attach_next_to(*reset, Gtk::POS_LEFT, 1, 1);
|
|
||||||
|
|
||||||
resetAll = Gtk::manage(new Gtk::Button ()); // M("EXIFPANEL_RESETALL")
|
reset = Gtk::manage (new Gtk::Button ()); // M("EXIFPANEL_RESET")
|
||||||
resetAll->set_image (*Gtk::manage(new RTImage ("gtk-undoall-ltr.png", "gtk-undoall-rtl.png")));
|
reset->set_image (*Gtk::manage (new RTImage ("gtk-undo-ltr.png", "gtk-undo-rtl.png")));
|
||||||
resetAll->set_tooltip_text (M("EXIFPANEL_RESETALLHINT"));
|
reset->set_tooltip_text (M ("EXIFPANEL_RESETHINT"));
|
||||||
resetAll->get_style_context()->add_class("Right");
|
reset->get_style_context()->add_class ("Left");
|
||||||
setExpandAlignProperties(resetAll, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL);
|
setExpandAlignProperties (reset, true, true, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL);
|
||||||
buttons2->attach_next_to(*resetAll, Gtk::POS_RIGHT, 1, 1);
|
buttons2->attach_next_to (*reset, Gtk::POS_RIGHT, 1, 1);
|
||||||
|
|
||||||
|
resetAll = Gtk::manage (new Gtk::Button ()); // M("EXIFPANEL_RESETALL")
|
||||||
|
resetAll->set_image (*Gtk::manage (new RTImage ("gtk-undoall-ltr.png", "gtk-undoall-rtl.png")));
|
||||||
|
resetAll->set_tooltip_text (M ("EXIFPANEL_RESETALLHINT"));
|
||||||
|
resetAll->get_style_context()->add_class ("Right");
|
||||||
|
setExpandAlignProperties (resetAll, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL);
|
||||||
|
buttons2->attach_next_to (*resetAll, Gtk::POS_RIGHT, 1, 1);
|
||||||
|
|
||||||
pack_end (*buttons2, Gtk::PACK_SHRINK);
|
pack_end (*buttons2, Gtk::PACK_SHRINK);
|
||||||
pack_end (*buttons1, Gtk::PACK_SHRINK);
|
pack_end (*buttons1, Gtk::PACK_SHRINK);
|
||||||
|
|
||||||
exifTree->get_selection()->signal_changed().connect(sigc::mem_fun(*this, &ExifPanel::exifSelectionChanged));
|
exifTree->get_selection()->signal_changed().connect (sigc::mem_fun (*this, &ExifPanel::exifSelectionChanged));
|
||||||
exifTree->signal_row_activated().connect(sigc::mem_fun(*this, &ExifPanel::row_activated));
|
exifTree->signal_row_activated().connect (sigc::mem_fun (*this, &ExifPanel::row_activated));
|
||||||
|
|
||||||
remove->signal_clicked().connect( sigc::mem_fun(*this, &ExifPanel::removePressed) );
|
remove->signal_clicked().connect ( sigc::mem_fun (*this, &ExifPanel::removePressed) );
|
||||||
keep->signal_clicked().connect( sigc::mem_fun(*this, &ExifPanel::keepPressed) );
|
keep->signal_clicked().connect ( sigc::mem_fun (*this, &ExifPanel::keepPressed) );
|
||||||
reset->signal_clicked().connect( sigc::mem_fun(*this, &ExifPanel::resetPressed) );
|
reset->signal_clicked().connect ( sigc::mem_fun (*this, &ExifPanel::resetPressed) );
|
||||||
resetAll->signal_clicked().connect( sigc::mem_fun(*this, &ExifPanel::resetAllPressed) );
|
resetAll->signal_clicked().connect ( sigc::mem_fun (*this, &ExifPanel::resetAllPressed) );
|
||||||
add->signal_clicked().connect( sigc::mem_fun(*this, &ExifPanel::addPressed) );
|
add->signal_clicked().connect ( sigc::mem_fun (*this, &ExifPanel::addPressed) );
|
||||||
|
showAll->signal_toggled().connect ( sigc::mem_fun (*this, &ExifPanel::showAlltoggled) );
|
||||||
|
|
||||||
show_all ();
|
show_all ();
|
||||||
}
|
}
|
||||||
@ -188,14 +196,10 @@ void ExifPanel::setImageData (const FramesMetaData* id)
|
|||||||
idata = id;
|
idata = id;
|
||||||
exifTreeModel->clear ();
|
exifTreeModel->clear ();
|
||||||
|
|
||||||
if (id) {
|
if (idata) {
|
||||||
for (unsigned int rootNum = 0; rootNum < id->getRootCount (); ++rootNum) {
|
for (unsigned int rootNum = 0; rootNum < id->getRootCount (); ++rootNum) {
|
||||||
if ( id->getRootExifData (rootNum)) {
|
if ( id->getRootExifData (rootNum)) {
|
||||||
//id->getRootExifData ()->printAll ();
|
addDirectory (id->getRootExifData (rootNum), exifTreeModel->children(), rootNum > 0);
|
||||||
if (rootNum > 0) {
|
|
||||||
addSeparator();
|
|
||||||
}
|
|
||||||
addDirectory (id->getRootExifData (rootNum), exifTreeModel->children());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -204,7 +208,7 @@ void ExifPanel::setImageData (const FramesMetaData* id)
|
|||||||
Gtk::TreeModel::Children ExifPanel::addTag (const Gtk::TreeModel::Children& root, Glib::ustring field, Glib::ustring value, rtexif::ActionCode action, bool editable)
|
Gtk::TreeModel::Children ExifPanel::addTag (const Gtk::TreeModel::Children& root, Glib::ustring field, Glib::ustring value, rtexif::ActionCode action, bool editable)
|
||||||
{
|
{
|
||||||
|
|
||||||
Gtk::TreeModel::Row row = *(exifTreeModel->append(root));
|
Gtk::TreeModel::Row row = * (exifTreeModel->append (root));
|
||||||
row[exifColumns.action] = action;
|
row[exifColumns.action] = action;
|
||||||
row[exifColumns.editable] = editable;
|
row[exifColumns.editable] = editable;
|
||||||
row[exifColumns.edited] = false;
|
row[exifColumns.edited] = false;
|
||||||
@ -219,14 +223,14 @@ Gtk::TreeModel::Children ExifPanel::addTag (const Gtk::TreeModel::Children& root
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (editable) {
|
if (editable) {
|
||||||
row[exifColumns.field] = Glib::ustring("<b>") + escapeHtmlChars(field) + "</b>";
|
row[exifColumns.field] = Glib::ustring ("<b>") + escapeHtmlChars (field) + "</b>";
|
||||||
row[exifColumns.value] = Glib::ustring("<b>") + escapeHtmlChars(value) + "</b>";
|
row[exifColumns.value] = Glib::ustring ("<b>") + escapeHtmlChars (value) + "</b>";
|
||||||
} else if (action == AC_SYSTEM) {
|
} else if (action == AC_SYSTEM) {
|
||||||
row[exifColumns.field] = Glib::ustring("<i>") + escapeHtmlChars(field) + "</i>";
|
row[exifColumns.field] = Glib::ustring ("<i>") + escapeHtmlChars (field) + "</i>";
|
||||||
row[exifColumns.value] = Glib::ustring("<i>") + escapeHtmlChars(value) + "</i>";
|
row[exifColumns.value] = Glib::ustring ("<i>") + escapeHtmlChars (value) + "</i>";
|
||||||
} else {
|
} else {
|
||||||
row[exifColumns.field] = escapeHtmlChars(field);
|
row[exifColumns.field] = escapeHtmlChars (field);
|
||||||
row[exifColumns.value] = escapeHtmlChars(value);
|
row[exifColumns.value] = escapeHtmlChars (value);
|
||||||
}
|
}
|
||||||
|
|
||||||
return row.children();
|
return row.children();
|
||||||
@ -235,7 +239,7 @@ Gtk::TreeModel::Children ExifPanel::addTag (const Gtk::TreeModel::Children& root
|
|||||||
Gtk::TreeModel::Children ExifPanel::addSeparator ()
|
Gtk::TreeModel::Children ExifPanel::addSeparator ()
|
||||||
{
|
{
|
||||||
|
|
||||||
Gtk::TreeModel::Row row = *(exifTreeModel->append(exifTreeModel->children()));
|
Gtk::TreeModel::Row row = * (exifTreeModel->append (exifTreeModel->children()));
|
||||||
row[exifColumns.action] = rtexif::ActionCode::AC_INVALID;
|
row[exifColumns.action] = rtexif::ActionCode::AC_INVALID;
|
||||||
row[exifColumns.editable] = false;
|
row[exifColumns.editable] = false;
|
||||||
row[exifColumns.edited] = false;
|
row[exifColumns.edited] = false;
|
||||||
@ -247,23 +251,45 @@ Gtk::TreeModel::Children ExifPanel::addSeparator ()
|
|||||||
return row.children();
|
return row.children();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExifPanel::addDirectory (const TagDirectory* dir, Gtk::TreeModel::Children root)
|
void ExifPanel::addDirectory (const TagDirectory* dir, Gtk::TreeModel::Children root, bool checkForSeparator)
|
||||||
{
|
{
|
||||||
|
|
||||||
for (int i = 0; i < dir->getCount(); i++) {
|
for (int i = 0; i < dir->getCount(); ++i) {
|
||||||
Tag* t = (const_cast<TagDirectory*>(dir))->getTagByIndex (i);
|
Tag* t = (const_cast<TagDirectory*> (dir))->getTagByIndex (i);
|
||||||
|
|
||||||
if (t->getAttrib() && t->getAttrib()->action == AC_SYSTEM) {
|
bool hasContent = false;
|
||||||
|
|
||||||
|
if (checkForSeparator && i == 0) {
|
||||||
|
for (int j = 0; j < dir->getCount(); ++j) {
|
||||||
|
Tag* t2 = (const_cast<TagDirectory*> (dir))->getTagByIndex (j);
|
||||||
|
const TagAttrib* currAttrib = t->getAttrib();
|
||||||
|
|
||||||
|
if (currAttrib && ((options.lastShowAllExif) || (!options.lastShowAllExif && currAttrib->action != AC_SYSTEM))) {
|
||||||
|
addSeparator();
|
||||||
|
hasContent = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
hasContent = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!hasContent) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const TagAttrib* currAttrib = t->getAttrib();
|
||||||
|
|
||||||
|
if (!options.lastShowAllExif && currAttrib && currAttrib->action == AC_SYSTEM) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (t->isDirectory())
|
if (t->isDirectory())
|
||||||
for (int j = 0; t->getDirectory(j); j++) {
|
for (int j = 0; t->getDirectory (j); j++) {
|
||||||
Gtk::TreeModel::Children ch = addTag (root, t->nameToString (j), M("EXIFPANEL_SUBDIRECTORY"), t->getAttrib() ? t->getAttrib()->action : AC_DONTWRITE, t->getAttrib() && t->getAttrib()->editable);
|
Gtk::TreeModel::Children ch = addTag (root, t->nameToString (j), M ("EXIFPANEL_SUBDIRECTORY"), currAttrib ? currAttrib->action : AC_DONTWRITE, currAttrib && currAttrib->editable);
|
||||||
addDirectory (t->getDirectory(j), ch);
|
addDirectory (t->getDirectory (j), ch);
|
||||||
}
|
} else {
|
||||||
else {
|
addTag (root, t->nameToString (), t->valueToString (), currAttrib ? (t->getOwnMemory() ? currAttrib->action : AC_SYSTEM) : AC_DONTWRITE, currAttrib && currAttrib->editable);
|
||||||
addTag (root, t->nameToString (), t->valueToString (), t->getAttrib() ? (t->getOwnMemory() ? t->getAttrib()->action : AC_SYSTEM) : AC_DONTWRITE, t->getAttrib() && t->getAttrib()->editable);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -289,11 +315,11 @@ void ExifPanel::exifSelectionChanged ()
|
|||||||
remove->set_sensitive (1);
|
remove->set_sensitive (1);
|
||||||
keep->set_sensitive (1);
|
keep->set_sensitive (1);
|
||||||
reset->set_sensitive (1);
|
reset->set_sensitive (1);
|
||||||
} else if (iter->get_value(exifColumns.icon) == delicon) {
|
} else if (iter->get_value (exifColumns.icon) == delicon) {
|
||||||
remove->set_sensitive (0);
|
remove->set_sensitive (0);
|
||||||
keep->set_sensitive (1);
|
keep->set_sensitive (1);
|
||||||
reset->set_sensitive (1);
|
reset->set_sensitive (1);
|
||||||
} else if (iter->get_value(exifColumns.icon) == keepicon || iter->get_value(exifColumns.icon) == editicon) {
|
} else if (iter->get_value (exifColumns.icon) == keepicon || iter->get_value (exifColumns.icon) == editicon) {
|
||||||
keep->set_sensitive (0);
|
keep->set_sensitive (0);
|
||||||
remove->set_sensitive (1);
|
remove->set_sensitive (1);
|
||||||
reset->set_sensitive (1);
|
reset->set_sensitive (1);
|
||||||
@ -398,8 +424,8 @@ Gtk::TreeModel::iterator ExifPanel::resetIt (Gtk::TreeModel::iterator iter)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (iter->get_value (exifColumns.edited)) {
|
if (iter->get_value (exifColumns.edited)) {
|
||||||
iter->set_value (exifColumns.value, Glib::ustring("<b>") + iter->get_value(exifColumns.orig_value) + "</b>");
|
iter->set_value (exifColumns.value, Glib::ustring ("<b>") + iter->get_value (exifColumns.orig_value) + "</b>");
|
||||||
iter->set_value (exifColumns.value_nopango, iter->get_value(exifColumns.orig_value));
|
iter->set_value (exifColumns.value_nopango, iter->get_value (exifColumns.orig_value));
|
||||||
iter->set_value (exifColumns.edited, false);
|
iter->set_value (exifColumns.edited, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -442,14 +468,14 @@ void ExifPanel::resetAllPressed ()
|
|||||||
void ExifPanel::addPressed ()
|
void ExifPanel::addPressed ()
|
||||||
{
|
{
|
||||||
|
|
||||||
Gtk::Dialog* dialog = new Gtk::Dialog (M("EXIFPANEL_ADDTAGDLG_TITLE"), *((Gtk::Window*)get_toplevel()), true);
|
Gtk::Dialog* dialog = new Gtk::Dialog (M ("EXIFPANEL_ADDTAGDLG_TITLE"), * ((Gtk::Window*)get_toplevel()), true);
|
||||||
dialog->add_button (Gtk::Stock::OK, Gtk::RESPONSE_OK);
|
dialog->add_button (Gtk::Stock::OK, Gtk::RESPONSE_OK);
|
||||||
dialog->add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
|
dialog->add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
|
||||||
|
|
||||||
Gtk::HBox* hb1 = new Gtk::HBox ();
|
Gtk::HBox* hb1 = new Gtk::HBox ();
|
||||||
Gtk::HBox* hb2 = new Gtk::HBox ();
|
Gtk::HBox* hb2 = new Gtk::HBox ();
|
||||||
|
|
||||||
Gtk::Label* tlabel = new Gtk::Label (M("EXIFPANEL_ADDTAGDLG_SELECTTAG") + ":");
|
Gtk::Label* tlabel = new Gtk::Label (M ("EXIFPANEL_ADDTAGDLG_SELECTTAG") + ":");
|
||||||
MyComboBoxText* tcombo = new MyComboBoxText ();
|
MyComboBoxText* tcombo = new MyComboBoxText ();
|
||||||
|
|
||||||
tcombo->append ("Artist");
|
tcombo->append ("Artist");
|
||||||
@ -460,7 +486,7 @@ void ExifPanel::addPressed ()
|
|||||||
hb1->pack_start (*tlabel, Gtk::PACK_SHRINK, 4);
|
hb1->pack_start (*tlabel, Gtk::PACK_SHRINK, 4);
|
||||||
hb1->pack_start (*tcombo);
|
hb1->pack_start (*tcombo);
|
||||||
|
|
||||||
Gtk::Label* vlabel = new Gtk::Label (M("EXIFPANEL_ADDTAGDLG_ENTERVALUE") + ":");
|
Gtk::Label* vlabel = new Gtk::Label (M ("EXIFPANEL_ADDTAGDLG_ENTERVALUE") + ":");
|
||||||
Gtk::Entry* ventry = new Gtk::Entry ();
|
Gtk::Entry* ventry = new Gtk::Entry ();
|
||||||
hb2->pack_start (*vlabel, Gtk::PACK_SHRINK, 4);
|
hb2->pack_start (*vlabel, Gtk::PACK_SHRINK, 4);
|
||||||
hb2->pack_start (*ventry);
|
hb2->pack_start (*ventry);
|
||||||
@ -506,6 +532,12 @@ void ExifPanel::addPressed ()
|
|||||||
delete hb2;
|
delete hb2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ExifPanel::showAlltoggled ()
|
||||||
|
{
|
||||||
|
options.lastShowAllExif = showAll->get_active();
|
||||||
|
setImageData (idata);
|
||||||
|
}
|
||||||
|
|
||||||
void ExifPanel::editTag (Gtk::TreeModel::Children root, Glib::ustring name, Glib::ustring value)
|
void ExifPanel::editTag (Gtk::TreeModel::Children root, Glib::ustring name, Glib::ustring value)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -520,29 +552,30 @@ void ExifPanel::editTag (Gtk::TreeModel::Children root, Glib::ustring name, Glib
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (iter == root.end() && value != "#keep" && value != "#delete") {
|
if (iter == root.end() && value != "#keep" && value != "#delete") {
|
||||||
iter = exifTreeModel->append(root);
|
iter = exifTreeModel->append (root);
|
||||||
iter->set_value (exifColumns.field_nopango, fseg);
|
iter->set_value (exifColumns.field_nopango, fseg);
|
||||||
iter->set_value (exifColumns.action, AC_INVALID);
|
iter->set_value (exifColumns.action, AC_INVALID);
|
||||||
|
|
||||||
if (dp == Glib::ustring::npos) {
|
if (dp == Glib::ustring::npos) {
|
||||||
iter->set_value (exifColumns.value, Glib::ustring("<b>") + value + "</b>");
|
iter->set_value (exifColumns.value, Glib::ustring ("<b>") + value + "</b>");
|
||||||
iter->set_value (exifColumns.value_nopango, value);
|
iter->set_value (exifColumns.value_nopango, value);
|
||||||
iter->set_value (exifColumns.orig_value, value);
|
iter->set_value (exifColumns.orig_value, value);
|
||||||
iter->set_value (exifColumns.field, Glib::ustring("<b>") + fseg + "</b>");
|
iter->set_value (exifColumns.field, Glib::ustring ("<b>") + fseg + "</b>");
|
||||||
iter->set_value (exifColumns.edited, true);
|
iter->set_value (exifColumns.edited, true);
|
||||||
iter->set_value (exifColumns.editable, true);
|
iter->set_value (exifColumns.editable, true);
|
||||||
iter->set_value (exifColumns.icon, editicon);
|
iter->set_value (exifColumns.icon, editicon);
|
||||||
} else {
|
} else {
|
||||||
iter->set_value (exifColumns.value, Glib::ustring(M("EXIFPANEL_SUBDIRECTORY")));
|
iter->set_value (exifColumns.value, Glib::ustring (M ("EXIFPANEL_SUBDIRECTORY")));
|
||||||
iter->set_value (exifColumns.value_nopango, Glib::ustring(M("EXIFPANEL_SUBDIRECTORY")));
|
iter->set_value (exifColumns.value_nopango, Glib::ustring (M ("EXIFPANEL_SUBDIRECTORY")));
|
||||||
iter->set_value (exifColumns.field, fseg);
|
iter->set_value (exifColumns.field, fseg);
|
||||||
iter->set_value (exifColumns.icon, keepicon);
|
iter->set_value (exifColumns.icon, keepicon);
|
||||||
iter->set_value (exifColumns.orig_value, Glib::ustring(M("EXIFPANEL_SUBDIRECTORY")));
|
iter->set_value (exifColumns.orig_value, Glib::ustring (M ("EXIFPANEL_SUBDIRECTORY")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (iter == root.end())
|
if (iter == root.end()) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (dp == Glib::ustring::npos) {
|
if (dp == Glib::ustring::npos) {
|
||||||
if (value == "#keep" && iter->get_value (exifColumns.action) != AC_SYSTEM) {
|
if (value == "#keep" && iter->get_value (exifColumns.action) != AC_SYSTEM) {
|
||||||
@ -550,7 +583,7 @@ void ExifPanel::editTag (Gtk::TreeModel::Children root, Glib::ustring name, Glib
|
|||||||
} else if (value == "#delete" && iter->get_value (exifColumns.action) != AC_SYSTEM) {
|
} else if (value == "#delete" && iter->get_value (exifColumns.action) != AC_SYSTEM) {
|
||||||
iter->set_value (exifColumns.icon, delicon);
|
iter->set_value (exifColumns.icon, delicon);
|
||||||
} else {
|
} else {
|
||||||
iter->set_value (exifColumns.value, Glib::ustring("<b>") + value + "</b>");
|
iter->set_value (exifColumns.value, Glib::ustring ("<b>") + value + "</b>");
|
||||||
iter->set_value (exifColumns.value_nopango, value);
|
iter->set_value (exifColumns.value_nopango, value);
|
||||||
iter->set_value (exifColumns.edited, true);
|
iter->set_value (exifColumns.edited, true);
|
||||||
iter->set_value (exifColumns.icon, editicon);
|
iter->set_value (exifColumns.icon, editicon);
|
||||||
@ -664,8 +697,7 @@ void ExifPanel::row_activated (const Gtk::TreeModel::Path& path, Gtk::TreeViewCo
|
|||||||
exifTree->collapse_row (path);
|
exifTree->collapse_row (path);
|
||||||
} else {
|
} else {
|
||||||
exifTree->expand_row (path, false);
|
exifTree->expand_row (path, false);
|
||||||
}
|
} else if (iter->get_value (exifColumns.editable)) {
|
||||||
else if (iter->get_value (exifColumns.editable)) {
|
|
||||||
addPressed ();
|
addPressed ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -676,6 +708,6 @@ void ExifPanel::notifyListener ()
|
|||||||
{
|
{
|
||||||
|
|
||||||
if (listener) {
|
if (listener) {
|
||||||
listener->panelChanged (EvExif, M("HISTORY_CHANGED"));
|
listener->panelChanged (EvExif, M ("HISTORY_CHANGED"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,16 +47,16 @@ private:
|
|||||||
|
|
||||||
ExifColumns()
|
ExifColumns()
|
||||||
{
|
{
|
||||||
add(field);
|
add (field);
|
||||||
add(value);
|
add (value);
|
||||||
add(icon);
|
add (icon);
|
||||||
add(action);
|
add (action);
|
||||||
add(edited);
|
add (edited);
|
||||||
add(field_nopango);
|
add (field_nopango);
|
||||||
add(value_nopango);
|
add (value_nopango);
|
||||||
add(editable);
|
add (editable);
|
||||||
add(orig_value);
|
add (orig_value);
|
||||||
add(isSeparator);
|
add (isSeparator);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Glib::RefPtr<Gdk::Pixbuf> delicon;
|
Glib::RefPtr<Gdk::Pixbuf> delicon;
|
||||||
@ -73,38 +73,41 @@ private:
|
|||||||
Gtk::Button* add;
|
Gtk::Button* add;
|
||||||
Gtk::Button* reset;
|
Gtk::Button* reset;
|
||||||
Gtk::Button* resetAll;
|
Gtk::Button* resetAll;
|
||||||
|
Gtk::ToggleButton* showAll;
|
||||||
|
|
||||||
Gtk::TreeModel::Children addTag (const Gtk::TreeModel::Children& root, Glib::ustring field, Glib::ustring value, rtexif::ActionCode action, bool editable);
|
Gtk::TreeModel::Children addTag (const Gtk::TreeModel::Children& root, Glib::ustring field, Glib::ustring value, rtexif::ActionCode action, bool editable);
|
||||||
void editTag (Gtk::TreeModel::Children root, Glib::ustring name, Glib::ustring value);
|
void editTag (Gtk::TreeModel::Children root, Glib::ustring name, Glib::ustring value);
|
||||||
void updateChangeList (Gtk::TreeModel::Children root, std::string prefix);
|
void updateChangeList (Gtk::TreeModel::Children root, std::string prefix);
|
||||||
void addDirectory (const rtexif::TagDirectory* dir, Gtk::TreeModel::Children root);
|
void addDirectory (const rtexif::TagDirectory* dir, Gtk::TreeModel::Children root, bool checkForSeparator = false);
|
||||||
Gtk::TreeModel::Children addSeparator ();
|
Gtk::TreeModel::Children addSeparator();
|
||||||
Glib::ustring getSelection (bool onlyifeditable = false);
|
Glib::ustring getSelection (bool onlyifeditable = false);
|
||||||
Glib::ustring getSelectedValue ();
|
Glib::ustring getSelectedValue();
|
||||||
void updateChangeList ();
|
void updateChangeList();
|
||||||
void applyChangeList ();
|
void applyChangeList();
|
||||||
void keepIt (Gtk::TreeModel::iterator iter);
|
void keepIt (Gtk::TreeModel::iterator iter);
|
||||||
void delIt (Gtk::TreeModel::iterator iter);
|
void delIt (Gtk::TreeModel::iterator iter);
|
||||||
Gtk::TreeModel::iterator resetIt (Gtk::TreeModel::iterator iter);
|
Gtk::TreeModel::iterator resetIt (Gtk::TreeModel::iterator iter);
|
||||||
|
void removePressed();
|
||||||
|
void keepPressed();
|
||||||
|
void resetPressed();
|
||||||
|
void resetAllPressed();
|
||||||
|
void addPressed();
|
||||||
|
void showAlltoggled();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ExifPanel ();
|
ExifPanel ();
|
||||||
virtual ~ExifPanel ();
|
virtual ~ExifPanel();
|
||||||
|
|
||||||
void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
|
void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
|
||||||
void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
|
void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
|
||||||
void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
|
void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
|
||||||
|
|
||||||
void setImageData (const rtengine::FramesMetaData* id);
|
void setImageData (const rtengine::FramesMetaData* id);
|
||||||
|
|
||||||
void exifSelectionChanged ();
|
void exifSelectionChanged();
|
||||||
void removePressed ();
|
|
||||||
void keepPressed ();
|
|
||||||
void resetPressed ();
|
|
||||||
void resetAllPressed ();
|
|
||||||
void addPressed ();
|
|
||||||
void row_activated (const Gtk::TreeModel::Path& path, Gtk::TreeViewColumn* column);
|
void row_activated (const Gtk::TreeModel::Path& path, Gtk::TreeViewColumn* column);
|
||||||
|
|
||||||
void notifyListener ();
|
void notifyListener();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -354,6 +354,7 @@ void Options::setDefaults ()
|
|||||||
CPFontFamily = "default";
|
CPFontFamily = "default";
|
||||||
CPFontSize = 8;
|
CPFontSize = 8;
|
||||||
lastScale = 5;
|
lastScale = 5;
|
||||||
|
lastShowAllExif = false;
|
||||||
panAccelFactor = 5;
|
panAccelFactor = 5;
|
||||||
rememberZoomAndPan = true;
|
rememberZoomAndPan = true;
|
||||||
lastCropSize = 1;
|
lastCropSize = 1;
|
||||||
@ -1390,6 +1391,10 @@ void Options::readFromFile (Glib::ustring fname)
|
|||||||
lastScale = keyFile.get_integer ("GUI", "LastPreviewScale");
|
lastScale = keyFile.get_integer ("GUI", "LastPreviewScale");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (keyFile.has_key ("GUI", "LastShowAllExif")) {
|
||||||
|
lastShowAllExif = keyFile.get_boolean ("GUI", "LastShowAllExif");
|
||||||
|
}
|
||||||
|
|
||||||
if (keyFile.has_key ("GUI", "PanAccelFactor")) {
|
if (keyFile.has_key ("GUI", "PanAccelFactor")) {
|
||||||
panAccelFactor = keyFile.get_integer ("GUI", "PanAccelFactor");
|
panAccelFactor = keyFile.get_integer ("GUI", "PanAccelFactor");
|
||||||
}
|
}
|
||||||
@ -2105,6 +2110,7 @@ void Options::saveToFile (Glib::ustring fname)
|
|||||||
keyFile.set_string ("GUI", "CPFontFamily", CPFontFamily);
|
keyFile.set_string ("GUI", "CPFontFamily", CPFontFamily);
|
||||||
keyFile.set_integer ("GUI", "CPFontSize", CPFontSize);
|
keyFile.set_integer ("GUI", "CPFontSize", CPFontSize);
|
||||||
keyFile.set_integer ("GUI", "LastPreviewScale", lastScale);
|
keyFile.set_integer ("GUI", "LastPreviewScale", lastScale);
|
||||||
|
keyFile.set_boolean ("GUI", "LastShowAllExif", lastShowAllExif);
|
||||||
keyFile.set_integer ("GUI", "PanAccelFactor", panAccelFactor);
|
keyFile.set_integer ("GUI", "PanAccelFactor", panAccelFactor);
|
||||||
keyFile.set_boolean ("GUI", "RememberZoomAndPan", rememberZoomAndPan);
|
keyFile.set_boolean ("GUI", "RememberZoomAndPan", rememberZoomAndPan);
|
||||||
keyFile.set_integer ("GUI", "LastCropSize", lastCropSize);
|
keyFile.set_integer ("GUI", "LastCropSize", lastCropSize);
|
||||||
|
@ -168,6 +168,7 @@ public:
|
|||||||
int dirBrowserHeight;
|
int dirBrowserHeight;
|
||||||
int preferencesWidth;
|
int preferencesWidth;
|
||||||
int preferencesHeight;
|
int preferencesHeight;
|
||||||
|
bool lastShowAllExif;
|
||||||
int lastScale;
|
int lastScale;
|
||||||
int panAccelFactor;
|
int panAccelFactor;
|
||||||
int lastCropSize;
|
int lastCropSize;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user