* xml.cpp: Create the function "fillSettings" that store wanted data from the
array in settings with group string for hierarchy.
* regionwidget.cpp: Try to implement the function "createItem" which take a
GraphicsRegion and load data from QSettings with it. Do not wok because can t get the
string from the enum and casting the enum in int and string do not work in that case.
* configs.h: Implement functions to get/ set data from groups of settings created in
xml.cpp.
---
GScribo/GScribo.pro | 4 +-
GScribo/GScribo.pro.user | 26 +++++----
GScribo/Preferences/generaloptions.cpp | 4 +-
GScribo/Preferences/ocroptions.cpp | 6 +--
GScribo/Preferences/preprocessingoptions.cpp | 6 +-
GScribo/Preferences/segmentationoptions.cpp | 2 -
GScribo/configs.h | 32 +++++++++++-
GScribo/mainwindow.cpp | 7 ++-
GScribo/mainwindow.h | 6 +-
GScribo/region.h | 19 ++++---
GScribo/regionwidget.cpp | 56 +++++++++++++--------
GScribo/regionwidget.h | 7 +--
GScribo/xml.cpp | 70 ++++++++++++++++++++++++--
GScribo/xml.h | 24 +--------
14 files changed, 174 insertions(+), 95 deletions(-)
diff --git a/GScribo/GScribo.pro b/GScribo/GScribo.pro
index 9a7f566..d845d32 100644
--- a/GScribo/GScribo.pro
+++ b/GScribo/GScribo.pro
@@ -19,17 +19,18 @@ SOURCES += main.cpp \
Rendering/regionitem.cpp \
PagesWidget/pageswidget.cpp \
PagesWidget/pagesmodel.cpp \
+ PagesWidget/pagesdelegate.cpp \
Preferences/segmentationoptions.cpp \
Preferences/preprocessingoptions.cpp \
Preferences/ocroptions.cpp \
Preferences/generaloptions.cpp \
Preferences/preferencesdialog.cpp \
+ Processing/progressdialog.cpp \
XmlWidget/xmlwidget.cpp \
XmlWidget/xmlmodel.cpp \
XmlWidget/xmlitem.cpp \
XmlWidget/xmlattributes.cpp \
XmlWidget/attributesmodel.cpp \
- PagesWidget/pagesdelegate.cpp \
XmlWidget/xmlview.cpp \
regionwidget.cpp
HEADERS += mainwindow.h \
@@ -49,6 +50,7 @@ HEADERS += mainwindow.h \
Preferences/generaloptions.h \
Preferences/optionwidget.h \
Preferences/preferencesdialog.h \
+ Processing/progressdialog.h \
XmlWidget/xmlwidget.h \
XmlWidget/xmlmodel.h \
XmlWidget/xmlitem.h \
diff --git a/GScribo/GScribo.pro.user b/GScribo/GScribo.pro.user
index c09700a..f152178 100644
--- a/GScribo/GScribo.pro.user
+++ b/GScribo/GScribo.pro.user
@@ -76,7 +76,7 @@
<valuemap type="QVariantMap">
<value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString">Debug</value>
<valuelist key="abstractProcess.Environment"
type="QVariantList">
- <value
type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-03fTGGiTWR,guid=f9287e073281b805202d469e0005349f</value>
+ <value
type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-bUeJ6Q6yr3,guid=f61c0677e7161026c52fc89400064242</value>
<value type="QString">DESKTOP_SESSION=fluxbox</value>
<value type="QString">DISPLAY=:0.0</value>
<value type="QString">GDMSESSION=fluxbox</value>
@@ -85,6 +85,7 @@
<value type="QString">GTK_MODULES=canberra-gtk-module</value>
<value type="QString">HOME=/lrde/home/stage/froger_a</value>
<value type="QString">LANG=fr_FR.UTF-8</value>
+ <value type="QString">LANGUAGE=</value>
<value
type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator</value>
<value type="QString">LOGNAME=froger_a</value>
<value
type="QString">OLDPWD=/lrde/home/stage/froger_a/qt</value>
@@ -93,16 +94,16 @@
<value type="QString">QTDIR=/usr/share/qt4</value>
<value type="QString">SHELL=/bin/bash</value>
<value type="QString">SHLVL=2</value>
- <value type="QString">SSH_AGENT_PID=25183</value>
- <value
type="QString">SSH_AUTH_SOCK=/tmp/ssh-WbmKk25130/agent.25130</value>
+ <value type="QString">SSH_AGENT_PID=29535</value>
+ <value
type="QString">SSH_AUTH_SOCK=/tmp/ssh-PCwYf29482/agent.29482</value>
<value type="QString">TERM=xterm</value>
<value type="QString">USER=froger_a</value>
<value type="QString">USERNAME=froger_a</value>
<value type="QString">WINDOWID=10485796</value>
- <value type="QString">WINDOWPATH=7:8:8:8:8</value>
- <value type="QString">XAUTHORITY=/tmp/.gdmYZ8GSW</value>
+ <value type="QString">WINDOWPATH=7:8:8:8:8:8</value>
+ <value type="QString">XAUTHORITY=/tmp/.gdmQ6NBSW</value>
<value
type="QString">XDG_DATA_DIRS=/usr/local/share/:/usr/share/:/usr/share/gdm/</value>
- <value
type="QString">XDG_SESSION_COOKIE=9a5c41ad78622411b8e25b00459a554f-1360586360.314321-1166498812</value>
+ <value
type="QString">XDG_SESSION_COOKIE=9a5c41ad78622411b8e25b00459a554f-1360655387.142140-2081338543</value>
<value type="QString">XTERM_LOCALE=fr_FR.UTF-8</value>
<value type="QString">XTERM_SHELL=/bin/bash</value>
<value type="QString">XTERM_VERSION=XTerm(261)</value>
@@ -125,7 +126,7 @@
<valuemap type="QVariantMap">
<value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString">Debug</value>
<valuelist key="abstractProcess.Environment"
type="QVariantList">
- <value
type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-03fTGGiTWR,guid=f9287e073281b805202d469e0005349f</value>
+ <value
type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-bUeJ6Q6yr3,guid=f61c0677e7161026c52fc89400064242</value>
<value type="QString">DESKTOP_SESSION=fluxbox</value>
<value type="QString">DISPLAY=:0.0</value>
<value type="QString">GDMSESSION=fluxbox</value>
@@ -134,6 +135,7 @@
<value type="QString">GTK_MODULES=canberra-gtk-module</value>
<value type="QString">HOME=/lrde/home/stage/froger_a</value>
<value type="QString">LANG=fr_FR.UTF-8</value>
+ <value type="QString">LANGUAGE=</value>
<value
type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator</value>
<value type="QString">LOGNAME=froger_a</value>
<value
type="QString">OLDPWD=/lrde/home/stage/froger_a/qt</value>
@@ -142,16 +144,16 @@
<value type="QString">QTDIR=/usr/share/qt4</value>
<value type="QString">SHELL=/bin/bash</value>
<value type="QString">SHLVL=2</value>
- <value type="QString">SSH_AGENT_PID=25183</value>
- <value
type="QString">SSH_AUTH_SOCK=/tmp/ssh-WbmKk25130/agent.25130</value>
+ <value type="QString">SSH_AGENT_PID=29535</value>
+ <value
type="QString">SSH_AUTH_SOCK=/tmp/ssh-PCwYf29482/agent.29482</value>
<value type="QString">TERM=xterm</value>
<value type="QString">USER=froger_a</value>
<value type="QString">USERNAME=froger_a</value>
<value type="QString">WINDOWID=10485796</value>
- <value type="QString">WINDOWPATH=7:8:8:8:8</value>
- <value type="QString">XAUTHORITY=/tmp/.gdmYZ8GSW</value>
+ <value type="QString">WINDOWPATH=7:8:8:8:8:8</value>
+ <value type="QString">XAUTHORITY=/tmp/.gdmQ6NBSW</value>
<value
type="QString">XDG_DATA_DIRS=/usr/local/share/:/usr/share/:/usr/share/gdm/</value>
- <value
type="QString">XDG_SESSION_COOKIE=9a5c41ad78622411b8e25b00459a554f-1360586360.314321-1166498812</value>
+ <value
type="QString">XDG_SESSION_COOKIE=9a5c41ad78622411b8e25b00459a554f-1360655387.142140-2081338543</value>
<value type="QString">XTERM_LOCALE=fr_FR.UTF-8</value>
<value type="QString">XTERM_SHELL=/bin/bash</value>
<value type="QString">XTERM_VERSION=XTerm(261)</value>
diff --git a/GScribo/Preferences/generaloptions.cpp
b/GScribo/Preferences/generaloptions.cpp
index 39a0160..620a8fd 100644
--- a/GScribo/Preferences/generaloptions.cpp
+++ b/GScribo/Preferences/generaloptions.cpp
@@ -16,7 +16,7 @@ GeneralOptions::~GeneralOptions()
void GeneralOptions::loadConfig()
{
- Configs * const conf = Configs::getInstance();
+ Configs *const conf = Configs::getInstance();
ui->saveXml->setChecked(conf->generalSaveXmlEnabled());
ui->sameDir->setChecked(conf->generalSaveXmlSameDir());
@@ -27,7 +27,7 @@ void GeneralOptions::loadConfig()
void GeneralOptions::saveConfig()
{
- Configs * const conf = Configs::getInstance();
+ Configs *const conf = Configs::getInstance();
conf->setGeneralSaveXmlEnabled(ui->saveXml->isChecked());
conf->setGeneralSaveXmlSameDir(ui->sameDir->isChecked());
diff --git a/GScribo/Preferences/ocroptions.cpp b/GScribo/Preferences/ocroptions.cpp
index ac337ed..fff05b2 100644
--- a/GScribo/Preferences/ocroptions.cpp
+++ b/GScribo/Preferences/ocroptions.cpp
@@ -1,8 +1,6 @@
#include "ocroptions.h"
#include "ui_ocroptions.h"
-//using namespace scribo::toolchain::internal;
-
static const char *language[][2] =
{
{ "English", "eng" },
@@ -39,7 +37,7 @@ int OcrOptions::findIndex(const QString& lang)
void OcrOptions::loadConfig()
{
- Configs * const conf = Configs::getInstance();
+ Configs *const conf = Configs::getInstance();
ui->enable_ocr->setChecked(conf->ocrEnabled());
ui->ocr_language->setCurrentIndex(findIndex(conf->ocrLanguage()));
@@ -48,7 +46,7 @@ void OcrOptions::loadConfig()
void OcrOptions::saveConfig()
{
- Configs * const conf = Configs::getInstance();
+ Configs *const conf = Configs::getInstance();
conf->setOcrEnabled(ui->enable_ocr->isChecked());
conf->setOcrLanguage(language[ui->ocr_language->currentIndex()][1]);
diff --git a/GScribo/Preferences/preprocessingoptions.cpp
b/GScribo/Preferences/preprocessingoptions.cpp
index f7a6647..640ad32 100644
--- a/GScribo/Preferences/preprocessingoptions.cpp
+++ b/GScribo/Preferences/preprocessingoptions.cpp
@@ -23,7 +23,7 @@ PreprocessingOptions::~PreprocessingOptions()
void PreprocessingOptions::loadConfig()
{
- Configs * const conf = Configs::getInstance();
+ Configs *const conf = Configs::getInstance();
ui->subsampleCb->setChecked(conf->preprocessingSubsample());
ui->remove_bgCb->setChecked(conf->preprocessingRemoveBg());
@@ -35,11 +35,11 @@ void PreprocessingOptions::loadConfig()
void PreprocessingOptions::saveConfig()
{
- Configs * const conf = Configs::getInstance();
+ Configs *const conf = Configs::getInstance();
conf->setPreprocessingSubsample(ui->subsampleCb->isChecked());
conf->setPreprocessingRemoveBg(ui->remove_bgCb->isChecked());
conf->setPreprocessingDeskew(ui->deskewCb->isChecked());
conf->setPreprocessingRemoveNoise(ui->remove_noiseCb->isChecked());
- conf->setPreprocessingBinAlgo(ui->bin_algoCbox->currentIndex());
+ //conf->setPreprocessingBinAlgo(ui->bin_algoCbox->currentIndex());
}
diff --git a/GScribo/Preferences/segmentationoptions.cpp
b/GScribo/Preferences/segmentationoptions.cpp
index ef47f66..d35209f 100644
--- a/GScribo/Preferences/segmentationoptions.cpp
+++ b/GScribo/Preferences/segmentationoptions.cpp
@@ -1,8 +1,6 @@
#include "segmentationoptions.h"
#include "ui_segmentationoptions.h"
-//using namespace scribo::toolchain::internal;
-
SegmentationOptions::SegmentationOptions(QWidget *parent) :
OptionWidget(parent),
ui(new Ui::SegmentationOptions)
diff --git a/GScribo/configs.h b/GScribo/configs.h
index 97e5528..d4023b9 100644
--- a/GScribo/configs.h
+++ b/GScribo/configs.h
@@ -4,6 +4,7 @@
//#include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh>
#include <QSettings>
#include <QDir>
+#include <QDebug>
#include "region.h"
@@ -11,10 +12,14 @@ class Configs :
public QSettings
{
public:
- Configs() : QSettings("olena-scribo", "gui") { }
+ inline static Configs *getInstance();
- static Configs * getInstance()
- { static Configs *conf = new Configs(); return conf; }
+ inline bool isRegionInit();
+ inline QColor regionColor(const GraphicsRegion::Id& region);
+ inline QString regionName(const GraphicsRegion::Id& region);
+
+ inline bool isRegionChecked(const GraphicsRegion::Id& region);
+ inline void setRegionChecked(const GraphicsRegion::Id& region, bool
checked);
inline bool preprocessingSubsample();
inline void setPreprocessingSubsample(bool b);
@@ -51,8 +56,29 @@ class Configs :
inline QString generalSaveXmlCustomDirPath();
inline void setGeneralSaveXmlCustomDirPath(const QString& path);
+
+ private:
+ explicit Configs() : QSettings("olena-scribo", "gui") { }
};
+inline Configs *Configs::getInstance()
+{ static Configs *conf = new Configs(); return conf; }
+
+inline bool Configs::isRegionInit()
+{ return value("region/init", false).toBool(); }
+
+inline bool Configs::isRegionChecked(const GraphicsRegion::Id ®ion)
+{ return value("region/" + QString::number(region) + "/checked",
true).toBool(); }
+
+inline void Configs::setRegionChecked(const GraphicsRegion::Id ®ion, bool
checked)
+{ setValue("region/" + QString::number(region) + "/checked",
checked); }
+
+inline QColor Configs::regionColor(const GraphicsRegion::Id& region)
+{ return value("region/" + QString::number(region) +
"color").value<QColor>(); }
+
+inline QString Configs::regionName(const GraphicsRegion::Id ®ion)
+{ beginGroup("region"); beginGroup(QString::number(region)); QString l =
value("name").toString(); endGroup(); endGroup(); qDebug() << l; return l;
}
+
inline bool Configs::preprocessingSubsample()
{ return value("preprocessing/subsample", false).toBool(); }
diff --git a/GScribo/mainwindow.cpp b/GScribo/mainwindow.cpp
index 44c4583..e939694 100644
--- a/GScribo/mainwindow.cpp
+++ b/GScribo/mainwindow.cpp
@@ -9,11 +9,12 @@ MainWindow::MainWindow(QWidget *parent) :
setWindowTitle(tr("GScribo"));
+ xml_.fillSettings();
initGraphicsRegion();
initTextRegion();
initXmlWidget();
- initPageWidget();
initRegionWidget();
+ initPageWidget();
initToolBar();
initMenuBar();
@@ -190,8 +191,8 @@ void MainWindow::onSegment()
void MainWindow::onPreferences()
{
- //PreferencesDialog *preferenceDialog = new PreferencesDialog(this);
- //preferenceDialog->show();
+ PreferencesDialog *preferenceDialog = new PreferencesDialog(this);
+ preferenceDialog->show();
}
void MainWindow::onXmlSaved(const QString& filename)
diff --git a/GScribo/mainwindow.h b/GScribo/mainwindow.h
index 7e84fc3..efe6b81 100644
--- a/GScribo/mainwindow.h
+++ b/GScribo/mainwindow.h
@@ -9,8 +9,8 @@
#include <QFileDialog>
#include <QGroupBox>
-//#include "Preferences/preferencesdialog.h"
-//#include "Processing/progressdialog.h"
+#include "Preferences/preferencesdialog.h"
+#include "Processing/progressdialog.h"
#include "PagesWidget/pageswidget.h"
#include "XmlWidget/xmlwidget.h"
//#include "Processing/runner.h"
@@ -64,7 +64,7 @@ class MainWindow:
QPlainTextEdit textEdit_;
- //ProgressDialog progressDialog_;
+ ProgressDialog progressDialog_;
//Runner runner_;
XmlWidget xmlWidget_;
diff --git a/GScribo/region.h b/GScribo/region.h
index b3d7d2a..d1fcee7 100644
--- a/GScribo/region.h
+++ b/GScribo/region.h
@@ -5,15 +5,21 @@
namespace GraphicsRegion
{
+ // WARNING : The order is important.
enum Id
{
- Text = 0,
+ None,
+
+ Text,
+ TextRegion,
Line,
+ Separators,
VerticalSeparator,
HorizontalSeparator,
WhiteSpaceSeparator,
+ Miscellaneous,
Image,
Noise,
Table,
@@ -21,15 +27,9 @@ namespace GraphicsRegion
Graphic,
Chart,
+ Typology,
Baseline,
- Meanline,
-
- TextRegion,
- SeparatorRegion,
- MiscRegion,
- TypoRegion,
-
- None
+ Meanline
};
struct Data
@@ -37,6 +37,7 @@ namespace GraphicsRegion
QColor color;
QString name;
GraphicsRegion::Id region;
+ GraphicsRegion::Id parent;
int zValue;
};
}
diff --git a/GScribo/regionwidget.cpp b/GScribo/regionwidget.cpp
index 219a9ba..b343b3f 100644
--- a/GScribo/regionwidget.cpp
+++ b/GScribo/regionwidget.cpp
@@ -1,4 +1,5 @@
#include "regionwidget.h"
+#include <QDebug>
RegionWidget::RegionWidget(QWidget *parent) :
QTreeWidget(parent)
@@ -6,34 +7,39 @@ RegionWidget::RegionWidget(QWidget *parent) :
setHeaderHidden(true);
setSelectionMode(QAbstractItemView::NoSelection);
- addTopLevelItem(createRoot("Text", GraphicsRegion::TextRegion,
GraphicsRegion::Text, GraphicsRegion::Line));
- addTopLevelItem(createRoot("Typological Lines", GraphicsRegion::TypoRegion,
GraphicsRegion::Baseline, GraphicsRegion::Meanline));
- addTopLevelItem(createRoot("Separators", GraphicsRegion::SeparatorRegion,
GraphicsRegion::VerticalSeparator, GraphicsRegion::WhiteSpaceSeparator));
- addTopLevelItem(createRoot("Miscellaneous", GraphicsRegion::MiscRegion,
GraphicsRegion::Image, GraphicsRegion::Chart));
+ Configs *const configs = Configs::getInstance();
- expandAll();
+ configs->beginGroup("region");
- connect(this, SIGNAL(itemChanged(QTreeWidgetItem*,int)), this,
SLOT(checkStateChanged(QTreeWidgetItem*)));
-}
+ foreach(QString group, configs->childGroups())
+ {
+ configs->beginGroup(group);
+ GraphicsRegion::Id region =
static_cast<GraphicsRegion::Id>(group.toInt());
+ QTreeWidgetItem *rootItem =
createItem(static_cast<GraphicsRegion::Id>(group.toInt()));
-QTreeWidgetItem *RegionWidget::createRoot(const QString& text, const
GraphicsRegion::Id& region, const GraphicsRegion::Id& begin, const
GraphicsRegion::Id& end)
-{
- // Create root.
- QTreeWidgetItem *rootItem = createItem(text, region);
+ foreach(QString subgroup, configs->childGroups())
+
rootItem->addChild(createItem(static_cast<GraphicsRegion::Id>(subgroup.toInt())));
+
+ addTopLevelItem(rootItem);
+ configs->endGroup();
+ }
- // Fill root with corresponding childs.
- for(int region_ = begin; region_ <= end; region_++)
- fillRoot(rootItem, static_cast<GraphicsRegion::Id>(region_));
+ configs->endGroup();
- return rootItem;
+ expandAll();
+
+ connect(this, SIGNAL(itemChanged(QTreeWidgetItem*,int)), this,
SLOT(checkStateChanged(QTreeWidgetItem*)));
}
-QTreeWidgetItem *RegionWidget::createItem(const QString& text, const
GraphicsRegion::Id& region, const QColor& color)
+QTreeWidgetItem *RegionWidget::createItem(const GraphicsRegion::Id& region)
{
+ Configs *const configs = Configs::getInstance();
+
QTreeWidgetItem *item = new QTreeWidgetItem;
- item->setText(0, text);
- item->setCheckState(0, Qt::Checked);
- item->setBackgroundColor(0, color);
+
+ item->setText(0, configs->regionName(region));
+ item->setCheckState(0, configs->isRegionChecked(region) ? Qt::Checked :
Qt::Unchecked);
+ item->setBackgroundColor(0, configs->regionColor(region));
// Store graphical id in the object to recognize it afterward.
item->setData(0, Qt::UserRole, static_cast<int>(region));
@@ -42,9 +48,14 @@ QTreeWidgetItem *RegionWidget::createItem(const QString& text,
const GraphicsReg
void RegionWidget::checkStateChanged(QTreeWidgetItem *item)
{
+ GraphicsRegion::Id region = static_cast<GraphicsRegion::Id>(item->data(0,
Qt::UserRole).toInt());
+ bool isChecked;
+
// If it's a root item, go to childs.
if(item->childCount() != 0)
{
+ isChecked = item->checkState(0) == Qt::Checked ? true : false;
+
QTreeWidgetItem *child;
for(int i = 0; i < item->childCount(); i++)
{
@@ -57,14 +68,17 @@ void RegionWidget::checkStateChanged(QTreeWidgetItem *item)
if(item->checkState(0) == Qt::Checked)
{
filterString_.append('|' + item->text(0));
- emit checkStateChanged(static_cast<GraphicsRegion::Id>(item->data(0,
Qt::UserRole).toInt()), true);
+ isChecked = true;
}
else
{
filterString_.remove('|' + item->text(0), Qt::CaseSensitive);
- emit checkStateChanged(static_cast<GraphicsRegion::Id>(item->data(0,
Qt::UserRole).toInt()), false);
+ isChecked = false;
}
+ emit checkStateChanged(region, isChecked);
emit checkStateChanged(filterString());
}
+
+ Configs::getInstance()->setRegionChecked(region, isChecked);
}
diff --git a/GScribo/regionwidget.h b/GScribo/regionwidget.h
index aaa6eda..5ab955d 100644
--- a/GScribo/regionwidget.h
+++ b/GScribo/regionwidget.h
@@ -17,9 +17,7 @@ class RegionWidget :
inline QString filterString() const;
private:
- QTreeWidgetItem *createRoot(const QString& text, const
GraphicsRegion::Id& region, const GraphicsRegion::Id& begin, const
GraphicsRegion::Id& end);
- QTreeWidgetItem *createItem(const QString& text, const
GraphicsRegion::Id& region, const QColor& color = QColor::fromRgb(255, 255,
255));
- inline void fillRoot(QTreeWidgetItem *rootItem, const GraphicsRegion::Id&
region);
+ QTreeWidgetItem *createItem(const GraphicsRegion::Id& region);
QString filterString_;
@@ -31,9 +29,6 @@ class RegionWidget :
void checkStateChanged(const QString& filterString);
};
-inline void RegionWidget::fillRoot(QTreeWidgetItem *rootItem, const
GraphicsRegion::Id& region)
-{ GraphicsRegion::Data data = Xml::dataFromRegion(region);
filterString_.append('|' + data.name); rootItem->addChild(createItem(data.name,
region, data.color)); }
-
inline QString RegionWidget::filterString() const
{ return filterString_.right(filterString_.count()-1); }
diff --git a/GScribo/xml.cpp b/GScribo/xml.cpp
index 74e62b7..932fdad 100644
--- a/GScribo/xml.cpp
+++ b/GScribo/xml.cpp
@@ -1,15 +1,38 @@
#include "xml.h"
+// WARNING : The order is VERY IMPORTANT (depending on the enum).
+static const GraphicsRegion::Data datas_[] =
+{
+ /* COLOR | NAME |
REGION | PARENT | Z */
+ { QColor::fromRgb(255, 255, 255), "Text",
GraphicsRegion::Text, GraphicsRegion::None, 0 },
+ { QColor::fromRgb(0, 100, 0, 90), "TextRegion",
GraphicsRegion::TextRegion, GraphicsRegion::Text, 1 },
+ { QColor::fromRgb(255, 0, 0, 90), "Line",
GraphicsRegion::Line, GraphicsRegion::Text, 2 },
+ { QColor::fromRgb(255, 255, 255), "Separators",
GraphicsRegion::Separators, GraphicsRegion::None, 0 },
+ { QColor::fromRgb(0, 0, 255, 90), "VerticalSeparatorRegion",
GraphicsRegion::VerticalSeparator, GraphicsRegion::Separators, 2 },
+ { QColor::fromRgb(0, 0, 255, 90), "HorizontalSeparatorRegion",
GraphicsRegion::HorizontalSeparator, GraphicsRegion::Separators, 2 },
+ { QColor::fromRgb(0, 0, 128, 90), "WhitespaceSeparatorRegion",
GraphicsRegion::WhiteSpaceSeparator, GraphicsRegion::Separators, 2 },
+ { QColor::fromRgb(255, 255, 255), "Miscellaneous",
GraphicsRegion::Miscellaneous, GraphicsRegion::None, 0 },
+ { QColor::fromRgb(255, 120, 0, 90), "ImageRegion",
GraphicsRegion::Image, GraphicsRegion::Miscellaneous, 1 },
+ { QColor::fromRgb(43, 39, 128, 90), "NoiseRegion",
GraphicsRegion::Noise, GraphicsRegion::Miscellaneous, 2 },
+ { QColor::fromRgb(220, 246, 0, 90), "TableRegion",
GraphicsRegion::Table, GraphicsRegion::Miscellaneous, 2 },
+ { QColor::fromRgb(170, 0, 255, 90), "MathsRegion",
GraphicsRegion::Maths, GraphicsRegion::Miscellaneous, 2 },
+ { QColor::fromRgb(255, 0, 144, 90), "GraphicsRegion",
GraphicsRegion::Graphic, GraphicsRegion::Miscellaneous, 2 },
+ { QColor::fromRgb(0, 204, 255, 90), "ChartRegion",
GraphicsRegion::Chart, GraphicsRegion::Miscellaneous, 2 },
+ { QColor::fromRgb(255, 255, 255), "Typological Lines",
GraphicsRegion::Typology, GraphicsRegion::None, 0 },
+ { QColor::fromRgb(128, 0, 255), "Baseline",
GraphicsRegion::Baseline, GraphicsRegion::Typology, 3 },
+ { QColor::fromRgb(128, 0, 255), "Meanline",
GraphicsRegion::Meanline, GraphicsRegion::Typology, 3 }
+};
+
Xml::Xml(const QString& filename)
{
filename_ = filename;
+
load(filename);
}
QString Xml::getPath(const QString& filename)
{
- // Get instance of the configuration settings.
- Configs *const conf = Configs::getInstance();
+ Configs *const configs = Configs::getInstance();
QString xmlPath = filename;
@@ -19,7 +42,46 @@ QString Xml::getPath(const QString& filename)
xmlPath.remove(pos, xmlPath.length()-pos);
xmlPath += "_gui.xml";
- return conf->generalSaveXmlCustomDirPath() + "/" + xmlPath;
+ return configs->generalSaveXmlCustomDirPath() + "/" + xmlPath;
+}
+
+void Xml::fillSettings()
+{
+ Configs *const configs = Configs::getInstance();
+
+ // Check if the configuration file has already been created.
+ if(!configs->isRegionInit())
+ {
+ configs->beginGroup("region");
+ configs->setValue("init", true);
+
+ for(int i = 0; i < 17; i++)
+ {
+ // Create group : region\father\current\...
+ if(datas_[i].parent != GraphicsRegion::None)
+ {
+
configs->beginGroup(QString::number(datas_[datas_[i].parent].region));
+ configs->beginGroup(QString::number(datas_[i].region));
+
+ configs->setValue("color", datas_[i].color);
+ configs->setValue("name", datas_[i].name);
+
+ configs->endGroup();
+ configs->endGroup();
+ }
+ else
+ {
+ configs->beginGroup(QString::number(datas_[i].region));
+
+ configs->setValue("color", datas_[i].color);
+ configs->setValue("name", datas_[i].name);
+
+ configs->endGroup();
+ }
+ }
+
+ configs->endGroup();
+ }
}
void Xml::load(const QString& filename)
@@ -115,7 +177,7 @@ void Xml::processNode(const QDomElement& root, const
GraphicsRegion::Data& data,
regionItem->setRegionItem(graphicsItem);
graphicsItem->setXmlItem(regionItem);
- if(data.region == GraphicsRegion::Text)
+ if(data.region == GraphicsRegion::TextRegion)
processLineNode(root.firstChild().nextSiblingElement("Line"),
coordsItem);
// Run through all nodes from the same data structure recursively.
diff --git a/GScribo/xml.h b/GScribo/xml.h
index 3975f82..844d043 100644
--- a/GScribo/xml.h
+++ b/GScribo/xml.h
@@ -15,24 +15,6 @@
#include "configs.h"
#include "region.h"
-static const GraphicsRegion::Data datas_[] =
-{
- /* COLOR | NAME |
REGION | ZVALUE */
- { QColor::fromRgb(0, 100, 0, 90), "TextRegion",
GraphicsRegion::Text, 1 },
- { QColor::fromRgb(255, 0, 0, 90), "Line",
GraphicsRegion::Line, 2 },
- { QColor::fromRgb(0, 0, 255, 90), "VerticalSeparatorRegion",
GraphicsRegion::VerticalSeparator, 2 },
- { QColor::fromRgb(0, 0, 255, 90), "HorizontalSeparatorRegion",
GraphicsRegion::HorizontalSeparator, 2 },
- { QColor::fromRgb(0, 0, 128, 90), "WhitespaceSeparatorRegion",
GraphicsRegion::WhiteSpaceSeparator, 2 },
- { QColor::fromRgb(255, 120, 0, 90), "ImageRegion",
GraphicsRegion::Image, 1 },
- { QColor::fromRgb(43, 39, 128, 90), "NoiseRegion",
GraphicsRegion::Noise, 2 },
- { QColor::fromRgb(220, 246, 0, 90), "TableRegion",
GraphicsRegion::Table, 2 },
- { QColor::fromRgb(170, 0, 255, 90), "MathsRegion",
GraphicsRegion::Maths, 2 },
- { QColor::fromRgb(255, 0, 144, 90), "GraphicsRegion",
GraphicsRegion::Graphic, 2 },
- { QColor::fromRgb(0, 204, 255, 90), "ChartRegion",
GraphicsRegion::Chart, 2 },
- { QColor::fromRgb(128, 0, 255), "Baseline",
GraphicsRegion::Baseline, 3 },
- { QColor::fromRgb(128, 0, 255), "Meanline",
GraphicsRegion::Meanline, 3 }
-};
-
class Xml
{
public:
@@ -45,12 +27,13 @@ class Xml
inline QString filename() const;
static QString getPath(const QString& filename);
- inline static GraphicsRegion::Data dataFromRegion(GraphicsRegion::Id region);
void load(const QString& filename);
+ void fillSettings();
private:
XmlItem *init(const QDomElement& root, XmlItem *rootTreeItem);
+
void processNode(const QDomElement& root, const GraphicsRegion::Data&
data, XmlItem *rootTreeItem);
void processLineNode(const QDomElement& root, XmlItem *rootTreeItem);
void processTypoNode(const QDomElement& root, const QPoint& xPoint);
@@ -74,7 +57,4 @@ inline QDomDocument Xml::document() const
inline QString Xml::filename() const
{ return filename_; }
-inline GraphicsRegion::Data Xml::dataFromRegion(GraphicsRegion::Id region)
-{ return datas_[region]; }
-
#endif // XML_H
--
1.7.2.5