Committing patch from issue 1240: "Partial profile handling"

This commit is contained in:
natureh
2012-02-26 03:23:08 +01:00
parent c21fa69aea
commit dd93fff44c
60 changed files with 2243 additions and 2214 deletions

View File

@@ -339,6 +339,7 @@ IPTCPanel::IPTCPanel () {
void IPTCPanel::read (const ProcParams* pp, const ParamsEdited* pedited) {
disableListener ();
changeList.clear();
if (!pp->iptc.empty())
changeList = pp->iptc;
else
@@ -377,7 +378,7 @@ void IPTCPanel::addKeyWord () {
keyword->get_entry()->select_region (0, keyword->get_entry()->get_text().size());
for (int i=0; i<keywords->size(); i++)
for (unsigned int i=0; i<keywords->size(); i++)
if (keywords->get_text (i) == keyword->get_entry()->get_text())
return;
@@ -390,7 +391,7 @@ void IPTCPanel::addKeyWord () {
items.push_back (s);
}
keyword->clear_items ();
for (int i=0; i<10 && i<items.size(); i++)
for (unsigned int i=0; i<10 && i<items.size(); i++)
keyword->append_text (items[i]);
keywords->scroll_to_row (keywords->get_model()->get_path(--keywords->get_model()->children().end()));
@@ -402,11 +403,11 @@ void IPTCPanel::delKeyWord () {
std::vector<int> selection = keywords->get_selected ();
if (!selection.empty()) {
std::vector<Glib::ustring> keep;
for (int i=0; i<keywords->size(); i++)
for (unsigned int i=0; i<keywords->size(); i++)
if (std::find (selection.begin(), selection.end(), i) == selection.end())
keep.push_back (keywords->get_text (i));
keywords->clear_items ();
for (int i=0; i<keep.size(); i++)
for (unsigned int i=0; i<keep.size(); i++)
keywords->append_text (keep[i]);
}
@@ -415,7 +416,7 @@ void IPTCPanel::delKeyWord () {
void IPTCPanel::addSuppCategory () {
for (int i=0; i<suppCategories->size(); i++)
for (unsigned int i=0; i<suppCategories->size(); i++)
if (suppCategories->get_text (i) == suppCategory->get_entry()->get_text())
return;
@@ -428,7 +429,7 @@ void IPTCPanel::addSuppCategory () {
items.push_back (s);
}
suppCategory->clear_items ();
for (int i=0; i<10 && i<items.size(); i++)
for (unsigned int i=0; i<10 && i<items.size(); i++)
suppCategory->append_text (items[i]);
suppCategories->scroll_to_row (suppCategories->get_model()->get_path(--suppCategories->get_model()->children().end()));
suppCategory->get_entry()->select_region (0, suppCategory->get_entry()->get_text().size());
@@ -441,11 +442,11 @@ void IPTCPanel::delSuppCategory () {
std::vector<int> selection = suppCategories->get_selected ();
if (!selection.empty()) {
std::vector<Glib::ustring> keep;
for (int i=0; i<suppCategories->size(); i++)
for (unsigned int i=0; i<suppCategories->size(); i++)
if (std::find (selection.begin(), selection.end(), i) == selection.end())
keep.push_back (suppCategories->get_text (i));
suppCategories->clear_items ();
for (int i=0; i<keep.size(); i++)
for (unsigned int i=0; i<keep.size(); i++)
suppCategories->append_text (keep[i]);
}
@@ -455,45 +456,30 @@ void IPTCPanel::delSuppCategory () {
void IPTCPanel::updateChangeList () {
changeList.clear ();
changeList.resize (18);
changeList[0].field = "Caption";
changeList[0].values.push_back (captionText->get_text ());
changeList[1].field = "CaptionWriter";
changeList[1].values.push_back (captionWriter->get_text ());
changeList[2].field = "Headline";
changeList[2].values.push_back (headline->get_text ());
changeList[3].field = "Instructions";
changeList[3].values.push_back (instructions->get_text ());
changeList[4].field = "Keywords";
for (int i=0; i<keywords->size(); i++)
changeList[4].values.push_back (keywords->get_text (i));
changeList[5].field = "Category";
changeList[5].values.push_back (category->get_entry()->get_text ());
changeList[6].field = "SupplementalCategories";
for (int i=0; i<suppCategories->size(); i++)
changeList[6].values.push_back (suppCategories->get_text (i));
changeList[7].field = "Author";
changeList[7].values.push_back (author->get_text ());
changeList[8].field = "AuthorsPosition";
changeList[8].values.push_back (authorPos->get_text ());
changeList[9].field = "Credit";
changeList[9].values.push_back (credit->get_text ());
changeList[10].field = "Source";
changeList[10].values.push_back (source->get_text ());
changeList[11].field = "Copyright";
changeList[11].values.push_back (copyright->get_text ());
changeList[12].field = "City";
changeList[12].values.push_back (city->get_text ());
changeList[13].field = "Province";
changeList[13].values.push_back (province->get_text ());
changeList[14].field = "Country";
changeList[14].values.push_back (country->get_text ());
changeList[15].field = "Title";
changeList[15].values.push_back (title->get_text ());
changeList[16].field = "DateCreated";
changeList[16].values.push_back (dateCreated->get_text ());
changeList[17].field = "TransReference";
changeList[17].values.push_back (transReference->get_text ());
changeList["Caption" ].push_back (captionText->get_text ());
changeList["CaptionWriter" ].push_back (captionWriter->get_text ());
changeList["Headline" ].push_back (headline->get_text ());
changeList["Instructions" ].push_back (instructions->get_text ());
for (unsigned int i=0; i<keywords->size(); i++)
changeList["Keywords" ].push_back (keywords->get_text (i));
changeList["Category" ].push_back (category->get_entry()->get_text ());
for (unsigned int i=0; i<suppCategories->size(); i++)
changeList["SupplementalCategories"].push_back (suppCategories->get_text (i));
changeList["Author" ].push_back (author->get_text ());
changeList["AuthorsPosition"].push_back (authorPos->get_text ());
changeList["Credit" ].push_back (credit->get_text ());
changeList["Source" ].push_back (source->get_text ());
changeList["Copyright" ].push_back (copyright->get_text ());
changeList["City" ].push_back (city->get_text ());
changeList["Province" ].push_back (province->get_text ());
changeList["Country" ].push_back (country->get_text ());
changeList["Title" ].push_back (title->get_text ());
changeList["DateCreated" ].push_back (dateCreated->get_text ());
changeList["TransReference" ].push_back (transReference->get_text ());
notifyListener ();
}
@@ -524,45 +510,47 @@ void IPTCPanel::applyChangeList () {
keyword->get_entry()->set_text ("");
suppCategory->get_entry()->set_text ("");
for (int i=0; i<changeList.size(); i++)
if (changeList[i].field == "Caption" && !changeList[i].values.empty())
captionText->set_text (changeList[i].values[0]);
else if (changeList[i].field == "CaptionWriter" && !changeList[i].values.empty())
captionWriter->set_text (changeList[i].values[0]);
else if (changeList[i].field == "Headline" && !changeList[i].values.empty())
headline->set_text (changeList[i].values[0]);
else if (changeList[i].field == "Instructions" && !changeList[i].values.empty())
instructions->set_text (changeList[i].values[0]);
else if (changeList[i].field == "Keywords")
for (int j=0; j<changeList[i].values.size(); j++)
keywords->append_text (changeList[i].values[j]);
else if (changeList[i].field == "Category" && !changeList[i].values.empty())
category->get_entry()->set_text (changeList[i].values[0]);
else if (changeList[i].field == "SupplementalCategories")
for (int j=0; j<changeList[i].values.size(); j++)
suppCategories->append_text (changeList[i].values[j]);
else if (changeList[i].field == "Author" && !changeList[i].values.empty())
author->set_text (changeList[i].values[0]);
else if (changeList[i].field == "AuthorsPosition" && !changeList[i].values.empty())
authorPos->set_text (changeList[i].values[0]);
else if (changeList[i].field == "Credit" && !changeList[i].values.empty())
credit->set_text (changeList[i].values[0]);
else if (changeList[i].field == "Source" && !changeList[i].values.empty())
source->set_text (changeList[i].values[0]);
else if (changeList[i].field == "Copyright" && !changeList[i].values.empty())
copyright->set_text (changeList[i].values[0]);
else if (changeList[i].field == "City" && !changeList[i].values.empty())
city->set_text (changeList[i].values[0]);
else if (changeList[i].field == "Province" && !changeList[i].values.empty())
province->set_text (changeList[i].values[0]);
else if (changeList[i].field == "Country" && !changeList[i].values.empty())
country->set_text (changeList[i].values[0]);
else if (changeList[i].field == "Title" && !changeList[i].values.empty())
title->set_text (changeList[i].values[0]);
else if (changeList[i].field == "DateCreated" && !changeList[i].values.empty())
dateCreated->set_text (changeList[i].values[0]);
else if (changeList[i].field == "TransReference" && !changeList[i].values.empty())
transReference->set_text (changeList[i].values[0]);
for (rtengine::procparams::IPTCPairs::iterator i=changeList.begin(); i!=changeList.end(); i++) {
printf("- %s: %s\n", i->first.c_str(), i->second.empty()?"[vide]":i->second.at(0).c_str());
if (i->first == "Caption" && !i->second.empty())
captionText->set_text (i->second.at(0));
else if (i->first == "CaptionWriter" && !i->second.empty())
captionWriter->set_text (i->second.at(0));
else if (i->first == "Headline" && !i->second.empty())
headline->set_text (i->second.at(0));
else if (i->first == "Instructions" && !i->second.empty())
instructions->set_text (i->second.at(0));
else if (i->first == "Keywords")
for (unsigned int j=0; j<i->second.size(); j++)
keywords->append_text (i->second.at(j));
else if (i->first == "Category" && !i->second.empty())
category->get_entry()->set_text (i->second.at(0));
else if (i->first == "SupplementalCategories")
for (unsigned int j=0; j<i->second.size(); j++)
suppCategories->append_text (i->second.at(j));
else if (i->first == "Author" && !i->second.empty())
author->set_text (i->second.at(0));
else if (i->first == "AuthorsPosition" && !i->second.empty())
authorPos->set_text (i->second.at(0));
else if (i->first == "Credit" && !i->second.empty())
credit->set_text (i->second.at(0));
else if (i->first == "Source" && !i->second.empty())
source->set_text (i->second.at(0));
else if (i->first == "Copyright" && !i->second.empty())
copyright->set_text (i->second.at(0));
else if (i->first == "City" && !i->second.empty())
city->set_text (i->second.at(0));
else if (i->first == "Province" && !i->second.empty())
province->set_text (i->second.at(0));
else if (i->first == "Country" && !i->second.empty())
country->set_text (i->second.at(0));
else if (i->first == "Title" && !i->second.empty())
title->set_text (i->second.at(0));
else if (i->first == "DateCreated" && !i->second.empty())
dateCreated->set_text (i->second.at(0));
else if (i->first == "TransReference" && !i->second.empty())
transReference->set_text (i->second.at(0));
}
for (int i=0; i<16; i++)
conns[i].block (false);