View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0017919 | Scribus | Text Frames / Story Editor | public | 2026-08-10 05:25 | 2026-08-10 05:29 |
| Reporter | qirat | Assigned To | |||
| Priority | normal | Severity | feature | Reproducibility | always |
| Status | new | Resolution | open | ||
| Platform | Linux | OS | Fedora Workstation | OS Version | 44 |
| Product Version | 1.7.4.svn | ||||
| Summary | 0017919: [PATCH] 5_Notes: Add per-notes-style separator rule/line, with editor UI (+additional UI polish) | ||||
| Description | - New opt-in per-style property set: Draw Separator Rule, Length (% of frame text width), Thickness, Colour, Indent, Gap Below (space to first line of note text). Persisted in `.sla`. - Rendered via `PageItem_NoteFrame::DrawObj_Item()` override. When Auto Height is on, `PageItem_NoteFrame::layout()` temporarily inflates the top text-distance margin by thickness+gap so note text sits below the rule instead of under it; original margin is restored after layout. - New "Separator Rule" group added to the Notes Style Editor (Tools → Manage Notes Styles) exposing the above fields. - Additional UI polish for the Notes Style Editor dialog beyond the above (group reorg, label placement, sizing/alignment consistency) — not functional, cosmetic only. ## Files touched `notesstyles.h/.cpp`, `pageitem_noteframe.h/.cpp`, `scribusdoc.cpp`, `scribus171format.cpp`, `scribus171format_save.cpp`, `ui/notesstyleseditor.h/.cpp/.ui` ## Compatibility Old files load with rule enabled by default. Older Scribus versions ignore new attributes on open. No scripting API changes. | ||||
| Additional Information | Used the number '5_Notes' as it is built in a series for me. Just to keep things in perspective (for users like me). | ||||
| Tags | No tags attached. | ||||
| Attached Files | footnote_separator_rule_v1.8.patch (53,033 bytes)
Index: scribus/notesstyles.h
===================================================================
--- scribus/notesstyles.h (revision 17250)
+++ scribus/notesstyles.h (working copy)
@@ -72,6 +72,23 @@
const QString& notesParStyle() const { return m_notesParaStyle; }
void setNotesParStyle(const QString& styleName) { m_notesParaStyle = styleName; }
+ //footnote/endnote separator rule (drawn above the note text, InDesign "Rule Above" style)
+ bool hasSeparator() const { return m_hasSeparator; }
+ void setHasSeparator(bool set) { m_hasSeparator = set; }
+ const QString& separatorLineColor() const { return m_separatorLineColor; }
+ void setSeparatorLineColor(const QString& colorName) { m_separatorLineColor = colorName; }
+ double separatorLineWidth() const { return m_separatorLineWidth; }
+ void setSeparatorLineWidth(double w) { m_separatorLineWidth = w; }
+ /** length of the rule, in percent (0-100) of the note frame's text width */
+ double separatorLength() const { return m_separatorLength; }
+ void setSeparatorLength(double len) { m_separatorLength = qBound(0.0, len, 100.0); }
+ /** offset of the rule from the frame's left text margin, in points */
+ double separatorIndent() const { return m_separatorIndent; }
+ void setSeparatorIndent(double indent) { m_separatorIndent = indent; }
+ /** gap between the rule and the first line of note text, in points */
+ double separatorGap() const { return m_separatorGap; }
+ void setSeparatorGap(double gap) { m_separatorGap = gap; }
+
private:
QString m_nameStr {"Default"}; //unique name of notes style
int m_startNum {1}; //numeration starts with that number
@@ -89,6 +106,13 @@
bool m_superscriptInMaster {true};
QString m_marksCharStyle;
QString m_notesParaStyle;
+
+ bool m_hasSeparator {true};
+ QString m_separatorLineColor {"Black"};
+ double m_separatorLineWidth {0.5};
+ double m_separatorLength {30.0}; //percent of note frame's text width
+ double m_separatorIndent {0.0};
+ double m_separatorGap {3.0};
};
Index: scribus/notesstyles.cpp
===================================================================
--- scribus/notesstyles.cpp (revision 17250)
+++ scribus/notesstyles.cpp (working copy)
@@ -26,6 +26,12 @@
(m_superscriptInMaster != n2.m_superscriptInMaster) ||
(m_superscriptInNote != n2.m_superscriptInNote) ||
(m_marksCharStyle != n2.m_marksCharStyle) ||
- (m_notesParaStyle != n2.m_notesParaStyle)
+ (m_notesParaStyle != n2.m_notesParaStyle) ||
+ (m_hasSeparator != n2.m_hasSeparator) ||
+ (m_separatorLineColor != n2.m_separatorLineColor) ||
+ (m_separatorLineWidth != n2.m_separatorLineWidth) ||
+ (m_separatorLength != n2.m_separatorLength) ||
+ (m_separatorIndent != n2.m_separatorIndent) ||
+ (m_separatorGap != n2.m_separatorGap)
);
}
Index: scribus/pageitem_noteframe.h
===================================================================
--- scribus/pageitem_noteframe.h (revision 17250)
+++ scribus/pageitem_noteframe.h (working copy)
@@ -26,6 +26,9 @@
//overloaded text frame layouting
void layout() override;
+ //overloaded to paint the notes-style separator rule above the note text, if enabled
+ void DrawObj_Item(ScPainter *p, const QRectF& e) override;
+
void getNamedResources(ResourceCollection& lists) const override;
void replaceNamedResources(ResourceCollection& newNames) override;
Index: scribus/pageitem_noteframe.cpp
===================================================================
--- scribus/pageitem_noteframe.cpp (revision 17250)
+++ scribus/pageitem_noteframe.cpp (working copy)
@@ -4,9 +4,12 @@
#include "pageitem_noteframe.h"
#include "appmodes.h"
+#include "commonstrings.h"
#include "pageitem.h"
#include "pageitem_textframe.h"
+#include "sccolorengine.h"
+#include "scpainter.h"
#include "scribusdoc.h"
#include "textnote.h"
#include "undomanager.h"
@@ -202,6 +205,17 @@
if ((m_Doc->appMode == modeEdit) && isSelected())
updateNotesText();
+ //if the separator rule is enabled, reserve room for it (plus the configured gap)
+ //above the note text by temporarily inflating the frame's own top text distance;
+ //restored below so the frame's configured Text Distances setting is never altered
+ MarginStruct savedTextDistanceMargins(m_textDistanceMargins);
+ bool reserveSeparatorSpace = m_nstyle->hasSeparator()
+ && (m_nstyle->separatorLineWidth() > 0.0)
+ && (m_nstyle->separatorLength() > 0.0)
+ && (m_nstyle->separatorLineColor() != CommonStrings::None);
+ if (reserveSeparatorSpace)
+ m_textDistanceMargins.setTop(m_textDistanceMargins.top() + m_nstyle->separatorLineWidth() + m_nstyle->separatorGap());
+
PageItem_TextFrame::layout();
int oldH = m_height;
if (notesStyle()->isAutoNotesHeight())
@@ -229,6 +243,8 @@
invalid = true;
PageItem_TextFrame::layout();
}
+ if (reserveSeparatorSpace)
+ m_textDistanceMargins = savedTextDistanceMargins;
if (oldH != height())
{
if (masterFrame() != nullptr)
@@ -242,6 +258,43 @@
UndoManager::instance()->setUndoEnabled(true);
}
+void PageItem_NoteFrame::DrawObj_Item(ScPainter *p, const QRectF& e)
+{
+ //paint the frame/text as usual first...
+ PageItem_TextFrame::DrawObj_Item(p, e);
+
+ //...then paint the separator rule above the note text, if this notes style has one enabled.
+ //Modelled on InDesign's "Rule Above" footnote separator: a decoration owned by the notes
+ //style, not a selectable page object, so it needs no lifecycle/undo handling of its own -
+ //it is simply recomputed from the frame's own geometry on every repaint.
+ if ((m_nstyle == nullptr) || !m_nstyle->hasSeparator())
+ return;
+ if (m_nstyle->separatorLineWidth() <= 0.0 || m_nstyle->separatorLength() <= 0.0)
+ return;
+ if (m_nstyle->separatorLineColor() == CommonStrings::None)
+ return;
+
+ double availableWidth = m_width - textToFrameDistLeft() - textToFrameDistRight();
+ if (availableWidth <= 0.0)
+ return;
+
+ double lineWidth = m_nstyle->separatorLineWidth();
+ double ruleLength = availableWidth * (m_nstyle->separatorLength() / 100.0);
+ double ruleY = textToFrameDistTop() + (lineWidth / 2.0);
+ double ruleX = textToFrameDistLeft() + m_nstyle->separatorIndent();
+
+ const ScColor& col = m_Doc->PageColors[m_nstyle->separatorLineColor()];
+ QColor qCol = ScColorEngine::getRGBColor(col, m_Doc);
+
+ p->save();
+ p->setPen(qCol, lineWidth, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin);
+ p->setPenOpacity(1.0);
+ p->setupPolygon(&PoLine);
+ p->setClipPath();
+ p->drawSharpLine(FPoint(ruleX, ruleY), FPoint(ruleX + ruleLength, ruleY));
+ p->restore();
+}
+
void PageItem_NoteFrame::insertNote(TextNote *note)
{
Mark* mrk = note->noteMark();
Index: scribus/plugins/fileloader/scribus171format/scribus171format.cpp
===================================================================
--- scribus/plugins/fileloader/scribus171format/scribus171format.cpp (revision 17250)
+++ scribus/plugins/fileloader/scribus171format/scribus171format.cpp (working copy)
@@ -4538,6 +4538,14 @@
if (!name.isEmpty())
NS.setNotesParStyle(name);
+ //footnote/endnote separator rule; default to "on" for documents saved before this was introduced
+ NS.setHasSeparator(attrs.valueAsBool("HasSeparator", true));
+ NS.setSeparatorLineColor(attrs.valueAsString("SeparatorColor", "Black"));
+ NS.setSeparatorLineWidth(attrs.valueAsDouble("SeparatorWidth", 0.5));
+ NS.setSeparatorLength(attrs.valueAsDouble("SeparatorLength", 30.0));
+ NS.setSeparatorIndent(attrs.valueAsDouble("SeparatorIndent", 0.0));
+ NS.setSeparatorGap(attrs.valueAsDouble("SeparatorGap", 3.0));
+
m_Doc->newNotesStyle(NS);
}
}
Index: scribus/plugins/fileloader/scribus171format/scribus171format_save.cpp
===================================================================
--- scribus/plugins/fileloader/scribus171format/scribus171format_save.cpp (revision 17250)
+++ scribus/plugins/fileloader/scribus171format/scribus171format_save.cpp (working copy)
@@ -1628,6 +1628,12 @@
docu.writeAttribute("SuperMaster", noteStyle->isSuperscriptInMaster());
docu.writeAttribute("MarksStyle", noteStyle->marksChStyle());
docu.writeAttribute("NotesStyle", noteStyle->notesParStyle());
+ docu.writeAttribute("HasSeparator", noteStyle->hasSeparator());
+ docu.writeAttribute("SeparatorColor", noteStyle->separatorLineColor());
+ docu.writeAttribute("SeparatorWidth", noteStyle->separatorLineWidth());
+ docu.writeAttribute("SeparatorLength", noteStyle->separatorLength());
+ docu.writeAttribute("SeparatorIndent", noteStyle->separatorIndent());
+ docu.writeAttribute("SeparatorGap", noteStyle->separatorGap());
}
docu.writeEndElement();
}
Index: scribus/scribusdoc.cpp
===================================================================
--- scribus/scribusdoc.cpp (revision 17250)
+++ scribus/scribusdoc.cpp (working copy)
@@ -2415,6 +2415,12 @@
noteStyle->setSuperscriptInNote(ss->getBool("superNote"));
noteStyle->setMarksCharStyle(ss->get("marksChStyle"));
noteStyle->setNotesParStyle(ss->get("notesParStyle"));
+ noteStyle->setHasSeparator(ss->getBool("hasSeparator"));
+ noteStyle->setSeparatorLineColor(ss->get("separatorColor"));
+ noteStyle->setSeparatorLineWidth(ss->getDouble("separatorWidth"));
+ noteStyle->setSeparatorLength(ss->getDouble("separatorLength"));
+ noteStyle->setSeparatorIndent(ss->getDouble("separatorIndent"));
+ noteStyle->setSeparatorGap(ss->getDouble("separatorGap"));
m_docNotesStylesList.append(noteStyle);
scMW()->emitUpdateRequest(reqMarksUpdate);
}
@@ -2456,6 +2462,12 @@
noteStyle->setSuperscriptInNote(ss->getBool("superNote"));
noteStyle->setMarksCharStyle(ss->get("marksChStyle"));
noteStyle->setNotesParStyle(ss->get("notesParStyle"));
+ noteStyle->setHasSeparator(ss->getBool("hasSeparator"));
+ noteStyle->setSeparatorLineColor(ss->get("separatorColor"));
+ noteStyle->setSeparatorLineWidth(ss->getDouble("separatorWidth"));
+ noteStyle->setSeparatorLength(ss->getDouble("separatorLength"));
+ noteStyle->setSeparatorIndent(ss->getDouble("separatorIndent"));
+ noteStyle->setSeparatorGap(ss->getDouble("separatorGap"));
}
else
{
@@ -2474,6 +2486,12 @@
noteStyle->setSuperscriptInNote(ss->getBool("NEWsuperNote"));
noteStyle->setMarksCharStyle(ss->get("NEWmarksChStyle"));
noteStyle->setNotesParStyle(ss->get("NEWnotesParStyle"));
+ noteStyle->setHasSeparator(ss->getBool("NEWhasSeparator"));
+ noteStyle->setSeparatorLineColor(ss->get("NEWseparatorColor"));
+ noteStyle->setSeparatorLineWidth(ss->getDouble("NEWseparatorWidth"));
+ noteStyle->setSeparatorLength(ss->getDouble("NEWseparatorLength"));
+ noteStyle->setSeparatorIndent(ss->getDouble("NEWseparatorIndent"));
+ noteStyle->setSeparatorGap(ss->getDouble("NEWseparatorGap"));
}
setNotesChanged(true);
if ((ss->get("marksChStyle") != ss->get("NEWmarksChStyle"))
@@ -18519,6 +18537,12 @@
ss->set("superNote", noteStyle->isSuperscriptInNote());
ss->set("marksChStyle", noteStyle->marksChStyle());
ss->set("notesParStyle", noteStyle->notesParStyle());
+ ss->set("hasSeparator", noteStyle->hasSeparator());
+ ss->set("separatorColor", noteStyle->separatorLineColor());
+ ss->set("separatorWidth", noteStyle->separatorLineWidth());
+ ss->set("separatorLength", noteStyle->separatorLength());
+ ss->set("separatorIndent", noteStyle->separatorIndent());
+ ss->set("separatorGap", noteStyle->separatorGap());
}
NotesStyle* ScribusDoc::getNotesStyle(const QString& nsName)
Index: scribus/ui/notesstyleseditor.h
===================================================================
--- scribus/ui/notesstyleseditor.h (revision 17250)
+++ scribus/ui/notesstyleseditor.h (working copy)
@@ -67,5 +67,11 @@
void on_NewButton_clicked();
void on_paraStyleCombo_currentIndexChanged(const int &arg1);
void on_charStyleCombo_currentIndexChanged(const int &arg1);
+ void on_SeparatorCheck_toggled(bool checked);
+ void on_SeparatorColorCombo_currentIndexChanged(int index);
+ void on_SeparatorWidthSpin_valueChanged(double value);
+ void on_SeparatorLengthSpin_valueChanged(int value);
+ void on_SeparatorIndentSpin_valueChanged(double value);
+ void on_SeparatorGapSpin_valueChanged(double value);
};
#endif // NOTESSTYLESEDITOR_H
Index: scribus/ui/notesstyleseditor.cpp
===================================================================
--- scribus/ui/notesstyleseditor.cpp (revision 17250)
+++ scribus/ui/notesstyleseditor.cpp (working copy)
@@ -74,32 +74,13 @@
{
//Keep "Style:" and "Name:" aligned with each other only, sized to
//their actual rendered text (not a hardcoded guess, so this stays
- //correct for any language, font, or DPI). "Numbering" is deliberately
- //excluded: it is longer than either, and sharing its width would pad
- //"Style:"/"Name:" well past what their own text needs, opening a gap
- //between each label and its field. Left-alignment with "Numbering"
- //needs no width matching at all - as the first item in its own
- //layout, it already starts at the same x regardless of its width.
+ //correct for any language, font, or DPI).
const QList<QLabel*> outerLabels = { EditingLabel, NewNameLabel };
int outerWidth = 0;
for (QLabel* lbl : outerLabels)
outerWidth = qMax(outerWidth, lbl->sizeHint().width());
for (QLabel* lbl : outerLabels)
lbl->setMinimumWidth(outerWidth);
-
- //Separately, keep the Numbering group's own field labels aligned with
- //each other. A small uniform padding on top of the widest label's
- //width gives every row some breathing room before its field starts,
- //while keeping all six fields - including the Type row's radio
- //buttons - aligned with each other, since all six labels still share
- //the exact same width.
- const QList<QLabel*> innerLabels = { TypeLabel, NumberingLabel, ScopeLabel, StartLabel, PrefixLabel, SuffixLabel };
- int innerWidth = 0;
- for (QLabel* lbl : innerLabels)
- innerWidth = qMax(innerWidth, lbl->sizeHint().width());
- innerWidth += 6;
- for (QLabel* lbl : innerLabels)
- lbl->setMinimumWidth(innerWidth);
}
void NotesStylesEditor::changeEvent(QEvent *e)
@@ -158,6 +139,7 @@
charStyleCombo->setDoc(m_Doc);
if (m_Doc != nullptr)
{
+ SeparatorColorCombo->setColors(m_Doc->PageColors, false);
updateNSList();
NSlistBox->setCurrentIndex(0);
readNotesStyle(NSlistBox->currentText());
@@ -312,6 +294,18 @@
AutoW->setEnabled(b);
AutoWeld->setEnabled(b);
AutoRemove->setChecked(NS->isAutoRemoveEmptyNotesFrames());
+ SeparatorCheck->setChecked(NS->hasSeparator());
+ SeparatorColorCombo->setCurrentColor(NS->separatorLineColor());
+ SeparatorWidthSpin->setValue(NS->separatorLineWidth());
+ SeparatorLengthSpin->setValue(qRound(NS->separatorLength()));
+ SeparatorIndentSpin->setValue(NS->separatorIndent());
+ SeparatorGapSpin->setValue(NS->separatorGap());
+ bool hasSep = NS->hasSeparator();
+ SeparatorColorCombo->setEnabled(hasSep);
+ SeparatorWidthSpin->setEnabled(hasSep);
+ SeparatorLengthSpin->setEnabled(hasSep);
+ SeparatorIndentSpin->setEnabled(hasSep);
+ SeparatorGapSpin->setEnabled(hasSep);
ApplyButton->setEnabled(false);
setBlockSignals(wasSignalsBlocked);
}
@@ -425,6 +419,12 @@
ss->set("NEWsuperNote", NS->isSuperscriptInNote());
ss->set("NEWmarksChStyle", NS->marksChStyle());
ss->set("NEWnotesParStyle", NS->notesParStyle());
+ ss->set("NEWhasSeparator", NS->hasSeparator());
+ ss->set("NEWseparatorColor", NS->separatorLineColor());
+ ss->set("NEWseparatorWidth", NS->separatorLineWidth());
+ ss->set("NEWseparatorLength", NS->separatorLength());
+ ss->set("NEWseparatorIndent", NS->separatorIndent());
+ ss->set("NEWseparatorGap", NS->separatorGap());
UndoManager::instance()->action(m_Doc, ss);
}
//invalidate all text frames with marks from current changed notes style
@@ -700,3 +700,57 @@
m_changesMap.insert(NSlistBox->currentText(), ns);
markChanged();
}
+
+void NotesStylesEditor::on_SeparatorCheck_toggled(bool checked)
+{
+ NotesStyle ns = m_changesMap.value(NSlistBox->currentText());
+ ns.setHasSeparator(checked);
+ m_changesMap.insert(NSlistBox->currentText(), ns);
+
+ SeparatorColorCombo->setEnabled(checked);
+ SeparatorWidthSpin->setEnabled(checked);
+ SeparatorLengthSpin->setEnabled(checked);
+ SeparatorIndentSpin->setEnabled(checked);
+ SeparatorGapSpin->setEnabled(checked);
+ markChanged();
+}
+
+void NotesStylesEditor::on_SeparatorColorCombo_currentIndexChanged(int /*index*/)
+{
+ NotesStyle ns = m_changesMap.value(NSlistBox->currentText());
+ ns.setSeparatorLineColor(SeparatorColorCombo->currentColor());
+ m_changesMap.insert(NSlistBox->currentText(), ns);
+ markChanged();
+}
+
+void NotesStylesEditor::on_SeparatorWidthSpin_valueChanged(double value)
+{
+ NotesStyle ns = m_changesMap.value(NSlistBox->currentText());
+ ns.setSeparatorLineWidth(value);
+ m_changesMap.insert(NSlistBox->currentText(), ns);
+ markChanged();
+}
+
+void NotesStylesEditor::on_SeparatorLengthSpin_valueChanged(int value)
+{
+ NotesStyle ns = m_changesMap.value(NSlistBox->currentText());
+ ns.setSeparatorLength(value);
+ m_changesMap.insert(NSlistBox->currentText(), ns);
+ markChanged();
+}
+
+void NotesStylesEditor::on_SeparatorIndentSpin_valueChanged(double value)
+{
+ NotesStyle ns = m_changesMap.value(NSlistBox->currentText());
+ ns.setSeparatorIndent(value);
+ m_changesMap.insert(NSlistBox->currentText(), ns);
+ markChanged();
+}
+
+void NotesStylesEditor::on_SeparatorGapSpin_valueChanged(double value)
+{
+ NotesStyle ns = m_changesMap.value(NSlistBox->currentText());
+ ns.setSeparatorGap(value);
+ m_changesMap.insert(NSlistBox->currentText(), ns);
+ markChanged();
+}
Index: scribus/ui/notesstyleseditor.ui
===================================================================
--- scribus/ui/notesstyleseditor.ui (revision 17250)
+++ scribus/ui/notesstyleseditor.ui (working copy)
@@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
- <width>510</width>
+ <width>570</width>
<height>360</height>
</rect>
</property>
@@ -190,55 +190,159 @@
<item row="2" column="0">
<layout class="QVBoxLayout" name="leftColumnLayout">
<item>
- <widget class="QLabel" name="NumberingGroupLabel">
- <property name="text">
- <string>N&umbering</string>
- </property>
- <property name="buddy">
- <cstring>FootRadio</cstring>
+ <widget class="QGroupBox" name="groupNoteType">
+ <property name="title">
+ <string>Note T&ype</string>
</property>
+ <layout class="QHBoxLayout" name="typeRowLayout">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QRadioButton" name="FootRadio">
+ <property name="toolTip">
+ <string>Use this style for footnotes, placed at the bottom of the page</string>
+ </property>
+ <property name="text">
+ <string>&Footnotes</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="EndRadio">
+ <property name="toolTip">
+ <string>Use this style for endnotes, collected at the end of the document or story</string>
+ </property>
+ <property name="text">
+ <string>&Endnotes</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="typeRowSpacer">
+ <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>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupNumbering">
<property name="title">
- <string/>
+ <string>N&umbering</string>
</property>
- <layout class="QFormLayout" name="formNumbering">
- <property name="fieldGrowthPolicy">
- <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
- </property>
+ <layout class="QVBoxLayout" name="vboxNumbering">
<property name="leftMargin">
<number>9</number>
</property>
- <property name="horizontalSpacing">
+ <property name="spacing">
<number>6</number>
</property>
- <item row="0" column="0">
- <widget class="QLabel" name="TypeLabel">
- <property name="text">
- <string>Note Type</string>
- </property>
- </widget>
- </item>
- <item row="0" column="1">
- <layout class="QHBoxLayout" name="typeRowLayout">
- <item>
- <widget class="QRadioButton" name="FootRadio">
- <property name="text">
- <string>&Footnotes</string>
+ <item>
+ <layout class="QHBoxLayout" name="numberFormatStartRowLayout">
+ <property name="spacing">
+ <number>12</number>
+ </property>
+ <item alignment="Qt::AlignmentFlag::AlignLeft">
+ <widget class="FormWidget" name="NumberingFormWidget">
+ <property name="label" stdset="0">
+ <string>Number Format</string>
</property>
+ <property name="font">
+ <font>
+ <pointsize>8</pointsize>
+ </font>
+ </property>
+ <layout class="QHBoxLayout" name="numberingFormLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="NumFormatCombo" name="NumberingBox">
+ <property name="minimumSize">
+ <size>
+ <width>110</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Numbering format used for this notes style's marks</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
</widget>
</item>
- <item>
- <widget class="QRadioButton" name="EndRadio">
- <property name="text">
- <string>&Endnotes</string>
+ <item alignment="Qt::AlignmentFlag::AlignLeft">
+ <widget class="FormWidget" name="StartFormWidget">
+ <property name="label" stdset="0">
+ <string>Start at</string>
</property>
+ <property name="font">
+ <font>
+ <pointsize>8</pointsize>
+ </font>
+ </property>
+ <layout class="QHBoxLayout" name="startFormLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QSpinBox" name="StartSpinBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>50</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>50</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>The number at which this notes style's numbering starts</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
</widget>
</item>
<item>
- <spacer name="typeRowSpacer">
+ <spacer name="numberFormatStartRowSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
@@ -252,127 +356,232 @@
</item>
</layout>
</item>
- <item row="1" column="0">
- <widget class="QLabel" name="NumberingLabel">
- <property name="text">
- <string>Format</string>
+ <item>
+ <spacer name="numberingRowGapSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
</property>
- </widget>
- </item>
- <item row="1" column="1">
- <widget class="NumFormatCombo" name="NumberingBox">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
</property>
- </widget>
- </item>
- <item row="2" column="0">
- <widget class="QLabel" name="ScopeLabel">
- <property name="text">
- <string>Scope</string>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>8</height>
+ </size>
</property>
- </widget>
+ </spacer>
</item>
- <item row="2" column="1">
- <widget class="QComboBox" name="ScopeBox">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- </widget>
+ <item>
+ <layout class="QHBoxLayout" name="scopePrefixSuffixRowLayout">
+ <property name="spacing">
+ <number>12</number>
+ </property>
+ <item alignment="Qt::AlignmentFlag::AlignLeft">
+ <widget class="FormWidget" name="ScopeFormWidget">
+ <property name="label" stdset="0">
+ <string>Scope</string>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>8</pointsize>
+ </font>
+ </property>
+ <layout class="QHBoxLayout" name="scopeFormLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QComboBox" name="ScopeBox">
+ <property name="minimumSize">
+ <size>
+ <width>110</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Range over which this notes style's numbering is counted before restarting</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item alignment="Qt::AlignmentFlag::AlignLeft">
+ <widget class="FormWidget" name="PrefixFormWidget">
+ <property name="label" stdset="0">
+ <string>Prefix</string>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>8</pointsize>
+ </font>
+ </property>
+ <layout class="QHBoxLayout" name="prefixFormLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QLineEdit" name="PrefixEdit">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>50</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>50</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Text inserted before the note number</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item alignment="Qt::AlignmentFlag::AlignLeft">
+ <widget class="FormWidget" name="SuffixFormWidget">
+ <property name="label" stdset="0">
+ <string>Suffix</string>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>8</pointsize>
+ </font>
+ </property>
+ <layout class="QHBoxLayout" name="suffixFormLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QLineEdit" name="SuffixEdit">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>50</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>50</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Text inserted after the note number</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <spacer name="scopePrefixSuffixRowSpacer">
+ <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">
- <widget class="QLabel" name="StartLabel">
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupFrame">
+ <property name="title">
+ <string>Frame &Behaviour</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_frame">
+ <property name="horizontalSpacing">
+ <number>6</number>
+ </property>
+ <item row="0" column="0">
+ <widget class="QCheckBox" name="AutoH">
+ <property name="toolTip">
+ <string>Automatically grow or shrink the notes frame height to fit its content</string>
+ </property>
<property name="text">
- <string>Start at</string>
+ <string>Auto &Height</string>
</property>
</widget>
</item>
- <item row="3" column="1">
- <widget class="QSpinBox" name="StartSpinBox">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>50</width>
- <height>30</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>50</width>
- <height>30</height>
- </size>
- </property>
+ <item row="0" column="1">
+ <widget class="QCheckBox" name="AutoW">
<property name="toolTip">
- <string>The number at which this notes style's numbering starts</string>
+ <string>Automatically grow or shrink the notes frame width to fit its content</string>
</property>
- </widget>
- </item>
- <item row="4" column="0">
- <widget class="QLabel" name="PrefixLabel">
<property name="text">
- <string>Prefix</string>
+ <string>Auto &Width</string>
</property>
</widget>
</item>
- <item row="4" column="1">
- <widget class="QLineEdit" name="PrefixEdit">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>50</width>
- <height>0</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>50</width>
- <height>16777215</height>
- </size>
+ <item row="1" column="0">
+ <widget class="QCheckBox" name="AutoRemove">
+ <property name="toolTip">
+ <string>Automatically remove the notes frame when it becomes empty</string>
</property>
- </widget>
- </item>
- <item row="5" column="0">
- <widget class="QLabel" name="SuffixLabel">
<property name="text">
- <string>Suffix</string>
+ <string>&Remove if Empty</string>
</property>
</widget>
</item>
- <item row="5" column="1">
- <widget class="QLineEdit" name="SuffixEdit">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>50</width>
- <height>0</height>
- </size>
+ <item row="1" column="1">
+ <widget class="QCheckBox" name="AutoWeld">
+ <property name="toolTip">
+ <string>Automatically weld the notes frame to its marker frame</string>
</property>
- <property name="maximumSize">
- <size>
- <width>50</width>
- <height>16777215</height>
- </size>
+ <property name="text">
+ <string>Auto Weldin&g</string>
</property>
</widget>
</item>
@@ -397,19 +606,9 @@
<item row="2" column="1">
<layout class="QVBoxLayout" name="rightColumnLayout">
<item>
- <widget class="QLabel" name="MarksGroupLabel">
- <property name="text">
- <string>&Mark && Note Styles</string>
- </property>
- <property name="buddy">
- <cstring>charStyleCombo</cstring>
- </property>
- </widget>
- </item>
- <item>
<widget class="QGroupBox" name="groupMarks">
<property name="title">
- <string/>
+ <string>&Mark && Note Styles</string>
</property>
<layout class="QGridLayout" name="gridLayout_marks">
<property name="horizontalSpacing">
@@ -574,53 +773,376 @@
</widget>
</item>
<item>
- <widget class="QGroupBox" name="groupFrame">
+ <widget class="QGroupBox" name="groupSeparator">
<property name="title">
- <string>Frame &Behaviour</string>
+ <string>Se&parator Rule</string>
</property>
- <layout class="QGridLayout" name="gridLayout_frame">
- <property name="horizontalSpacing">
- <number>6</number>
- </property>
- <item row="0" column="0">
- <widget class="QCheckBox" name="AutoH">
+ <layout class="QVBoxLayout" name="vboxSeparator">
+ <item>
+ <widget class="QCheckBox" name="SeparatorCheck">
<property name="toolTip">
- <string>Automatically grow or shrink the notes frame height to fit its content</string>
+ <string>Draw a horizontal line (rule) above the note text, using this notes style's settings below</string>
</property>
<property name="text">
- <string>Auto &Height</string>
+ <string>&Draw Separator Rule</string>
</property>
</widget>
</item>
- <item row="0" column="1">
- <widget class="QCheckBox" name="AutoW">
- <property name="toolTip">
- <string>Automatically grow or shrink the notes frame width to fit its content</string>
- </property>
- <property name="text">
- <string>Auto &Width</string>
+ <item>
+ <layout class="QHBoxLayout" name="separatorRow1Layout">
+ <property name="spacing">
+ <number>12</number>
</property>
- </widget>
+ <item alignment="Qt::AlignmentFlag::AlignLeft">
+ <widget class="FormWidget" name="SeparatorLengthFormWidget">
+ <property name="label" stdset="0">
+ <string>Length</string>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>8</pointsize>
+ </font>
+ </property>
+ <layout class="QHBoxLayout" name="separatorLengthFormLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item alignment="Qt::AlignmentFlag::AlignLeft">
+ <widget class="QSpinBox" name="SeparatorLengthSpin">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>75</width>
+ <height>24</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>75</width>
+ <height>24</height>
+ </size>
+ </property>
+ <property name="suffix">
+ <string> %</string>
+ </property>
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="maximum">
+ <number>100</number>
+ </property>
+ <property name="toolTip">
+ <string>Length of the separator rule, as a percentage of the note frame's text width</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item alignment="Qt::AlignmentFlag::AlignLeft">
+ <widget class="FormWidget" name="SeparatorWidthFormWidget">
+ <property name="label" stdset="0">
+ <string>Thickness</string>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>8</pointsize>
+ </font>
+ </property>
+ <layout class="QHBoxLayout" name="separatorWidthFormLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item alignment="Qt::AlignmentFlag::AlignLeft">
+ <widget class="QDoubleSpinBox" name="SeparatorWidthSpin">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>75</width>
+ <height>24</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>75</width>
+ <height>24</height>
+ </size>
+ </property>
+ <property name="suffix">
+ <string> pt</string>
+ </property>
+ <property name="decimals">
+ <number>2</number>
+ </property>
+ <property name="minimum">
+ <double>0.100000000000000</double>
+ </property>
+ <property name="maximum">
+ <double>72.000000000000000</double>
+ </property>
+ <property name="toolTip">
+ <string>Thickness of the separator rule</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item alignment="Qt::AlignmentFlag::AlignLeft">
+ <widget class="FormWidget" name="SeparatorColorFormWidget">
+ <property name="label" stdset="0">
+ <string>Colour</string>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>8</pointsize>
+ </font>
+ </property>
+ <layout class="QHBoxLayout" name="separatorColorFormLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item alignment="Qt::AlignmentFlag::AlignLeft">
+ <widget class="ColorCombo" name="SeparatorColorCombo">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>140</width>
+ <height>24</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>24</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Colour of the separator rule</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <spacer name="separatorRow1Spacer">
+ <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="1" column="0">
- <widget class="QCheckBox" name="AutoRemove">
- <property name="toolTip">
- <string>Automatically remove the notes frame when it becomes empty</string>
- </property>
- <property name="text">
- <string>&Remove if Empty</string>
+ <item>
+ <spacer name="separatorRowGapSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
</property>
- </widget>
- </item>
- <item row="1" column="1">
- <widget class="QCheckBox" name="AutoWeld">
- <property name="toolTip">
- <string>Automatically weld the notes frame to its marker frame</string>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
</property>
- <property name="text">
- <string>Auto Weldin&g</string>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>8</height>
+ </size>
</property>
- </widget>
+ </spacer>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="separatorRow2Layout">
+ <property name="spacing">
+ <number>12</number>
+ </property>
+ <item alignment="Qt::AlignmentFlag::AlignLeft">
+ <widget class="FormWidget" name="SeparatorGapFormWidget">
+ <property name="label" stdset="0">
+ <string>Gap Below</string>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>8</pointsize>
+ </font>
+ </property>
+ <layout class="QHBoxLayout" name="separatorGapFormLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item alignment="Qt::AlignmentFlag::AlignLeft">
+ <widget class="QDoubleSpinBox" name="SeparatorGapSpin">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>75</width>
+ <height>24</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>75</width>
+ <height>24</height>
+ </size>
+ </property>
+ <property name="suffix">
+ <string> pt</string>
+ </property>
+ <property name="decimals">
+ <number>2</number>
+ </property>
+ <property name="minimum">
+ <double>0.000000000000000</double>
+ </property>
+ <property name="maximum">
+ <double>1000.000000000000000</double>
+ </property>
+ <property name="toolTip">
+ <string>Space between the separator rule and the note text below it</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item alignment="Qt::AlignmentFlag::AlignLeft">
+ <widget class="FormWidget" name="SeparatorIndentFormWidget">
+ <property name="label" stdset="0">
+ <string>Indent</string>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>8</pointsize>
+ </font>
+ </property>
+ <layout class="QHBoxLayout" name="separatorIndentFormLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item alignment="Qt::AlignmentFlag::AlignLeft">
+ <widget class="QDoubleSpinBox" name="SeparatorIndentSpin">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>75</width>
+ <height>24</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>75</width>
+ <height>24</height>
+ </size>
+ </property>
+ <property name="suffix">
+ <string> pt</string>
+ </property>
+ <property name="decimals">
+ <number>2</number>
+ </property>
+ <property name="minimum">
+ <double>0.000000000000000</double>
+ </property>
+ <property name="maximum">
+ <double>1000.000000000000000</double>
+ </property>
+ <property name="toolTip">
+ <string>Distance between the note frame's left edge and the start of the separator rule</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <spacer name="separatorRow2Spacer">
+ <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>
</layout>
</widget>
@@ -723,6 +1245,17 @@
<extends>QComboBox</extends>
<header>ui/stylecombos.h</header>
</customwidget>
+ <customwidget>
+ <class>ColorCombo</class>
+ <extends>QComboBox</extends>
+ <header>ui/colorcombo.h</header>
+ </customwidget>
+ <customwidget>
+ <class>FormWidget</class>
+ <extends>QWidget</extends>
+ <header>ui/widgets/form_widget.h</header>
+ <container>1</container>
+ </customwidget>
</customwidgets>
<resources/>
<connections/>
| ||||
| Patch | Yes | ||||