commit da09c34c3269ff5c8d86b23fd1322b480b291c22 Author: Ulf Gebhardt Date: Wed Mar 9 21:50:51 2016 +0100 init commit diff --git a/Script/rylon.ysc b/Script/rylon.ysc new file mode 100644 index 0000000..ec58298 --- /dev/null +++ b/Script/rylon.ysc @@ -0,0 +1 @@ +ladida;;;255;;;;;; \ No newline at end of file diff --git a/Script/ycfg.ysc b/Script/ycfg.ysc new file mode 100644 index 0000000..25a7de4 --- /dev/null +++ b/Script/ycfg.ysc @@ -0,0 +1,17 @@ +//text;FontName;FontSize;FontColor;Bold;Italic;Underline;StrikeOut;Großkleinschreibung beachten? +=;;;255;;;;;; +0;;;8421376;;;;;; +1;;;8421376;;;;;; +2;;;8421376;;;;;; +3;;;8421376;;;;;; +4;;;8421376;;;;;; +5;;;8421376;;;;;; +6;;;8421376;;;;;; +7;;;8421376;;;;;; +8;;;8421376;;;;;; +9;;;8421376;;;;;; +//;;;16711935;;1;;;; +ö;;;255;;;1;;; +ä;;;255;;;1;;; +ü;;;255;;;1;;; +ß;;;255;;;1;;; \ No newline at end of file diff --git a/TextPad.cfg b/TextPad.cfg new file mode 100644 index 0000000..1884010 --- /dev/null +++ b/TextPad.cfg @@ -0,0 +1,35 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-LE"c:\programme\delphi\delphi 6\Projects\Bpl" +-LN"c:\programme\delphi\delphi 6\Projects\Bpl" diff --git a/TextPad.dof b/TextPad.dof new file mode 100644 index 0000000..e93a303 --- /dev/null +++ b/TextPad.dof @@ -0,0 +1,83 @@ +[FileVersion] +Version=6.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;VclSmp;vclshlctrls;fileinfo;gif;rotlab;Zip;Indy60;semipanel;trayico;MivSkinComponents +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1031 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= diff --git a/TextPad.dpr b/TextPad.dpr new file mode 100644 index 0000000..49a900f --- /dev/null +++ b/TextPad.dpr @@ -0,0 +1,14 @@ +program TextPad; + +uses + Forms, + main in 'main.pas' {fTextPad}, + tpscript in 'tpscript.pas'; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TfTextPad, fTextPad); + Application.Run; +end. diff --git a/TextPad.res b/TextPad.res new file mode 100644 index 0000000..466ff97 Binary files /dev/null and b/TextPad.res differ diff --git a/main.dfm b/main.dfm new file mode 100644 index 0000000..20a6d18 --- /dev/null +++ b/main.dfm @@ -0,0 +1,103 @@ +object fTextPad: TfTextPad + Left = 227 + Top = 181 + Width = 870 + Height = 640 + Caption = 'TextPad' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + Menu = MainMenu + OldCreateOrder = False + Position = poScreenCenter + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object text: TRichEdit + Left = 0 + Top = 0 + Width = 862 + Height = 594 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Courier' + Font.Style = [] + ParentFont = False + TabOrder = 0 + OnChange = textChange + end + object MainMenu: TMainMenu + Left = 96 + Top = 56 + object extPad1: TMenuItem + Caption = 'TextPad' + object Save1: TMenuItem + Caption = 'Save' + OnClick = Save1Click + end + object Saveas1: TMenuItem + Caption = 'Save as' + OnClick = Saveas1Click + end + object Open1: TMenuItem + Caption = 'Open' + OnClick = Open1Click + end + object N1: TMenuItem + Caption = '-' + end + object Exit1: TMenuItem + Caption = 'Exit' + OnClick = Exit1Click + end + end + object Optionen1: TMenuItem + Caption = 'Optionen' + object Schrift1: TMenuItem + Caption = 'Schrift' + OnClick = Schrift1Click + end + object Script1: TMenuItem + Caption = 'Script' + end + end + object About1: TMenuItem + Caption = 'About' + OnClick = About1Click + end + end + object dSchrift: TFontDialog + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + MinFontSize = 0 + MaxFontSize = 0 + Left = 96 + Top = 24 + end + object Open: TOpenDialog + DefaultExt = '.txt' + Filter = + 'Text File (*.txt)|*.txt|Yeminy Text File (*.yem)|*.yem|Yeminy Co' + + 'nfig File (*.ycfg)|*.ycfg|Alle Files|*' + Left = 64 + Top = 24 + end + object Save: TSaveDialog + DefaultExt = '.txt' + Filter = + 'Text File (*.txt)|*.txt|Yeminy Text File (*.yem)|*.yem|Yeminy Co' + + 'nfig File (*.ycfg)|*.ycfg|Alle Files|*' + Left = 64 + Top = 56 + end +end diff --git a/main.pas b/main.pas new file mode 100644 index 0000000..d9db219 --- /dev/null +++ b/main.pas @@ -0,0 +1,255 @@ +unit main; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, Menus, StdCtrls, ComCtrls, about, ycfg, tpscript; + +type + TfTextPad = class(TForm) + text: TRichEdit; + MainMenu: TMainMenu; + extPad1: TMenuItem; + About1: TMenuItem; + Schrift1: TMenuItem; + Exit1: TMenuItem; + dSchrift: TFontDialog; + Save1: TMenuItem; + Open1: TMenuItem; + N1: TMenuItem; + Open: TOpenDialog; + Save: TSaveDialog; + Optionen1: TMenuItem; + Script1: TMenuItem; + Saveas1: TMenuItem; + procedure Exit1Click(Sender: TObject); + procedure Schrift1Click(Sender: TObject); + procedure loadconfig; + procedure saveconfig; + function askReally:word; + procedure About1Click(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure Save1Click(Sender: TObject); + procedure Saveas1Click(Sender: TObject); + procedure Open1Click(Sender: TObject); + procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); + procedure textChange(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + textname:string; + scriptname:string; + script:TScript; + end; + +var + fTextPad: TfTextPad; + +implementation + +{$R *.dfm} + +procedure TfTextPad.loadconfig; +var temps:TStringlist; +begin + + if fileexists(extractfilepath(Application.exename)+'textpad.ycfg') then + begin + temps:=TStringlist.Create; + + temps.LoadFromFile(extractfilepath(Application.exename)+'textpad.ycfg'); + + text.Font.Color:=getycfgint(temps,'Color',000000); + text.Font.Name:=getycfgstr(temps,'Font'); + text.Font.Size:=getycfgint(temps,'Fontsize',12); + if getycfgbool(temps,'Bold') then text.Font.Style := text.Font.Style + [fsBold] else text.Font.Style := text.Font.Style - [fsBold]; + if getycfgbool(temps,'Italic') then text.Font.Style := text.Font.Style + [fsItalic] else text.Font.Style := text.Font.Style - [fsItalic]; + if getycfgbool(temps,'Underline') then text.Font.Style := text.Font.Style + [fsUnderline] else text.Font.Style := text.Font.Style - [fsUnderline]; + if getycfgbool(temps,'StrikeOut') then text.Font.Style := text.Font.Style + [fsStrikeOut] else text.Font.Style := text.Font.Style - [fsStrikeOut]; + + scriptname:=extractfilepath(Application.exename)+getycfgstr(temps,'Script'); + + temps.Free; + end; + +end; + +procedure TfTextPad.saveconfig; +var temps:TStringlist; +begin + + if fileexists(extractfilepath(Application.exename)+'textpad.ycfg') then + begin + temps:=TStringlist.Create; + + temps.LoadFromFile(extractfilepath(Application.exename)+'textpad.ycfg'); + + setycfgint(temps,'Color',text.font.color); + setycfgstr(temps,'Font',text.Font.Name); + setycfgint(temps,'Fontsize',text.Font.size); + if Integer(fsBold in Text.Font.Style)>0 then setycfgbool(temps,'Bold',true) else setycfgbool(temps,'Bold',false); + if Integer(fsItalic in Text.Font.Style)>0 then setycfgbool(temps,'Italic',true) else setycfgbool(temps,'Italic',false); + if Integer(fsUnderline in Text.Font.Style)>0 then setycfgbool(temps,'Underline',true) else setycfgbool(temps,'Underline',false); + if Integer(fsStrikeOut in Text.Font.Style)>0 then setycfgbool(temps,'StrikeOut',true) else setycfgbool(temps,'StrikeOut',false); + + temps.SaveToFile(extractfilepath(Application.exename)+'textpad.ycfg'); + + temps.Free; + end; + +end; + +procedure TfTextPad.Exit1Click(Sender: TObject); +begin + + Application.Terminate; + +end; + +procedure TfTextPad.Schrift1Click(Sender: TObject); +begin + + dSchrift.Font:=text.Font; + if dSchrift.Execute then text.Font:=dSchrift.Font; + +end; + +procedure TfTextPad.About1Click(Sender: TObject); +begin + + showabout(Application); + +end; + +procedure TfTextPad.FormCreate(Sender: TObject); +begin + + loadconfig; + + Script:=TScript.Create; + + Script.loadscript(scriptname); + + textname:=''; + + open.InitialDir:=extractfilepath(Application.exename); + save.InitialDir:=extractfilepath(Application.exename); + + text.SelLength:=2; + +end; + +procedure TfTextPad.FormClose(Sender: TObject; var Action: TCloseAction); +begin + + saveconfig; + +end; + +function TfTextPad.askReally:word; +begin + + result:=messagedlg('Du hast nocht gespeichert - Daten Speichern?',mtwarning,[mbyes,mbno,mbAbort],0); + +end; + +procedure TfTextPad.Save1Click(Sender: TObject); +var temps:TStringlist; +begin + + temps:=TStringlist.Create; + + temps.Text:=text.Lines.Text; + + if textname='' then + begin + if save.Execute then + begin + textname:=save.FileName; + temps.SaveToFile(textname); + + end; + end else temps.SaveToFile(textname); + + text.Modified:=false; + + fTextPad.caption:='TextPad - '+extractfilename(textname); + + temps.Free; + +end; + +procedure TfTextPad.Saveas1Click(Sender: TObject); +var temps:TStringlist; +begin + + temps:=TStringlist.Create; + + temps.Text:=text.Lines.Text; + + if save.Execute then + begin + textname:=save.FileName; + temps.SaveToFile(textname); + end; + + text.Modified:=false; + + fTextPad.caption:='TextPad - '+extractfilename(textname); + + temps.Free; + +end; + +procedure TfTextPad.Open1Click(Sender: TObject); +var tempw:word; +begin + + if text.Modified then + begin + tempw:=askReally; + + if tempw=mryes then Save1Click(self); + if tempw=mrabort then exit; + end; + + if open.Execute then + begin + textname:=open.FileName; + text.Lines.LoadFromFile(textname); + end; + + text.Modified:=false; + + fTextPad.caption:='TextPad - '+extractfilename(textname); + +end; + +procedure TfTextPad.FormCloseQuery(Sender: TObject; var CanClose: Boolean); +var tempw:word; +begin + + if text.Modified then + begin + tempw:=askReally; + + if tempw=mryes then Save1Click(self); + if tempw=mrabort then canclose:=false; + end; + +end; + +procedure TfTextPad.textChange(Sender: TObject); +var temp:TPoint; +begin + + text.SelLength:=2; + + if script.changedebug then script.setRich(text); + +end; + +end. diff --git a/textpad.ycfg b/textpad.ycfg new file mode 100644 index 0000000..fa21ddb --- /dev/null +++ b/textpad.ycfg @@ -0,0 +1,12 @@ +//textpad config + +//Font +Font=Fixedsys +Fontsize=10 +Bold=1 +Italic=0 +Color=0 +Underline=0 +StrikeOut=0 + +Script=Script\ycfg.ysc diff --git a/tpscript.pas b/tpscript.pas new file mode 100644 index 0000000..ec9e1e2 --- /dev/null +++ b/tpscript.pas @@ -0,0 +1,164 @@ +unit tpscript; + +interface + +uses sysutils,classes,ycfg,ComCtrls,Graphics,dialogs,windows; + +type TScriptPart = class + public + Text:string; + FontName:string; + FontSize:integer; + FontColor:integer; + Bold:integer; + Italic:integer; + Underline:integer; + StrikeOut:integer; + Grosskleinschreibung:boolean; + BisZeilenEnde:boolean; + NurSeperiert:boolean; + VorrigesWort:boolean; + NaechstesWort:boolean; + +end; + +type TScript = class + public + ScriptParts:array of TScriptPart; + changedebug:boolean; + Font:TFont; + + procedure loadscript(Filepath:string); + procedure setRich(Rich:TRichedit); + + destructor destroy; + constructor create; +end; + +implementation + +constructor Tscript.create; +begin + + changedebug:=true; + +end; + +procedure TScript.setRich(Rich:TRichedit); +var i,j:integer; + tempp:TPoint; + font:TFont; +begin + + for i:=0 to length(ScriptParts)-1 do + begin + if ScriptParts[i].Grosskleinschreibung then + begin + if lowercase(copy(rich.lines.text,length(rich.lines.Text)-length(ScriptParts[i].text)-1,length(ScriptParts[i].text)))=lowercase(ScriptParts[i].text) then + begin + tempp:=rich.CaretPos; + font:=rich.Font; + changedebug:=false; + rich.Lines.BeginUpdate; + + rich.SelStart:=length(rich.lines.Text)-length(ScriptParts[i].text)-2; + rich.SelLength:=length(ScriptParts[i].text); + + changedebug:=false; + + if ScriptParts[i].FontName<>'' then rich.SelAttributes.Name:=ScriptParts[i].FontName; + if ScriptParts[i].FontSize>0 then rich.SelAttributes.Size:=ScriptParts[i].FontSize; + if ScriptParts[i].FontColor>0 then rich.SelAttributes.Color:=ScriptParts[i].FontColor; + if ScriptParts[i].Bold=0 then rich.SelAttributes.Style:=rich.SelAttributes.Style-[fsbold]; + if ScriptParts[i].Bold=1 then rich.SelAttributes.Style:=rich.SelAttributes.Style+[fsbold]; + if ScriptParts[i].italic=0 then rich.SelAttributes.Style:=rich.SelAttributes.Style-[fsitalic]; + if ScriptParts[i].italic=1 then rich.SelAttributes.Style:=rich.SelAttributes.Style+[fsitalic]; + if ScriptParts[i].underline=0 then rich.SelAttributes.Style:=rich.SelAttributes.Style-[fsunderline]; + if ScriptParts[i].underline=1 then rich.SelAttributes.Style:=rich.SelAttributes.Style+[fsunderline]; + if ScriptParts[i].strikeout=0 then rich.SelAttributes.Style:=rich.SelAttributes.Style-[fsstrikeout]; + if ScriptParts[i].strikeout=1 then rich.SelAttributes.Style:=rich.SelAttributes.Style+[fsstrikeout]; + + rich.CaretPos:=tempp; + rich.SelLength:=2; + rich.Font:=font; + rich.Lines.EndUpdate; + changedebug:=true; + end; + end else + begin + if lowercase(copy(rich.lines.text,length(rich.lines.Text)-length(ScriptParts[i].text)-1,length(ScriptParts[i].text)))=lowercase(ScriptParts[i].text) then + begin + tempp:=rich.CaretPos; + font:=rich.Font; + changedebug:=false; + rich.Lines.BeginUpdate; + + rich.SelStart:=length(rich.lines.Text)-length(ScriptParts[i].text)-2; + rich.SelLength:=length(ScriptParts[i].text); + + changedebug:=false; + + if ScriptParts[i].FontName<>'' then rich.SelAttributes.Name:=ScriptParts[i].FontName; + if ScriptParts[i].FontSize>0 then rich.SelAttributes.Size:=ScriptParts[i].FontSize; + if ScriptParts[i].FontColor>0 then rich.SelAttributes.Color:=ScriptParts[i].FontColor; + if ScriptParts[i].Bold=0 then rich.SelAttributes.Style:=rich.SelAttributes.Style-[fsbold]; + if ScriptParts[i].Bold=1 then rich.SelAttributes.Style:=rich.SelAttributes.Style+[fsbold]; + if ScriptParts[i].italic=0 then rich.SelAttributes.Style:=rich.SelAttributes.Style-[fsitalic]; + if ScriptParts[i].italic=1 then rich.SelAttributes.Style:=rich.SelAttributes.Style+[fsitalic]; + if ScriptParts[i].underline=0 then rich.SelAttributes.Style:=rich.SelAttributes.Style-[fsunderline]; + if ScriptParts[i].underline=1 then rich.SelAttributes.Style:=rich.SelAttributes.Style+[fsunderline]; + if ScriptParts[i].strikeout=0 then rich.SelAttributes.Style:=rich.SelAttributes.Style-[fsstrikeout]; + if ScriptParts[i].strikeout=1 then rich.SelAttributes.Style:=rich.SelAttributes.Style+[fsstrikeout]; + + rich.CaretPos:=tempp; + rich.SelLength:=2; + rich.Font:=font; + rich.Lines.EndUpdate; + changedebug:=true; + end; + end; + end; + +end; + +procedure TScript.loadscript(Filepath:string); +var temps:TStringlist; + i:integer; +begin + + if fileexists(filepath) then + begin + temps:=TStringlist.create; + temps.LoadFromFile(filepath); + for i:=0 to temps.Count-1 do + begin + if getnumberofdivides(temps.Strings[i],';')>=9 then + begin + setlength(Scriptparts,length(scriptparts)+1); + Scriptparts[length(scriptparts)-1]:=TScriptpart.Create; + Scriptparts[length(scriptparts)-1].Text:=dividestring(temps.Strings[i],';',1); + Scriptparts[length(scriptparts)-1].FontName:=dividestring(temps.Strings[i],';',2); + Scriptparts[length(scriptparts)-1].FontSize:=strtointdef(dividestring(temps.Strings[i],';',3),-1); + Scriptparts[length(scriptparts)-1].FontColor:=strtointdef(dividestring(temps.Strings[i],';',4),-1); + Scriptparts[length(scriptparts)-1].Bold:=strtointdef(dividestring(temps.Strings[i],';',5),-1); + Scriptparts[length(scriptparts)-1].Italic:=strtointdef(dividestring(temps.Strings[i],';',6),-1); + Scriptparts[length(scriptparts)-1].Underline:=strtointdef(dividestring(temps.Strings[i],';',7),-1); + Scriptparts[length(scriptparts)-1].StrikeOut:=strtointdef(dividestring(temps.Strings[i],';',8),-1); + if dividestring(temps.Strings[i],';',9)='1' then Scriptparts[length(scriptparts)-1].Grosskleinschreibung:=true else Scriptparts[length(scriptparts)-1].Grosskleinschreibung:=false; + end; + end; + temps.Free; + end; + +end; + +destructor TScript.destroy; +var i:integer; +begin + + for i:=0 to length(ScriptParts)-1 do Scriptparts[i].Free; + +end; + +end. +