void Tpresets::nextUniqueName(char_t *presetName, size_t buflen) { iterator i=findPreset(presetName); if (i==end()) { return; } for (int ii=1;; ii++) { char_t pomS[MAX_PATH]; tsnprintf_s(pomS, countof(pomS), _TRUNCATE, _l("%s %i"),presetName,ii); if (findPreset(pomS)==end()) { ff_strncpy(presetName, pomS, buflen); return; } } }
Tpreset* Tpresets::getAutoPreset0(TautoPresetProps &aprops,bool filefirst) { if (filefirst) { const char_t *AVIname=aprops.getSourceFullFlnm(); ffstring presetFlnm; changepathext(AVIname, presetext, presetFlnm); if (fileexists(presetFlnm.c_str())) { Tpreset *preset=newPreset(AVIname); preset->loadFile(presetFlnm.c_str()); Tpreset::normalizePresetName(preset->presetName, AVIname, countof(preset->presetName)); preset->autoLoadedFromFile=true; iterator i=findPreset(preset->presetName); if (i!=end() && (*i)->autoLoadedFromFile) { removePreset(preset->presetName); } nextUniqueName(preset); push_back(preset); return preset; } } for (iterator i=begin(); i!=end(); i++) if ((*i)->isAutoPreset(aprops)) { return *i; } return NULL; }
//-------------------------------------------------------------- // Subcategory::merge //-------------------------------------------------------------- void Subcategory::merge(Preset* p) { if(isFreeProg(p->prog)) p->linkSubcategory(this); else { Preset* pFromSub=findPreset(p->prog); pFromSub->merge(p); } }
void Tpresets::storePreset(Tpreset *preset) { iterator i=findPreset(preset->presetName); if (i!=end()) { *i=preset; } else { push_back(preset); } }
bool Tpresets::removePreset(const char_t *presetName) { iterator i=findPreset(presetName); if (i!=begin() && i!=end()) { delete *i; erase(i); return true; } else { return false; } }
Tpreset* Tpresets::getPreset(const char_t *presetName,bool create) { iterator i=findPreset(presetName); if (i!=end()) { return *i; } else if (create) { Tpreset *newpreset=newPreset(presetName); newpreset->loadReg(); storePreset(newpreset); return newpreset; } else { return NULL; } }
void Tpresets::saveRegAll(void) { for (iterator ii=begin(); ii!=end(); ii++) if (!(*ii)->autoLoadedFromFile) { (*ii)->saveReg(); } strings keys; listRegKeys(keys); for (strings::const_iterator i=keys.begin(); i!=keys.end(); i++) if (i->c_str()[0]!='\0' && findPreset(i->c_str())==end()) { char_t presetRegStr[256]; tsnprintf_s(presetRegStr, countof(presetRegStr), _TRUNCATE, FFDSHOW_REG_PARENT _l("\\%s\\%s"), reg_child, i->c_str()); RegDeleteKey(HKEY_CURRENT_USER,presetRegStr); } }
void Tpresets::init(void) { Tpreset *def=newPreset(); def->loadDefault(); push_back(def); strings keys; listRegKeys(keys); for (strings::const_iterator i=keys.begin(); i!=keys.end(); i++) if (findPreset(i->c_str())==end()) { Tpreset *preset=newPreset(i->c_str()); preset->loadReg(); push_back(preset); } if (keys.size()==0) { (*begin())->saveReg(); } }
bool Subcategory::isFreeProg(int pr) { if(findPreset(pr)) return(false); else return(true); }