# -*- coding: ISO-8859-1 -*- """ capellaScript -- 12.10.2005 Andreas Herzog >>> Guitarrero Mit diesem Skript kann man in capella Gitarrentabulatur erstellen.| | Achtung: die Bezeichnung der Zeile der Gitarrentabulatur darf nicht verändert werden, sonst greift das Skript nicht mehr. | Hinweis: Anmerkungen, Fehler und Frage bitte im Forum von Klaus Meglitsch posten! | Version 1.7B | | Dank an: Brigitte Wahl, Thomas Rupp, Frank Rothe und Jørgen alias Bassklampfe | <<< # Version 1.0 = Ursprungsversion # Version 1.1 = Bequeme Font-Auswahl-Möglichkeit integriert # Version 1.1b= Nachbearbeitungsdialoge werden nun noch gezielter angesteuert, Speicherung der Auswahl bei oktavierendem Schlüssel # Version 1.2 = Bearbeitung der gesamten Partitur möglich, unsichtbare Noten werden klein formatiert (Platzersparnis) # Version 1.2a= Fehlerkorrektur: neue Routine für Zeitberechnung eingefügt # Version 1.2b= Fehlerkorrektur: Problem mit anderen Taktarten behoben # Version 1.2c= Fehlerkorrektur: Problem mit der Prozedur getFonts behoben # Version 1.3 = Änderungen an der Dialog-Oberfläche, unfreiwilliges Löschen des Tab-Schlüssels verhindert # Version 1.4 = Neue Funktion: Autoerkennen von römischen Ziffern (auch mit B) als Lagenwechsel # Version 1.5 = ausführliche Hilfedatei wird mit angeboten, kleine Korrektur im Einzelkorrekturdialog # Version 1.6 = bessere Auflösung von Noten, Schlüssel wird genauer gezeichnet, Problem mit B-Akkordangaben beseitigt, # Absturz beim Fehlen der Zeile bei Bearbeitung aller Systeme beseitigt, Fehler im Bearbeitungsmodus gelöst, # es können nun im Einzelkorrekturdialog Schlüssel eingefügt werden # Version 1.6a= Fehlerhafte (leere) Textfelder führen nicht mehr zum Abbruch des Skripts # Version 1.7= Unterstüzung von 7saitigen Gitarren (zZt noch mit diversen Einschränkungen) # Version 1.7a= Doppelsaiten-Bearbeitung nun auch bei 7saitigen Gitarren möglich, reiner TAB-Schlüssel möglich # Version 1.7b= Kleine Bugbereinigung in der Nachbearbeitungsfunktion """ import xml.dom import string import tkFont import Tkinter from xml.dom.minidom import NodeList Saiten = ['e','h','g','D','A','E','H'] SaitenHoehe = ['3.5','2.5','1.5','0.5','-0.5','-1.5','-2.5'] NeueStimmung = [[],[],[]] FontList = [] Stimmung = [] StimmungEADGBE= [['Standard Stimmung (6)'],[28,33,38,43,47,52,100],['E','A','D','g','h','e']] StimmungBEADGBE= [['Standard Stimmung (7)'],[23,28,33,38,43,47,52,100],['H','E','A','D','g','h','e']] StimmungDADGBE= [['Drop-D Stimmung'],[26,33,38,43,47,52,100], ['D','A','D','g','h','e']] StimmungDADGBD= [['Double Drop-D Stimmung'],[26,33,38,43,47,50,100],['D','A','D','g','h','d']] StimmungCGDAEG= [['New Standard Stimmung'],[24,31,38,45,52,55,100],['C','G','D','a','e','g']] StimmungDADfisad=[['Open-D Stimmung'],[26,33,38,42,45,50,100],['D','A','D','f#','a','d']] StimmungDADfad=[['Open-D minor Stimmung'],[26,33,38,41,45,50,100],['D','A','D','f','a','d']] StimmungEADgcf=[['Quartenstimmung'],[28,33,38,43,48,53,100],['E','A','D','g','c','f']] StimmungEBEAbBE=[['Open-E Stimmung'],[28,35,40,44,47,52,100],['E','H','E','as','h','e']] StimmungDGDGBE=[['G6 Stimmung'],[26,31,38,43,47,52,100],['D','G','D','g','h','e']] StimmungDGDGBD=[['Open G Stimmung'],[26,31,38,43,47,50,100],['D','G','D','g','h','d']] StimmungDGDGBbD=[['Open G minor Stimmung'],[26,31,38,43,46,50,100],['D','G','D','g','b','e']] StimmungEAEACisE=[['Open A Stimmung'],[28,33,40,45,49,52,100],['E','A','E','a','c#','e']] StimmungEAEACE=[['Open A minor Stimmung'],[28,33,40,45,48,52,100],['E','A','E','a','c','e']] StimmungCGCGAE=[['C6 Stimmung'],[24,31,36,43,45,52,100],['C','G','C','g','a','e']] StimmungCGCGCE=[['Open-C Stimmung'],[24,31,36,43,48,52,100],['C','G','C','g','c','e']] StimmungCGDGAD=[['Low-C Stimmung'],[24,31,38,43,45,50,100],['C','G','D','g','a','d']] StimmungEADGGG=[['Standard Bass-Stimmung (4)'],[16,21,26,31,31,31,100],['E','A','D','G','G','G']] StimmungBEADGG=[['Standard Bass-Stimmung (5)'],[11,16,21,26,31,31,100],['H','E','A','D','G','G']] Stimmungen = [StimmungEADGBE,StimmungBEADGBE, StimmungDADGBE,StimmungDADGBD,StimmungCGDAEG, StimmungDADfisad,StimmungDADfad,StimmungEADgcf,StimmungEBEAbBE, StimmungDGDGBE, StimmungDGDGBD, StimmungDGDGBbD, StimmungEAEACisE, StimmungEAEACE, StimmungCGCGAE, StimmungCGCGCE, StimmungCGDGAD,StimmungEADGGG,StimmungBEADGG] Stimmungen2 = [[],[],[]] Toene = [['C2-','B1#','D2s'],['C2#','B1x','D2b'],['D2-','C2x','E2s'],['D2#','F2s','E2b'],['E2-','D2x','F2b'],['F2-','E2#','G2s'],['F2#','E2x','G2b'],['G2-','F2x','A2s'],['G2#','---','A2b'],['A2-','G2x','B2s'],['A2#','C3s','B2b'],['B2-','A2x','C3b'],['C3-','B2#','D3s'],['C3#','B2x','D3b'],['D3-','C3x','E3s'],['D3#','F3s','E3b'],['E3-','D3x','F3b'],['F3-','E3#','G3s'],['F3#','E3x','G3b'],['G3-','F3x','A3s'],['G3#','---','A3b'],['A3-','G3x','B3s'],['A3#','C4s','B3b'],['B3-','A3x','C4b'],['C4-','B3#','D4s'],['C4#','B3x','D4b'],['D4-','C4x','E4s'],['D4#','F4s','E4b'],['E4-','D4x','F4b'],['F4-','E4#','G4s'],['F4#','E4x','G4b'],['G4-','F4x','A4s'],['G4#','---','A4b'],['A4-','G4x','B4s'],['A4#','C5s','B4b'],['B4-','A4x','C5b'],['C5-','B4#','D5s'],['C5#','B4x','D5b'],['D5-','C5x','E5s'],['D5#','F5s','E5b'],['E5-','D5x','F5b'],['F5-','E5#','G5s'],['F5#','E5x','G5b'],['G5-','F5x','A5s'],['G5#','---','A5b'],['A5-','G5x','B5s'],['A5#','C6s','B5b'],['B5-','A5x','C6b'],['C6-','B5#','D6s'],['C6#','B5x','D6b'],['D6-','C6x','E6s'],['D6#','F6s','E6b'],['E6-','D6x','F6b'],['F6-','E6#','G6s'],['F6#','E6x','G6b'],['G6-','F6x','A6s'],['G6#','---','A6b'],['A6-','G6x','B6s'],['A6#','C7s','B6b'],['B6-','A6x','C7b'],['C7-','B6#','D7s'],['C7#','B6x','D7b'],['D7-','C7x','E7s'],['D7#','F7s','E7b'],['E7-','D7x','F7b'],['F7-','E7#','G7s'],['F7#','E7x','G7b'],['G7-','F7x','A7s'],['G7#','---','A7b'],['A7-','G7x','B7s'],['A7#','C8s','B7b'],['B7-','A7x','C8b']] Buende = [' ','0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26'] CapoBuende = ['ohne', '1.Bund','2.Bund','3.Bund','4.Bund','5.Bund','6.Bund','7.Bund','8.Bund','9.Bund','10.Bund','11.Bund','12.Bund'] Lagen = ['I.Lage','II.Lage','III.Lage','IV.Lage','V.Lage','VI.Lage','VII.Lage','VIII.Lage','IX.Lage','X.Lage','XI.Lage','XII.Lage','XIII.Lage','XIV.Lage','XV.Lage','XVI.Lage','XVII.Lage','XVIII.Lage','XIX.Lage','XX.Lage'] DoppelSaiten = [[],[],[],[],[],[],[]] SimpleSaiten = [[],[],[],[],[],[],[]] NotenlinienCode = ['__||||_____','__|||||____','__||||||___','__|||||||__'] LagenWechsel = [] LagenRoemisch = ['I','II','III','IV','V','VI','VII','VIII','IX','X','XI','XII','XIII','XIV','XV','XVI','XVII','XVIII','XIX','XX'] Daumensatz = ['D','M','Z','R','p','i','m','a'] # doc = [] # parentNode von score def latin1_e(u): return u.encode('Latin-1') def latin1_d(u): return u.decode('Latin-1') class settings: def __init__(self): self.Leer = 0 defaults = settings() dlgSet = settings() options = ScriptOptions() opt = options.get() def Test(text): messageBox('Test',str(text)) class settings: def __init__(self): self.Lage = 1.6 self.LeerSaiten = 1 self.StimmungsWahl = 0 self.HalsRichtung = 2 self.UserStimmungen = '' self.SchluesselTyp = 0 self.CapoBund = 0 self.GitarreroSchriftgroesse=5 self.GitarreroSchriftFett = 0 self.GittareroGitarreroSchriftKursiv = 0 self.GittareroGitarreroSchriftart ='TimesNewRoman' self.GitarreroAnzahlSaiten = 2 self.GitarreroOktaviert = 0 self.LagenAutomatik = 1 self.LagenAutomatikSchwelle = 4 def changeCapo(Stimmung, CapoBund, GitarreroOktaviert): i = 0 while i < len(Stimmung): Stimmung[i] = Stimmung[i] + CapoBund - (12 * GitarreroOktaviert) i +=1 return Stimmung def encodeUserStimmung(name, zahlen,bezeichnungen): KompletteStimmung = '' Stimmungsname = name.replace(' ','~') Stimmungszahlen = '' Stimmungsbezeichnungen = '' Stimmungsname.replace(' ','~') i=0 while (len(name) + i) <15: Stimmungsname += '~' i +=1 j=0 while j<6: if zahlen[j] < 10: zahl = '0' + str(zahlen[j]) else: zahl = str(zahlen[j]) Stimmungszahlen += zahl Stimmungsbezeichnungen += bezeichnungen[j].replace(' ','~') j+=1 KompletteStimmung = Stimmungsname + Stimmungszahlen + Stimmungsbezeichnungen return KompletteStimmung def decodeUserStimmung(UserStimmungenCode): EinzelneStimmungen = [] AnwenderStimmungen = [] AnwenderZahlenStr = [] AnwenderZahlen = [] AnwenderZahlenTemp = [] AnwenderBezeichnungenTemp =[] AnwenderBezeichnungen = [] i = 0 while (i*45) < len(UserStimmungenCode): Start = i * 45 Ende = (i+1) *45 EinzelneStimmungen += [UserStimmungenCode[Start:Ende]] i+=1 j = 0 while j < len(EinzelneStimmungen): AnwenderStimmungen += [EinzelneStimmungen[j][0:15].replace('~',' ')] AnwenderZahlenTemp += [EinzelneStimmungen[j][15:27]] AnwenderBezeichnungenTemp += [EinzelneStimmungen[j][27:45]] Zahl1Temp = AnwenderZahlenTemp[j][0:2] Zahl2Temp = AnwenderZahlenTemp[j][2:4] Zahl3Temp = AnwenderZahlenTemp[j][4:6] Zahl4Temp = AnwenderZahlenTemp[j][6:8] Zahl5Temp = AnwenderZahlenTemp[j][8:10] Zahl6Temp = AnwenderZahlenTemp[j][10:12] Bezeichnung1Temp = AnwenderBezeichnungenTemp[j][0:3].replace('~',' ') Bezeichnung2Temp = AnwenderBezeichnungenTemp[j][3:6].replace('~',' ') Bezeichnung3Temp = AnwenderBezeichnungenTemp[j][6:9].replace('~',' ') Bezeichnung4Temp = AnwenderBezeichnungenTemp[j][9:12].replace('~',' ') Bezeichnung5Temp = AnwenderBezeichnungenTemp[j][12:15].replace('~',' ') Bezeichnung6Temp = AnwenderBezeichnungenTemp[j][15:18].replace('~',' ') AnwenderZahlenInt = [string.atoi(Zahl1Temp),string.atoi(Zahl2Temp),string.atoi(Zahl3Temp),string.atoi(Zahl4Temp),string.atoi(Zahl5Temp),string.atoi(Zahl6Temp)] AnwenderBez = [Bezeichnung1Temp,Bezeichnung2Temp,Bezeichnung3Temp,Bezeichnung4Temp,Bezeichnung5Temp,Bezeichnung6Temp] AnwenderZahlen += [AnwenderZahlenInt] AnwenderBezeichnungen += [AnwenderBez] j+=1 Stimmungen2[0] += AnwenderStimmungen Stimmungen2[1] += AnwenderZahlen Stimmungen2[2] += AnwenderBezeichnungen def getOptions(): global Lage, LeerSaiten, Stimmung, StimmungsWahl, HalsRichtung, UserStimmungen, SchluesselTyp, CapoBund global GitarreroSchriftgroesse, GitarreroSchriftFett, GitarreroSchriftKursiv, GitarreroSchriftart, GitarreroAnzahlSaiten global GitarreroOktaviert, LagenAutomatik,LagenAutomatikSchwelle, StimmungsWahl UserStimmungen = opt.get('UserStimmungen',str(UserStimmungen)) Lage = eval(opt.get('Lage',str(Lage))) LeerSaiten = eval(opt.get('LeerSaiten',str(LeerSaiten))) StimmungsWahl = eval(opt.get('StimmungsWahl',str(StimmungsWahl))) HalsRichtung = eval(opt.get('HalsRichtung',str(HalsRichtung))) SchluesselTyp = eval(opt.get('SchluesselTyp',str(SchluesselTyp))) LagenAutomatik = eval(opt.get('LagenAutomatik',str(LagenAutomatik))) LagenAutomatikSchwelle = eval(opt.get('LagenAutomatikSchwelle',str(LagenAutomatikSchwelle))) CapoBund = eval(opt.get('CapoBund',str(CapoBund))) GitarreroSchriftgroesse = eval(opt.get('GitarreroSchriftgroesse',str(GitarreroSchriftgroesse))) GitarreroSchriftFett = eval(opt.get('GitarreroSchriftFett',str(GitarreroSchriftFett))) GitarreroSchriftKursiv = eval(opt.get('GitarreroSchriftKursiv',str(GitarreroSchriftKursiv))) GitarreroSchriftart = opt.get('GitarreroSchriftart',str(GitarreroSchriftart)) GitarreroAnzahlSaiten = eval(opt.get('GitarreroAnzahlSaiten',str(GitarreroAnzahlSaiten))) GitarreroOktaviert = eval(opt.get('GitarreroOktaviert',str(GitarreroOktaviert))) decodeUserStimmung(UserStimmungen) def setOptions(): global dlgSet opt.update(dict(Lage= str(Lage), LeerSaiten = str(LeerSaiten), StimmungsWahl = str(StimmungsWahl), HalsRichtung = str(HalsRichtung), SchluesselTyp = str(SchluesselTyp), LagenAutomatik = str(LagenAutomatik), LagenAutomatikSchwelle = str(LagenAutomatikSchwelle), CapoBund = str(CapoBund), GitarreroSchriftgroesse = str(GitarreroSchriftgroesse), GitarreroSchriftKursiv = str(GitarreroSchriftKursiv), GitarreroSchriftFett = str(GitarreroSchriftFett), GitarreroSchriftart = str(GitarreroSchriftart), GitarreroAnzahlSaiten = str(GitarreroAnzahlSaiten), GitarreroOktaviert = str(GitarreroOktaviert) )) options.set(opt) def setOptions2(): global dlgSet UserStimmungen = '' i = 0 while i < len(Stimmungen2[0]): UserStimmungen += encodeUserStimmung(Stimmungen2[0][i], Stimmungen2[1][i], Stimmungen2[2][i]) i += 1 opt.update(dict(UserStimmungen = str(UserStimmungen))) options.set(opt) def addElementNode(el,tagName): # add new Node to el if Node "tagName" does not exist # otherwise return the existing Node global doc childs = el.childNodes for n in range(childs.length): if childs[n].nodeType ==childs[n].ELEMENT_NODE and childs[n].tagName == tagName: return childs[n] newChild = doc.createElement(tagName) el.appendChild(newChild) return newChild def addNewElementNode(el,tagName): # add new Node with tagName "tagName" to el global doc newChild = doc.createElement(tagName) el.appendChild(newChild) return newChild def getFonts(): root = Tkinter.Tk() FontListT= tkFont.families() FontList = [] FontList2 = [] i=0 while i < len(FontListT): try: FontList += [latin1_e(FontListT[i])] except: FontList += ['FEHLER'] i+=1 j=0 while j < len(FontList): FontName = FontList[j] FontList[j] = FontName[0].upper() + FontName[1:] j+=1 FontList.sort() return FontList def setNewKey(score): sel = getCursor() if sel == None: # return else: system = score.getElementsByTagName('system')[sel[0]] systemSel = system staff = system.getElementsByTagName('staff')[sel[1]] voice = staff.getElementsByTagName('voice')[sel[2]] noteObject = voice.getElementsByTagName('noteObjects')[0] objList = getElementObjects(noteObject.childNodes) if objList.length <= sel[3]: return obj = objList[sel[3]] setKey(obj) def getDialogValues1(score): global NurLoeschen, SchluesselSetzen, Stimmung, Lage, LeerSaiten, StimmungsWahl, StimmungsSaiten, HalsRichtung, AlleSysteme global SchluesselTyp, IntelligenteNummern, GitarreroOktaviert, CapoBund, GitarreroAnzahlSaiten,GitarreroOktaviert, LagenAutomatik,LagenAutomatikSchwelle global concurrenceIntelligent StimmungsBezeichnungen = [] i = 0 while i < len(Stimmungen): StimmungsBezeichnungen += Stimmungen[i][0] StimmungsBezeichnungen[i] += ' ' j = 0 while j < len(Stimmungen[i][2]): StimmungsBezeichnungen[i] += str(Stimmungen[i][2][j]) j+= 1 i+= 1 StimmungsBezeichnungen += Stimmungen2[0] lableer1 = Label('Aus System mit Cursor Kopie erstellen.', width = 2) labSaitenAnzahl = Label('Saitenanzahl:', width = 2) labCapodaster = Label('Capodaster:', width = 0) labBassa = Label(' oktavierenden Violinschlüssel', width = 0) LagenAutomatikCheck = CheckBox('Lagen automatisch erkennnen, Leersaiten bis:', value=LagenAutomatik) SchluesselSetzenCheck = CheckBox('Schlüssel generieren', value=1) LeerSaitenCheck = CheckBox('Mit Leersaiten spielen', value = LeerSaiten) StemRadio = Radio(['Hälse nicht beeinflussen','Hälse nach unten ausrichten','Hälse unsichtbar'], value = HalsRichtung) AlleSystemeRadio = Radio(['nur System mit Cursor','alle Systeme'], text ='Zeile erstellen in:', value = AlleSysteme) AktionRadio = Radio(['Stimmung verändern','vorhandene Stimmung nutzen','nur Schlüssel setzen','Fontsetup'], text = 'Aktion', value = 1) SchluesselRadio = Radio(['Buchstaben','Zahlen','TAB'], text = 'Schlüsseltyp', value = 0) #NurLoeschenCheck = CheckBox('nur Löschen', value=0) concurrenceIntelligentCheck = CheckBox('Intelligent', value=1) IntelligenteNummernRadio = Radio(['einfärben ','verhindern', 'ignorieren'],value=0) KeyBassa = CheckBox('Notenzeile verwendet oktavierenden Violinschlüssel', value=GitarreroOktaviert) GitarreroAnzahlSaitenBox = ComboBox(['4 Saiten','5 Saiten','6 Saiten','7 Saiten'], value = GitarreroAnzahlSaiten, width=12) StimmungBox = ComboBox(StimmungsBezeichnungen, value = StimmungsWahl, width=32) LageBox = ComboBox(Lagen, value = Lage, width=32) CapodasterBox = ComboBox(CapoBuende, value = CapoBund, width=14) LagenAutomatikSchwelleBox = ComboBox(Lagen, value = LagenAutomatikSchwelle, width=9) vbox01= VBox([SchluesselSetzenCheck,SchluesselRadio, ], padding = 8) vbox02= VBox([IntelligenteNummernRadio,concurrenceIntelligentCheck], padding = 8) vbox03= HBox([AktionRadio,AlleSystemeRadio], padding = 8) hbox00a= HBox([vbox01], text='Schlüssel',padding = 8) hbox00b= HBox([vbox02], text='Doppelte Saitenbelegung',padding = 8) hbox01= HBox([hbox00a, hbox00b],padding = 8) hbox02= HBox([labCapodaster,CapodasterBox], padding = 5) hbox03= HBox([labSaitenAnzahl,GitarreroAnzahlSaitenBox], padding = 5) vbox04 = VBox([hbox03,StimmungBox, LageBox,hbox02,LeerSaitenCheck], padding = 8) hbox04 = HBox([vbox04], padding = 8, text = 'Instrument / Lage') hbox05 = HBox([LagenAutomatikCheck, LagenAutomatikSchwelleBox], padding = 4) vbox04= VBox([vbox03, hbox04, hbox01,KeyBassa,hbox05],padding = 8) dialogbox= VBox([vbox04], padding = 15) dlg = Dialog('Bitte wählen: ', dialogbox) if dlg.run(): concurrenceIntelligent = concurrenceIntelligentCheck.value() LagenAutomatikSchwelle = LagenAutomatikSchwelleBox.value() LagenAutomatik = LagenAutomatikCheck.value() SchluesselSetzen = SchluesselSetzenCheck.value() Lage = LageBox.value() StimmungsWahl = StimmungBox.value() LeerSaiten = LeerSaitenCheck.value() HalsRichtung = 0#StemRadio.value() SchluesselTyp = SchluesselRadio.value() IntelligenteNummern =IntelligenteNummernRadio.value() CapoBund = CapodasterBox.value() GitarreroOktaviert = KeyBassa.value() GitarreroAnzahlSaiten = GitarreroAnzahlSaitenBox.value() AlleSysteme= AlleSystemeRadio.value() Aktion = AktionRadio.value() if (GitarreroAnzahlSaiten == 3) and (StimmungsWahl <> 1): messageBox('Fehler','Gittarero kann zur Zeit nur eine Stimmung für 7saitige Gitarren bearbeiten. Bitte Stimmung Nr.2 wählen.') return False if (GitarreroAnzahlSaiten == 3) and (IntelligenteNummern < 2): #messageBox('Fehler','Gittarero kann zZt. doppelte Saitenbelegungen bei 7saitigen Gitarren nur ignorieren') #IntelligenteNummern = 2 eins=1 if Aktion == 0: StimmungsAktion = getDialogValues9() if StimmungsAktion <> 4: if StimmungsAktion == 0: getDialogValues5(-1) if (StimmungsAktion == 1) and (len(Stimmungen2[0]) > 0): getDialogValues6() if (StimmungsAktion == 2) and (len(Stimmungen2[0]) > 0): getDialogValues7a() if (StimmungsAktion == 1) and (len(Stimmungen2[0]) == 0): messageBox('Fehler','Sie haben noch keine Stimmung eingegeben') if (StimmungsAktion == 2) and (len(Stimmungen2[0]) == 0): messageBox('Fehler','Sie haben noch keine Stimmung eingegeben') if Aktion == 1: if StimmungsWahl = len(Stimmungen): StimmungsWahl2 = StimmungsWahl - len(Stimmungen) Stimmung = Stimmungen2[1][StimmungsWahl2] Stimmung.append(100) StimmungsSaiten = Stimmungen2[2][StimmungsWahl2] Stimmung = changeCapo(Stimmung, CapoBund, GitarreroOktaviert) return True if Aktion == 3: getDialogValues8(score) else: return False def getDialogValues2(score): global Saite1, Saite2, Saite3, Saite4, Saite5, Saite6, Saite7, StimmungsWahl, StimmungsSaiten AuswahlMenge = Buende + Daumensatz clefCheck = CheckBox('nur Schlüssel einfügen', value=0) StimmungsSaiten = Stimmungen[StimmungsWahl][2] if len(StimmungsSaiten) > 6: lab7 = Label((StimmungsSaiten[6]+':'), width = 2) else: lab7 = '-' Saite7 = ' ' lab1 = Label((StimmungsSaiten[5]+':'), width = 2) lab2 = Label((StimmungsSaiten[4]+':'), width = 2) lab3 = Label((StimmungsSaiten[3]+':'), width = 2) lab4 = Label((StimmungsSaiten[2]+':'), width = 2) lab5 = Label((StimmungsSaiten[1]+':'), width = 2) lab6 = Label((StimmungsSaiten[0]+':'), width = 2) BundBox1 = ComboBox(AuswahlMenge, value=Saite1, width=10) BundBox2 = ComboBox(AuswahlMenge, value=Saite2, width=10) BundBox3 = ComboBox(AuswahlMenge, value=Saite3, width=10) BundBox4 = ComboBox(AuswahlMenge, value=Saite4, width=10) BundBox5 = ComboBox(AuswahlMenge, value=Saite5, width=10) BundBox6 = ComboBox(AuswahlMenge, value=Saite6, width=10) BundBox7 = ComboBox(AuswahlMenge, value=Saite7, width=10) hbox01= HBox([lab1, BundBox1],padding = 0) hbox02= HBox([lab2, BundBox2],padding = 0) hbox03= HBox([lab3, BundBox3],padding = 0) hbox04= HBox([lab4, BundBox4],padding = 0) hbox05= HBox([lab5, BundBox5],padding = 0) hbox06= HBox([lab6, BundBox6],padding = 0) hbox07= HBox([lab7, BundBox7],padding = 0) if len(StimmungsSaiten) > 6: dialogbox= VBox([ hbox07, hbox01, hbox02, hbox03, hbox04, hbox05, hbox06, clefCheck], padding = 12) else: dialogbox= VBox([hbox01, hbox02, hbox03, hbox04, hbox05, hbox06, clefCheck], padding = 12) dlg = Dialog('Bitte wählen: ', dialogbox) if dlg.run(): #NurLoeschen = NurLoeschenCheck.value() Saite1 = BundBox1.value() Saite2 = BundBox2.value() Saite3 = BundBox3.value() Saite4 = BundBox4.value() Saite5 = BundBox5.value() Saite6 = BundBox6.value() Saite7 = BundBox7.value() if clefCheck.value() == 1: setNewKey(score) return False return True else: return False def getDialogValues3(): global alleSystemeJA, AlleSysteme result = -1 if AlleSysteme == 0: result = messageBox('ACHTUNG System Nr.'+ str(systemCount) , 'Sie sind dabei, die Zeile neu zu konvertieren. Eventuelle Änderungen gehen dabei verloren. Wollen Sie dies wirklich?', img=3, buttons=2, defBtn=0) if AlleSysteme == 1 and alleSystemeJA == 0: result = messageBox('ACHTUNG', 'Sie sind dabei, alle Zeile neu zu konvertieren. Eventuelle Änderungen gehen dabei verloren. Auch folgende Systeme mit Tabulatur werden neu berechnet. Wollen Sie dies wirklich?', img=3, buttons=2, defBtn=0) if result == 2: alleSystemeJA = 1 if result == 3: alleSystemeJA = 2 if result == 2 or alleSystemeJA == 1: return True elif alleSystemeJA == 2: return False else: return False def getDialogValues4(): global NurLoeschen, Lage, LeerSaiten, Stimmung, StimmungsWahl, CapoBund,GitarreroOktaviert labCapodaster = Label('Capodaster:', width = 0) LeerSaitenCheck = CheckBox('Mit Leersaiten spielen', value = LeerSaiten) KeyBassa = CheckBox('Notenzeile verwendet oktavierenden Violinschlüssel', value=GitarreroOktaviert) LageBox = ComboBox(Lagen, value = Lage, width=32) CapodasterBox = ComboBox(CapoBuende, value = CapoBund, width=14) hbox01= HBox([labCapodaster,CapodasterBox], padding = 5) vbox01= VBox([LageBox, LeerSaitenCheck, hbox01, KeyBassa],padding = 8) dialogbox= VBox([vbox01], padding = 15) dlg = Dialog('Bitte wählen: ', dialogbox) if dlg.run(): Lage = LageBox.value() LeerSaiten = LeerSaitenCheck.value() CapoBund = CapodasterBox.value() GitarreroOktaviert = KeyBassa.value() if StimmungsWahl = len(Stimmungen): StimmungsWahl2 = StimmungsWahl - len(Stimmungen) Stimmung = Stimmungen2[1][StimmungsWahl2] Stimmung.append(100) StimmungsSaiten = Stimmungen2[2][StimmungsWahl2] Stimmung = changeCapo(Stimmung, CapoBund, GitarreroOktaviert) return True return True else: return False def getDialogValues5(getStimmung): ToeneAuswahl = [] i = 0 while i < len(Toene): Ton1 = Toene[i][0] Ton2 = Toene[i][1] Ton3 = Toene[i][2] ToeneAuswahl += [(Ton1)] i += 1 if getStimmung == -1: Saite1Combo = ComboBox(ToeneAuswahl, value = 0, width=7) Saite2Combo = ComboBox(ToeneAuswahl, value = 0, width=7) Saite3Combo = ComboBox(ToeneAuswahl, value = 0, width=7) Saite4Combo = ComboBox(ToeneAuswahl, value = 0, width=7) Saite5Combo = ComboBox(ToeneAuswahl, value = 0, width=7) Saite6Combo = ComboBox(ToeneAuswahl, value = 0, width=7) NameEdit = Edit(value='',width = 25) Saite1Edit = Edit(value='',width = 6) Saite2Edit = Edit(value='',width = 6) Saite3Edit = Edit(value='',width = 6) Saite4Edit = Edit(value='',width = 6) Saite5Edit = Edit(value='',width = 6) Saite6Edit = Edit(value='',width = 6) if getStimmung > -1: Saite1Combo = ComboBox(ToeneAuswahl, value = Stimmungen2[1][getStimmung][0], width=7) Saite2Combo = ComboBox(ToeneAuswahl, value = Stimmungen2[1][getStimmung][1], width=7) Saite3Combo = ComboBox(ToeneAuswahl, value = Stimmungen2[1][getStimmung][2], width=7) Saite4Combo = ComboBox(ToeneAuswahl, value = Stimmungen2[1][getStimmung][3], width=7) Saite5Combo = ComboBox(ToeneAuswahl, value = Stimmungen2[1][getStimmung][4], width=7) Saite6Combo = ComboBox(ToeneAuswahl, value = Stimmungen2[1][getStimmung][5], width=7) NameEdit = Edit(value=Stimmungen2[0][getStimmung],width = 25) Saite1Edit = Edit(value=Stimmungen2[2][getStimmung][0],width = 6) Saite2Edit = Edit(value=Stimmungen2[2][getStimmung][1],width = 6) Saite3Edit = Edit(value=Stimmungen2[2][getStimmung][2],width = 6) Saite4Edit = Edit(value=Stimmungen2[2][getStimmung][3],width = 6) Saite5Edit = Edit(value=Stimmungen2[2][getStimmung][4],width = 6) Saite6Edit = Edit(value=Stimmungen2[2][getStimmung][5],width = 6) LabLeer = Label(' ', width= 4) NameLabel1 = Label('Bezeichnung: ', width= 4) NameLabel2 = Label(' (maximal 15 Zeichen)', width= 7) NameLabel3 = Label('Bezeichnung der Saiten', width= 7) NameLabel4 = Label('(jeweils max. 3 Zeichen)', width= 7) hbox01= HBox([NameLabel1, NameEdit, NameLabel2], padding = 0) hbox02= HBox([Saite1Combo, Saite2Combo, Saite3Combo, Saite4Combo, Saite5Combo, Saite6Combo],padding = 8) hbox03= HBox([Saite1Edit,Saite2Edit,Saite3Edit,Saite4Edit,Saite5Edit,Saite6Edit],padding = 15) vbox01= VBox([NameLabel3, hbox03,NameLabel4], padding = 4) vbox02= VBox([hbox01, hbox02, vbox01,LabLeer], padding = 15) dialogbox= VBox([vbox02], padding = 15) dlg = Dialog('Neue Stimmung anlegen: ', dialogbox) if dlg.run(): SaiteNr1 = Saite1Combo.value() SaiteNr2 = Saite2Combo.value() SaiteNr3 = Saite3Combo.value() SaiteNr4 = Saite4Combo.value() SaiteNr5 = Saite5Combo.value() SaiteNr6 = Saite6Combo.value() SaiteBez1 = Saite1Edit.value()[0:3] SaiteBez2 = Saite2Edit.value()[0:3] SaiteBez3 = Saite3Edit.value()[0:3] SaiteBez4 = Saite4Edit.value()[0:3] SaiteBez5 = Saite5Edit.value()[0:3] SaiteBez6 = Saite6Edit.value()[0:3] Stimmungsname = NameEdit.value() if Stimmungsname == '': messageBox('Fehler','Sie haben keinen Namen eingegeben!') return False NeueStimmung[0] = Stimmungsname[0:15] NeueStimmung[1] = [SaiteNr1, SaiteNr2, SaiteNr3, SaiteNr4, SaiteNr5, SaiteNr6] NeueStimmung[2] = [SaiteBez1, SaiteBez2, SaiteBez3, SaiteBez4, SaiteBez5, SaiteBez6] i = 0 while i < 6: if len(NeueStimmung[2][i]) == 0: NeueStimmung[2][i] = '~~~' if len(NeueStimmung[2][i]) == 1: NeueStimmung[2][i] =str(NeueStimmung[2][i])[0] + '~~' if len(NeueStimmung[2][i]) == 2: NeueStimmung[2][i] += '~' i+=1 if getStimmung == -1: Stimmungen2[0] += [NeueStimmung[0]] Stimmungen2[1] += [NeueStimmung[1]] Stimmungen2[2] += [NeueStimmung[2]] else: Stimmungen2[0][getStimmung] = NeueStimmung[0] Stimmungen2[1][getStimmung] = NeueStimmung[1] Stimmungen2[2][getStimmung] = NeueStimmung[2] setOptions2() return True else: return False def getDialogValues6(): StimmungenCombo = ComboBox(Stimmungen2[0], value = 0, width=18) vbox02= VBox([StimmungenCombo], padding = 15) dialogbox= VBox([vbox02], padding = 15) dlg = Dialog('Zu bearbeitende Stimmung auswählen', dialogbox) if dlg.run(): getDialogValues5(StimmungenCombo.value()) return True else: return False def getDialogValues7a(): StimmungenCombo = ComboBox(Stimmungen2[0], value = 0, width=18) vbox02= VBox([StimmungenCombo], padding = 15) dialogbox= VBox([vbox02], padding = 15) dlg = Dialog('Stimmung löschen ', dialogbox) if dlg.run(): getDialogValues7b(StimmungenCombo.value()) return True else: return False def getDialogValues7b(getStimmung): result = messageBox('ACHTUNG', 'Sie sind dabei, eine Stimmung zu löschen. Wollen Sie dies wirklich?', img=3, buttons=2, defBtn=0) if result == 2: Stimmungen2[0].remove(Stimmungen2[0][getStimmung]) Stimmungen2[1].remove(Stimmungen2[1][getStimmung]) Stimmungen2[2].remove(Stimmungen2[2][getStimmung]) setOptions2() return True else: return False def getDialogValues8(score): global GitarreroSchriftgroesse, GitarreroSchriftKursiv, GitarreroSchriftFett, GitarreroSchriftart, UpdateFont if GitarreroSchriftart in FontList: fontNumber = FontList.index(GitarreroSchriftart) else: fontNumber = 0 GitarreroSchriftgroesseLabel = Label('Schriftgröße: ') GitarreroSchriftartLabel = Label('Schriftart: ') GitarreroSchriftgroesseEdit = Edit(value = str(GitarreroSchriftgroesse), min = 3, max=20, width=5) GitarreroSchriftartEdit = Edit(value = str(GitarreroSchriftart), width=15) GitarreroSchriftKursivCheck = CheckBox('Kursivschrift', value = GitarreroSchriftKursiv) GitarreroSchriftFettCheck = CheckBox('Fettschrift', value = GitarreroSchriftFett) comboFont = ComboBox(FontList, width=20, value=fontNumber) hbox01= HBox([GitarreroSchriftartLabel,comboFont], padding = 0) hbox02= HBox([GitarreroSchriftgroesseLabel,GitarreroSchriftgroesseEdit], padding = 0) hbox03= HBox([GitarreroSchriftFettCheck], padding = 0) hbox04= HBox([GitarreroSchriftKursivCheck], padding = 0) vbox01= VBox([hbox01, hbox02, hbox03, hbox04],padding = 0) dialogbox= VBox([vbox01], padding = 12) dlg = Dialog('Fontsetup: ', dialogbox) if dlg.run(): GitarreroSchriftgroesse = string.atoi(GitarreroSchriftgroesseEdit.value()) GitarreroSchriftFett = GitarreroSchriftFettCheck.value() GitarreroSchriftKursiv = GitarreroSchriftKursivCheck.value() GitarreroSchriftart = FontList[comboFont.value()] setOptions() UpdateFont = 1 return True else: return False def getDialogValues9(): StimmungsAktionsRadio = Radio(['Neue Stimmung anlegen','Stimmungen bearbeiten','Stimmung löschen'], value = 0, width=18) vbox00= VBox([StimmungsAktionsRadio], padding = 15) dialogbox= VBox([vbox00], padding = 15) dlg = Dialog('Aktion auswählen ', dialogbox) if dlg.run(): return StimmungsAktionsRadio.value() else: return 4 def newText(drawObjects, width, height, contents, fontheight,IndexTag, face): global FontGroesse, LineWidth, StrichAbstand Gruppierung = 0 if IndexTag[0] == '9': Gruppierung = 1 if Gruppierung == 0: drawObj = addNewElementNode(drawObjects,'drawObj') if Gruppierung == 1: groupDrawObj = addElementNode(drawObjects,'drawObj') group = addElementNode(groupDrawObj,'group') drawObj = addNewElementNode(group,'drawObj') text = addElementNode(drawObj,'text') text.setAttribute('x',str(width)) text.setAttribute('y',str(height)) content = addNewElementNode(text,'content') textNode = doc.createTextNode(latin1_d(contents)) content.appendChild(textNode) text.setAttribute('align','center') GraficalTag = '56294-26'+str(IndexTag) basic = addElementNode(drawObj,'basic') basic.setAttribute('tag',GraficalTag) if Gruppierung == 1: basic = addElementNode(groupDrawObj,'basic') basic.setAttribute('tag','56294-2690') font = addNewElementNode(text,'font') font.setAttribute('face',face) font.setAttribute('color','') font.setAttribute('height',str(fontheight)) font.setAttribute('charSet','1') font.setAttribute('pitchAndFamily','2') return text def getContent(chord): # Holt die Werte einer eventuell bestehende Generalbass- global Register1, Register2, Register3, Register4 # bezifferung zurück global Saite1, Saite2, Saite3, Saite4, Saite5, Saite6, Saite7 global Saite1o, Saite2o, Saite3o, Saite4o, Saite5o, Saite6o, Saite7o global DoppelSaiten tag = '0' for drawObj in chord.getElementsByTagName('drawObj'): tag = '0' for content in drawObj.getElementsByTagName('content'): ObjectContent = latin1_e(content.firstChild.nodeValue) for basic in drawObj.getElementsByTagName('basic'): tag = basic.getAttribute('tag') if (tag == '56294-2601'): if ObjectContent in Buende: Saite1 = max(Buende.index(ObjectContent), Saite1) if not (Buende.index(ObjectContent) in DoppelSaiten[0]): DoppelSaiten[0] += [Buende.index(ObjectContent)] if (tag == '56294-2602'): if ObjectContent in Buende: Saite2 = max(Buende.index(ObjectContent), Saite2) if not (Buende.index(ObjectContent) in DoppelSaiten[1]): DoppelSaiten[1] += [Buende.index(ObjectContent)] if (tag == '56294-2603'): if ObjectContent in Buende: Saite3 = max(Buende.index(ObjectContent), Saite3) if not (Buende.index(ObjectContent) in DoppelSaiten[2]): DoppelSaiten[2] += [Buende.index(ObjectContent)] if (tag == '56294-2604'): if ObjectContent in Buende: Saite4 = max(Buende.index(ObjectContent), Saite4) if not (Buende.index(ObjectContent) in DoppelSaiten[3]): DoppelSaiten[3] += [Buende.index(ObjectContent)] if (tag == '56294-2605'): if ObjectContent in Buende: Saite5 = max(Buende.index(ObjectContent), Saite5) if not (Buende.index(ObjectContent) in DoppelSaiten[4]): DoppelSaiten[4] += [Buende.index(ObjectContent)] if (tag == '56294-2606'): if ObjectContent in Buende: Saite6 = max(Buende.index(ObjectContent), Saite6) if not (Buende.index(ObjectContent) in DoppelSaiten[5]): DoppelSaiten[5] += [Buende.index(ObjectContent)] if (tag == '56294-2607'): if ObjectContent in Buende: Saite7 = max(Buende.index(ObjectContent), Saite7) if not (Buende.index(ObjectContent) in DoppelSaiten[6]): DoppelSaiten[6] += [Buende.index(ObjectContent)] if (tag == '56294-2611'): if ObjectContent in Daumensatz: DaumenNummer = Daumensatz.index(ObjectContent) Saite1= len(Buende) + DaumenNummer if (tag == '56294-2612'): if ObjectContent in Daumensatz: DaumenNummer = Daumensatz.index(ObjectContent) Saite2= len(Buende) + DaumenNummer if (tag == '56294-2613'): if ObjectContent in Daumensatz: DaumenNummer = Daumensatz.index(ObjectContent) Saite3= len(Buende) + DaumenNummer if (tag == '56294-2614'): if ObjectContent in Daumensatz: DaumenNummer = Daumensatz.index(ObjectContent) Saite4= len(Buende) + DaumenNummer if (tag == '56294-2615'): if ObjectContent in Daumensatz: DaumenNummer = Daumensatz.index(ObjectContent) Saite5= len(Buende) + DaumenNummer if (tag == '56294-2616'): if ObjectContent in Daumensatz: DaumenNummer = Daumensatz.index(ObjectContent) Saite6= len(Buende) + DaumenNummer def makeStemInvisible(chord): drawObjects = chord.getElementsByTagName('drawObjects')[0] if Glissando == 2: stem = addElementNode(chord,'stem') stem.setAttribute('invisible','true') def createKey(rest): restDrawObjects = addNewElementNode(rest,'drawObjects') def formatNumber(number): global GitarreroSchriftgroesse, GitarreroSchriftFett, GitarreroSchriftKursiv,GitarreroSchriftart for font in number.getElementsByTagName('font'): font.setAttribute('height',str(GitarreroSchriftgroesse)) font.setAttribute('face',str(GitarreroSchriftart)) if GitarreroSchriftFett == 0: font.setAttribute('weight','') if GitarreroSchriftFett == 1: font.setAttribute('weight','700') if GitarreroSchriftKursiv == 0: font.setAttribute('italic','') if GitarreroSchriftKursiv == 1: font.setAttribute('italic','true') def setNumber(chord, contents, NoteY, NoteTag): drawObjects = addElementNode(chord,'drawObjects') Number = newText(drawObjects, 0, NoteY, contents,5,NoteTag, 'TimesNewRoman') formatNumber(Number) return Number def setKey(element): global GitarreroAnzahlSaiten newRest = addNewElementNode(element.parentNode, 'rest') restDuration = addNewElementNode(newRest, 'duration') restDuration.setAttribute('base','/128') restDuration.setAttribute('noDuration','true') restDisplay = addNewElementNode(newRest,'display') restDisplay.setAttribute('small', 'true') restDisplay.setAttribute('invisible','true') newRest.parentNode.insertBefore(newRest, element) drawObjects = addElementNode(newRest,'drawObjects') Verschiebung = 0.55 * (2-GitarreroAnzahlSaiten) Key99 = newText(drawObjects, 1.5, -0.65+ Verschiebung, 'T',7,'99', 'TimesNewRoman') Key98 = newText(drawObjects, 1.5, -0.65+1.6+ Verschiebung, 'A',7,'98', 'TimesNewRoman') Key97 = newText(drawObjects, 1.5, -0.65+3.2+ Verschiebung, 'B',7,'97', 'TimesNewRoman') if SchluesselTyp == 0: if len(StimmungsSaiten) > 6: Saite7 = StimmungsSaiten[6] else: Saite7 = ' ' Saite1 = StimmungsSaiten[5] Saite2 = StimmungsSaiten[4] Saite3 = StimmungsSaiten[3] Saite4 = StimmungsSaiten[2] Saite5 = StimmungsSaiten[1] Saite6 = StimmungsSaiten[0] if SchluesselTyp == 1: if GitarreroAnzahlSaiten <> 3: Saite1 = '1' Saite2 = '2' Saite3 = '3' Saite4 = '4' Saite5 = '5' Saite6 = '6' Saite7 = '7' if GitarreroAnzahlSaiten == 3: Saite1 = '2' Saite2 = '3' Saite3 = '4' Saite4 = '5' Saite5 = '6' Saite6 = '7' Saite7 = '1' if SchluesselTyp == 2: Saite1 = ' ' Saite2 = ' ' Saite3 = ' ' Saite4 = ' ' Saite5 = ' ' Saite6 = ' ' Saite7 = ' ' if GitarreroAnzahlSaiten < 3: Saite7 = ' ' if GitarreroAnzahlSaiten < 2: Saite1 = ' ' if GitarreroAnzahlSaiten < 1: Saite2 = ' ' Key90 = newText(drawObjects, 0, string.atof(SaitenHoehe[6])-0.3, Saite7,4,'90', 'Arial') Key91 = newText(drawObjects, 0, string.atof(SaitenHoehe[5])-0.3, Saite1,4,'91', 'Arial') Key92 = newText(drawObjects, 0, string.atof(SaitenHoehe[4])-0.3, Saite2,4,'92', 'Arial') Key93 = newText(drawObjects, 0, string.atof(SaitenHoehe[3])-0.3, Saite3,4,'93', 'Arial') Key94 = newText(drawObjects, 0, string.atof(SaitenHoehe[2])-0.2, Saite4,4,'94', 'Arial') Key95 = newText(drawObjects, 0, string.atof(SaitenHoehe[1])-0.2, Saite5,4,'95', 'Arial') Key96 = newText(drawObjects, 0, string.atof(SaitenHoehe[0])-0.2, Saite6,4,'96', 'Arial') for font in Key99.getElementsByTagName('font'): font.setAttribute('weight','700') for font in Key98.getElementsByTagName('font'): font.setAttribute('weight','700') for font in Key97.getElementsByTagName('font'): font.setAttribute('weight','700') for font in Key91.getElementsByTagName('font'): font.setAttribute('weight','700') for font in Key92.getElementsByTagName('font'): font.setAttribute('weight','700') for font in Key93.getElementsByTagName('font'): font.setAttribute('weight','700') for font in Key94.getElementsByTagName('font'): font.setAttribute('weight','700') for font in Key95.getElementsByTagName('font'): font.setAttribute('weight','700') for font in Key96.getElementsByTagName('font'): font.setAttribute('weight','700') def getNote(head): Alteration = '-' for alter in head.getElementsByTagName('alter'): if alter.getAttribute('step') == '1': Alteration='#' if alter.getAttribute('step') == '-1': Alteration='b' if alter.getAttribute('step') == '2': Alteration='x' if alter.getAttribute('step') == '-2': Alteration='s' HeadContent = str(head.getAttribute('pitch') + Alteration) return HeadContent def getNoteY(contents): Saitennummer = 0 if contents in Saiten: Saitennummer = Saiten.index(contents) Hoehe[Saitennummer] def changeLage(chord): global LeerSaiten, LagenAutomatikSchwelle chordTime = getTime(chord) LageFound = False LageIntern = Lage if LagenAutomatik == True: # Errechnen der jeweiligen Lage i = 0 while i < len(LagenWechsel) and LageFound == False: if chordTime < LagenWechsel[i][0]: LageIntern = LetzteLage LageFound = True if chordTime >= LagenWechsel[len(LagenWechsel)-1][0]: LageIntern = LagenWechsel[len(LagenWechsel)-1][1] LetzteLage = LagenWechsel[i][1] i+=1 gefunden = 0 for drawObjects in chord.getElementsByTagName('drawObjects'): drawObjects = chord.getElementsByTagName('drawObjects')[0] for drawObj in drawObjects.getElementsByTagName('drawObj'): tag = '0' for content in drawObj.getElementsByTagName('content'): ObjectContent = latin1_e(content.firstChild.nodeValue) for basic in drawObj.getElementsByTagName('basic'): tag = basic.getAttribute('tag') Bund = 'xxx' if (tag == '56294-2601'): if ObjectContent in Buende: Bund = ObjectContent if (tag == '56294-2602'): if ObjectContent in Buende: Bund = ObjectContent if (tag == '56294-2603'): if ObjectContent in Buende: Bund = ObjectContent if (tag == '56294-2604'): if ObjectContent in Buende: Bund = ObjectContent if (tag == '56294-2605'): if ObjectContent in Buende: Bund = ObjectContent if (tag == '56294-2606'): if ObjectContent in Buende: Bund = ObjectContent if (tag == '56294-2607'): if ObjectContent in Buende: Bund = ObjectContent if (Bund <> 'xxx'): if (LagenAutomatik == 0): BundZahl = string.atoi(Bund) i=0 Saite = string.atoi(tag[9]) -1 while ((i < 6) or ((BundZahl == 0) and (LeerSaiten == 0))) and (Saite<>6): if ((BundZahl <= LageIntern) and (BundZahl <> 0)) or ((BundZahl == 0) and (LeerSaiten == 0)): if (tag <> '56294-2606'): SaiteNeu = Saite + 1 AlteSaiteStart = Stimmung[5-Saite] NeueSaiteStart = Stimmung[5-SaiteNeu] Differenz = AlteSaiteStart-NeueSaiteStart NeuerBund = BundZahl + Differenz for text in drawObj.getElementsByTagName('text'): text.setAttribute('y',SaitenHoehe[5-SaiteNeu]) for basic in drawObj.getElementsByTagName('basic'): basic.setAttribute('tag',(tag[0:9] + str((SaiteNeu+1)))) content.removeChild(content.firstChild) textNode = doc.createTextNode(latin1_d(str(NeuerBund))) content.appendChild(textNode) BundZahl = NeuerBund Saite = SaiteNeu i+=1 elif (LagenAutomatik == 1): BundZahl = string.atoi(Bund) i=0 Saite = string.atoi(tag[9]) -1 while ((i < 5) or ((BundZahl == 0) and (LagenAutomatikSchwelle < LageIntern))) and (Saite<>5): if ((BundZahl <= LageIntern) and (BundZahl <> 0)) or ((BundZahl == 0) and (LagenAutomatikSchwelle < LageIntern)): if (tag <> '56294-2606'): SaiteNeu = Saite + 1 AlteSaiteStart = Stimmung[5-Saite] NeueSaiteStart = Stimmung[5-SaiteNeu] Differenz = AlteSaiteStart-NeueSaiteStart NeuerBund = BundZahl + Differenz for text in drawObj.getElementsByTagName('text'): text.setAttribute('y',SaitenHoehe[5-SaiteNeu]) for basic in drawObj.getElementsByTagName('basic'): basic.setAttribute('tag',(tag[0:9] + str((SaiteNeu+1)))) content.removeChild(content.firstChild) textNode = doc.createTextNode(latin1_d(str(NeuerBund))) content.appendChild(textNode) BundZahl = NeuerBund Saite = SaiteNeu i+=1 return gefunden def clearNote(chord): for drawObjects in chord.getElementsByTagName('drawObjects'): # Alle drawObj mit tag == GraficalTag löschen for drawObj in drawObjects.childNodes: if drawObj.nodeType == drawObj.ELEMENT_NODE and drawObj.tagName == 'drawObj': for basic in drawObj.getElementsByTagName('basic'): if basic.hasAttribute('tag') and basic.getAttribute('tag') == '56294-2600': drawObjects.removeChild(drawObj) for drawObjects in chord.getElementsByTagName('drawObjects'): # Alle drawObj mit tag == GraficalTag löschen for drawObj in drawObjects.childNodes: if drawObj.nodeType == drawObj.ELEMENT_NODE and drawObj.tagName == 'drawObj': for basic in drawObj.getElementsByTagName('basic'): if basic.hasAttribute('tag') and basic.getAttribute('tag')[0:8] == '56294-26': if not (basic.getAttribute('tag')[0:9] == '56294-269'): #Test(basic.getAttribute('tag')[0:9]) drawObjects.removeChild(drawObj) if drawObjects.getElementsByTagName('drawObj').length == 0: # Wenn drawObjects keine Elemente mehr enthält, dann löschen drawObjects.parentNode.removeChild(drawObjects) def handleNotes(chord): global Register1, Kopfform, AutoAnpassen, LeerSaiten clearNote(chord) drawObjs = chord.getElementsByTagName('drawObjs') if NurLoeschen == 0: for head in chord.getElementsByTagName('head'): NoteY = -2.5 NoteHight = getNote(head) NoteContent = '?' NoteTag = 00 HeadNumber = findNote(NoteHight) if HeadNumber <> '': if not (HeadNumber < Stimmung[0]): i = 0 while i + ((len(Stimmung)-4)-GitarreroAnzahlSaiten) <= (len(Stimmung)-1): if not (HeadNumber >= Stimmung[i+1]) or (i + ((len(Stimmung)-4)-GitarreroAnzahlSaiten)== (len(Stimmung)-1)): NoteContent = str(HeadNumber - Stimmung[i]) NoteY = SaitenHoehe[i] NoteTag = ('0' + str(6-i)) if i == 6: NoteTag = ('07') if (HeadNumber - Stimmung[i]) >= 0: setNumber(chord,NoteContent, NoteY, NoteTag) i +=1 def getCursor(): sel = curSelection() result = None if sel == 0: messageBox('Fehler', 'keine aktive Partitur') return result #if sel[0] != sel[1]: # messageBox('Fehler', 'Markierung ist nicht leer') # return result result = sel[0] return result def getElementObjects(objList): # returns a List newList = NodeList() for n in range(objList.length): if objList[n].nodeType == objList[n].ELEMENT_NODE: newList.append(objList[n]) return newList def copyStaffLayout(score, layoutName): global GitarreroAnzahlSaiten layout = score.getElementsByTagName('layout')[0] distances =layout.getElementsByTagName('distances')[0] # Kleine Notenzeile mit großem Abstand staffLines = distances.getElementsByTagName('staffLines')[0] staffLines.setAttribute('small','3') staves = layout.getElementsByTagName('staves')[0] staffCount = 0 for staff in staves.getElementsByTagName('staffLayout'): staffCount+=1 TabFound = 0 staffCount2 = 0 for staffLayout in score.getElementsByTagName('staffLayout'): if staffLayout.getAttribute('description') ==('Gittarero-Tabulatur' + ' ' + layoutName): staffLayoutClone = staffLayout notationClone = staffLayoutClone.getElementsByTagName('notation')[0] notationClone.setAttribute('notelines',NotenlinienCode[GitarreroAnzahlSaiten]) barlinesClone = notationClone.getElementsByTagName('barlines')[0] # Taktstriche für entsprechend viele Zeilen barlinesClone.setAttribute('to',str(7-(2-GitarreroAnzahlSaiten))) TabFound = 1 for staffLayout in score.getElementsByTagName('staffLayout'): staffCount2 += 1 if staffLayout.getAttribute('description') == layoutName and TabFound == 0: staffLayoutClone = staffLayout.cloneNode(1) staves.appendChild(staffLayoutClone) # Kopie der Musterzeile if staffCount2 < staffCount: staves.insertBefore(staffLayoutClone, staffLayout.nextSibling) staffLayoutClone.setAttribute('description',('Gittarero-Tabulatur' + ' ' +staffLayoutClone.getAttribute('description'))) distancesClone = staffLayoutClone.getElementsByTagName('distances')[0] # Kleinformatierung der Musterzeile distancesClone.setAttribute('lineDist','small') distancesClone.setAttribute('top','8') notationClone = staffLayoutClone.getElementsByTagName('notation')[0] # Notation der Musterzeile notationClone.setAttribute('defaultClef','N3') notationClone.setAttribute('notelines',NotenlinienCode[GitarreroAnzahlSaiten]) barlinesClone = notationClone.getElementsByTagName('barlines')[0] # Taktstriche für entsprechend viele Zeilen barlinesClone.setAttribute('from','2') barlinesClone.setAttribute('to',str(7-(2-GitarreroAnzahlSaiten))) def copyStaff(system, layoutName): staves = system.getElementsByTagName('staves')[0] staffClone = False for staff in staves.getElementsByTagName('staff'): if staff.getAttribute('layout') == layoutName: getLagen(staff) staffClone = staff.cloneNode(1) staffClone.setAttribute('layout',('Gittarero-Tabulatur' + ' ' + staffClone.getAttribute('layout'))) staves.appendChild(staffClone) for chord in staffClone.getElementsByTagName('chord'): makeNoteInvisible(chord) return staffClone def getNoteLength(note): for duration in note.getElementsByTagName('duration'): notelength = duration.getAttribute('base') return notelength def makeNoteInvisible(chord): display = addElementNode(chord, 'display') display.setAttribute('invisible','true') display.setAttribute('small','true') def makeKeyClefInsivible(staff): for voice in staff.getElementsByTagName('voice'): for clefSing in voice.getElementsByTagName('clefSign'): clefSign = voice.getElementsByTagName('clefSign')[0] clefSign.setAttribute('clef','N3') for timeSign in voice.getElementsByTagName('timeSign'): objList = getElementObjects(staff.getElementsByTagName('noteObjects')[0].childNodes) i=0 for obj in objList: if i <= 2: if obj == timeSign: staff.setAttribute('defaultTime',timeSign.getAttribute('time')) i+=1 timeSign.parentNode.removeChild(timeSign) def makeRestInvisible(staff): for rest in staff.getElementsByTagName('rest'): display = addElementNode(rest, 'display') display.setAttribute('invisible', 'true') def killKey(staff): for voice in staff.getElementsByTagName('voice'): for keySign in voice.getElementsByTagName('keySign'): keySign.parentNode.removeChild(keySign) def killbarlines(staff): for voice in staff.getElementsByTagName('voice'): for barline in voice.getElementsByTagName('barline'): if barline.getAttribute('type') <> '': barline.setAttribute('type','') def killdrawObjects(chord): for drawObjects in chord.getElementsByTagName('drawObjects'): drawObjects.parentNode.removeChild(drawObjects) def setNewNumber(chord): global Saite1, Saite2, Saite3, Saite4, Saite5, Saite6, Saite7 clearNote(chord) SaitenSammlung = [Saite1, Saite2, Saite3, Saite4, Saite5, Saite6, Saite7] i = 0 while i < len(SaitenSammlung): NoteContent = ' ' if SaitenSammlung[i] > -1: NoteY = SaitenHoehe[5-i] NoteTag = str('0' + str(i+1)) if SaitenSammlung[i] < len(Buende): NoteContent = Buende[SaitenSammlung[i]] if SaitenSammlung[i] <> ' ': if SaitenSammlung[i] >= len(Buende): DaumenNummer = SaitenSammlung[i] - len(Buende) NoteContent = Daumensatz[DaumenNummer] NoteTag = str('1' + str(i+1)) if NoteContent <> ' ': setNumber(chord,NoteContent, NoteY, NoteTag) i +=1 def getTime(chord): objList = getElementObjects(chord.parentNode.parentNode.getElementsByTagName('noteObjects')[0].childNodes) time = 0 i = 0 while chord <> objList[i]: objects = objList[i] addTime = getLength(objects) time += addTime i += 1 return time def getIrregular(object): irregular = float(1) count = 0 tripartite = 'false' for duration in object.getElementsByTagName('duration'): for tuplet in duration.getElementsByTagName('tuplet'): count = string.atoi(tuplet.getAttribute('count')) tripartite = tuplet.getAttribute('tripartite') if count == 2 and tripartite == 'true': irregular = float(3) /float (4) elif count == 3: irregular = float(2) /float (3) elif count == 5: irregular = float(4) /float (5) elif count == 7: irregular = float(4) /float (7) else: irregular = 1 return irregular def getLength(object): length = 0 if object.tagName in ['chord','rest']: for duration in object.getElementsByTagName('duration'): if duration.getAttribute('noDuration') <> 'true': if not duration.getAttribute('base') in ['1']: length = 1 / string.atof(duration.getAttribute('base')[2:]) else: length = 1 dotsMult = 1 if duration.getAttribute('dots') == '1': dotsMult = 1.5 if duration.getAttribute('dots') == '2': dotsMult = 1.75 length = length * dotsMult length = length * getIrregular(object) return length def killxShift(staff): for chord in staff.getElementsByTagName('chord'): for display in chord.getElementsByTagName('display'): display.setAttribute('xShift','') def findNote(note): result = '' k = 0 while ((k < len(Toene)) and (k <1000)): m = 0 while ((m < len(Toene[k])) and (m <1000)): if Toene[k][m] == note: result = k m += 1 k +=1 return result def getCursorRange(): global t1, t2 sel = curSelection() (sy1,st1,vo1,ob1),(sy2,st2,vo2,ob2) = sel sel = (min(sy1,sy1), min(st1,st2),min(vo1,vo2),min(ob1,ob2)),(max(sy1,sy1), max(st1,st2),max(vo1,vo2),max(ob1,ob2)) (sy1,st1,vo1,ob1),(sy2,st2,vo2,ob2) = sel AuswahlJA = False if ob2 > ob1: # sonst wird Zeichen hinter rechtem Cursor auch bearbeitet ob2 -= 1 sel = (sy1,st1,vo1,ob1),(sy2,st2,vo2,ob2) AuswahlJA = True if sel == 0: messageBox('Fehler', 'keine aktive Partitur') return (0,0,0,0),(0,0,0,0) if sel[0][0:3] <> sel[1][0:3]: # mehrere Stimmen markiert -> alle Noten ob1 = 0 ob2 = 999 if sel[0][0:2] <> sel[1][0:2]: # mehrere Notenzeilen markiert -> alle Stimmen vo1 = 0 vo2 = 999 if sel[0][0] <> sel[1][0]: # mehrere Systeme markiert -> alle Notenzeilen st1 = 0 st2 = 999 sel = (sy1,st1,vo1,ob1),(sy2,st2,vo2,ob2),AuswahlJA t1 = ob1 t2 = ob2 return sel def cleanChord(chord): for obj in chord.getElementsByTagName('drawObj'): drawObjects = obj.parentNode for basic in obj.getElementsByTagName('basic'): if basic.getAttribute('tag')[0:9] == '56294-260': obj.parentNode.removeChild(obj) if drawObjects.getElementsByTagName('drawObj').length == 0: # Wenn drawObjects keine Elemente mehr enthält, dann löschen drawObjects.parentNode.removeChild(drawObjects) def killExtraDistance(staff): for extraDistance in staff.getElementsByTagName('extraDistance'): staff.removeChild(extraDistance) def concurrenceNotes(staff): global Saite1, Saite2, Saite3, Saite4, Saite5, Saite6, Saite7 global Saite1o, Saite2o, Saite3o, Saite4o, Saite5o, Saite6o, Saite7o global IntelligenteNummern,concurrenceIntelligent noteObject = staff.getElementsByTagName('noteObjects')[0] objList = getElementObjects(noteObject.childNodes) i = 0 for obj in objList: #DoppelSaiten = [[],[],[],[],[],[],[]] Saite1 = 0 Saite2 = 0 Saite3 = 0 Saite4 = 0 Saite5 = 0 Saite6 = 0 Saite7 = 0 Saite1o = 0 Saite2o = 0 Saite3o = 0 Saite4o = 0 Saite5o = 0 Saite6o = 0 Saite7o = 0 SaiteTemp = [] if obj.tagName == 'chord': Notenwert = getNoteLength(obj) getContent(obj) cursorTime = getTime(obj) for voices in staff.getElementsByTagName('voice'): noteObject2 = voices.getElementsByTagName('noteObjects')[0] objList2 = getElementObjects(noteObject2.childNodes) j=0 while j < len(objList2): objects2 = objList2[j] if (objects2.tagName == 'chord'): if getTime(objects2) == cursorTime: getContent(objects2) cleanChord(objects2) j+=1 cleanChord(obj) Saite1 -= 1 Saite2 -= 1 Saite3 -= 1 Saite4 -= 1 Saite5 -= 1 Saite6 -= 1 Saite7 -= 1 SimpleSaiten = [Saite1, Saite2,Saite3,Saite4, Saite5, Saite6, Saite7] k = 0 while k < 7: # DoppelSaiten um 1 reduzieren if len(DoppelSaiten[k]) > 0: l = 0 while l < len(DoppelSaiten[k]): DoppelSaiten[k][l] -=1 l +=1 k+=1 p = 0 # DoppelSaiten von Einzelsaiten befreien while p < 7: if len(DoppelSaiten[p]) > 0: if SimpleSaiten[p] in DoppelSaiten[p]: DoppelSaiten[p].remove(SimpleSaiten[p]) p +=1 if concurrenceIntelligent == 1: p = 0 # Doppelsaite in Einzelsaiten umwandeln if len(DoppelSaiten[6]) > 0: # Bearbeitung einer eventuellen 7ten Saite Differenz7zu6 = Stimmung[6-p] - Stimmung[5-p] #Test(Differenz7zu6) #Test(SimpleSaiten) if SimpleSaiten[0] == -1: k = 0 while len(DoppelSaiten[6])>0: if (DoppelSaiten[6][k] > -1): DoppelSaiten[0] += [(DoppelSaiten[6][k]+Differenz7zu6)] DoppelSaiten[6].remove(DoppelSaiten[6][k]) DoppelSaiten[0].sort() SimpleSaiten[0] = DoppelSaiten[0][0] DoppelSaiten[0].remove(DoppelSaiten[0][0]) while p < 7: if len(DoppelSaiten[p]) > 0 and p < 6: AlteSaiteStart = Stimmung[5-p] NeueSaiteStart = Stimmung[4-p] Differenz = AlteSaiteStart-NeueSaiteStart if SimpleSaiten[p+1] == -1: k = 0 while len(DoppelSaiten[p])>0: if (DoppelSaiten[p][k] > -1): DoppelSaiten[p+1] += [(DoppelSaiten[p][k]+Differenz)] DoppelSaiten[p].remove(DoppelSaiten[p][k]) DoppelSaiten[p+1].sort() SimpleSaiten[p+1] = DoppelSaiten[p+1][0] DoppelSaiten[p+1].remove(DoppelSaiten[p+1][0]) p +=1 p = 0 # Doppelsaite in Rot/schwarz angehängen while p < 7: if len(DoppelSaiten[p]) > 0: k = 0 while len(DoppelSaiten[p]) > 0: NoteY = SaitenHoehe[5-p] if (DoppelSaiten[p][k] > -1) and (IntelligenteNummern <> 1): Number = setNumber(obj,str(DoppelSaiten[p][k]), NoteY, ('0' + str(p+1))) if IntelligenteNummern == 0: for font in Number.getElementsByTagName('font'): font.setAttribute('color','FF0000') DoppelSaiten[p].remove(DoppelSaiten[p][k]) p +=1 m =0 # Einzelsaiten in Schwarz anhängen while m < 7: NoteY = SaitenHoehe[5-m] if SimpleSaiten[m] > -1: setNumber(obj,str(SimpleSaiten[m]), NoteY, ('0' + str(m+1))) m+=1 i +=1 def getLagen(staff): global LagenWechsel, LageBeginOld beginningLageChanged = False for chord in staff.getElementsByTagName('chord'): for text in chord.getElementsByTagName('text'): for content in text.getElementsByTagName('content'): try: ObjectContent = latin1_e(content.firstChild.nodeValue) if ObjectContent[0].upper() == 'B' and len(ObjectContent) > 1: # Barree-Lagen ObjectContent = ObjectContent[1:] if ObjectContent[0] == ' ' and len(ObjectContent) > 1: ObjectContent = ObjectContent[1:] if ObjectContent in LagenRoemisch: LagenTime = getTime(chord) TimeAlreadySet = False i = 0 while i < len(LagenWechsel): if (LagenWechsel[i][0] == LagenTime) and ((LagenTime <> 0) or LagenWechsel[i][2] == 'A'): TimeAlreadySet = True if (LagenTime == 0) and LagenWechsel[i][2] == 'M': LagenWechsel.sort() LageBeginOld = LagenWechsel[0] LagenWechsel[0] = [LagenTime,LagenRoemisch.index(ObjectContent), 'A'] TimeAlreadySet = True LagenWechsel[i][2] = 'A' i+=1 if TimeAlreadySet == False: LagenWechsel +=[[LagenTime,LagenRoemisch.index(ObjectContent),'A']] LagenWechsel.sort() except: fake = True beforeFirstVoltaLage = LageBeginOld for voice in staff.getElementsByTagName('voice'): firstVoltaFound = False for element in getElementObjects(voice.getElementsByTagName('noteObjects')[0].childNodes): if element.tagName in ['chord','rest']: for volta in element.getElementsByTagName('volta'): if volta.hasAttribute('firstNumber'): if volta.getAttribute('firstNumber') == '1': firstVoltaTime = getTime(element) firstVoltaFound = True i=0 while i < len(LagenWechsel): if (LagenWechsel[i][0] < firstVoltaTime): beforeFirstVoltaLage = LagenWechsel[i] LageBeginOld = beforeFirstVoltaLage i += 1 elif volta.getAttribute('firstNumber') <> '1': voltaAlreadySet = 0 nextVoltaTime = getTime(element) i=0 while i < len(LagenWechsel): if (LagenWechsel[i][0] == nextVoltaTime) and LagenWechsel[i][2] == 'A': voltaAlreadySet = 1 if (LagenWechsel[i][0] == nextVoltaTime) and LagenWechsel[i][2] <> 'A': voltaAlreadySet = 2 voltaAlreadyPos = i i+= 1 if voltaAlreadySet == 0: if firstVoltaFound == True: LagenWechsel +=[[nextVoltaTime,beforeFirstVoltaLage[1],'V']] LagenWechsel.sort() else: LagenWechsel +=[[nextVoltaTime,LageBeginOld[1],'V']] LagenWechsel.sort() if voltaAlreadySet == 2: if firstVoltaFound == True: LagenWechsel[voltaAlreadyPos] =[nextVoltaTime,beforeFirstVoltaLage[1],'V'] LagenWechsel.sort() else: LagenWechsel[voltaAlreadyPos] =[nextVoltaTime,LageBeginOld[1],'V'] LagenWechsel.sort() #Test(LagenWechsel) def changeDoc(score): global NurLoeschen, Lage global Saite1, Saite2, Saite3, Saite4, Saite5, Saite6, Saite7, SchluesselSetzen, LeerSaiten, StimmungsWahl, HalsRichtung, UpdateFont, AlleSysteme, systemCount global UserStimmungen, SchluesselTyp, IntelligenteNummern, DaumenNummer, GitarreroOktaviert, CapoBund, GitarreroAnzahlSaiten global Saite1o, Saite2o, Saite3o, Saite4o, Saite5o, Saite6o, Saite7o global GitarreroSchriftgroesse, GitarreroSchriftFett, GitarreroSchriftKursiv, GitarreroSchriftart, FontList global LagenWechsel, LagenAutomatik,LagenAutomatikSchwelle, alleSystemeJA,AlleSysteme, LageBeginOld LagenAutomatik = 1 Saite1 = -1 Saite2 = -1 Saite3 = -1 Saite4 = -1 Saite5 = -1 Saite6 = -1 Saite7 = -1 Saite1o = 100 Saite2o = 100 Saite3o = 100 Saite4o = 100 Saite5o = 100 Saite6o = 100 Saite7o = 100 Lage = 0 StimmungsWahl = 0 LeerSaiten = 1 HalsRichtung = 2 UserStimmungen = '' NurLoeschen = 0 SchluesselTyp = 0 DaumenNummer = -1 AlleSysteme = 0 CapoBund = 0 GitarreroOktaviert = 0 GitarreroSchriftgroesse = 5 GitarreroSchriftFett = 0 GitarreroSchriftKursiv = 0 GitarreroSchriftart = 'TimesNewRoman' GitarreroAnzahlSaiten = 2 LagenAutomatikSchwelle = 4 UpdateFont = 0 alleSystemeJA = 0 FontList += getFonts() getOptions() sel = getCursor() (sy1, st1, vo1, ob1),(sy2, st2, vo2, ob2),AuswahlJA = getCursorRange() getCursorRange() if sel == None: # return else: system = score.getElementsByTagName('system')[sel[0]] systemSel = system staff = system.getElementsByTagName('staff')[sel[1]] voice = staff.getElementsByTagName('voice')[sel[2]] noteObject = voice.getElementsByTagName('noteObjects')[0] layoutName = staff.getAttribute('layout') if not (layoutName[0:19] == 'Gittarero-Tabulatur'): Funktion = 1 if layoutName[0:19] == 'Gittarero-Tabulatur': if not AuswahlJA: Funktion = 2 if AuswahlJA: Funktion = 3 if Funktion == 1: if getDialogValues1(score): LagenWechsel += [[0,Lage,'M']] LageBeginOld = [[0,Lage,'M']] copyStaffLayout(score, layoutName) systemCount = 0 for systems in score.getElementsByTagName('system'): if systems == systemSel or AlleSysteme == 1: systemCount +=1 system = systems stafffound = 0 Kontrolle = True for stafffind in systems.getElementsByTagName('staff'): if stafffind.getAttribute('layout') == ('Gittarero-Tabulatur' + ' ' + layoutName): Kontrolle = getDialogValues3() if Kontrolle: stafffind.parentNode.removeChild(stafffind) else: stafffound = 1 if Kontrolle: if stafffound == 0: staffClone = copyStaff(system, layoutName) if staffClone <> False: makeKeyClefInsivible(staffClone) makeRestInvisible(staffClone) killKey(staffClone) killxShift(staffClone) killExtraDistance(staffClone) for chord in staffClone.getElementsByTagName('chord'): killdrawObjects(chord) handleNotes(chord) if SchluesselSetzen == 1: for noteObjects2 in staffClone.getElementsByTagName('noteObjects'): noteObjectsChilds = getElementObjects(noteObjects2.childNodes) i = 0 hasKey = 0 for elements in noteObjectsChilds: for basic in elements.getElementsByTagName('basic'): if basic.getAttribute('tag') == '56294-2699': hasKey = 1 for elements in noteObjectsChilds: if hasKey == 0: setKey(noteObjectsChilds[0]) hasKey = 1 i+= 1 for chord in staffClone.getElementsByTagName('chord'): changeLage(chord) for clefSign in staffClone.getElementsByTagName('clefSign'): clefSign.parentNode.removeChild(clefSign) if IntelligenteNummern < 2: concurrenceNotes(staffClone) LagenWechsel = [[0,LagenWechsel[len(LagenWechsel)-1][1],'M']] if Funktion == 2: objList = getElementObjects(noteObject.childNodes) if objList.length <= sel[3]: return obj = objList[sel[3]] if obj.tagName == 'chord': Notenwert = getNoteLength(obj) getContent(obj) cursorTime = getTime(obj) for voices in staff.getElementsByTagName('voice'): noteObject2 = voices.getElementsByTagName('noteObjects')[0] objList2 = getElementObjects(noteObject2.childNodes) j=0 for objects2 in objList2: if (objects2.tagName == 'chord') or (objects2.tagName == 'rest'): if getTime(objects2) == cursorTime: getContent(objects2) j+=1 if getDialogValues2(score): for objects2 in objList2: if (objects2.tagName == 'chord') or (objects2.tagName == 'rest'): if getTime(objects2) == cursorTime: clearNote(objects2) setNewNumber(obj) if Funktion == 3: if getDialogValues4(): sy = 0 for system in score.getElementsByTagName('system'): if sy1 <= sy <= sy2: st = 0 for staff in system.getElementsByTagName('staff'): if st1 <= st <= st2: vo = 0 for voice in staff.getElementsByTagName('voice'): if vo1 <= vo <= vo2: noteObject = voice.getElementsByTagName('noteObjects')[0] objList = getElementObjects(noteObject.childNodes) if objList.length <= ob1: return ob = 0 for obj in objList: if ob1 <= ob <= ob2: if obj.tagName == 'chord': chord = obj clearNote(chord) handleNotes(chord) changeLage(chord) ob += 1 vo += 1 st += 1 sy += 1 #handleNotes(score, voice, obj) #makeSingleLine(score, layoutName) #setOptions() #if InfoComment == 1: # setScoreStyle(score) if UpdateFont == 1: for system in score.getElementsByTagName('system'): for staff in system.getElementsByTagName('staff'): for voice in staff.getElementsByTagName('voice'): for chord in voice.getElementsByTagName('chord'): for obj in chord.getElementsByTagName('drawObj'): drawObjects = obj.parentNode for basic in obj.getElementsByTagName('basic'): tag = basic.getAttribute('tag') #Test(('Jetzt sollte die TabulaturGitarreroSchriftart formatiert werden'+','+ tag[0:9])) if tag <> '56294-2600': if tag[0:9] in ['56294-260','56294-261']: formatNumber(obj) setOptions() # Hauptprogramm: from caplib.capDOM import ScoreChange import tempfile class ScoreChange(ScoreChange): def changeScore(self, score): global doc doc = score.parentNode changeDoc(score) if activeScore(): activeScore().registerUndo("Gitarrero") tempInput = tempfile.mktemp('.capx') tempOutput = tempfile.mktemp('.capx') activeScore().write(tempInput) ScoreChange(tempInput, tempOutput) activeScore().read(tempOutput) os.remove(tempInput) os.remove(tempOutput)