View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0017149 | Scribus | User Interface | public | 2024-01-28 17:44 | 2024-10-07 18:21 |
| Reporter | ale | Assigned To | nitramr | ||
| Priority | normal | Severity | minor | Reproducibility | N/A |
| Status | assigned | Resolution | open | ||
| Product Version | 1.7.0.svn | ||||
| Summary | 0017149: create (line) styles in place | ||||
| Description | it has been requested for many years to enable the creation of the styles based on the current selection. i gave it a try with the simplest case: the line styles. of course, the most interesting cases are the creation of paragraph and character styles. another similar situation is for "fast" creating (and applying) colors. @nitramr do you think that this type of feature can be integrated in your UI work? | ||||
| Steps To Reproduce | in its current state the code: - opens a modal dialog - with the values for the currently selected line prefilled it does not create the style itself yet (but i think i'm close to get there). | ||||
| Tags | No tags attached. | ||||
| Attached Files | |||||
| Patch | No | ||||
|
|
here is the current state of my draft code (it does not yet create the style) create-line-style-draft.diff (35,651 bytes)
diff --git a/Scribus.pro b/Scribus.pro
index eacc9380d..8bfc29bce 100644
--- a/Scribus.pro
+++ b/Scribus.pro
@@ -646,6 +646,7 @@ HEADERS += scribus/actionmanager.h \
scribus/ui/splash.h \
scribus/ui/storyeditor.h \
scribus/ui/stylecombos.h \
+ scribus/ui/stylecreator.h \
scribus/ui/stylemanager.h \
scribus/ui/styleselect.h \
scribus/ui/styleview.h \
@@ -1167,6 +1168,7 @@ FORMS += scribus/ui/aboutplugins.ui \
scribus/ui/smtablestylewidget.ui \
scribus/ui/spiralvectorbase.ui \
scribus/ui/spiralwidgetbase.ui \
+ scribus/ui/stylecreator.ui \
scribus/ui/stylemanager.ui \
scribus/ui/tablecolumnwidthsdialog.ui \
scribus/ui/tablerowheightsdialog.ui \
@@ -1794,6 +1796,7 @@ SOURCES += scribus/actionmanager.cpp \
scribus/ui/splash.cpp \
scribus/ui/storyeditor.cpp \
scribus/ui/stylecombos.cpp \
+ scribus/ui/stylecreator.cpp \
scribus/ui/stylemanager.cpp \
scribus/ui/styleselect.cpp \
scribus/ui/styleview.cpp \
diff --git a/scribus/CMakeLists_Sources.txt b/scribus/CMakeLists_Sources.txt
index 66101c2e1..3ed090862 100644
--- a/scribus/CMakeLists_Sources.txt
+++ b/scribus/CMakeLists_Sources.txt
@@ -512,6 +512,7 @@ set(SCRIBUS_SOURCES
ui/splash.cpp
ui/storyeditor.cpp
ui/stylecombos.cpp
+ ui/stylecreator.cpp
ui/stylemanager.cpp
ui/styleselect.cpp
ui/styleview.cpp
diff --git a/scribus/ui/propertiespalette_line.cpp b/scribus/ui/propertiespalette_line.cpp
index d275f442a..9d10558b0 100644
--- a/scribus/ui/propertiespalette_line.cpp
+++ b/scribus/ui/propertiespalette_line.cpp
@@ -23,8 +23,11 @@ for which a new license (GPL+exception) is in place.
#include "scribusapp.h"
#include "scribusdoc.h"
#include "selection.h"
+#include "smlinestyle.h"
#include "ui/propertiespalette_utils.h"
#include "ui/widgets/popup_menu.h"
+#include "ui/stylecreator.h"
+#include "ui/widgets/popup_menu.h"
#include "units.h"
#include "util.h"
@@ -86,6 +89,59 @@ PropertiesPalette_Line::PropertiesPalette_Line( QWidget* parent) : QWidget(paren
connect(comboBlendmode, SIGNAL(currentIndexChanged(int)), this, SLOT(handleLineBlendmode(int)));
connect(numberOpacity, SIGNAL(valueChanged(double)), this, SLOT(handleLineOpacity(double)));
+ // TODO: enable and disable them as needed
+ comboLineStyles->addItem("Styles");
+ connect(buttonCreateStyle, &QToolButton::clicked, [=]() {
+ auto dialog = new StyleCreator(this);
+ dialog->setDoc(m_doc);
+ SMLineStyle *styleItem = new SMLineStyle();
+ SingleLine lineSettings{};
+ lineSettings.setLineWidth(lineWidth->value() / m_unitRatio);
+ if (lineType->currentIndex() != 37)
+ {
+ lineSettings.setDash(lineType->currentIndex()+1);
+ }
+ // TODO: defined it as a function and use it also in other places
+ auto getLineEnd = [=]() -> Qt::PenCapStyle {
+ switch (buttonsCaps->checkedId())
+ {
+ case 0:
+ return Qt::FlatCap;
+ case 1:
+ return Qt::SquareCap;
+ case 2:
+ return Qt::RoundCap;
+ }
+ return Qt::FlatCap;
+ };
+ lineSettings.setLineEnd(static_cast<int>(getLineEnd()));
+ auto getLineJoin = [=]() -> Qt::PenJoinStyle {
+ switch (buttonsJoins->checkedId())
+ {
+ case 0:
+ return Qt::MiterJoin;
+ case 1:
+ return Qt::BevelJoin;
+ case 2:
+ return Qt::RoundJoin;
+ }
+ return Qt::MiterJoin;
+ };
+ lineSettings.setLineJoin(getLineJoin());
+ PageItem* currentItem = currentItemFromSelection();
+ if (currentItem == nullptr) {
+ return;
+ }
+ // showColorValues(currentItem->lineColor(), currentItem->fillColor(), currentItem->lineShade(), currentItem->fillShade());
+ lineSettings.setColor(currentItem->lineColor());
+ lineSettings.setShade(currentItem->lineShade());
+ MultiLine lineCompound{};
+ lineCompound.push_back(lineSettings);
+ dialog->loadType(styleItem);
+ styleItem->newStyle(lineCompound);
+ dialog->show();
+ qDebug() << "clicked";
+ });
}
void PropertiesPalette_Line::changeEvent(QEvent *e)
@@ -658,6 +714,8 @@ void PropertiesPalette_Line::iconSetChange()
buttonCapSquare->setIcon(im.loadIcon("16/stroke-cap-square.png"));
buttonSwapMarker->setIcon(im.loadIcon("swap"));
+
+ buttonCreateStyle->setIcon(im.loadIcon("16/list-add.png"));
}
void PropertiesPalette_Line::languageChange()
diff --git a/scribus/ui/propertiespalette_linebase.ui b/scribus/ui/propertiespalette_linebase.ui
index a5299fbcd..a5afde41e 100644
--- a/scribus/ui/propertiespalette_linebase.ui
+++ b/scribus/ui/propertiespalette_linebase.ui
@@ -6,489 +6,507 @@
<rect>
<x>0</x>
<y>0</y>
- <width>314</width>
- <height>344</height>
+ <width>314</width>
+ <height>344</height>
</rect>
</property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <property name="spacing">
- <number>8</number>
- </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="spacing">
+ <number>8</number>
+ </property>
<property name="leftMargin">
- <number>8</number>
+ <number>8</number>
</property>
<property name="topMargin">
- <number>8</number>
+ <number>8</number>
</property>
<property name="rightMargin">
- <number>8</number>
+ <number>8</number>
</property>
<property name="bottomMargin">
- <number>8</number>
+ <number>8</number>
</property>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="spacing">
- <number>4</number>
+ <number>4</number>
</property>
<item>
- <widget class="FormWidget" name="lineWidthLabel">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
+ <widget class="FormWidget" name="lineWidthLabel" native="true">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
</property>
- <property name="label" stdset="0">
- <string>Width</string>
- </property>
- <property name="font">
- <font>
- <pointsize>8</pointsize>
- </font>
- </property>
- <layout class="QHBoxLayout" name="horizontalLayout_4">
- <property name="spacing">
- <number>4</number>
- </property>
- <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="ScrSpinBox" name="lineWidth">
- <property name="maximumSize">
- <size>
- <width>100</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="specialValueText">
- <string>Hairline</string>
- </property>
- <property name="maximum">
- <double>300.000000000000000</double>
- </property>
- </widget>
- </item>
- </layout>
+ <property name="font">
+ <font>
+ <pointsize>8</pointsize>
+ </font>
+ </property>
+ <property name="label" stdset="0">
+ <string>Width</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <property name="spacing">
+ <number>4</number>
+ </property>
+ <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="ScrSpinBox" name="lineWidth">
+ <property name="maximumSize">
+ <size>
+ <width>100</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="specialValueText">
+ <string>Hairline</string>
+ </property>
+ <property name="maximum">
+ <double>300.000000000000000</double>
+ </property>
+ </widget>
+ </item>
+ </layout>
</widget>
</item>
<item>
- <widget class="FormWidget" name="lineTypeLabel">
+ <widget class="FormWidget" name="lineTypeLabel" native="true">
<property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="label" stdset="0">
- <string>Type</string>
+ <property name="font">
+ <font>
+ <pointsize>8</pointsize>
+ </font>
</property>
- <property name="font">
- <font>
- <pointsize>8</pointsize>
- </font>
+ <property name="label" stdset="0">
+ <string>Type</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_5">
+ <property name="spacing">
+ <number>4</number>
+ </property>
+ <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="LineCombo" name="lineType"/>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="comboLineStyles"/>
+ </item>
+ <item>
+ <widget class="QToolButton" name="buttonCreateStyle">
+ <property name="text">
+ <string/>
</property>
- <layout class="QHBoxLayout" name="horizontalLayout_5">
- <property name="spacing">
- <number>4</number>
- </property>
- <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="LineCombo" name="lineType"/>
- </item>
- </layout>
</widget>
</item>
- <item>
- <spacer name="horizontalSpacer_2">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>0</width>
- <height>0</height>
- </size>
- </property>
- </spacer>
- </item>
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
</layout>
</item>
- <item>
- <widget class="DashEditor" name="dashEditor">
- <property name="frameShape">
- <enum>QFrame::StyledPanel</enum>
- </property>
- <property name="frameShadow">
- <enum>QFrame::Raised</enum>
- </property>
- </widget>
- </item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_10">
+ <item>
+ <widget class="DashEditor" name="dashEditor">
+ <property name="frameShape">
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_10">
<property name="spacing">
- <number>16</number>
+ <number>16</number>
</property>
<item>
- <widget class="FormWidget" name="lineEndLabel">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
+ <widget class="FormWidget" name="lineEndLabel" native="true">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>8</pointsize>
+ </font>
+ </property>
+ <property name="label" stdset="0">
+ <string>Caps</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="spacing">
+ <number>4</number>
+ </property>
+ <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="QToolButton" name="buttonCapFlat">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="checked">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="buttonCapSquare">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="buttonCapRound">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="FormWidget" name="lineJoinLabel" native="true">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>8</pointsize>
+ </font>
+ </property>
+ <property name="label" stdset="0">
+ <string>Joins</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_9">
+ <property name="spacing">
+ <number>4</number>
+ </property>
+ <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="QToolButton" name="buttonJoinMiter">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="buttonJoinRound">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="buttonJoinBevel">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="FormWidget" name="lineMarkerLabel" native="true">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>8</pointsize>
+ </font>
+ </property>
+ <property name="label" stdset="0">
+ <string>Marker</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <property name="spacing">
+ <number>4</number>
+ </property>
+ <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="QToolButton" name="buttonMarkerStart">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>20</width>
+ <height>16</height>
+ </size>
+ </property>
+ <property name="popupMode">
+ <enum>QToolButton::InstantPopup</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="buttonSwapMarker">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="buttonMarkerEnd">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>20</width>
+ <height>16</height>
+ </size>
+ </property>
+ <property name="popupMode">
+ <enum>QToolButton::InstantPopup</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_6">
+ <item>
+ <widget class="FormWidget" name="lineOpacityLabel" native="true">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>8</pointsize>
+ </font>
</property>
- <property name="label" stdset="0">
- <string>Caps</string>
- </property>
- <property name="font">
- <font>
- <pointsize>8</pointsize>
- </font>
- </property>
- <layout class="QHBoxLayout" name="horizontalLayout_2">
- <property name="spacing">
- <number>4</number>
- </property>
- <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="QToolButton" name="buttonCapFlat">
- <property name="text">
- <string/>
- </property>
- <property name="checkable">
- <bool>true</bool>
- </property>
- <property name="checked">
- <bool>false</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="buttonCapSquare">
- <property name="text">
- <string/>
- </property>
- <property name="checkable">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="buttonCapRound">
- <property name="text">
- <string/>
- </property>
- <property name="checkable">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- </layout>
+ <property name="label" stdset="0">
+ <string>Opacity</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_8">
+ <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="ScrSpinBox" name="numberOpacity">
+ <property name="focusPolicy">
+ <enum>Qt::WheelFocus</enum>
+ </property>
+ <property name="suffix">
+ <string> %</string>
+ </property>
+ <property name="decimals">
+ <number>0</number>
+ </property>
+ <property name="maximum">
+ <double>100.000000000000000</double>
+ </property>
+ <property name="value">
+ <double>100.000000000000000</double>
+ </property>
+ </widget>
+ </item>
+ </layout>
</widget>
</item>
<item>
- <widget class="FormWidget" name="lineJoinLabel">
+ <widget class="FormWidget" name="lineBlendmodeLabel" native="true">
<property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="label" stdset="0">
- <string>Joins</string>
+ <property name="font">
+ <font>
+ <pointsize>8</pointsize>
+ </font>
</property>
- <property name="font">
- <font>
- <pointsize>8</pointsize>
- </font>
+ <property name="label" stdset="0">
+ <string>Blendmode</string>
</property>
- <layout class="QHBoxLayout" name="horizontalLayout_9">
- <property name="spacing">
- <number>4</number>
- </property>
- <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="QToolButton" name="buttonJoinMiter">
- <property name="text">
- <string/>
- </property>
- <property name="checkable">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="buttonJoinRound">
- <property name="text">
- <string/>
- </property>
- <property name="checkable">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="buttonJoinBevel">
- <property name="text">
- <string/>
- </property>
- <property name="checkable">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- </layout>
+ <layout class="QHBoxLayout" name="horizontalLayout_7">
+ <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="ComboBlendMode" name="comboBlendmode"/>
+ </item>
+ </layout>
</widget>
</item>
- <item>
- <widget class="FormWidget" name="lineMarkerLabel">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="label" stdset="0">
- <string>Marker</string>
- </property>
- <property name="font">
- <font>
- <pointsize>8</pointsize>
- </font>
- </property>
- <layout class="QHBoxLayout" name="horizontalLayout">
- <property name="spacing">
- <number>4</number>
- </property>
- <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="QToolButton" name="buttonMarkerStart">
- <property name="text">
- <string/>
- </property>
- <property name="iconSize">
- <size>
- <width>20</width>
- <height>16</height>
- </size>
- </property>
- <property name="popupMode">
- <enum>QToolButton::InstantPopup</enum>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="buttonSwapMarker">
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="buttonMarkerEnd">
- <property name="text">
- <string/>
- </property>
- <property name="iconSize">
- <size>
- <width>20</width>
- <height>16</height>
- </size>
- </property>
- <property name="popupMode">
- <enum>QToolButton::InstantPopup</enum>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer_3">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>0</width>
- <height>0</height>
- </size>
- </property>
- </spacer>
- </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
</layout>
</item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_6">
- <item>
- <widget class="FormWidget" name="lineOpacityLabel">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="label" stdset="0">
- <string>Opacity</string>
- </property>
- <property name="font">
- <font>
- <pointsize>8</pointsize>
- </font>
- </property>
- <layout class="QHBoxLayout" name="horizontalLayout_8">
- <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="ScrSpinBox" name="numberOpacity">
- <property name="suffix">
- <string> %</string>
- </property>
- <property name="decimals">
- <number>0</number>
- </property>
- <property name="maximum">
- <double>100.000000000000000</double>
- </property>
- <property name="value">
- <double>100.000000000000000</double>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <widget class="FormWidget" name="lineBlendmodeLabel">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="label" stdset="0">
- <string>Blendmode</string>
- </property>
- <property name="font">
- <font>
- <pointsize>8</pointsize>
- </font>
- </property>
- <layout class="QHBoxLayout" name="horizontalLayout_7">
- <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="ComboBlendMode" name="comboBlendmode"/>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>0</width>
- <height>0</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
+ <item>
+ <widget class="QListWidget" name="lineStyles"/>
</item>
- <item>
- <widget class="QListWidget" name="lineStyles"/>
- </item>
</layout>
</widget>
<customwidgets>
<customwidget>
- <class>FormWidget</class>
- <extends>QWidget</extends>
- <header>ui/widgets/form_widget.h</header>
- <container>1</container>
- </customwidget>
- <customwidget>
<class>ScrSpinBox</class>
<extends>QDoubleSpinBox</extends>
<header>ui/scrspinbox.h</header>
</customwidget>
+ <customwidget>
+ <class>FormWidget</class>
+ <extends>QWidget</extends>
+ <header>ui/widgets/form_widget.h</header>
+ <container>1</container>
+ </customwidget>
+ <customwidget>
+ <class>ComboBlendMode</class>
+ <extends>QComboBox</extends>
+ <header>ui/widgets/combo_blendmode.h</header>
+ </customwidget>
<customwidget>
<class>LineCombo</class>
<extends>QComboBox</extends>
@@ -500,28 +518,23 @@
<header>ui/dasheditor.h</header>
<container>1</container>
</customwidget>
- <customwidget>
- <class>ComboBlendMode</class>
- <extends>QComboBox</extends>
- <header>ui/widgets/combo_blendmode.h</header>
- </customwidget>
</customwidgets>
- <tabstops>
- <tabstop>lineWidth</tabstop>
- <tabstop>lineType</tabstop>
- <tabstop>buttonCapFlat</tabstop>
- <tabstop>buttonCapSquare</tabstop>
- <tabstop>buttonCapRound</tabstop>
- <tabstop>buttonJoinMiter</tabstop>
- <tabstop>buttonJoinRound</tabstop>
- <tabstop>buttonJoinBevel</tabstop>
- <tabstop>buttonMarkerStart</tabstop>
- <tabstop>buttonSwapMarker</tabstop>
- <tabstop>buttonMarkerEnd</tabstop>
- <tabstop>numberOpacity</tabstop>
- <tabstop>comboBlendmode</tabstop>
- <tabstop>lineStyles</tabstop>
- </tabstops>
+ <tabstops>
+ <tabstop>lineWidth</tabstop>
+ <tabstop>lineType</tabstop>
+ <tabstop>buttonCapFlat</tabstop>
+ <tabstop>buttonCapSquare</tabstop>
+ <tabstop>buttonCapRound</tabstop>
+ <tabstop>buttonJoinMiter</tabstop>
+ <tabstop>buttonJoinRound</tabstop>
+ <tabstop>buttonJoinBevel</tabstop>
+ <tabstop>buttonMarkerStart</tabstop>
+ <tabstop>buttonSwapMarker</tabstop>
+ <tabstop>buttonMarkerEnd</tabstop>
+ <tabstop>numberOpacity</tabstop>
+ <tabstop>comboBlendmode</tabstop>
+ <tabstop>lineStyles</tabstop>
+ </tabstops>
<resources/>
<connections/>
</ui>
diff --git a/scribus/ui/smlinestyle.cpp b/scribus/ui/smlinestyle.cpp
index 18a94e800..960b59b7d 100644
--- a/scribus/ui/smlinestyle.cpp
+++ b/scribus/ui/smlinestyle.cpp
@@ -193,6 +193,20 @@ QString SMLineStyle::newStyle()
return name;
}
+QString SMLineStyle::newStyle(const MultiLine lineCompound)
+{
+ QString name = getUniqueName( tr("New Style"));
+ m_tmpLines[name] = lineCompound;
+ // QStringList styleNames;
+ // styleNames << name;
+ // selected(styleNames);
+ setupConnections();
+ setSelection(name);
+ // m_widget->showStyle(m_tmpLines[styleName], m_doc->PageColors);
+
+ return name;
+}
+
QString SMLineStyle::newStyle(const QString &fromStyle)
{
Q_ASSERT(m_tmpLines.contains(fromStyle));
diff --git a/scribus/ui/smlinestyle.h b/scribus/ui/smlinestyle.h
index 42bc343fd..7dcab6136 100644
--- a/scribus/ui/smlinestyle.h
+++ b/scribus/ui/smlinestyle.h
@@ -35,6 +35,7 @@ public:
void toSelection(const QString &styleName) const;
QString newStyle();
QString newStyle(const QString &fromStyle);
+ QString newStyle(MultiLine lineFormat);
void apply();
bool isDefaultStyle(const QString &stylename) const;
void setDefaultStyle(bool ids);
stylecreator.cpp (1,831 bytes)
/*
For general Scribus (>=1.3.2) copyright and licensing information please refer
to the COPYING file provided with the program. Following this notice may exist
a copyright and/or license notice that predates the release of Scribus 1.3.2
for which a new license (GPL+exception) is in place.
*/
#include "stylecreator.h"
#include "smlinestyle.h"
#include "scribusdoc.h"
#include "styleitem.h"
#include <QGridLayout>
#include <QTabWidget>
StyleCreator::StyleCreator(QWidget *parent, const char *name)
: ScDialog(parent, name)
{
setupUi(this);
connect(createButton, &QPushButton::clicked, this, &StyleCreator::slotOk);
}
StyleCreator::~StyleCreator()
{
delete styleItem;
delete layout;
}
void StyleCreator::setDoc(ScribusDoc *doc)
{
this->doc = doc;
}
void StyleCreator::loadType(StyleItem *styleType)
{
styleItem = styleType;
styleItem->setCurrentDoc(doc);
styleItem->reload();
styleItem->editMode(true);
auto widget = styleItem->widget();
widget->setParent(mainFrame);
// TODO layout should probably be a class member and be deleted in the destructor
layout = new QGridLayout(mainFrame);
layout->setContentsMargins(0, 0, 0, 0);
layout->addWidget(widget, 0, 0);
widget->resize(widget->minimumSizeHint());
widget->setEnabled(true);
widget->show();
// TODO: check what slotNameChanged(QString) does...
nameEdit->setText(styleItem->newStyle());
nameEdit->setEnabled(true);
nameEdit->setFocus();
nameEdit->selectAll();
// QString newName = fromParent.isNull() ?
// m_item->newStyle() : m_item->newStyle(fromParent);
}
void StyleCreator::loadType(const QString &name)
{
// TODO: i think that a good starting point is StyleManager::createNewStyle()
if (name == "line") {
styleItem = new SMLineStyle();
} else {
return;
}
loadType(styleItem);
}
void StyleCreator::slotOk()
{
this->close();
}
stylecreator.h (959 bytes)
/*
For general Scribus (>=1.3.2) copyright and licensing information please refer
to the COPYING file provided with the program. Following this notice may exist
a copyright and/or license notice that predates the release of Scribus 1.3.2
for which a new license (GPL+exception) is in place.
*/
#ifndef STYLECREATOR_H
#define STYLECREATOR_H
#include "ui_stylecreator.h"
#include "scdialog.h"
class ScribusDoc;
class StyleItem;
class QGridLayout;
class SCRIBUS_API StyleCreator : public ScDialog, Ui::StyleCreator
{
Q_OBJECT
public:
StyleCreator(QWidget *parent = nullptr, const char *name = "StyleCreator");
~StyleCreator();
void setDoc(ScribusDoc *doc);
/** StyleItem is one of the specialized type extending StyleItem */
void loadType(StyleItem *styleType);
void loadType(const QString &name);
private:
ScribusDoc *doc { nullptr };
StyleItem *styleItem { nullptr };
QGridLayout *layout { nullptr };
private slots:
void slotOk();
};
#endif
stylecreator.ui (3,189 bytes)
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>StyleCreator</class>
<widget class="QDialog" name="StyleCreator">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>506</width>
<height>432</height>
</rect>
</property>
<property name="windowTitle">
<string>Style Creator</string>
</property>
<widget class="QFrame" name="editFrame">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>485</width>
<height>368</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<layout class="QVBoxLayout">
<property name="spacing">
<number>9</number>
</property>
<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>
<layout class="QHBoxLayout" name="_2">
<item>
<widget class="QLabel" name="nameLabel">
<property name="text">
<string>Name:</string>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="nameEdit">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QFrame" name="mainFrame">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="horizontalLayoutWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>390</y>
<width>481</width>
<height>31</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="cancelButton">
<property name="text">
<string>C&ancel</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="createButton">
<property name="text">
<string>&Create</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>
|
|
|
@nitramr you have "picked up" this ticket... do you want to create a patch yourself or should i continue my effort and create a "real" patch? if i should continue, do you have any feebdack? |
|
|
I didn't have time now to check your patch. Feel free to provide something. Currently, I'm focusing implementing the new color picker + new tools required for this. |
|
|
@ale I solved it now by adding two new buttons (edit and new) Both buttons open the style manager and execute the action automatic, like a user would do. |
|
|
ok, nice! |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2024-01-28 17:44 | ale | New Issue | |
| 2024-01-28 17:44 | ale | File Added: create-line-style-first-draft.gif | |
| 2024-01-28 19:16 | nitramr | Assigned To | => nitramr |
| 2024-01-28 19:16 | nitramr | Status | new => assigned |
| 2024-01-29 19:27 | ale | Note Added: 0050953 | |
| 2024-01-29 19:27 | ale | File Added: create-line-style-draft.diff | |
| 2024-01-29 19:27 | ale | File Added: stylecreator.cpp | |
| 2024-01-29 19:27 | ale | File Added: stylecreator.h | |
| 2024-01-29 19:27 | ale | File Added: stylecreator.ui | |
| 2024-02-01 16:11 | ale | Note Added: 0050959 | |
| 2024-02-01 16:24 | nitramr | Note Added: 0050960 | |
| 2024-10-05 15:55 | nitramr | Note Added: 0051412 | |
| 2024-10-05 15:55 | nitramr | File Added: style_edit_new.png | |
| 2024-10-07 18:21 | ale | Note Added: 0051415 |