Zeichenstile im Scripter anwenden

Antworten
Benutzeravatar
Julius
Beiträge: 351
Registriert: Di 10. Feb 2015, 23:54
Wohnort: Emsland

Zeichenstile im Scripter anwenden

Beitrag von Julius »

Hallo,

gibt es eine Möglichkeit, per Skript Zeichenstile auf einen Text anzuwenden? Ich habe nämlich den Verdacht, dass das nicht geht:

Code: Alles auswählen

import scribus
scribus.createText(40, 40, 90, 50, 'textrahmen')
scribus.setText('Dies ist ein Test-Text.', 'textrahmen')
scribus.selectObject('textrahmen')
scribus.selectText(14, 4, 'textrahmen')
# Absatzstil anwenden:
scribus.setStyle('testparastyle')
# Zeichenstil anwenden:
#scribus.setStyle('testcharstyle')
scribus.deselectAll()
Wenn ich den Absatzstil teste (testparastyle) wird der Absatzstil geändert, beim Zeichenstil bekomme ich hingegen die Meldung, dass der Stil nicht gefunden werden konnte, was darauf schließen lässt, dass das nicht funktioniert. Gibt es eine Lösung dafür?
Wenn nicht müsste es eine Art setCharStyle-Funktion geben, die von der Anwendung her in etwa wie setFont funktioniert (nur halt den Zeichenstil auf den Ausschnitt anwendet):

Code: Alles auswählen

import scribus
scribus.createText(40, 40, 90, 50, 'textrahmen')
scribus.setText('Dies ist ein Test-Text.', 'textrahmen')
scribus.selectObject('textrahmen')
scribus.selectText(14, 4, 'textrahmen')
scribus.setFont("Ubuntu Regular")
scribus.deselectAll()
Besteht die Chance, dass das noch in den 1.4er Zweig einfließt? – Mir ist klar, dass 1.6 mit dem neuen Scripter alles ändert (ich habe den noch nicht ausprobiert!). Aber je nach Implementierungsaufwand könnte es noch Sinn machen, das noch in 1.4er Zweig zu integrieren, zumal es noch längere Zeit bis zum Release von 1.6 dauern könnte. Ich bin zumindest schon soweit gekommen, herauszufinden, dass in der Datei scribus/plugins/scriptplugin/cmdobj.cpp im Scribus-Quellcode der Code für setStyle steckt. Ich verstehe grob, was der Code macht, habe aber nicht wirklich eine Anhnung, wie ich da eine setCharStyle-Funktion einbauen könnte...

Gruß
Julius
Scribus 1.4.7 und 1.5.4 (Entwicklungszweig) unter Ubuntu 18.04
Um Mithilfe beim Deutsch-sprachigen Scribus-Wiki wird gebeten!

Die aktuellen Versionen von Scribus:
Bild
Benutzeravatar
a.l.e
Beiträge: 730
Registriert: Di 3. Feb 2015, 12:56

Re: Zeichenstile im Scripter anwenden

Beitrag von a.l.e »

meine position: jede minute die für die pflege von 1.4 aufgewendet wird, wird nicht in 1.6 gesteckt...
Benutzeravatar
Laser
Beiträge: 201
Registriert: Fr 27. Nov 2015, 12:15
Wohnort: Ulm

Re: Zeichenstile im Scripter anwenden

Beitrag von Laser »

Aloha!
a.l.e hat geschrieben:meine position: jede minute die für die pflege von 1.4 aufgewendet wird, wird nicht in 1.6 gesteckt...
Was hat es eigentlich mit 1.4.7 svn auf sich?
Ist das nicht unnötige Arbeit für die Devs?

Gruß
Laser
Archlinux, Scribus 1.4.6, 1.4.7 und 1.5.3...
Laserblog
Benutzeravatar
a.l.e
Beiträge: 730
Registriert: Di 3. Feb 2015, 12:56

Re: Zeichenstile im Scripter anwenden

Beitrag von a.l.e »

ja, laser, mmn alles was nicht rein bug fixing, ist unnötige arbeit...

und auch bei den bugs würde ich konservativer sein...

aber ich mache zu wenig für scribus um darauf ein einfluss zu haben... irgendwann wird 1.6 bestimmt veröffentlicht...
Benutzeravatar
Julius
Beiträge: 351
Registriert: Di 10. Feb 2015, 23:54
Wohnort: Emsland

Re: Zeichenstile im Scripter anwenden

Beitrag von Julius »

Hallo a.l.e., Hallo Laser,

dann werde ich mal ein wenig basteln müssen (einfach mal alles „Paragraphs“ durch „Char“ bzw. „Character“ ersetzen (vorher den ganzen Quellcode per grep -r -i 'ApplyCharStyle' ./ durchsuchen, ob das Gewünschte auch existiert) und dann kompilieren).
Wenn ich nichts zu Stande bringen sollte, kann ich ja immer noch einen Featurequest erstellen...

Gruß
Julius
Scribus 1.4.7 und 1.5.4 (Entwicklungszweig) unter Ubuntu 18.04
Um Mithilfe beim Deutsch-sprachigen Scribus-Wiki wird gebeten!

