//------------------------------------------------------------------------------
// emWindowStateSaver.h
//
// Copyright (C) 2016 Oliver Hamann.
//
// Homepage: http://eaglemode.sourceforge.net/
//
// This program is free software: you can redistribute it and/or modify it under
// the terms of the GNU General Public License version 3 as published by the
// Free Software Foundation.
//
// This program is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE. See the GNU General Public License version 3 for
// more details.
//
// You should have received a copy of the GNU General Public License version 3
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//------------------------------------------------------------------------------
#ifndef emWindowStateSaver_h
#define emWindowStateSaver_h
#ifndef emWindow_h
#include <emCore/emWindow.h>
#endif
//==============================================================================
//============================= emWindowStateSaver =============================
//==============================================================================
class emWindowStateSaver : public emEngine {
public:
// Class for making the geometry of a window (class) persistent. This
// saves the position, size and maximization state in a file. For using
// this class, simply create an instance of it as a member of your
// window. The state is restored up-on construction (if file valid), and
// it is saved on each geometry change or focusing of the window.
// Actually the saving happens immediately to a shared internal model
// and with delay to the file.
emWindowStateSaver(
emWindow & window, const emString & filePath,
bool allowRestoreFullscreen=false
);
// Constructor.
// Arguments:
// window - The window whose state is to be
// restored and saved by this window
// state saver.
// filePath - Path and name for the file. This
// should be unique for the window
// class. The file has an emRec
// format.
// allowRestoreFullscreen - Whether to allow restoring
// fullscreen mode.
virtual ~emWindowStateSaver();
// Destructor.
protected:
virtual bool Cycle();
private:
void Save();
void Restore();
class ModelClass : public emConfigModel, public emStructRec {
public:
static emRef<ModelClass> Acquire(
emRootContext & rootContext,
const emString & filePath
);
emDoubleRec ViewX;
emDoubleRec ViewY;
emDoubleRec ViewWidth;
emDoubleRec ViewHeight;
emBoolRec Maximized;
emBoolRec Fullscreen;
virtual const char * GetFormatName() const;
protected:
ModelClass(emContext & context, const emString & filePath);
virtual ~ModelClass();
};
emWindow & Window;
bool AllowRestoreFullscreen;
emRef<ModelClass> Model;
double OwnNormalX,OwnNormalY,OwnNormalW,OwnNormalH;
};
#endif