Auto Folio Numbering - Create specific number of new folios with a folio autonumbering or Auto Number selected Folios

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@4488 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
dfochi
2016-05-17 19:19:11 +00:00
parent b5d12cc232
commit 2d3298fe41
14 changed files with 301 additions and 219 deletions

View File

@@ -19,8 +19,8 @@
#define CONFIG_PAGES_H
#include <QtWidgets>
#include "configpage.h"
#include "projectpropertiesdialog.h" //davi
#include "titleblockpropertieswidget.h" //davi
#include "projectpropertiesdialog.h"
#include "titleblockpropertieswidget.h"
class BorderPropertiesWidget;
class ConductorPropertiesWidget;
class TitleBlockPropertiesWidget;

View File

@@ -99,7 +99,7 @@ QStringList NumerotationContext::itemAt(const int i) const {
* @return all type use to numerotation
*/
QString NumerotationContext::validRegExpNum () const {
return ("unit|ten|hundred|string|folio");
return ("unit|ten|hundred|string|idfolio|folio");
}
/**

View File

@@ -104,7 +104,11 @@ void NumerotationContextCommands::setNumStrategy(const QString &str) {
strategy_ = new StringNum (diagram_);
return;
}
else if (str == "folio") {
else if (str == "idfolio") {
strategy_ = new IdFolioNum (diagram_);
return;
}
else if (str=="folio"){
strategy_ = new FolioNum (diagram_);
return;
}
@@ -291,6 +295,37 @@ NumerotationContext StringNum::previous(const NumerotationContext &nc, const int
return (nextString(nc, i));
}
/**
* Constructor
*/
IdFolioNum::IdFolioNum (Diagram *d):
NumStrategy (d)
{}
/**
* @brief IdFolioNum::toRepresentedString
* @return the represented string of num
*/
QString IdFolioNum::toRepresentedString(const QString str) const {
Q_UNUSED(str);
return (QString::number(diagram_ -> folioIndex() + 1));
}
/**
* @brief IdFolioNum::next
* @return the next NumerotationContext nc at position i
*/
NumerotationContext IdFolioNum::next (const NumerotationContext &nc, const int i) const {
return (nextString(nc, i));
}
/**
* @brief IdFolioNum::previous
* @return the previous NumerotationContext nc at posiiton i
*/
NumerotationContext IdFolioNum::previous(const NumerotationContext &nc, const int i) const {
return (nextString(nc, i));
}
/**
* Constructor
@@ -301,11 +336,11 @@ FolioNum::FolioNum (Diagram *d):
/**
* @brief FolioNum::toRepresentedString
* @return the represented string of num
* @return the represented string of folio
*/
QString FolioNum::toRepresentedString(const QString str) const {
Q_UNUSED(str);
return (QString::number(diagram_ -> folioIndex() + 1));
return (diagram_->border_and_titleblock.folio());
}
/**

View File

@@ -96,6 +96,15 @@ class StringNum: public NumStrategy
NumerotationContext previous (const NumerotationContext &, const int) const;
};
class IdFolioNum: public NumStrategy
{
public:
IdFolioNum (Diagram *);
QString toRepresentedString(const QString) const;
NumerotationContext next (const NumerotationContext &, const int) const;
NumerotationContext previous (const NumerotationContext &, const int) const;
};
class FolioNum: public NumStrategy
{
public:
@@ -104,5 +113,4 @@ class FolioNum: public NumStrategy
NumerotationContext next (const NumerotationContext &, const int) const;
NumerotationContext previous (const NumerotationContext &, const int) const;
};
#endif // NUMEROTATIONCONTEXTCOMMANDS_H

View File

@@ -253,7 +253,6 @@ void ProjectAutoNumConfigPage::applyProjectConf() {}
void ProjectAutoNumConfigPage::initWidgets() {
tab_widget = new QTabWidget(this);
tab_widget->setMinimumWidth(440);
//Conductor Tab
conductor_tab_widget = new QWidget(this);
@@ -272,6 +271,7 @@ void ProjectAutoNumConfigPage::initWidgets() {
//Folio Tab
folio_tab_widget = new QWidget(this);
folio_tab_widget->setObjectName("FolioTab");
m_label_2 = new QLabel(tr("Numérotations disponibles :", "availables numerotations"), folio_tab_widget);
@@ -285,10 +285,9 @@ void ProjectAutoNumConfigPage::initWidgets() {
m_saw_2 = new SelectAutonumW(folio_tab_widget);
/* //AutoNumbering Tab - Needs Further Testing
//AutoNumbering Tab
autoNumbering_tab_widget = new QWidget(this);
m_faw = new FolioAutonumberingW(project(),autoNumbering_tab_widget);
*/
}
/**
@@ -296,6 +295,7 @@ void ProjectAutoNumConfigPage::initWidgets() {
* Init the layout of this page
*/
void ProjectAutoNumConfigPage::initLayout() {
//Conductor tab
tab_widget->addTab(conductor_tab_widget, tr("Conductor"));
@@ -328,8 +328,10 @@ void ProjectAutoNumConfigPage::initLayout() {
main_layout_2->addLayout(aux_layout_2);
folio_tab_widget -> setLayout (main_layout_2);
//Auto Numbering Tab - Needs Further Testing
// tab_widget->addTab(autoNumbering_tab_widget,tr ("Folio Auto Numbering"));
//Auto Numbering Tab
tab_widget->addTab(autoNumbering_tab_widget,tr ("Folio Auto Numbering"));
tab_widget->resize(440,590);
}
/**
@@ -349,8 +351,8 @@ void ProjectAutoNumConfigPage::readValuesFromProject() {
foreach (QString str, keys_2) { m_context_cb_2 -> addItem(str);}
}
//Folio AutoNumbering Tab - Needs Further Testing
// m_faw->setContext(keys_2);
//Folio AutoNumbering Tab
m_faw->setContext(keys_2);
}
/**
@@ -378,10 +380,9 @@ void ProjectAutoNumConfigPage::buildConnections() {
connect (m_saw_2, SIGNAL (applyPressed()), this, SLOT (saveContext_2()));
connect (m_remove_pb_2, SIGNAL (clicked()), this, SLOT (removeContext_2()));
/* //Auto Folio Numbering - Needs Further Testing
// Auto Folio Numbering
connect (m_faw, SIGNAL (applyPressed()), this, SLOT (applyAutoNum()));
connect (m_faw, SIGNAL (m_autonumber_tabs_rb_clicked()), this, SLOT (tabChanged(int)));
*/
}
/**
@@ -452,7 +453,6 @@ void ProjectAutoNumConfigPage::saveContext_2() {
* @brief ProjectAutoNumConfigPage::applyAutoNum
* Apply auto folio numbering, New Folios or Selected Folios
*/
/*
void ProjectAutoNumConfigPage::applyAutoNum() {
if (m_faw->newFolios){
@@ -460,6 +460,7 @@ void ProjectAutoNumConfigPage::applyAutoNum() {
emit (saveCurrentTbp());
emit (setAutoNum(m_faw->autoNumSelected()));
while (foliosRemaining > 0){
qDebug() << foliosRemaining;
project()->autoFolioNumberingNewFolios();
foliosRemaining = foliosRemaining-1;
}
@@ -472,7 +473,6 @@ void ProjectAutoNumConfigPage::applyAutoNum() {
project_->autoFolioNumberingSelectedFolios(fromFolio,toFolio,autoNum);
}
}
*/
/**
* @brief ProjectAutoNumConfigPage::removeContext
@@ -514,7 +514,7 @@ void ProjectAutoNumConfigPage::tabChanged(int i){
tab_widget->resize(470,tab_widget->height());
}
else {
tab_widget->adjustSize();
tab_widget->resize(440,tab_widget->height());
}
}
}

View File

@@ -147,7 +147,7 @@ class ProjectAutoNumConfigPage : public ProjectConfigPage {
void saveContext_2();
void removeContext_2();
// void applyAutoNum(); - Needs Further Testing
void applyAutoNum();
void tabChanged(int);

View File

@@ -81,7 +81,6 @@ void ProjectView::setProject(QETProject *project) {
connect(project_, SIGNAL(projectModified (QETProject *, bool)), this, SLOT(updateWindowTitle()));
connect(project_, SIGNAL(readOnlyChanged (QETProject *, bool)), this, SLOT(adjustReadOnlyState()));
connect(project_, SIGNAL(addAutoNumDiagram()), this, SLOT(addNewDiagram()));
connect(project_, SIGNAL(addAutoNumDiagram()), this, SLOT(addNewDiagram()));
adjustReadOnlyState();
loadDiagrams();
}

View File

@@ -20,7 +20,6 @@
#include <QMessageBox>
#include <QPushButton>
#include <QtWidgets>
#include "qdebug.h"
#include "qetproject.h"
#include "diagram.h"
/**
@@ -171,23 +170,22 @@ void FolioAutonumberingW::on_buttonBox_clicked(QAbstractButton *button) {
switch (answer) {
//help dialog - not implemented yet -
case QDialogButtonBox::HelpRole:
break;
/*QMessageBox::information (this, tr("Folio Autonumbering", "title window"),
tr("C'est ici que vous pouvez définir la manière dont sera numéroté les nouveaux conducteurs.\n"
QMessageBox::information (this, tr("Folio Autonumbering", "title window"),
tr("C'est ici que vous pouvez définir la manière dont sera numéroté les nouveaux folios.\n"
"-Une numérotation est composée d'une variable minimum.\n"
"-Vous pouvez ajouter ou supprimer une variable de numérotation par le biais des boutons - et +.\n"
"-Une variable de numérotation comprant: un type, une valeur et une incrémentation.\n"
"\n-les types \"Chiffre 1\", \"Chiffre 01\" et \"Chiffre 001\", représente un type numérique définie dans le champs \"Valeur\", "
"qui s'incrémente à chaque nouveau conducteur de la valeur du champ \"Incrémentation\".\n"
"qui s'incrémente à chaque nouveau folio de la valeur du champ \"Incrémentation\".\n"
"-\"Chiffre 01\" et \"Chiffre 001\", sont respectivement représenté sur le schéma par deux et trois digits minimum.\n"
"Si le chiffre définie dans le champs Valeur posséde moins de digits que le type choisit,"
"celui-ci sera précédé par un ou deux 0 afin de respecter son type.\n"
"\n-Le type \"Texte\", représente un texte fixe.\nLe champs \"Incrémentation\" n'est pas utilisé.\n"
"\n-Le type \"N° folio\" représente le n° du folio en cours.\nLes autres champs ne sont pas utilisés.",
"help dialog about the autonumerotation")); */
"\n-Le type \"Texte\", représente un texte fixe.\nLe champs \"Incrémentation\" n'est pas utilisé.\n",
"help dialog about the folio autonumerotation"
));
break;
case QDialogButtonBox::ApplyRole:
applyEnable(true);
emit applyPressed();

