status_t
ScreensaverThemesAddon::MakeTheme(BMessage &theme, uint32 flags)
{
	BMessage screensaver;
	status_t err;
	BPath path;
	BString str;
	BMessage settings;
	BMessage modsettings;
	
	(void)flags;
	err = MyMessage(theme, screensaver);
	if (err)
		screensaver.MakeEmpty();
	
	if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) < B_OK)
		return B_ERROR;
	path.Append("ScreenSaver_settings");
	BFile f(path.Path(), B_READ_ONLY);
	if (settings.Unflatten(&f) < B_OK)
		return B_ERROR;
	if (settings.FindString("modulename", &str) >= B_OK) {
		screensaver.AddString(Z_THEME_SS_MODULE, str.String());
		BString msname(MS_NAME);
		msname += str.String();
		if (settings.FindMessage(msname.String(), &modsettings) >= B_OK) {
		screensaver.AddMessage(Z_THEME_SS_MODULE_SETTINGS, &modsettings);
		}
	}
	
	err = SetMyMessage(theme, screensaver);
	return err;
}
Ejemplo n.º 2
0
  TotalStress<EvalT, Traits>::
  TotalStress(const Teuchos::ParameterList& p,
         const Teuchos::RCP<Albany::Layouts>& dl) :
    macroStress     (p.get<std::string>("Macro Stress Name"),dl->qp_tensor),
    totalStress     (p.get<std::string>("Total Stress Name"),dl->qp_tensor),
    numMicroScales  (p.get<int>("Additional Scales"))
  {


    this->addDependentField(macroStress);

    microStress.resize(numMicroScales);
    for(int i=0; i<numMicroScales; i++){
      std::string ms = Albany::strint("Micro Stress",i);
      std::string msname(ms); msname += " Name";
      microStress[i] = Teuchos::rcp(new HMC2Tensor(p.get<std::string>(msname),
                                    p.get<Teuchos::RCP<PHX::DataLayout>>("QP 2Tensor Data Layout") ) );
      this->addDependentField(*(microStress[i]));
    }

    
    this->addEvaluatedField(totalStress);
    
    this->setName("TotalStress"+PHX::typeAsString<EvalT>());
    
    std::vector<PHX::DataLayout::size_type> dims;
    dl->qp_tensor->dimensions(dims);
    numQPs  = dims[1];
    numDims = dims[2];
  }
status_t
ScreensaverThemesAddon::ApplyTheme(BMessage &theme, uint32 flags)
{
	BMessage screensaver;
	status_t err;
	BPath path;
	BString str;
	BMessage settings;
	BMessage modsettings;
	
	if (!(flags & UI_THEME_SETTINGS_SET_ALL) || !(AddonFlags() & Z_THEME_ADDON_DO_SET_ALL))
		return B_OK;
	
	err = MyMessage(theme, screensaver);
	if (err)
		return err;
	
	if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) < B_OK)
		return B_ERROR;
	path.Append("ScreenSaver_settings");
	BFile f(path.Path(), B_READ_WRITE);
	if (settings.Unflatten(&f) < B_OK)
		return B_ERROR;
	if (screensaver.FindString(Z_THEME_SS_MODULE, &str) >= B_OK) {
		if (settings.ReplaceString("modulename", str.String()) < B_OK)
			if (settings.AddString("modulename", str.String()) < B_OK)
				return B_ERROR;
		if (screensaver.FindMessage(Z_THEME_SS_MODULE_SETTINGS, &modsettings) >= B_OK) {
			BString msname(MS_NAME);
			msname += str.String();
			if (settings.ReplaceMessage(msname.String(), &modsettings) < B_OK)
				settings.AddMessage(msname.String(), &modsettings);
		}
		f.Seek(0LL, SEEK_SET);
		if (settings.Flatten(&f) < B_OK)
			return B_ERROR;
	}
	
	return err;
}