25 #include <wx/translation.h>
31 if (timeSpan.IsNull())
35 if (timeSpan.GetHours() >= 1)
38 return timeSpan.Format(_(
"%H:%M h"));
43 if (timeSpan.GetSeconds() > 60)
46 return timeSpan.Format(_(
"%M:%S min"));
50 if (timeSpan.GetSeconds() < 1)
58 return timeSpan.Format(_(
"%S s"));
65 #include <wx/config.h>
70 wxConfigBase* config = wxConfigBase::Get();
74 wxDisplaySize(&dx, &dy);
82 const bool maximized = config->Read(
"/" + basename +
"/maximized", 0l) != 0;
92 const int w = config->Read(
"/" + basename +
"/width", -1l);
93 const int h = config->Read(
"/" + basename +
"/height", -1l);
96 frame->SetClientSize(w, h);
106 void StoreFramePosition(wxTopLevelWindow* frame,
const wxString& basename,
const bool ignoreMaximize)
109 wxConfigBase* config = wxConfigBase::Get();
114 if (!ignoreMaximize && frame->IsMaximized())
116 config->Write(
"/" + basename +
"/maximized", 1l);
117 config->DeleteEntry(
"/" + basename +
"/width");
118 config->DeleteEntry(
"/" + basename +
"/height");
119 config->DeleteEntry(
"/" + basename +
"/positionX");
120 config->DeleteEntry(
"/" + basename +
"/positionY");
124 if (!frame->IsIconized())
126 wxSize sz = frame->GetClientSize();
127 config->Write(
"/" + basename +
"/width", sz.GetWidth());
128 config->Write(
"/" + basename +
"/height", sz.GetHeight());
129 wxPoint ps = frame->GetPosition();
130 config->Write(
"/" + basename +
"/positionX", ps.x);
131 config->Write(
"/" + basename +
"/positionY", ps.y);
135 config->DeleteEntry(
"/" + basename +
"/width");
136 config->DeleteEntry(
"/" + basename +
"/height");
137 config->DeleteEntry(
"/" + basename +
"/positionX");
138 config->DeleteEntry(
"/" + basename +
"/positionY");
140 config->Write(
"/" + basename +
"/maximized", 0l);
145 wxConfigBase* config = wxConfigBase::Get();
149 wxDisplaySize(&dx, &dy);
151 const int x = config->Read(
"/" + basename +
"/positionX", -1l);
152 const int y = config->Read(
"/" + basename +
"/positionY", -1l);
153 if (y >= 0 && x >= 0 && x < dx && y < dy)
165 wxConfigBase* config = wxConfigBase::Get();
166 const wxPoint ps = frame->GetPosition();
167 config->Write(
"/" + basename +
"/positionX", ps.x);
168 config->Write(
"/" + basename +
"/positionY", ps.y);
172 #include <wx/msgdlg.h>
173 #include <wx/settings.h>
176 int HuginMessageBox(
const wxString& message,
const wxString& caption,
int style, wxWindow* parent)
179 if (wxSystemSettings::GetAppearance().IsDark())
183 wxGenericMessageDialog dlg(parent, message, caption, style);
185 switch (dlg.ShowModal())
204 return wxMessageBox(message, caption, style, parent);
208 return wxMessageBox(message, wxEmptyString, style, parent);
215 if (wxSystemSettings::GetAppearance().IsDark())
219 return std::make_unique<wxGenericMessageDialog>(parent, message, caption, style);
225 return std::make_unique<wxMessageDialog>(parent, message, caption, style);
229 return std::make_unique<wxMessageDialog>(parent, message, wxEmptyString, style);
235 if (
HuginMessageBox(wxString::Format(_(
"File %s already exists.\nShould this file overwritten?"), filename),
236 caption, wxYES_NO | wxICON_QUESTION, parent) == wxYES)
bool AskUserOverwrite(const wxString &filename, const wxString &caption, wxWindow *parent)
ask user if the given file should be overwritten, return true if the user confirmed the overwritting ...
void RestoreFramePosition(wxTopLevelWindow *frame, const wxString &basename, const bool ignoreMaximize)
void StoreFramePosition(wxTopLevelWindow *frame, const wxString &basename, const bool ignoreMaximize)
std::unique_ptr< wxMessageDialogBase > MessageDialog
WXIMPEX wxString GetFormattedTimeSpan(const wxTimeSpan &timeSpan)
MessageDialog GetMessageDialog(const wxString &message, const wxString &caption, int style, wxWindow *parent)
DisableWindow(wxWindow *window)
void StoreFramePositionOnly(wxTopLevelWindow *frame, const wxString &basename)
int HuginMessageBox(const wxString &message, const wxString &caption, int style, wxWindow *parent)
void RestoreFramePositionOnly(wxTopLevelWindow *frame, const wxString &basename)