View Issue Details

IDProjectCategoryView StatusLast Update
0017919ScribusText Frames / Story Editorpublic2026-08-10 05:29
Reporterqirat Assigned To 
PrioritynormalSeverityfeatureReproducibilityalways
Status newResolutionopen 
PlatformLinuxOSFedora WorkstationOS Version44
Product Version1.7.4.svn 
Summary0017919: [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 InformationUsed the number '5_Notes' as it is built in a series for me. Just to keep things in perspective (for users like me).
TagsNo 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&amp;umbering</string>
-       </property>
-       <property name="buddy">
-        <cstring>FootRadio</cstring>
+      <widget class="QGroupBox" name="groupNoteType">
+       <property name="title">
+        <string>Note T&amp;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>&amp;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>&amp;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&amp;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>&amp;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>&amp;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 &amp;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 &amp;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 &amp;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>&amp;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&amp;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>&amp;Mark &amp;&amp; Note Styles</string>
-       </property>
-       <property name="buddy">
-        <cstring>charStyleCombo</cstring>
-       </property>
-      </widget>
-     </item>
-     <item>
       <widget class="QGroupBox" name="groupMarks">
        <property name="title">
-        <string/>
+        <string>&amp;Mark &amp;&amp; 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 &amp;Behaviour</string>
+        <string>Se&amp;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 &amp;Height</string>
+           <string>&amp;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 &amp;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>&amp;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&amp;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/>

PatchYes

Activities

qirat

2026-08-10 05:29

reporter   ~0054189

The screenshot showing the latest Notes Style Editor UI after adding the feature, and more UI polish.

Issue History

Date Modified Username Field Change
2026-08-10 05:25 qirat New Issue
2026-08-10 05:25 qirat File Added: footnote_separator_rule_v1.8.patch
2026-08-10 05:29 qirat Note Added: 0054189
2026-08-10 05:29 qirat File Added: notes-editor-widget-separator-rule-other-ui-polish.png