Toolbar ID working, but there is a double delete which needs to be
fixed...
presentation
Andreas Butti 7 years ago
parent 6d8e4d62ce
commit b7b6132395
  1. 33
      src/control/Control.cpp
  2. 3
      src/gui/dialog/ToolbarManageDialog.cpp
  3. 42
      src/gui/toolbarMenubar/model/ToolbarModel.cpp
  4. 1
      src/gui/toolbarMenubar/model/ToolbarModel.h

@ -1029,38 +1029,7 @@ void Control::customizeToolbars()
ToolbarData* data = new ToolbarData(*this->win->getSelectedToolbar());
ToolbarModel* model = this->win->getToolbarModel();
for (int i = 0; i < 100; i++)
{
string id = data->getId() + " Copy";
if (i != 0)
{
id += " ";
id += std::to_string(i);
}
if (!model->existsId(id))
{
if (i != 0)
{
string filename = data->getName();
filename += " ";
filename += _("Copy");
filename += " ";
filename += std::to_string(i);
data->setName(filename);
}
else
{
data->setName(data->getName() + " " + _("Copy"));
}
data->setId(id);
break;
}
}
model->initCopyNameId(data);
model->add(data);
this->win->toolbarSelected(data);
this->win->updateToolbarMenu();

@ -91,6 +91,8 @@ void ToolbarManageDialog::buttonNewCallback(GtkButton* button, ToolbarManageDial
ToolbarData* data = new ToolbarData(false);
data->setName(_("New"));
data->setId("custom");
dlg->tbModel->initCopyNameId(data);
dlg->addToolbarData(data);
}
@ -129,6 +131,7 @@ void ToolbarManageDialog::buttonCopyCallback(GtkButton* button, ToolbarManageDia
if (dlg->selected)
{
ToolbarData* data = new ToolbarData(*dlg->selected);
dlg->tbModel->initCopyNameId(data);
dlg->addToolbarData(data);
}
}

@ -2,6 +2,7 @@
#include "ToolbarData.h"
#include <XojMsgBox.h>
#include <i18n.h>
#include <fstream>
@ -90,13 +91,52 @@ bool ToolbarModel::parse(string filename, bool predefined)
return true;
}
void ToolbarModel::initCopyNameId(ToolbarData* data)
{
XOJ_CHECK_TYPE(ToolbarModel);
for (int i = 0; i < 100; i++)
{
string id = data->getId() + " Copy";
if (i != 0)
{
id += " ";
id += std::to_string(i);
}
if (!existsId(id))
{
if (i != 0)
{
string filename = data->getName();
filename += " ";
filename += _("Copy");
filename += " ";
filename += std::to_string(i);
data->setName(filename);
}
else
{
data->setName(data->getName() + " " + _("Copy"));
}
data->setId(id);
break;
}
}
}
bool ToolbarModel::existsId(string id)
{
XOJ_CHECK_TYPE(ToolbarModel);
for (ToolbarData* data : this->toolbars)
{
if (data->getId() == id) return true;
if (data->getId() == id)
{
return true;
}
}
return false;
}

@ -29,6 +29,7 @@ public:
void remove(ToolbarData* data);
void save(Path filename);
bool existsId(string id);
void initCopyNameId(ToolbarData* data);
private:
void parseGroup(GKeyFile* config, const char* group, bool predefined);

Loading…
Cancel
Save