[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Dropdown Dialog mit den UI-Farben

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Dropdown Dialog mit den UI-Farben

Kai Rübsamen
Beiträge gesamt: 4649

15. Okt 2009, 21:00
Beitrag # 1 von 13
Bewertung:
(33451 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!

Ich würde gerne einen Dialog erstellen in dem der User die UIColors auswählen kann. Das Problem ist, das der Dialog eine stringList erwartet, meine UIColors aber lieber eine Number sein wollen.

Daher geht folgendes nicht:

Code
doc = app.activeDocument; 
myColors = [UIColors.TEAL, UIColors.ORANGE,UIColors.RED];
d = app.dialogs.add({name:"Auswählen der Ebenenfarbe"});
d.dialogColumns.add().staticTexts.add({staticLabel:"Farbe:"});

dd = d.dialogColumns.add().dropdowns.add({stringList:myColors});


Ich dachte man könnte viell. die Number in einen String umwandeln aber ein Test mit
Code
var a = String (myColors); 
a = UIColors.TEAL
a.constructor.name

ergibt immer noch Number?

> Wie muss ich das Script schreiben damit der User Teal, Orange, Red auswählen kann, intern aber mit den Angaben in myColors weitergearbeitet werden kann?
Gruß Kai Rübsamen
X

Dropdown Dialog mit den UI-Farben

Kai Rübsamen
Beiträge gesamt: 4649

15. Okt 2009, 21:18
Beitrag # 2 von 13
Beitrag ID: #411421
Bewertung:
(33389 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
So, Hans hat mir erklärt das ich zwei Listen erstellen muss:

1. die Liste die die Namen enthält die ich im Dialog auswählen lasse
2. die Liste mit der das Script weiterarbeiten kann

Demnach hab ich jetzt mal folgendes zusammengeschustert:

Code
doc = app.documents[0]; 
dialogNames = ["Türkis", "Orange", "Rot"];

d = app.dialogs.add({name:"Wähle eine Ebenenfarbe"});
// fügt eine Dialogspalte hinzu
d.dialogColumns.add().staticTexts.add({staticLabel:"Ebenenfarbe:"});

// fügt eine weitere Dialogspalte hinzu
dd = d.dialogColumns.add().dropdowns.add({stringList:dialogNames});

// zeigt die Dialogbox
myResult = d.show();

if (myResult == true){
var index = dd.selectedIndex;
d.destroy();
} else {
d.destroy();exit();
}

oldLayer = doc.activeLayer;
newLayer = doc.activeLayer.duplicate();
newLayer.name = "Neu";
colorValues = [UIColors.TEAL, UIColors.ORANGE, UIColors.RED];
newLayer.layerColor = colorValues[index];
oldLayer.visible = false;


Ist das umständlich oder macht man das so?
Gruß Kai Rübsamen


als Antwort auf: [#411417]
(Dieser Beitrag wurde von Kai Rübsamen am 15. Okt 2009, 21:26 geändert)

Dropdown Dialog mit den UI-Farben

Gerald Singelmann
  
Beiträge gesamt: 6234

15. Okt 2009, 23:11
Beitrag # 3 von 13
Beitrag ID: #411426
Bewertung:
(33362 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Der Ansatz ist genau richtig. Einige Details gefallen mir nicht.
Code
var doc = app.documents[0];  
var dialogNames = ["Türkis", "Orange", "Rot"];
var colorValues = [UIColors.TEAL, UIColors.ORANGE, UIColors.RED];

var d = app.dialogs.add({name:"Wähle eine Ebenenfarbe"});
// fügt eine Dialogspalte hinzu
d.dialogColumns.add().staticTexts.add({staticLabel:"Ebenenfarbe:"});

// fügt eine weitere Dialogspalte hinzu
var dd = d.dialogColumns.add().dropdowns.add({stringList:dialogNames});

// zeigt die Dialogbox
var myResult = d.show();

if (myResult == true){
var index = dd.selectedIndex;
d.destroy();
} else {
d.destroy();
exit();
}

var oldLayer = doc.activeLayer;
var newLayer = doc.activeLayer.duplicate();
newLayer.name = "Neu";
newLayer.layerColor = colorValues[index];
oldLayer.visible = false;


Gewöhn dir besser nicht an, Variablen ohn "var" einzuführen.
Wenn du zwei parallele Listen verwendet, deklariere sie am besten auch nebeneinander, damit klar ist, was da zusammenhängt.

Falls du keine Lust hast zu tippen, hier die volle Liste:
Code
ui_colors = [UIColors.LIGHT_BLUE, UIColors.RED, UIColors.GREEN, UIColors.BLUE, UIColors.YELLOW, UIColors.MAGENTA, UIColors.CYAN, UIColors.GRAY, UIColors.BLACK, UIColors.ORANGE, UIColors.DARK_GREEN, UIColors.TEAL, UIColors.TAN, UIColors.BROWN, UIColors.VIOLET, UIColors.GOLD, UIColors.DARK_BLUE, UIColors.PINK, UIColors.LAVENDER, UIColors.BRICK_RED, UIColors.OLIVE_GREEN, UIColors.PEACH, UIColors.BURGUNDY, UIColors.GRASS_GREEN, UIColors.OCHRE, UIColors.PURPLE, UIColors.LIGHT_GRAY, UIColors.CHARCOAL, UIColors.GRID_BLUE, UIColors.GRID_ORANGE, UIColors.FIESTA, UIColors.LIGHT_OLIVE, UIColors.LIPSTICK, UIColors.CUTE_TEAL, UIColors.SULPHUR, UIColors.GRID_GREEN, UIColors.WHITE ]; 


Edit 8.11.14: Hans Haesler macht mich grad drauf aufmerksam, dass in meinem Codeschnipsel aus ungeklärtem Grund zwei Farben fehlen, nämlich Gelb und Cyan. Das habe ich korrigiert.

Ergänzend hier auch noch der Code-Schnipsel, mit dem man sich die Liste selbst erstellen kann, ohne den Kram abzutippen. Die For-In Schleife kennt vielleicht auch noch nicht jeder...?

Code
$.write( "ui_colors = [" ); 
var uic = [];
for (var name in UIColors) {
uic.push( "UIColors." + name );
}
$.write( uic.join(", ") );
$.writeln( " ];");



als Antwort auf: [#411421]
(Dieser Beitrag wurde von Gerald Singelmann am 8. Nov 2014, 18:21 geändert)

Dropdown Dialog mit den UI-Farben

Kai Rübsamen
Beiträge gesamt: 4649

16. Okt 2009, 07:48
Beitrag # 4 von 13
Beitrag ID: #411431
Bewertung:
(33333 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für´s drübersehen und kommentieren. Das mit den Listen leuchtet mir ein.

Zitat Gewöhn dir besser nicht an, Variablen ohn "var" einzuführen.

Ohne jetzt hier eine Grundsatzdiskussion führen zu wollen:
Peter Kahrel hat mir erklärt das das Einführen von Variablen außerhalb von Funktionen mit "var" nicht notwendig ist.

Da ich noch an meinem Schreibstil feile, lasse ich seit zwei Wochen das "var" außerhalb von Funktionen sowie generell Sachen wie "myDoc", "myLayer" weg.

"myResult" habe ich verwendet weil dieses Beispiel mein erster Dialog war und es mir so doch klarer wurde.

edit: Hans hatte mir den Wink mit den zwei Listen schon vor längerer Zeit gegeben. Irgendwie hatte ich es aber auf diesem Weg bis gestern nicht hinbekommen und doch noch auf eine Lösung in einer Liste gehoffft.
Gruß Kai Rübsamen


als Antwort auf: [#411426]
(Dieser Beitrag wurde von Kai Rübsamen am 16. Okt 2009, 08:06 geändert)

Dropdown Dialog mit den UI-Farben

Martin Fischer
  
Beiträge gesamt: 12274

16. Okt 2009, 09:25
Beitrag # 5 von 13
Beitrag ID: #411449
Bewertung:
(33304 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Peter Kahrel hat mir erklärt, daß das Einführen von Variablen außerhalb von Funktionen
> mit "var" nicht notwendig ist.

Die Aussage von Peter überrascht mich.
Selbst wenn es nicht nötig ist, ist es so übersichtlicher.

Da halte ich es eher mit Gerald.
Wenn man var grundsätzlich verwendet, dann vergisst man es nicht, wenn's mal tatsächlich nötig ist. ;-)

Schadet's?

Viele Grüße
Martin




als Antwort auf: [#411431]

Dropdown Dialog mit den UI-Farben

Gerald Singelmann
  
Beiträge gesamt: 6234

16. Okt 2009, 09:39
Beitrag # 6 von 13
Beitrag ID: #411457
Bewertung:
(33302 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Ohne jetzt hier eine Grundsatzdiskussion führen zu wollen:

Nö, dazu sind wir auch alle nicht Informatiker genug.

Mir passier es nur sehr häufig, wenn ich eine Skizze erst mal global geschrieben habe, dass ich den Code nachträglich in eine Funktion schiebe.
Außerdem hilft es bei der Lesbarkeit, wenn ich weiß, wo eine Variable eingeführt wurde.

Aber each to his own.


als Antwort auf: [#411431]

Dropdown Dialog mit den UI-Farben

Kai Rübsamen
Beiträge gesamt: 4649

16. Okt 2009, 09:42
Beitrag # 7 von 13
Beitrag ID: #411458
Bewertung:
(33299 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Schadet's?

Nein.

Ich habe gestern ein Script von Marc Autret mit dieser Schreibweise gesehen:
var p, pItems = app.activeDocument.allPageItems;

Das fand ich bei wenigen Variablen auch recht übersichtlich.

edit: Gero mit der Lesbarkeit hapert es in der Tat in meiner Variante oder es ist einfach nur eine Frage der Gewöhnung ...
Gruß Kai Rübsamen


als Antwort auf: [#411449]
(Dieser Beitrag wurde von Kai Rübsamen am 16. Okt 2009, 09:44 geändert)

Dropdown Dialog mit den UI-Farben

Uwe Laubender
Beiträge gesamt: 4673

16. Okt 2009, 11:01
Beitrag # 8 von 13
Beitrag ID: #411466
Bewertung:
(33277 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, zusammen!
var oder nicht var, das ist hier die Frage.

Wenn ich in die JavaScript-Core-Dokumentation reinschaue, dann steht dort unter der Abteilung "delete" Folgendes:

Zitat delete

The delete operator deletes an object, an object's property, or an element at a specified index in an array.

delete y // returns false (cannot delete if declared with var)

Da ich bisher noch nicht im Zusammenhang mit Variablen mit "delete" gearbeitet habe, hier ein kleiner Test:
Code
var myDoc = app.activeDocument; 
var myContents = myDoc.textFrames[0].contents = "Text";
delete myContents;

//Ergebnis: false

Ohne var das Ganze:
Code
myContens = myDoc.textFrames[0].contents = "Text"; 

//Die Variable wird entsorgt, kann also später ohne Gefahr noch einmal neu definiert werden:
delete myContents;

//Ergebnis: true

Wir sollten das bei der Deklaration von Variablen im Hinterkopf behalten.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#411458]

Dropdown Dialog mit den UI-Farben

Peter Kahrel
Beiträge gesamt: 182

16. Okt 2009, 14:04
Beitrag # 9 von 13
Beitrag ID: #411526
Bewertung: ||
(33247 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
The first thing that comes to mind in these lines:

var doc = app.documents[0];
var dialogNames = ["Türkis", "Orange", "Rot"];
var colorValues = [UIColors.TEAL, UIColors.ORANGE, UIColors.RED];

is that doc, dialogNames, and coloValues are not variables, but constants. So it would seem better to decalre as such:

const doc = app.documents[0];
const dialogNames = ["Türkis", "Orange", "Rot"];
const colorValues = [UIColors.TEAL, UIColors.ORANGE, UIColors.RED];

The advantage of using const is that constants cannot be redefined, protecting the contents of the defined constants.

As to the readability of variable names, if you want to distinguish them from InDesign's properties and methods, then why use the same naming convention of space-less title case with initial lower case (as in dialogNames)? I would make sure that my variables are easily recognisable as my own. For example, for variable and function names I've been using dialog_names: underscores for spaces, no capitals. No confusion.

Regards,

Peter


als Antwort auf: [#411466]

Dropdown Dialog mit den UI-Farben

Hans Haesler
  
Beiträge gesamt: 5785

17. Okt 2009, 10:34
Beitrag # 10 von 13
Beitrag ID: #411571
Bewertung:
(33209 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Peter,

with due respect, but ...

Die Deklaration als Konstante schützt nur den Array als Ganzes: Dessen Name kann nicht benutzt werden, um ihm direkt einen anderen Inhalt zuzuweisen.

Aber: Die einzelnen Elemente können verändert werden. Und mit 'push()' oder 'pop()' auch deren Anzahl. Und auf diesem Umweg ebenfalls der Inhalt.

Code
const dialogNames = ["Türkis", "Orange", "Rot"];  
alert (dialogNames[2]);
dialogNames[2] = dialogNames[2] + "e";
alert (dialogNames[2]);

const colorValues = [UIColors.TEAL, UIColors.ORANGE, UIColors.RED];
alert (colorValues[2]);
colorValues[2] = colorValues[2] + 69640;
cv3 = colorValues.pop();
alert (cv3);
alert (colorValues.length);

Damit das RED nicht in SULPHUR geändert werden kann, müssten die Werte einzeln deklariert werden:

Code
const Türkis = UIColors.TEAL; 
const Orange = UIColors.ORANGE;
const Rot = UIColors.RED;
alert (Rot);

Rot = Rot + 69640;
alert (Rot);

Best regards, Hans


als Antwort auf: [#411526]

Dropdown Dialog mit den UI-Farben

Peter Kahrel
Beiträge gesamt: 182

17. Okt 2009, 10:44
Beitrag # 11 von 13
Beitrag ID: #411575
Bewertung:
(33206 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hello Hans,

Well, I had assumed that those two arrays weren't going to change. If they are going to change, then you're quite right, they should indeed not be declared as constants.

Regards,

Peter


als Antwort auf: [#411571]

Dropdown Dialog mit den UI-Farben

Hans Haesler
  
Beiträge gesamt: 5785

17. Okt 2009, 11:18
Beitrag # 12 von 13
Beitrag ID: #411578
Bewertung:
(33195 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hello Peter,

your assumption is correct: those arrays are not supposed to be changed.

I just wanted to demonstrate that an array, which is declared as a constant, can be redefined quite easily.

Best regards, Hans


als Antwort auf: [#411575]

Dropdown Dialog mit den UI-Farben

Peter Kahrel
Beiträge gesamt: 182

17. Okt 2009, 12:20
Beitrag # 13 von 13
Beitrag ID: #411582
Bewertung:
(33187 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ah -- I see what you mean now. Of course. The advantage of using const is still that (in this case) the names of the arrays cannot be accidentally used for something else. But you're right that const doesn't lock the contents of array constants in the way that it does string and number constants.

Thanks,

Peter


als Antwort auf: [#411578]
X

Aktuell

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
25.05.2020 - 29.05.2020

Experten teilen mit Dir ihr Wissen

Online
Montag, 25. Mai 2020, 11.00 Uhr - Freitag, 29. Mai 2020, 17.45 Uhr

Seminar

Möchtest du deine Online-Reichweite vergrössern und deine digitale Präsenz optimieren? Dann könnte dich der #DigitalMarketingSummit vom 25. bis 29. Mai 2020 interessieren. An 10 Sessions zu verschiedenen Themen erhältst du je drei sofort umsetzbare Tipps. Montag 25.05.2020 Facebook für Unternehmen LinkedIn Profil und mehr Dienstag 26.05.2020 Twitter für Unternehmen Inhalt & Funktion der Webseite überprüfen Mittwoch 27.05.2020 E-Commerce (mit WooCommerce) Grundlagen für die Digitalisierung Donnerstag 28.05.2020 Google Search Ads (SEA) Google My Business (Maps Eintrag) Freitag 29.05.2020 Xing für Unternehmen Storytelling mit Instagram

Teilnahme Gratis!!
Anmeldung unter: https://digital.rogerruckstuhl.ch/digital-marketing-summit

Ja

Organisator: Roger Ruckstuhl Digital Marketing

Kontaktinformation: Eric Mächler, E-Mailinfo AT ericmaechler DOT com

https://digital.rogerruckstuhl.ch/digital-marketing-summit/

Digital Marketing Summit für Selbständige, Einzelunternehmer Dienstleister & Serviceanbieter
Veranstaltungen
02.06.2020 - 03.06.2020

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Dienstag, 02. Juni 2020, 08.30 Uhr - Mittwoch, 03. Juni 2020, 17.00 Uhr

Kurs

Dieser Basic-Kurs ist der perfekte Einstieg in die Welt von InDesign, dem vielseitigen Layout-Programm. Sie lernen, wie InDesign aufgebaut ist, wie saubere Dokumente erstellt werden und wie man korrekt mit gelieferten InDesign-Projekten umgeht.

Preis: CHF 1'400.–
Dauer: 2 Tage

Nein

Organisator: Digicomp Academy AG

Kontaktinformation: Isil Günalp, E-Mailisil.guenalp AT digicomp DOT ch

https://www.digicomp.ch/weiterbildung/software-anwendungs-trainings/adobe-trainings/desktop-publishing/adobe-indesign-cc/kurs-indesign-cc-basic

Neuste Foreneinträge


Dateien kopieren

Tabulator Tastendruck automatisch einf�gen

Formatierung von eingef�gtem Text

Grobes ICC-Profil aus wenigen gemessenen Farben

Eizo vs. BenQ

Writer / Copywriter

Time Machine l�scht keine alten Dateien mehr

zwei Seiten vertauschen

Color Fonts f�r QuarkXPress, welches Format m�ssen sie haben?

Skalierungswert von Bildrahmen
medienjobs