Diana Software
QGDefaultsHandler.cc
Go to the documentation of this file.
1 #include "QGDefaultsHandler.hh"
2 #include <cstdlib>
3 #include "QGTextFileHandler.hh"
4 
6 
7 using std::string;
8 
10 
12 {
13  if (!fMe) fMe = new QGDefaultsHandler();
14  return fMe;
15 }
16 
18 {
19  fCutsDirectory = "./";
20  fDataDirectory = "./";
22  fSaveCanvasDirectory = "./";
23  fSessionDirectory = "./";
24 
25  char *homeDirectory = getenv("HOME");
26  if (homeDirectory) {
27  fDefaultsFileDirectory = homeDirectory;
29  }
30 
31  LoadFromFile();
32 }
33 
35 {
36 }
37 
38 void QGDefaultsHandler::LoadFromFile(string filename)
39 {
40  QGTextFileHandler *textFileHandler = new QGTextFileHandler();
41  textFileHandler->ReadFile(fDefaultsFileDirectory + filename);
42  if (textFileHandler->DoesKeyExist(CUTS_DIRECTORY_KEY)) {
43  fCutsDirectory = textFileHandler->GetValue(CUTS_DIRECTORY_KEY);
44  }
45  if (textFileHandler->DoesKeyExist(DATA_DIRECTORY_KEY)) {
46  fDataDirectory = textFileHandler->GetValue(DATA_DIRECTORY_KEY);
47  }
48  if (textFileHandler->DoesKeyExist(SAVE_CANVAS_DIRECTORY_KEY)) {
50  }
51  if (textFileHandler->DoesKeyExist(SESSION_DIRECTORY_KEY)) {
53  }
54  delete textFileHandler;
55 }
56 
57 void QGDefaultsHandler::SaveToFile(string filename)
58 {
59  QGTextFileHandler *textFileHandler = new QGTextFileHandler();
60  textFileHandler->AppendLine(CUTS_DIRECTORY_KEY, fCutsDirectory);
61  textFileHandler->AppendLine(DATA_DIRECTORY_KEY, fDataDirectory);
64  textFileHandler->WriteFile(fDefaultsFileDirectory + filename);
65  delete textFileHandler;
66 }
67 
68 void QGDefaultsHandler::SetCutsDirectory(const string& directory)
69 {
70  fCutsDirectory = directory;
71  SaveToFile();
72 }
73 
74 void QGDefaultsHandler::SetDataDirectory(const string& directory)
75 {
76  fDataDirectory = directory;
77  SaveToFile();
78 }
79 
80 void QGDefaultsHandler::SetSaveCanvasDirectory(const string& directory)
81 {
82  fSaveCanvasDirectory = directory;
83  SaveToFile();
84 }
85 
86 void QGDefaultsHandler::SetSessionDirectory(const string& directory)
87 {
88  fSessionDirectory = directory;
89  SaveToFile();
90 }
#define DATA_DIRECTORY_KEY
#define CUTS_DIRECTORY_KEY
#define SESSION_DIRECTORY_KEY
#define SAVE_CANVAS_DIRECTORY_KEY
ClassImp(QObject)
Singleton class to handle default settings for the GUI.
std::string fDefaultsFileDirectory
Defaults file directory.
std::string fDataDirectory
Data directory.
void SetCutsDirectory(const std::string &directory)
Set cuts directory.
void LoadFromFile(std::string filename=DEFAULTS_FILENAME)
Load defaults from file.
void SetSaveCanvasDirectory(const std::string &directory)
Set save canvas directory.
static QGDefaultsHandler * fMe
Singleton.
void SetDataDirectory(const std::string &directory)
Set data directory.
virtual ~QGDefaultsHandler()
Destructor.
std::string fSaveCanvasDirectory
Save canvas directory.
void SaveToFile(std::string filename=DEFAULTS_FILENAME)
Save defaults to file.
std::string fSessionDirectory
Session directory.
void SetSessionDirectory(const std::string &directory)
Set session directory.
std::string fCutsDirectory
Cuts directory.
QGDefaultsHandler()
Private constructor.
static QGDefaultsHandler * Instance()
Singleton.
Class to handle input and output for text files.
std::string GetValue(std::string key)
Retrieve value associated with a key.
bool ReadFile(std::string filename)
Read file, returns true if successful.
bool WriteFile(std::string filename)
Write file, returns true if successful.
bool DoesKeyExist(std::string key)
Return true if key exists.
void AppendLine(std::string key="", std::string value="")
Append a key and value to the file.