# -*- coding: ISO-8859-1 -*- """ capellaScript -- Copyright (c) 2015 Peter Becker >>> Farb-Ton ausgewählten Ton einfärben|| Bitte beachten Sie, dass bei Akkorden der gesamte Akkord in der selben Farbe eingefärbt wird, da die Farbe ein Attribur des Akkordes und nicht des Tons ist !|| Bei Problemen bitte eine Mail an peter_becker@freenet.de <<< Colored tone

coloring a selected tone.

Please take into consideration that with chords the whole chord receives the same color, because the color is an attribute of the chord and not of the single notes !

In case of problems please mail to peter_becker@freenet.de

Farb-Ton

Ausgewählten Ton einfärben

Bitte beachten Sie, dass bei Akkorden der gesamte Akkord in der selben Farbe eingefärbt wird, da die Farbe ein Attribut des Akkordes und nicht des Tons ist !

Bei Problemen bitte eine Mail an peter_becker@freenet.de

Tonen inkleuren

Geselecteerde toon inkleuren.

Houd er s.v.p. rekening mee dat bij akkoorden het gehele akkoord in dezelfde kleur wordt weergegeven, aangezien de kleur een attribuut van het akkoord is en niet van de afzonderlijke tonen !

Bij problemen graag een mail naar peter_becker@freenet.de