Die aktuellen Versionen von Scribus:
Bild
Benutzeravatar
Julius
Beiträge: 351
Registriert: Di 10. Feb 2015, 23:54
Wohnort: Emsland

Re: Zeichenstile im Scripter anwenden

Beitrag von Julius »

Ich habe es hinbekommen, dass setStyle statt Absatzstile Zeichenstile anwendet, jetzt muss ich nur noch den Befehl setCharStyle anlegen! :D
Dank a.l.e.s Vorschlägen ging das Bauen fix.

Gruß
Julius
Scribus 1.4.7 und 1.5.4 (Entwicklungszweig) unter Ubuntu 18.04
Um Mithilfe beim Deutsch-sprachigen Scribus-Wiki wird gebeten!

Die aktuellen Versionen von Scribus:
Bild
Benutzeravatar
Julius
Beiträge: 351
Registriert: Di 10. Feb 2015, 23:54
Wohnort: Emsland

Re: Zeichenstile im Scripter anwenden

Beitrag von Julius »

setCharStyle ist drin und scheint zu tun, was es soll. Ich mache noch ein paar Tests und dann sollte ich mich mal schlau machen, wie ich einen Patch einreiche :D

Edit: Mist, ich sehe gerade, dass ich den Stil auf den ganzen Rahmen anwende...

Gruß
Julius
Scribus 1.4.7 und 1.5.4 (Entwicklungszweig) unter Ubuntu 18.04
Um Mithilfe beim Deutsch-sprachigen Scribus-Wiki wird gebeten!

Die aktuellen Versionen von Scribus:
Bild
Benutzeravatar
Julius
Beiträge: 351
Registriert: Di 10. Feb 2015, 23:54
Wohnort: Emsland

Re: Zeichenstile im Scripter anwenden

Beitrag von Julius »

Ich war wohl etwas zu optimistisch...

Ich habe den Scribus-Code folgendermaßen geändert:
  • in der Datei scribus/plugins/scriptplugin/cmobj.cpp die Zeilen 585 bis 648 dupliziert und dann darin überall itemSelection_ApplyParagraphStyle durch itemSelection_ApplyCharStyle, *scribus_setstyle durch *scribus_setcharstyle und setNewParStyle durch setNewCharStyle ersetzt (Funktionsnamen geraten und dann geschaut, ob sie auch existieren...)
  • in der Datei scribus/plugins/scriptplugin/cmdobj.h die Zeilen 204 bis 219 dupliziert und ebenfalls setstyle durch setcharstyle ersetzt
  • in der Datei scribus/plugins/scriptplugin/scriptplugin.cpp die Zeile {const_cast<char*>("setCharStyle"), scribus_setcharstyle, METH_VARARGS, tr(scribus_setcharstyle__doc__)}, ergänzt
Dann wird der Zeichenstil aber dummerweise auf den ganzen Textrahmen angewendet und nachträgliche Änderungen am Zeichenstil selbst werden nicht angewendet, was ja nun wirklich nicht Ziel der Sache war. Ich habe außerdem herausgefunden, dass itemSelection_ApplyCharStyle als zweiten, optionalen Eingabeparameter den ausgewählten Text (bzw. die Auswahl) erwartet, ich aber nicht weiß, wie ich den ermitteln soll. Außerdem ist die (im Code für setStyle gemachte) Unterscheidung zwischen einem ausgewählten und mehreren Objekten bei Zeichenstilen m.M.n. nicht nötig.
Aber ich finde es dennoch interessant, wie weit ich ohne Ahnung von C++ und Qt gekommen bin...

Ohne setCharStyle kann man nicht wirklich viel am Text ändern, Daten per Skript zu importieren und vernünftig zu formatieren ist nicht möglich: Ich kann das Dokument nicht manuell mit Python bearbeiten, weil ich dessen Pfad nicht kenne und der HTML-Import kann nicht über das Skript angestoßen werden und wendet außerdem keine Zeichenstile an.

Gruß
Julius
Scribus 1.4.7 und 1.5.4 (Entwicklungszweig) unter Ubuntu 18.04
Um Mithilfe beim Deutsch-sprachigen Scribus-Wiki wird gebeten!

Die aktuellen Versionen von Scribus:
Bild
Benutzeravatar
Julius
Beiträge: 351
Registriert: Di 10. Feb 2015, 23:54
Wohnort: Emsland

Re: Zeichenstile im Scripter anwenden

Beitrag von Julius »

Mittlerweile beherrscht Scribus das Anwenden von Zeichenstilen über den Scripter (ab 1.5.4). Ich habe nichts damit zu tun, die Entwickler haben wahrscheinlich selbst gemerkt, dass es wenig Sinn macht, wenn man Zeichenstile zwar über den Scripter erstellen, aber nicht auf Text anwenden kann...

Über ein paar andere Erweiterungen am Scripter habe ich neben den anderen Änderungen auch gebloggt: Scribus 1.4.7 und 1.5.4 erschienen
Scribus 1.4.7 und 1.5.4 (Entwicklungszweig) unter Ubuntu 18.04
Um Mithilfe beim Deutsch-sprachigen Scribus-Wiki wird gebeten!

Die aktuellen Versionen von Scribus:
Bild
Antworten