View File

@@ -129,7 +129,7 @@
</sizepolicy>
</property>
<property name="text">
<string>New Tabs</string>
<string>New Folios</string>
</property>
</widget>
</item>
@@ -212,7 +212,7 @@
</sizepolicy>
</property>
<property name="text">
<string>Create New Tabs</string>
<string>Create New Folios</string>
</property>
</widget>
</item>
@@ -225,7 +225,7 @@
</sizepolicy>
</property>
<property name="text">
<string>Autonumber Selected Tabs</string>
<string>Autonumber Selected Folios</string>
</property>
</widget>
</item>
@@ -284,7 +284,7 @@
</sizepolicy>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Apply|QDialogButtonBox::Help|QDialogButtonBox::Reset</set>
<set>QDialogButtonBox::Apply</set>
</property>
</widget>
</item>

View File

@@ -28,6 +28,7 @@ NumPartEditorW::NumPartEditorW(QWidget *parent) :
intValidator (new QIntValidator(0,99999,this))
{
ui -> setupUi(this);
if (parentWidget()->parentWidget()->objectName()=="FolioTab") ui->type_combo->setMaxCount(4);
setType(NumPartEditorW::unit, true);
}
@@ -41,7 +42,7 @@ NumPartEditorW::NumPartEditorW (NumerotationContext &context, int i, QWidget *pa
intValidator (new QIntValidator(0,99999,this))
{
ui -> setupUi(this);
if (parentWidget()->parentWidget()->objectName()=="FolioTab") ui->type_combo->setMaxCount(5);
//if @context contains nothing build with default value
if(context.size()==0) setType(NumPartEditorW::unit, true);
@@ -51,7 +52,8 @@ NumPartEditorW::NumPartEditorW (NumerotationContext &context, int i, QWidget *pa
else if (strl.at(0)=="ten") setType(NumPartEditorW::ten, true);
else if (strl.at(0)=="hundred") setType(NumPartEditorW::hundred, true);
else if (strl.at(0)=="string") setType(NumPartEditorW::string);
else if (strl.at(0)== "folio") setType(NumPartEditorW::folio);
else if (strl.at(0)=="idfolio") setType(NumPartEditorW::idfolio);
else if (strl.at(0)=="folio") setType(NumPartEditorW::folio);
ui -> value_field -> setText(strl.at(1));
ui -> increase_spinBox -> setValue(strl.at(2).toInt());
}
@@ -86,6 +88,9 @@ NumerotationContext NumPartEditorW::toNumContext() {
case string:
type_str = "string";
break;
case idfolio:
type_str = "idfolio";
break;
case folio:
type_str = "folio";
break;
@@ -99,8 +104,9 @@ NumerotationContext NumPartEditorW::toNumContext() {
* @return true if value field isn't empty or if type is folio
*/
bool NumPartEditorW::isValid() {
if (type_ != folio && ui -> value_field -> text().isEmpty()) return false;
return true;
if (type_ == folio||type_ == idfolio) {return true;}
else if(ui -> value_field -> text().isEmpty()) {return false;}
else return true;
}
/**
@@ -121,6 +127,9 @@ void NumPartEditorW::on_type_combo_activated(int index) {
case string:
setType(string);
break;
case idfolio:
setType(idfolio);
break;
case folio:
setType(folio);
break;
@@ -155,7 +164,7 @@ void NumPartEditorW::setType(NumPartEditorW::type t, bool fnum) {
//if @t is a numeric type and preview type @type_ isn't a numeric type
//or @fnum is true, we set numeric behavior
if ( ((t==unit || t==ten || t==hundred) && (type_==string || type_==folio)) || fnum) {
if ( ((t==unit || t==ten || t==hundred) && (type_==string || type_==folio || type_==idfolio)) || fnum) {
ui -> value_field -> clear();
ui -> value_field -> setEnabled(true);
ui -> value_field -> setValidator(intValidator);
@@ -163,7 +172,7 @@ void NumPartEditorW::setType(NumPartEditorW::type t, bool fnum) {
ui -> increase_spinBox -> setValue(1);
}
//@t isn't a numeric type
else if (t==string || t==folio) {
else if (t==string || t==folio || t==idfolio) {
ui -> value_field -> clear();
ui -> increase_spinBox -> setDisabled(true);
if (t==string) {
@@ -174,6 +183,10 @@ void NumPartEditorW::setType(NumPartEditorW::type t, bool fnum) {
ui -> value_field -> setDisabled(true);
ui -> increase_spinBox -> setDisabled(true);
}
else if (t==idfolio) {
ui -> value_field -> setDisabled(true);
ui -> increase_spinBox -> setDisabled(true);
}
}
type_= t;
}

View File

@@ -41,7 +41,7 @@ class NumPartEditorW : public QWidget
NumPartEditorW (NumerotationContext &, int, QWidget *parent=0);
~NumPartEditorW();
enum type {unit,ten,hundred,string,folio};
enum type {unit,ten,hundred,string,idfolio,folio};
NumerotationContext toNumContext();
bool isValid ();

View File

@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>259</width>
<height>42</height>
<width>308</width>
<height>45</height>
</rect>
</property>
<property name="windowTitle">
@@ -28,6 +28,9 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="editable">
<bool>true</bool>
</property>
<item>
<property name="text">
<string>Chiffre 1</string>
@@ -53,6 +56,11 @@
<string>N° folio</string>
</property>
</item>
<item>
<property name="text">
<string>Folio</string>
</property>
</item>
</widget>
</item>
<item>

View File

@@ -19,7 +19,6 @@
#include "ui_selectautonumw.h"
#include "numparteditorw.h"
#include <QMessageBox>
#include "qdebug.h"
#include "numerotationcontextcommands.h"
/**
@@ -125,7 +124,6 @@ void SelectAutonumW::on_remove_button_clicked() {
void SelectAutonumW::on_buttonBox_clicked(QAbstractButton *button) {
//transform button to int
int answer = ui -> buttonBox -> buttonRole(button);
switch (answer) {
//Reset the curent context
case QDialogButtonBox::ResetRole:
@@ -133,7 +131,26 @@ void SelectAutonumW::on_buttonBox_clicked(QAbstractButton *button) {
break;
//help dialog
case QDialogButtonBox::HelpRole:
QMessageBox::information (this, tr("Autonumérotation", "title window"),
if (this->parentWidget() -> objectName()=="FolioTab"){
QMessageBox::information (this, tr("Folio Autonumérotation", "title window"),
tr("C'est ici que vous pouvez définir la manière dont sera numéroté les nouveaux folios.\n"
"-Une numérotation est composée d'une variable minimum.\n"
"-Vous pouvez ajouter ou supprimer une variable de numérotation par le biais des boutons - et +.\n"
"-Une variable de numérotation comprant: un type, une valeur et une incrémentation.\n"
"\n-les types \"Chiffre 1\", \"Chiffre 01\" et \"Chiffre 001\", représente un type numérique définie dans le champs \"Valeur\", "
"qui s'incrémente à chaque nouveau folio de la valeur du champ \"Incrémentation\".\n"
"-\"Chiffre 01\" et \"Chiffre 001\", sont respectivement représenté sur le schéma par deux et trois digits minimum.\n"
"Si le chiffre définie dans le champs Valeur posséde moins de digits que le type choisit,"
"celui-ci sera précédé par un ou deux 0 afin de respecter son type.\n"
"\n-Le type \"Texte\", représente un texte fixe.\nLe champs \"Incrémentation\" n'est pas utilisé.\n",
"help dialog about the folio autonumerotation"
));
break;
}
else{
QMessageBox::information (this, tr("Conductor Autonumérotation", "title window"),
tr("C'est ici que vous pouvez définir la manière dont sera numéroté les nouveaux conducteurs.\n"
"-Une numérotation est composée d'une variable minimum.\n"
"-Vous pouvez ajouter ou supprimer une variable de numérotation par le biais des boutons - et +.\n"
@@ -147,9 +164,13 @@ void SelectAutonumW::on_buttonBox_clicked(QAbstractButton *button) {
"\n-Le type \"Texte\", représente un texte fixe.\nLe champs \"Incrémentation\" n'est pas utilisé.\n"
"\n-Le type \"N° folio\" représente le n° du folio en cours.\nLes autres champs ne sont pas utilisés.",
"help dialog about the autonumerotation"));
"\n-Le type \"N° folio\" représente le n° du folio en cours.\nLes autres champs ne sont pas utilisés.\n"
"\n-Le type \"Folio\" représente le nom du folio en cours.\nLes autres champs ne sont pas utilisés.",
"help dialog about the conductor autonumerotation"
));
break;
}
//apply the context in the diagram displayed by @diagram_chooser.
case QDialogButtonBox::ApplyRole:
applyEnable(false);

View File

@@ -6,12 +6,12 @@
<rect>
<x>0</x>
<y>0</y>
<width>466</width>
<width>418</width>
<height>506</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@@ -23,14 +23,14 @@
<item>
<widget class="QScrollArea" name="scrollArea">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
<sizepolicy hsizetype="Minimum" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>430</width>
<width>400</width>
<height>455</height>
</size>
</property>
@@ -66,19 +66,19 @@
<rect>
<x>0</x>
<y>0</y>
<width>460</width>
<width>400</width>
<height>453</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>460</width>
<width>400</width>
<height>450</height>
</size>
</property>
@@ -89,7 +89,7 @@
<item>
<widget class="QGroupBox" name="definition_groupe">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>