| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen   | 
	 
	
	
		| Autor | 
		Nachricht | 
	 
	
		woodpecker •--->
  
 
  Anmeldedatum: 12.10.2010 Beiträge: 150 Wohnort: Roggentin/Rostock
  | 
		
			
				 Verfasst am: 29.10.2010 - 08:12    Titel: Ein kleines Hilfstool für die Skript-Entwicklung | 
				     | 
			 
			
				
  | 
			 
			
				Hallo allerseits,
 
 
die AppleScript-Sprache ist ja ziemlich geschwätzig. Man muss immer viel schreiben, um wenig zu machen. Für den Anfänger ist es auch immer schwierig, die ganze Klassenhierarchie zu überblicken. Deshalb habe ich mir ein kleines Hilfstool für die Programmentwicklung geschrieben, das es erlaubt, Codezeilen menügeteuert auszuwählen und in das Editor-Fenster einzufügen.
 
Das funktioniert so ähnlich, wie der Ctrl-Klick im Editorfenster, wo auch ein Menü aufgeht, mit dem man Codezeilen einfügen kann. Um diese Auswahlmöglichkeiten zu erweitern, muss man aber jedesmal ein neues Skript schreiben. Meine Variante funktioniert so, dass eine programminterne Liste existiert, die man beliebig abändern und erweitern kann. In den Statements sind bestimmte Token enthalten, die während der Ausführung durch Werte ersetzt werden. Die Anzahl dieser Token kann auch beliebig erweitert werden. So wie es jetzt implementiert ist, gibt es 4 Token: 
 
 
+SEL+ wird ersetzt durch den im Editorfenster ausgewählten text
 
+DAT+ wird durch das aktuelle Datum ersetzt
 
+USR+ wird durch den Namen des angemeldeten Benutzer ersetzt
 
+SCP+ wird ersetzt durch den Namen des Dokuments und die Sprache
 
 
Ich habe das Skript in den Skript-Ordner des Benutzers (also: Library/Scripts/Applications/Skripteditor ) gesichert, so dass es immer angezeigt wird, wenn das Skriptmenü aufgeht und der Skripteditor aktiv ist. Das Skriptmenü muss in der Menüleiste angezeigt werden (Einstellung im AppleSkript Dienstprogramm).
 
 
Das ist der Code
 
 
-- Script : CodeMenu	(AppleScript)  		Stand vom : Donnerstag, 28. Oktober 2010 21:47:20 Uhr
 
-- Autor  : Erich Schmidt 
 
 
set WinId to id of window index 1 of application "Script Editor"
 
if WinId is -1 then
 
	display dialog "Kein Editor-Fenster geöffnet" buttons {"OK"} default button 1
 
	return ""
 
end if
 
 
 
set Statements to {"set +SEL+ to load script file ((path to \"docs\" as string)&\"AppleScript:+SEL+.scpt\" )", ¬
 
	"-- Script : +SCP+  " & tab & tab & "Stand vom : +DAT+" & return & "-- Autor  : +USR+ ", ¬
 
	"set wp to properties of my windows  ", ¬
 
	"set Win to window index 1 of application \"+SEL+\" ", ¬
 
	"set Dok to document of Win  ", ¬
 
	"set Txt to text of Dok ", ¬
 
	"set FileName to choose file", ¬
 
	"set fp to open for access FileName -- with write permissions", ¬
 
	"set +SEL+ to read fp", ¬
 
	"set +SEL+ to {\"Index 1\",\"Index 2\",\"Index 3\",\"Index 4\",\"Index 5\"}  ", ¬
 
	"tell app \"+SEL+\" " & return & "end", ¬
 
	"set wp to properties of its windows"}
 
 
 
set choice to choose from list Statements with prompt "Eine Zeile auswählen" with title "Codeauswahl"
 
if class of choice is boolean then return ""
 
 
set choice to choice as text
 