History: 19.02.15 - V 1.0.0 PB Erste Ausgabe 10.11.15 - V 1.0.1 PB Bugfix bei Akkorden, neue Option alle Töne mit Vorzeichen 20.12.15 - V 1.0.2 PB Bugfix falsche Farben wenn Vorzeichen horizontal verschoben ist, auch wenn kein Vorzeichen vorhanden 26.01.19 - V 1.0.3 WW Internationalisiert (en-de-nl) Option 0->2, 1->0, 2->1 (mit geänderten Text) """ english = { 'red' :'red', 'ora' :'orange', 'oraYel' :'orange yellow', 'yel' :'yellow', 'yelGrn' :'yellow green', 'grn' :'green', 'bluGrn' :'blue green', 'grnBlu' :'green blue', 'blu' :'blue', 'vio' :'violet', 'redVio' :'red violet', 'bla' :'black', 'darGry' :'dark gray', 'litGry' :'light gray', 'whi' :'white', 'col' :'Color', 'noAlt' :'No alteration', 'sharp' :'Sharp', '2Sharp' :'Double sharp', 'flat' :'Flat', '2Flat' :'Double flat', 'alt' :'Alteration', 'B' :'B', 'tone' :'Tone', 'colSelNote' :'The selected tone is coloured', 'colAltTones' :'All tones with alteration are coloured', 'allTonesBlack' :'All tones are coloured black', 'title' :'Colouring tones - Version : ', 'option' :'Option' } german = { 'red' :'rot', 'ora' :'orange', 'oraYel' :'orange-gelb', 'yel' :'gelb', 'yelGrn' :'gelb-grün', 'grn' :'grün', 'bluGrn' :'blau-grün', 'grnBlu' :'grün-blau', 'blu' :'blau', 'vio' :'violett', 'redVio' :'rot-violett', 'bla' :'schwarz', 'darGry' :'dunkelgrau', 'litGry' :'hellgrau', 'whi' :'weiss', 'col' :'Farbe', 'noAlt' :'kein Vorzeichen', 'sharp' :'Kreuz', '2Sharp' :'Doppel-Kreuz', 'flat' :'Be', '2Flat' :'Doppel-Be', 'alt' :'Vorzeichen', 'B' :'H', 'tone' :'Ton', 'colSelNote' :'ausgewählten Ton färben', 'colAltTones' :'alle Töne mit Vorzeichen färben', 'allTonesBlack' :'alle Töne schwarz färben', 'title' :'Farb-Ton - Version : ', 'option' :'Option' } dutch = { 'red' :'rood', 'ora' :'oranje', 'oraYel' :'oranje-geel', 'yel' :'geel', 'yelGrn' :'geel-groen', 'grn' :'groen', 'bluGrn' :'blauw-groen', 'grnBlu' :'groen-blauw', 'blu' :'blauw', 'vio' :'violet', 'redVio' :'rood-violet', 'bla' :'zwart', 'darGry' :'donkergrijs', 'litGry' :'lichtgrijs', 'whi' :'wit', 'col' :'Kleur', 'noAlt' :'Geen voorteken', 'sharp' :'Kruis', '2Sharp' :'Dubbelkruis', 'flat' :'Mol', '2Flat' :'Dubbelmol', 'alt' :'Voorteken', 'B' :'B', 'tone' :'Toon', 'colSelNote' :'De geselecteerde toon wordt ingekleurd', 'colAltTones' :'Alle tonen met voorteken worden ingekleurd', 'allTonesBlack' :'Alle tonen worden zwart ingekleurd', 'title' :'Tonen inkleuren - Versie : ', 'option' :'Optie' } try: setStringTable( ("en", english), ("de", german), ("nl", dutch)) except: def tr(s): return german[s] #-------------------------------------------------------------------- import xml.dom, tempfile from caplib.capDOM import ScoreChange from xml.dom.minidom import NodeList, Node, Element version = '1.0.3' doc = [] # parentNode von score Ton = ('C','D','E','F','G','A','B') Step = ('0','1','2','-1','-2') FarbenListeX=[('FF0000'),# rot ('FF8000'),# orange ('FFC000'),# orangegelb ('FFFF00'),# gelb ('80FF00'),# gelbgrün ('00E000'),# grün ('007080'),# blaugrün ('003090'),# grünblau ('0000FF'),# blau ('6000A0'),# violett ('E00050'),# rotviolett ('000000'),# schwarz ('808080'),# dunkelgrau ('C0C0C0'),# hellgrau ('FFFFFF')]# weiss def changeDoc(score): global selFarbe, selVorz, selTon, selOpt doc = score.parentNode step = '0' for system in score.getElementsByTagName('system'): for staff in system.getElementsByTagName('staff'): for voice in staff.getElementsByTagName('voice'): for noteObjects in voice.getElementsByTagName('noteObjects'): for chord in noteObjects.getElementsByTagName('chord'): color_set = '0' for heads in chord.getElementsByTagName('heads'): for head in heads.getElementsByTagName('head'): pitch = head.getAttribute('pitch')[0] #messageBox('Töne 1',str(pitch) + '\n' + str(Ton[selTon]) + '\n' + Step[selVorz]) step = '0' for alter in head.getElementsByTagName('alter'): if alter: if alter.hasAttribute('step'): step = alter.getAttribute('step') #messageBox('Töne 2',str(pitch) + '\n' + str(step) + '\n' + str(Ton[selTon]) + '\n' + Step[selVorz]) if Ton[selTon] == pitch and Step[selVorz] == step and color_set == '0' and selOpt == 0: #messageBox('Töne bunt',str(pitch)) olddisplays = chord.getElementsByTagName('display') if olddisplays: display = olddisplays[0] else: display = doc.createElement('display') chord.appendChild(display) display.setAttribute('color',FarbenListeX[selFarbe]) color_set = '1' elif selOpt == 1 and step <> '0': olddisplays = chord.getElementsByTagName('display') if olddisplays: display = olddisplays[0] else: display = doc.createElement('display') chord.appendChild(display) display.setAttribute('color',FarbenListeX[selFarbe]) color_set = '1' else: if selOpt == 2 and color_set == '0': #messageBox('Töne schwarz',str(pitch)) olddisplays = chord.getElementsByTagName('display') if olddisplays: display = olddisplays[0] else: display = doc.createElement('display') chord.appendChild(display) display.setAttribute('color',FarbenListeX[11]) def pqDialog(): global selFarbe, selVorz, selTon, selOpt placeholder1 = Label(' ',width=1) placeholder2 = Label(' ',width=1) placeholder3 = Label(' ',width=1) placeholder4 = Label(' ',width=1) radFarbe = Radio([tr('red'),tr('ora'),tr('oraYel'),tr('yel'),tr('yelGrn'),tr('grn'),tr('bluGrn'),tr('grnBlu'),tr('blu'),tr('vio'),tr('redVio'),tr('bla'),tr('darGry'),tr('litGry'),tr('whi')],text=tr('col'),value=0) radVorz = Radio([tr('noAlt'),tr('sharp'),tr('2Sharp'),tr('flat'),tr('2Flat')],text=tr('alt'),value=0) radTon = Radio(['C','D','E','F','G','A',tr('B')],text=tr('tone'),value=0) radOption = Radio([tr('colSelNote'),tr('colAltTones'),tr('allTonesBlack')],text=tr('option'),value=0) subboxFa = HBox([radFarbe,placeholder4],padding=0) subboxVo = HBox([radVorz,placeholder4],padding=0) subboxTo = VBox([radTon,placeholder4],padding=0) subboxOpt = VBox([radOption,placeholder4],padding=0) box1 = HBox([subboxVo,subboxTo,subboxFa],padding=1) box2 = HBox([subboxOpt,placeholder4],padding=4) mainbox = VBox([box1,box2]) dlg = Dialog(tr('title') + version, mainbox) if dlg.run(): selFarbe = int(radFarbe.value()) selVorz = int(radVorz.value()) selTon = int(radTon.value()) selOpt = int(radOption.value()) return True else: return False # Hauptprogramm: from caplib.capDOM import ScoreChange import tempfile class ScoreChange(ScoreChange): def changeScore(self, score): changeDoc(score) if activeScore(): if pqDialog(): global tempInput, tempOutput activeScore().registerUndo("Farb-Ton") tempInput = tempfile.mktemp('.capx') tempOutput = tempfile.mktemp('.capx') activeScore().write(tempInput) ScoreChange(tempInput, tempOutput) activeScore().read(tempOutput) os.remove(tempInput) os.remove(tempOutput)