diff options
author | Lukáš Lalinský <lalinsky@gmail.com> | 2008-12-12 18:45:34 +0100 |
---|---|---|
committer | Lukáš Lalinský <lalinsky@gmail.com> | 2008-12-12 18:45:34 +0100 |
commit | 2b09f7747c171c4c39538c844a616b60424f16a3 (patch) | |
tree | 7cbe6234224dd777916477659d237eb106e07e9f | |
parent | 3a309a16e62a622f1b2ef90871086b274353e9d6 (diff) | |
download | dbmodel-2b09f7747c171c4c39538c844a616b60424f16a3.tar.xz |
Support for relationship modality
-rw-r--r-- | src/domutils.h | 25 | ||||
-rw-r--r-- | src/items/database/database.pri | 3 | ||||
-rw-r--r-- | src/items/database/databaserelationship.cpp | 69 | ||||
-rw-r--r-- | src/items/database/databaserelationship.h | 16 | ||||
-rw-r--r-- | src/items/database/databaserelationshipproperties.cpp | 115 | ||||
-rw-r--r-- | src/items/database/databaserelationshipproperties.h | 8 | ||||
-rw-r--r-- | src/items/database/databaserelationshipproperties.ui | 134 | ||||
-rw-r--r-- | translations/dbmodel_en.ts | 70 | ||||
-rw-r--r-- | translations/dbmodel_sk.ts | 78 |
9 files changed, 428 insertions, 90 deletions
diff --git a/src/domutils.h b/src/domutils.h index 3fc50d0..bb42ac1 100644 --- a/src/domutils.h +++ b/src/domutils.h @@ -17,6 +17,7 @@ #ifndef DOMUTILS_H #define DOMUTILS_H +#include <QDebug> #include <QDomDocument> #include <QDomElement> #include <QMetaEnum> @@ -74,4 +75,28 @@ readEnumElement(QDomElement &parent, const QString &name, T defaultValue, const return defaultValue; } +inline void +appendBoolElement(QDomDocument doc, QDomElement element, const QString &name, bool value, const QString &trueName = "True", const QString &falseName = "False") +{ + appendStringElement(doc, element, name, value ? trueName : falseName); +} + +inline bool +readBoolElement(QDomElement &parent, const QString &name, bool defaultValue, const QString &trueName = "True", const QString &falseName = "False") +{ + QDomElement element = parent.firstChildElement(name); + if (!element.isNull()) { + QString value = element.text(); + if (value == trueName) { + return true; + } + else if (value == falseName) { + return false; + } + else { + qWarning() << "Invalid value for" << name << ":" << value << "(must be either" << trueName << "or" << falseName << ")"; + } + } + return defaultValue; +} #endif diff --git a/src/items/database/database.pri b/src/items/database/database.pri index 9a7ebe9..5fd4397 100644 --- a/src/items/database/database.pri +++ b/src/items/database/database.pri @@ -21,3 +21,6 @@ HEADERS += \ databasetableproperties.h \ databaserelationship.h \ databaserelationshipproperties.h + +FORMS += \ + databaserelationshipproperties.ui diff --git a/src/items/database/databaserelationship.cpp b/src/items/database/databaserelationship.cpp index 780c0bb..c51d9d7 100644 --- a/src/items/database/databaserelationship.cpp +++ b/src/items/database/databaserelationship.cpp @@ -26,7 +26,9 @@ class DatabaseRelationship::PrivateData { public: PrivateData() : - cardinality(ZeroOrMore), + cardinality(OneToMany), + childOptional(false), + parentOptional(false), onUpdateAction(NoAction), onDeleteAction(NoAction) { @@ -60,6 +62,8 @@ public: } Cardinality cardinality; + bool childOptional; + bool parentOptional; Action onUpdateAction; Action onDeleteAction; @@ -68,20 +72,20 @@ public: QPainterPath targetEnd; QPolygonF line; - QPainterPath crowsFootPath(Cardinality cardinality) + QPainterPath crowsFootPath(bool toMany, bool optional) { - switch (cardinality) { - case ZeroOrMore: + if (toMany) { + if (optional) // 0..* return paths[0]; - case OneOrMore: + else // 1..* return paths[1]; - case ZeroOrOne: + } + else { + if (optional) // 0..1 return paths[2]; - case One: + else // 1..1 return paths[3]; } - Q_ASSERT(false); - return QPainterPath(); } QPainterPath arrowHeadPath() @@ -126,9 +130,37 @@ DatabaseRelationship::setCardinality(Cardinality cardinality) } bool -DatabaseRelationship::isRequired() const +DatabaseRelationship::isChildOptional() const { - return true; // FIXME + return d->childOptional; +} + +void +DatabaseRelationship::setChildOptional(bool optional) +{ + if (d->childOptional != optional) { + d->childOptional = optional; + emit propertyChanged("childOptional", optional); + updateLayout(); + update(); + } +} + +bool +DatabaseRelationship::isParentOptional() const +{ + return d->parentOptional; +} + +void +DatabaseRelationship::setParentOptional(bool optional) +{ + if (d->parentOptional != optional) { + d->parentOptional = optional; + emit propertyChanged("parentOptional", optional); + updateLayout(); + update(); + } } QRectF @@ -337,8 +369,8 @@ DatabaseRelationship::updateLayout() break; case DiagramDocument::CrowsFoot: d->fillEnds = false; - d->targetEnd = d->crowsFootPath(d->cardinality); - d->sourceEnd = d->crowsFootPath(isRequired() ? One : ZeroOrOne); + d->targetEnd = d->crowsFootPath(d->cardinality != OneToOne, isParentOptional()); + d->sourceEnd = d->crowsFootPath(d->cardinality == ManyToMany, isChildOptional()); break; } @@ -368,7 +400,12 @@ DatabaseRelationship::loadFromXml(QDomElement element, DiagramDocument *document DiagramConnection::loadFromXml(element, document); QDomElement relationshipeElement = element.firstChildElement("relationship"); if (!relationshipeElement.isNull()) { - setCardinality(readEnumElement(relationshipeElement, "cardinality", ZeroOrMore, this, "Cardinality")); + setCardinality(readEnumElement(relationshipeElement, "cardinality", OneToMany, this, "Cardinality")); + QDomElement modalityElement = relationshipeElement.firstChildElement("modality"); + if (!modalityElement.isNull()) { + setChildOptional(readBoolElement(modalityElement, "child", false, "Optional", "Mandatory")); + setParentOptional(readBoolElement(modalityElement, "parent", false, "Optional", "Mandatory")); + } } } @@ -379,6 +416,10 @@ DatabaseRelationship::saveToXml(QDomDocument doc, QDomElement element) QDomElement relationshipeElement = doc.createElement("relationship"); element.appendChild(relationshipeElement); appendEnumElement(doc, relationshipeElement, "cardinality", d->cardinality, this, "Cardinality"); + QDomElement modalityElement = doc.createElement("modality"); + relationshipeElement.appendChild(modalityElement); + appendBoolElement(doc, modalityElement, "child", d->childOptional, "Optional", "Mandatory"); + appendBoolElement(doc, modalityElement, "parent", d->parentOptional, "Optional", "Mandatory"); } DiagramItemProperties * diff --git a/src/items/database/databaserelationship.h b/src/items/database/databaserelationship.h index 9b5f0af..5d7e812 100644 --- a/src/items/database/databaserelationship.h +++ b/src/items/database/databaserelationship.h @@ -28,6 +28,8 @@ class DatabaseRelationship : public DiagramConnection Q_OBJECT Q_ENUMS(Cardinality Action) Q_PROPERTY(Cardinality cardinality READ cardinality WRITE setCardinality); + Q_PROPERTY(bool childOptional READ isChildOptional WRITE setChildOptional); + Q_PROPERTY(bool parentOptional READ isParentOptional WRITE setParentOptional); public: DatabaseRelationship(DiagramItem *parent = 0); @@ -54,14 +56,16 @@ public: //! Returns true if the foreign key on the child table is also the primary key bool isIdentifying() const; - //! Returns true if the foreign key on the child table is required (NOT NULL) - bool isRequired() const; + bool isChildOptional() const; + void setChildOptional(bool optional); + + bool isParentOptional() const; + void setParentOptional(bool optional); enum Cardinality { - ZeroOrMore, - OneOrMore, - ZeroOrOne, - One + OneToOne, + OneToMany, + ManyToMany, }; //! Returns the cardinality of the relationship diff --git a/src/items/database/databaserelationshipproperties.cpp b/src/items/database/databaserelationshipproperties.cpp index 94b2e78..bcdc104 100644 --- a/src/items/database/databaserelationshipproperties.cpp +++ b/src/items/database/databaserelationshipproperties.cpp @@ -24,6 +24,7 @@ #include "diagramdocument.h" #include "databaserelationship.h" #include "databaserelationshipproperties.h" +#include "ui_databaserelationshipproperties.h" class DatabaseRelationshipProperties::PrivateData { @@ -34,6 +35,8 @@ public: QWidget *nameEdit; QCheckBox *generateNameCheckBox; QComboBox *cardinalityComboBox; + Ui_DatabaseRelationshipForm ui; + QButtonGroup *cardinalityButtonGroup; }; DatabaseRelationshipProperties::DatabaseRelationshipProperties(QWidget *parent) @@ -46,32 +49,19 @@ QWidget * DatabaseRelationshipProperties::createRelationshipPage() { QWidget *page = new QWidget(this); - QGridLayout *layout = new QGridLayout(page); - - int row = 0; - d->nameEdit = new QLineEdit(page); - layout->addWidget(new QLabel(tr("Name:"), page), row, 0); - layout->addWidget(d->nameEdit, row, 1); - d->generateNameCheckBox = new QCheckBox(tr("Generated"), page); - connect(d->generateNameCheckBox, SIGNAL(toggled(bool)), d->nameEdit, SLOT(setDisabled(bool))); - d->generateNameCheckBox->setChecked(true); - layout->addWidget(d->generateNameCheckBox, row, 2); - - row++; - d->cardinalityComboBox = new QComboBox(page); - d->cardinalityComboBox->addItem("Zero or more", DatabaseRelationship::ZeroOrMore); - d->cardinalityComboBox->addItem("One or more", DatabaseRelationship::OneOrMore); - d->cardinalityComboBox->addItem("Zero or one", DatabaseRelationship::ZeroOrOne); - d->cardinalityComboBox->addItem("Exactly one", DatabaseRelationship::One); - connect(d->cardinalityComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(setRelationshipCardinality(int))); - QHBoxLayout *hbox = new QHBoxLayout(); - hbox->addWidget(d->cardinalityComboBox); - hbox->addStretch(); - layout->addWidget(new QLabel(tr("Cardinality:"), page), row, 0); - layout->addLayout(hbox, row, 1, 1, 2); - - row++; - layout->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding), row, 0, row, 3); + d->ui.setupUi(page); + + connect(d->ui.automaticNameCheckBox, SIGNAL(toggled(bool)), d->ui.nameEdit, SLOT(setDisabled(bool))); + + d->cardinalityButtonGroup = new QButtonGroup(this); + d->cardinalityButtonGroup->addButton(d->ui.cardinalityOneToOneRadioButton); + d->cardinalityButtonGroup->addButton(d->ui.cardinalityOneToManyRadioButton); + d->cardinalityButtonGroup->addButton(d->ui.cardinalityManyToManyRadioButton); + connect(d->cardinalityButtonGroup, SIGNAL(buttonClicked(QAbstractButton *)), + SLOT(setCardinality(QAbstractButton *))); + + connect(d->ui.modalityChildCheckBox, SIGNAL(toggled(bool)), SLOT(setChildOptional(bool))); + connect(d->ui.modalityParentCheckBox, SIGNAL(toggled(bool)), SLOT(setParentOptional(bool))); return page; } @@ -83,8 +73,9 @@ DatabaseRelationshipProperties::switchCurrentItem(DiagramItem *oldItem, DiagramI disconnect(oldItem, 0, this, 0); DatabaseRelationship *relationship = currentRelationship(); if (relationship) { - int index = d->cardinalityComboBox->findData(relationship->cardinality()); - d->cardinalityComboBox->setCurrentIndex(index); + updateCardinality(); + updateChildOptional(); + updateParentOptional(); connect(relationship, SIGNAL(propertyChanged(const QString &, const QVariant &)), SLOT(updateProperty(const QString &, const QVariant &))); } else { @@ -95,11 +86,47 @@ void DatabaseRelationshipProperties::updateProperty(const QString &name, const QVariant &value) { if (name == "cardinality") { - int index = d->cardinalityComboBox->findData(value); - d->cardinalityComboBox->setCurrentIndex(index); + updateCardinality(); + } + else if (name == "childOptional") { + updateChildOptional(); + } + else if (name == "childOptional") { + updateParentOptional(); } } +void +DatabaseRelationshipProperties::updateCardinality() +{ + DatabaseRelationship *relationship = currentRelationship(); + switch (relationship->cardinality()) { + case DatabaseRelationship::OneToOne: + d->ui.cardinalityOneToOneRadioButton->setChecked(true); + break; + case DatabaseRelationship::OneToMany: + d->ui.cardinalityOneToManyRadioButton->setChecked(true); + break; + case DatabaseRelationship::ManyToMany: + d->ui.cardinalityManyToManyRadioButton->setChecked(true); + break; + } +} + +void +DatabaseRelationshipProperties::updateChildOptional() +{ + DatabaseRelationship *relationship = currentRelationship(); + d->ui.modalityChildCheckBox->setChecked(relationship->isChildOptional()); +} + +void +DatabaseRelationshipProperties::updateParentOptional() +{ + DatabaseRelationship *relationship = currentRelationship(); + d->ui.modalityParentCheckBox->setChecked(relationship->isParentOptional()); +} + DatabaseRelationship * DatabaseRelationshipProperties::currentRelationship() { @@ -107,11 +134,33 @@ DatabaseRelationshipProperties::currentRelationship() } void -DatabaseRelationshipProperties::setRelationshipCardinality(int index) +DatabaseRelationshipProperties::setCardinality(QAbstractButton *button) { + DatabaseRelationship::Cardinality cardinality; + if (button == d->ui.cardinalityOneToOneRadioButton) + cardinality = DatabaseRelationship::OneToOne; + else if (button == d->ui.cardinalityOneToManyRadioButton) + cardinality = DatabaseRelationship::OneToMany; + else if (button == d->ui.cardinalityManyToManyRadioButton) + cardinality = DatabaseRelationship::ManyToMany; + DatabaseRelationship *relationship = currentRelationship(); - DatabaseRelationship::Cardinality cardinality = - DatabaseRelationship::Cardinality(d->cardinalityComboBox->itemData(index).toInt()); relationship->document()->undoStack()->push( new SetObjectPropertyCommand(relationship, "cardinality", cardinality)); } + +void +DatabaseRelationshipProperties::setChildOptional(bool optional) +{ + DatabaseRelationship *relationship = currentRelationship(); + relationship->document()->undoStack()->push( + new SetObjectPropertyCommand(relationship, "childOptional", optional)); +} + +void +DatabaseRelationshipProperties::setParentOptional(bool optional) +{ + DatabaseRelationship *relationship = currentRelationship(); + relationship->document()->undoStack()->push( + new SetObjectPropertyCommand(relationship, "parentOptional", optional)); +} diff --git a/src/items/database/databaserelationshipproperties.h b/src/items/database/databaserelationshipproperties.h index 0d758d2..7229139 100644 --- a/src/items/database/databaserelationshipproperties.h +++ b/src/items/database/databaserelationshipproperties.h @@ -19,6 +19,7 @@ #include "diagramitemproperties.h" class DatabaseRelationship; +class QAbstractButton; class DatabaseRelationshipProperties : public DiagramItemProperties { @@ -30,10 +31,15 @@ public: protected: void switchCurrentItem(DiagramItem *oldItem, DiagramItem *newItem); + void updateCardinality(); + void updateChildOptional(); + void updateParentOptional(); protected slots: void updateProperty(const QString &name, const QVariant &value); - void setRelationshipCardinality(int index); + void setCardinality(QAbstractButton *button); + void setChildOptional(bool); + void setParentOptional(bool); private: class PrivateData; diff --git a/src/items/database/databaserelationshipproperties.ui b/src/items/database/databaserelationshipproperties.ui new file mode 100644 index 0000000..4bc8bac --- /dev/null +++ b/src/items/database/databaserelationshipproperties.ui @@ -0,0 +1,134 @@ +<ui version="4.0" > + <class>DatabaseRelationshipForm</class> + <widget class="QWidget" name="DatabaseRelationshipForm" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>501</width> + <height>142</height> + </rect> + </property> + <layout class="QGridLayout" name="gridLayout" > + <item row="0" column="0" > + <widget class="QLabel" name="label_3" > + <property name="text" > + <string>Name:</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <layout class="QHBoxLayout" name="horizontalLayout" > + <item> + <widget class="QLineEdit" name="nameEdit" /> + </item> + <item> + <widget class="QCheckBox" name="automaticNameCheckBox" > + <property name="text" > + <string>Automatic</string> + </property> + </widget> + </item> + </layout> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Cardinality:</string> + </property> + </widget> + </item> + <item row="1" column="1" > + <layout class="QHBoxLayout" name="horizontalLayout_2" > + <item> + <widget class="QRadioButton" name="cardinalityOneToOneRadioButton" > + <property name="text" > + <string>1:1</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="cardinalityOneToManyRadioButton" > + <property name="text" > + <string>1:N</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="cardinalityManyToManyRadioButton" > + <property name="text" > + <string>M:N</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_2" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="label_2" > + <property name="text" > + <string>Modality:</string> + </property> + </widget> + </item> + <item row="2" column="1" > + <layout class="QHBoxLayout" name="horizontalLayout_3" > + <item> + <widget class="QCheckBox" name="modalityParentCheckBox" > + <property name="text" > + <string>Parent is optional</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="modalityChildCheckBox" > + <property name="text" > + <string>Child is optional</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_3" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="3" column="0" colspan="2" > + <spacer name="verticalSpacer" > + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>418</width> + <height>27</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/translations/dbmodel_en.ts b/translations/dbmodel_en.ts index cbcffbd..79b14c7 100644 --- a/translations/dbmodel_en.ts +++ b/translations/dbmodel_en.ts @@ -1,54 +1,86 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS><TS version="1.1" language="en"> -<defaultcodec></defaultcodec> <context> <name>ColumnListModel</name> <message> - <location filename="../src/items/database/columnlistmodel.cpp" line="173"/> + <location filename="../src/items/database/columnlistmodel.cpp" line="176"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/items/database/columnlistmodel.cpp" line="175"/> + <location filename="../src/items/database/columnlistmodel.cpp" line="178"/> <source>Data Type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/items/database/columnlistmodel.cpp" line="177"/> + <location filename="../src/items/database/columnlistmodel.cpp" line="180"/> <source>Req'd</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/items/database/columnlistmodel.cpp" line="179"/> + <location filename="../src/items/database/columnlistmodel.cpp" line="182"/> <source>PK</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/items/database/columnlistmodel.cpp" line="181"/> + <location filename="../src/items/database/columnlistmodel.cpp" line="184"/> <source>Notes</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>DatabaseRelationshipProperties</name> + <name>DatabaseRelationshipForm</name> <message> - <location filename="../src/items/database/databaserelationshipproperties.cpp" line="42"/> - <source>&Relationship</source> + <location filename="../src/items/database/databaserelationshipproperties.ui" line="16"/> + <source>Name:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/items/database/databaserelationshipproperties.cpp" line="53"/> - <source>Name:</source> + <location filename="../src/items/database/databaserelationshipproperties.ui" line="28"/> + <source>Automatic</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/items/database/databaserelationshipproperties.cpp" line="55"/> - <source>Generated</source> + <location filename="../src/items/database/databaserelationshipproperties.ui" line="37"/> + <source>Cardinality:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/items/database/databaserelationshipproperties.cpp" line="70"/> - <source>Cardinality:</source> + <location filename="../src/items/database/databaserelationshipproperties.ui" line="46"/> + <source>1:1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/items/database/databaserelationshipproperties.ui" line="53"/> + <source>1:N</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/items/database/databaserelationshipproperties.ui" line="60"/> + <source>M:N</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/items/database/databaserelationshipproperties.ui" line="82"/> + <source>Modality:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/items/database/databaserelationshipproperties.ui" line="91"/> + <source>Parent is optional</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/items/database/databaserelationshipproperties.ui" line="98"/> + <source>Child is optional</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>DatabaseRelationshipProperties</name> + <message> + <location filename="../src/items/database/databaserelationshipproperties.cpp" line="45"/> + <source>&Relationship</source> <translation type="unfinished"></translation> </message> </context> @@ -334,17 +366,17 @@ Do you want to save your changes?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/mainwindow.cpp" line="667"/> + <location filename="../src/mainwindow.cpp" line="670"/> <source>&%1. %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/mainwindow.cpp" line="724"/> + <location filename="../src/mainwindow.cpp" line="727"/> <source>About</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/mainwindow.cpp" line="730"/> + <location filename="../src/mainwindow.cpp" line="733"/> <source><p> <b>Database Modeller</b><br /> <a href="http://oxygene.sk/lukas/dbmodel/">http://oxygene.sk/lukas/dbmodel/</a><br /> @@ -354,7 +386,7 @@ Copyright (C) 2008 Lukas Lalinsky <translation><p><b>Database Modeller</b><br /><a href="http://oxygene.sk/lukas/dbmodel/">http://oxygene.sk/lukas/dbmodel/</a><br />Copyright (C) 2008 Lukáš Lalinský</p></translation> </message> <message> - <location filename="../src/mainwindow.cpp" line="739"/> + <location filename="../src/mainwindow.cpp" line="742"/> <source>Untitled</source> <translation type="unfinished"></translation> </message> diff --git a/translations/dbmodel_sk.ts b/translations/dbmodel_sk.ts index 92e69c6..ac126a2 100644 --- a/translations/dbmodel_sk.ts +++ b/translations/dbmodel_sk.ts @@ -1,54 +1,98 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS><TS version="1.1" language="sk"> +<defaultcodec></defaultcodec> <context> <name>ColumnListModel</name> <message> - <location filename="../src/items/database/columnlistmodel.cpp" line="173"/> + <location filename="../src/items/database/columnlistmodel.cpp" line="176"/> <source>Name</source> <translation>Názov</translation> </message> <message> - <location filename="../src/items/database/columnlistmodel.cpp" line="175"/> + <location filename="../src/items/database/columnlistmodel.cpp" line="178"/> <source>Data Type</source> <translation>Dátový typ</translation> </message> <message> - <location filename="../src/items/database/columnlistmodel.cpp" line="177"/> + <location filename="../src/items/database/columnlistmodel.cpp" line="180"/> <source>Req'd</source> <translation>Požadovaný</translation> </message> <message> - <location filename="../src/items/database/columnlistmodel.cpp" line="179"/> + <location filename="../src/items/database/columnlistmodel.cpp" line="182"/> <source>PK</source> <translation>Primárny kľúč</translation> </message> <message> - <location filename="../src/items/database/columnlistmodel.cpp" line="181"/> + <location filename="../src/items/database/columnlistmodel.cpp" line="184"/> <source>Notes</source> <translation>Poznámky</translation> </message> </context> <context> + <name>DatabaseRelationshipForm</name> + <message> + <location filename="../src/items/database/databaserelationshipproperties.ui" line="16"/> + <source>Name:</source> + <translation>Názov:</translation> + </message> + <message> + <location filename="../src/items/database/databaserelationshipproperties.ui" line="28"/> + <source>Automatic</source> + <translation>Automatické</translation> + </message> + <message> + <location filename="../src/items/database/databaserelationshipproperties.ui" line="37"/> + <source>Cardinality:</source> + <translation>Kardinalita:</translation> + </message> + <message> + <location filename="../src/items/database/databaserelationshipproperties.ui" line="46"/> + <source>1:1</source> + <translation></translation> + </message> + <message> + <location filename="../src/items/database/databaserelationshipproperties.ui" line="53"/> + <source>1:N</source> + <translation></translation> + </message> + <message> + <location filename="../src/items/database/databaserelationshipproperties.ui" line="60"/> + <source>M:N</source> + <translation></translation> + </message> + <message> + <location filename="../src/items/database/databaserelationshipproperties.ui" line="82"/> + <source>Modality:</source> + <translation>Modalita:</translation> + </message> + <message> + <location filename="../src/items/database/databaserelationshipproperties.ui" line="91"/> + <source>Parent is optional</source> + <translation>Rodič je nepovinný</translation> + </message> + <message> + <location filename="../src/items/database/databaserelationshipproperties.ui" line="98"/> + <source>Child is optional</source> + <translation>Potomok je nepovinný</translation> + </message> +</context> +<context> <name>DatabaseRelationshipProperties</name> <message> - <location filename="../src/items/database/databaserelationshipproperties.cpp" line="42"/> + <location filename="../src/items/database/databaserelationshipproperties.cpp" line="45"/> <source>&Relationship</source> <translation>&Vzťah</translation> </message> <message> <location filename="../src/items/database/databaserelationshipproperties.cpp" line="53"/> <source>Name:</source> - <translation>Názov:</translation> - </message> - <message> - <location filename="../src/items/database/databaserelationshipproperties.cpp" line="55"/> - <source>Generated</source> - <translation type="unfinished"></translation> + <translation type="obsolete">Názov:</translation> </message> <message> <location filename="../src/items/database/databaserelationshipproperties.cpp" line="70"/> <source>Cardinality:</source> - <translation>Kardinalita:</translation> + <translation type="obsolete">Kardinalita:</translation> </message> </context> <context> @@ -284,7 +328,7 @@ Do you want to save your changes?</source> <translation>Dokument bol zmenený. Chcete uložiť Vaše zmeny?</translation> </message> <message> - <location filename="../src/mainwindow.cpp" line="667"/> + <location filename="../src/mainwindow.cpp" line="670"/> <source>&%1. %2</source> <translation></translation> </message> @@ -299,7 +343,7 @@ Do you want to save your changes?</source> <translation>&Pomocník</translation> </message> <message> - <location filename="../src/mainwindow.cpp" line="724"/> + <location filename="../src/mainwindow.cpp" line="727"/> <source>About</source> <translation>O aplikácii</translation> </message> @@ -324,7 +368,7 @@ Do you want to save your changes?</source> <translation>Zobraziť m&riežku</translation> </message> <message> - <location filename="../src/mainwindow.cpp" line="739"/> + <location filename="../src/mainwindow.cpp" line="742"/> <source>Untitled</source> <translation>Nepomenované</translation> </message> @@ -349,7 +393,7 @@ Do you want to save your changes?</source> <translation></translation> </message> <message> - <location filename="../src/mainwindow.cpp" line="730"/> + <location filename="../src/mainwindow.cpp" line="733"/> <source><p> <b>Database Modeller</b><br /> <a href="http://oxygene.sk/lukas/dbmodel/">http://oxygene.sk/lukas/dbmodel/</a><br /> |