Skip to content

Commit

Permalink
Fixed: Remember "#pragma once" setting in "New Class"-Dialog
Browse files Browse the repository at this point in the history
    fixes: eranif#1101
  • Loading branch information
eranif committed Jan 21, 2016
1 parent 042eae1 commit be12a80
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 51 deletions.
44 changes: 21 additions & 23 deletions Gizmos/new_class_dlg_data.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,33 +30,31 @@

class NewClassDlgData : public SerializedObject
{
size_t m_flags;
size_t m_flags;

public:
enum {
Singleton = 0x00000001,
NonCopyable = 0x00000002,
VirtualDtor = 0x00000004,
ImplAllVirtualFuncs = 0x00000008,
ImplAllPureVirtualFuncs = 0x00000010,
FileIniline = 0x00000020,
UseUnderscores = 0x00000040,
HppHeader = 0x00000080
};

enum {
Singleton = (1 << 0),
NonCopyable = (1 << 1),
VirtualDtor = (1 << 2),
ImplAllVirtualFuncs = (1 << 3),
ImplAllPureVirtualFuncs = (1 << 4),
FileIniline = (1 << 5),
UseUnderscores = (1 << 6),
HppHeader = (1 << 7),
UsePragma = (1 << 8)
};

public:
NewClassDlgData();
virtual ~NewClassDlgData();
NewClassDlgData();
virtual ~NewClassDlgData();

public:
virtual void DeSerialize(Archive& arch);
virtual void Serialize(Archive& arch);

void SetFlags(const size_t& flags) {
this->m_flags = flags;
}
const size_t& GetFlags() const {
return m_flags;
}
virtual void DeSerialize(Archive& arch);
virtual void Serialize(Archive& arch);

void SetFlags(const size_t& flags) { this->m_flags = flags; }
const size_t& GetFlags() const { return m_flags; }
};

#endif // NEWCLASSDLGDATA_H
51 changes: 24 additions & 27 deletions Gizmos/newclassdlg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ NewClassDlg::NewClassDlg(wxWindow* parent, IManager* mgr)
m_checkBoxHpp->SetValue(data.GetFlags() & NewClassDlgData::HppHeader);
m_checkBoxSingleton->SetValue(data.GetFlags() & NewClassDlgData::Singleton);
m_checkBoxVirtualDtor->SetValue(data.GetFlags() & NewClassDlgData::VirtualDtor);
m_checkBoxPragmaOnce->SetValue(data.GetFlags() & NewClassDlgData::UsePragma);

// set two columns to our list
m_listCtrl1->InsertColumn(0, _("Name"));
Expand Down Expand Up @@ -97,7 +98,7 @@ NewClassDlg::NewClassDlg(wxWindow* parent, IManager* mgr)
CentreOnParent();
}

NewClassDlg::~NewClassDlg() {}
NewClassDlg::~NewClassDlg() { DoSaveOptions(); }

void NewClassDlg::OnListItemActivated(wxListEvent& event)
{
Expand Down Expand Up @@ -175,28 +176,7 @@ void NewClassDlg::OnButtonOK(wxCommandEvent& e)
if(!ValidateInput()) {
return;
}

// Save the check boxes ticked
size_t flags(0);

if(m_checkBoxCopyable->IsChecked()) flags |= NewClassDlgData::NonCopyable;

if(m_checkBoxImplPureVirtual->IsChecked()) flags |= NewClassDlgData::ImplAllPureVirtualFuncs;

if(m_checkBoxImplVirtual->IsChecked()) flags |= NewClassDlgData::ImplAllVirtualFuncs;

if(m_checkBoxInline->IsChecked()) flags |= NewClassDlgData::FileIniline;

if(m_checkBoxHpp->IsChecked()) flags |= NewClassDlgData::HppHeader;

if(m_checkBoxSingleton->IsChecked()) flags |= NewClassDlgData::Singleton;

if(m_checkBoxVirtualDtor->IsChecked()) flags |= NewClassDlgData::VirtualDtor;

NewClassDlgData data;
data.SetFlags(flags);
EditorConfigST::Get()->WriteObject(wxT("NewClassDlgData"), &data);

DoSaveOptions();
EndModal(wxID_OK);
}

Expand Down Expand Up @@ -247,8 +227,7 @@ bool NewClassDlg::ValidateInput()
if(wxFileName::FileExists(cpp_file)) {
if(wxMessageBox(
wxString::Format(_("A file with this name: '%s' already exists, continue anyway?"), cpp_file.GetData()),
_("CodeLite"),
wxYES_NO | wxICON_WARNING) == wxNO) {
_("CodeLite"), wxYES_NO | wxICON_WARNING) == wxNO) {
return false;
}
}
Expand All @@ -257,8 +236,7 @@ bool NewClassDlg::ValidateInput()
if(wxFileName::FileExists(h_file)) {
if(wxMessageBox(
wxString::Format(_("A file with this name: '%s' already exists, continue anyway?"), h_file.GetData()),
_("CodeLite"),
wxYES_NO | wxICON_WARNING) == wxNO) {
_("CodeLite"), wxYES_NO | wxICON_WARNING) == wxNO) {
return false;
}
}
Expand Down Expand Up @@ -446,3 +424,22 @@ void NewClassDlg::OnOkUpdateUI(wxUpdateUIEvent& event)
event.Enable(!(GetClassFile().IsEmpty() || GetVirtualDirectoryPath().IsEmpty()));
}
void NewClassDlg::OnBlockGuardUI(wxUpdateUIEvent& event) { event.Enable(!m_checkBoxPragmaOnce->IsChecked()); }

void NewClassDlg::DoSaveOptions()
{
// Save the check boxes ticked
size_t flags(0);

if(m_checkBoxCopyable->IsChecked()) flags |= NewClassDlgData::NonCopyable;
if(m_checkBoxImplPureVirtual->IsChecked()) flags |= NewClassDlgData::ImplAllPureVirtualFuncs;
if(m_checkBoxImplVirtual->IsChecked()) flags |= NewClassDlgData::ImplAllVirtualFuncs;
if(m_checkBoxInline->IsChecked()) flags |= NewClassDlgData::FileIniline;
if(m_checkBoxHpp->IsChecked()) flags |= NewClassDlgData::HppHeader;
if(m_checkBoxSingleton->IsChecked()) flags |= NewClassDlgData::Singleton;
if(m_checkBoxVirtualDtor->IsChecked()) flags |= NewClassDlgData::VirtualDtor;
if(m_checkBoxPragmaOnce->IsChecked()) flags |= NewClassDlgData::UsePragma;

NewClassDlgData data;
data.SetFlags(flags);
EditorConfigST::Get()->WriteObject(wxT("NewClassDlgData"), &data);
}
3 changes: 2 additions & 1 deletion Gizmos/newclassdlg.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,8 @@ class NewClassDlg : public NewClassBaseDlg

wxString doSpliteByCaptilization(const wxString& str);
void DoUpdateGeneratedPath();

void DoSaveOptions();

public:
/** Constructor */
NewClassDlg(wxWindow* parent, IManager* mgr);
Expand Down

0 comments on commit be12a80

Please sign in to comment.