tell application "Script Editor"
 
	set Win to window id WinId
 
	set Doc to document of Win
 
	
 
	set chc to contents of selection of Doc
 
	set chr to character range of selection of Doc
 
	
 
	tell application "System Events"
 
		set usr to full name of user of it as text
 
	end tell
 
	
 
	set choice to my Substitute(choice, "+DAT+", (current date) as string)
 
	set choice to my Substitute(choice, "+SCP+", name of Doc & tab & "(" & name of language of Doc & ")")
 
	set choice to my Substitute(choice, "+USR+", usr)
 
	if item 1 of chr is not item 2 of chr then
 
		set choice to my Substitute(choice, "+SEL+", chc)
 
	end if
 
	activate Win
 
	tell application "System Events" to keystroke choice & return
 
end tell
 
 
-- rekursive Zeichenkettensubstitution 
 
on Substitute(Txt, old, new)
 
	set ix to my idx(Txt, old)
 
	-- Rekursion beenden
 
	if ix is 0 then return Txt
 
	if ix is 1 then
 
		set prefix to ""
 
	else
 
		set prefix to my substr(Txt, 1, ix - 1)
 
	end if
 
	
 
	set Nold to number of old
 
	-- Das rekursive Substitute wird immer nur auf den Reststring ausgeführt, fuer den
 
	-- Fall, dass old in new enthalten ist. Sonst baut sich die Rekursion nicht ab. 
 
	return prefix & new & my Substitute(my substr(Txt, ix + Nold, number of Txt), old, new)
 
end Substitute
 
 
-- gibt den Index eines Token innerhalb des Strings Txt zurueck
 
-- null bedeutet: nicht enthalten
 
on idx(Txt, Token)
 
	if Txt does not contain Token then return 0
 
	set Ntok to number of Token
 
	set Ntxt to number of Txt
 
	repeat with ci from 1 to Ntxt - Ntok + 1
 
		set x to characters ci thru (ci + Ntok - 1) of Txt as string
 
		if x is Token then return ci
 
	end repeat
 
end idx
 
 
-- Rueckgabe eines Teilstrings
 
on substr(Txt, spos, len)
 
	set Ntxt to number of Txt
 
	if spos is 0 or spos is greater than Ntxt then return ""
 
	set lastc to spos + len - 1
 
	if lastc is greater than Ntxt then set lastc to Ntxt
 
	set subs to characters spos thru lastc of Txt as string
 
	return subs
 
end substr
 
 
 
In die Statementliste habe ich mal beispielhaft einige Statements eingetragen. Die kann man aber je nach dem was man gerade macht, immer wieder erweitern oder ändern. 
 
Vielleicht kann es ausser mir noch jemand gebrauchen. | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		werkwelt •--->
  
 
  Anmeldedatum: 28.02.2005 Beiträge: 156 Wohnort: Bad Ems
  | 
		
			
				 Verfasst am: 07.02.2013 - 21:57    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				… keine Antwort auf solch wertvollen Beitrag?
 
 
Habe gerade gelernt, daß der Mauszeiger im Skripteditor-Fenster ein Kontextmenü mit vielen Scriptbeispielzeilen vorhält. Als ich den gebraucht hätte, lief schon meine FileMaker-Datenbank mit Skriptbeispielzeilen. 
 
 
Ich freue mich über jeden, der nachhaltig Abläufe untereinander verbindet. Und das geht nun mal mit AppleScript sehr schön … _________________ Mit freundlichen Grüßen,
 
Norbert Lindenthal | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		woodpecker •--->
  
 
  Anmeldedatum: 12.10.2010 Beiträge: 150 Wohnort: Roggentin/Rostock
  | 
		
			
				 Verfasst am: 08.02.2013 - 10:32    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Hallo Norbert,
 
bei mir war es eben umgekehrt. Ich bin zuerst in AppleScript eingetaucht, bevor ich mir FileMaker zu Gemüte geführt habe. 
 
 
Gruß Erich | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
  | 
   
 
  
Powered by phpBB  © 2001, 2002 phpBB Group Deutsche Übersetzung von phpBB.de 
		 | 
	 
 
 | 
 
 |