Tuesday, February 01, 2005

Tcl/Tk Editor!

Ein recht kurzer Code!

Man möge mir Tippfehler verzeihen, die Tcl Fehlermeldungen sind allerdings eh recht gut also müsstet ihr es hinbekommen ^^

Code:

#!/user/bin/wish
package require Tk

#GUI erzeugen
text .text -bg white -undo yes -wrap none -yscrollcommand ".vscroll set" -xscrollcommand ".hscroll set"
scrollbar .hscroll -orient horizontal -command ".text xview"
scrollbar .vscroll -orient vertical -command ".text yview"
label .status -font 12 -textvariable ::currentFile

grid .text .vscroll -sticky nesw
grid .hscroll -sticky ew
grid .status -sticky ew

grid rowconfigure . 0 -weight 1
grid rowconfigure . 1 -weight 0
grid rowconfigure . 2 -weight 0
grid columnconfigure . 0 -weight 1
grid columnconfigure . 1 -weight 0

#Menü erzeugen
menu .menu
. configure -menu .menu

menu .menu.file -tearoff 0
.menu.file add command -label "Öffnen" -command openFile
.menu.file add command -label "Speichern unter..." -command saveFileAs
.menu.file add separator
.menu.file add command -label "Beenden" -command {exit 0}

menu .menu.edit -tearoff 0
.emu.edit add cascade -menu .menu.edit -label "Edit"
.menu.edit add command -label "Rückgängig machen" -command {.text edit undo}
.menu.edit add command -label "Wiederherstellen" -command {.text edit redo}
.menu.edit add separator
.menu.edit add command -label "Zum Zeilenanfang" -command {.text mark set insert "insert linestart"}
.menu.edit add command -label "Zum Zeilenende" -command {.text mark set insert "insert lineend"}
.menu.edit add command -label "Zeile löschen" -command {.text delete "insert linestart" "insert lineend"}

menu .menu.zeichen -tearoff 0
.menu.zeichen add cascade -menu .menu.zeichen -label "Sonderzeichen"
.menu.zeichen add command -label "Eurozeichen" -command {.text insert "insert" \u20ac }
.menu.zeichen add command -label "PHP Bereich" -command {.text insert "insert" "<?php ?>" }
.menu.zeichen add command -label "HTML Tag" -command {.text insert "insert" "<></>" }
.menu.zeichen add command -label "HTML Grundgerüst" -command {.text insert "insert" "<html>\n <head>\n <title></title>\n </head>\n <body>\n\n </body>\n</html>" }


#HIer könnt ihr beleibige Dateitypen einfügen
set dateitypen {
{"Dateityp" {.dateieindung}
{"Beliebige können eingfügt werden!!!" {.dsfjdafhksdhjfas}
{"All" * }
}

proc openFile {} {
while {true} {
set fileName [tk_getOpenFile -filetypes $::dateitypen]
if { [string length $fileName] == } } {
break
} elseif { [ file exists $fileName ] && [ file readable $fileName ]} {
set fd [open $fileName r]
.text delete 1.0 end
.text insert 1.0 [read $fd]
close $fd
} else {
tk_messageBox -icon error -title "Lesefehler" -message "Datei $fileName kann nicht gelsen werden!"
}
}
}

proc saveFileAs {} {
while {true} {
set fileName [tk_getSaveFile -filetypes $::daeitypen -initialfile [file tail $::currentFile]
if { [ string length $fileName] == 0 } {
break
} elseif { [ catch {
set fd [open $fileName w]
puts -nonewline $fd [.text get 1.0 "end 1c"]
close $fd
} err] } {
set antwort [tk_messageBox -type retrycancel -icon error -title "Fehler" -message "Fehler beim abspeichern! Fehler: \n$err"]
if { [ string match "cancel" $antwort] } {
break
}
set fileName ""
} else {
set ::currentFile $fileName
break;
}
}
}
}
/Code!


Wobei am Ende bin ich mir voll nicht sicher, dass das richhtig ist mit den Klammern und so, einfach probieren und sagen wenn es nicht geht ;)

Sunday, January 30, 2005

Herzlich Willkommen

Hi!

Meinen eigentlcihen Blog findet ihr Unter http://hu8.blogspot.com.

Hier findeet ihr lediglich ein paar CodeSnippets in PHP, Ruby, BASH und tclsh (+tk).... von mir geschreiben.

Ich wünsche euch viel Spass damit ;)