program X_Co; { pascal version of simplyfied 'coe09_09' convertor (original in assembler) } { X-Windows version beta 4, uses xform library } { YOU ARE NOT PERMITTED TO USE CONVERSION TABLES IN OTHER PRODUCT } { WITHOUT REFERENCING THIS SOURCE } { Copyright (C) 1998 Radek Liboska This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. } Uses forms,strings; Type TFD_XCo = record XCo : PFL_FORM; vdata : Pointer; ldata : Longint; group1, tl1, tl2, tl3, tl4, tl5, tl6, tl7, tl8, zprava, IFB, OFB, GOB, GOBox, SELB, SELB1, ESCB, TXT, FRM, group2, CRCFrame, cb1, cb2, CRCBox1, CRCBox2 : PFL_OBJECT; end; PFD_XCo = ^TFD_XCo; Var XCo : PFD_XCo; IFName, OFName:string[64]; IFNChar,OFNChar:pchar; FromF, ToF: file; NumRead, NumWritten,i: Word; buf: array[1..2048] of byte; AuxStr:string; a :word; Table :Array[1..128] of char; Const HexChars:Array [0..$F] of char = '0123456789ABCDEF'; {/***********************************************************/ /* */ /* CRC LOOKUP TABLE */ /* ================ */ /* The following CRC lookup table was generated */ /* by the Rocksoft^tm Model CRC Algorithm Table Generation */ /* Program V1.0 using the following model parameters: */ /* */ /* Width : 4 bytes. */ /* Poly : 0x04C11DB7L */ /* Reverse : TRUE. */ /* */ /************************************************************/} CRCTable :Array [0..255] of longint = ($00000000,$77073096,$EE0E612C,$990951BA,$076DC419,$706AF48F,$E963A535,$9E6495A3, $0EDB8832,$79DCB8A4,$E0D5E91E,$97D2D988,$09B64C2B,$7EB17CBD,$E7B82D07,$90BF1D91, $1DB71064,$6AB020F2,$F3B97148,$84BE41DE,$1ADAD47D,$6DDDE4EB,$F4D4B551,$83D385C7, $136C9856,$646BA8C0,$FD62F97A,$8A65C9EC,$14015C4F,$63066CD9,$FA0F3D63,$8D080DF5, $3B6E20C8,$4C69105E,$D56041E4,$A2677172,$3C03E4D1,$4B04D447,$D20D85FD,$A50AB56B, $35B5A8FA,$42B2986C,$DBBBC9D6,$ACBCF940,$32D86CE3,$45DF5C75,$DCD60DCF,$ABD13D59, $26D930AC,$51DE003A,$C8D75180,$BFD06116,$21B4F4B5,$56B3C423,$CFBA9599,$B8BDA50F, $2802B89E,$5F058808,$C60CD9B2,$B10BE924,$2F6F7C87,$58684C11,$C1611DAB,$B6662D3D, $76DC4190,$01DB7106,$98D220BC,$EFD5102A,$71B18589,$06B6B51F,$9FBFE4A5,$E8B8D433, $7807C9A2,$0F00F934,$9609A88E,$E10E9818,$7F6A0DBB,$086D3D2D,$91646C97,$E6635C01, $6B6B51F4,$1C6C6162,$856530D8,$F262004E,$6C0695ED,$1B01A57B,$8208F4C1,$F50FC457, $65B0D9C6,$12B7E950,$8BBEB8EA,$FCB9887C,$62DD1DDF,$15DA2D49,$8CD37CF3,$FBD44C65, $4DB26158,$3AB551CE,$A3BC0074,$D4BB30E2,$4ADFA541,$3DD895D7,$A4D1C46D,$D3D6F4FB, $4369E96A,$346ED9FC,$AD678846,$DA60B8D0,$44042D73,$33031DE5,$AA0A4C5F,$DD0D7CC9, $5005713C,$270241AA,$BE0B1010,$C90C2086,$5768B525,$206F85B3,$B966D409,$CE61E49F, $5EDEF90E,$29D9C998,$B0D09822,$C7D7A8B4,$59B33D17,$2EB40D81,$B7BD5C3B,$C0BA6CAD, $EDB88320,$9ABFB3B6,$03B6E20C,$74B1D29A,$EAD54739,$9DD277AF,$04DB2615,$73DC1683, $E3630B12,$94643B84,$0D6D6A3E,$7A6A5AA8,$E40ECF0B,$9309FF9D,$0A00AE27,$7D079EB1, $F00F9344,$8708A3D2,$1E01F268,$6906C2FE,$F762575D,$806567CB,$196C3671,$6E6B06E7, $FED41B76,$89D32BE0,$10DA7A5A,$67DD4ACC,$F9B9DF6F,$8EBEEFF9,$17B7BE43,$60B08ED5, $D6D6A3E8,$A1D1937E,$38D8C2C4,$4FDFF252,$D1BB67F1,$A6BC5767,$3FB506DD,$48B2364B, $D80D2BDA,$AF0A1B4C,$36034AF6,$41047A60,$DF60EFC3,$A867DF55,$316E8EEF,$4669BE79, $CB61B38C,$BC66831A,$256FD2A0,$5268E236,$CC0C7795,$BB0B4703,$220216B9,$5505262F, $C5BA3BBE,$B2BD0B28,$2BB45A92,$5CB36A04,$C2D7FFA7,$B5D0CF31,$2CD99E8B,$5BDEAE1D, $9B64C2B0,$EC63F226,$756AA39C,$026D930A,$9C0906A9,$EB0E363F,$72076785,$05005713, $95BF4A82,$E2B87A14,$7BB12BAE,$0CB61B38,$92D28E9B,$E5D5BE0D,$7CDCEFB7,$0BDBDF21, $86D3D2D4,$F1D4E242,$68DDB3F8,$1FDA836E,$81BE16CD,$F6B9265B,$6FB077E1,$18B74777, $88085AE6,$FF0F6A70,$66063BCA,$11010B5C,$8F659EFF,$F862AE69,$616BFFD3,$166CCF45, $A00AE278,$D70DD2EE,$4E048354,$3903B3C2,$A7672661,$D06016F7,$4969474D,$3E6E77DB, $AED16A4A,$D9D65ADC,$40DF0B66,$37D83BF0,$A9BCAE53,$DEBB9EC5,$47B2CF7F,$30B5FFE9, $BDBDF21C,$CABAC28A,$53B39330,$24B4A3A6,$BAD03605,$CDD70693,$54DE5729,$23D967BF, $B3667A2E,$C4614AB8,$5D681B02,$2A6F2B94,$B40BBE37,$C30C8EA1,$5A05DF1B,$2D02EF8D); Kam2US:Array[1..128] of char=( 'C','u','e','d','a','D','T','c','e','E','L','I','l','l','A', 'A','E','z','Z','o','o','O','u','U','y','O','U','S','L','Y', 'R','t','a','i','o','u','n','N','U','O','s','r','r','R','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','',''); Win2Kam:Array[1..128] of char=( '!','!','!',',','!','"','!','!','!','!','','<','!','','', '!','!','`',#39,'"','"','.','-','-','!','!','','>','!','', '','!',' ','!','!','!','!','!','|','','!','!','!','','!', '-','!','!','','','!','!','!','','!','!','!','!','!','', '','!','','!','','','!','!','','','!','!','','','!', '!','','','!','','!','!','','','','','','!','','', '','','','','!','!','','','!','!','','','!','!','', '','!','!','','','!','','!','!','','','','','','', '','','','','','','!','!'); Kam2Win:Array[1..128] of char=( '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','',''); Lat2Kam:Array[1..128] of char=( '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','',' ',''); Kam2Lat:Array[1..128] of char=( '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','',''); Iso2Win:Array[1..128] of char=( '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','',''); Win2Iso:Array[1..128] of char=( '!','!',',','!','!','!','!','!','!','!','','<','','','', '','!',#$27,#$27,#$22,#$22,'!','-','-','!','!','','>','','', '','','','','','','','','|','','','!','','!','!', '','!','','','!','','','','!','!','!','','','','!', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','',''); Iso2US:Array[1..128] of char=( ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ','A','!','L','!','L','S','','!','S','S','T','Z', '-','Z','Z','!','a','!','!','!','l','s','!','!','s','s','t', 'z','"','z','z','R','A','A','A','A','L','C','C','C','E','E', 'E','E','I','I','D','D','N','N','O','O','O','O','X','R','U', 'U','U','U','Y','T','B','r','a','a','a','a','l','c','c','c', 'e','e','e','e','i','i','d','d','n','n','o','o','o','o','+', 'r','u','u','u','u','y','t','!'); Original:Array[1..128] of char=( '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','', '','','','','','','',''); function FileExists(FileName: string): Boolean; var f: file; begin {$I-}Assign(f, FileName); Reset(f);Close(f);{$I+} FileExists := (IOResult = 0) and (FileName <> ''); end; { FileExists } Function GetHexWord(x: Word):string[4]; begin GetHexWord:=HexChars[Hi(X) shr 4] +HexChars[Hi(X) AND $F] +HexChars[Lo(X) shr 4] +HexChars[Lo(X) AND $F]+#0; end; procedure RunCRC(ob : PFL_OBJECT;prdy : integer);export; var CRC, k:longint; s:string[10]; p:pchar; begin filemode:=0; p:=StrAlloc(10); IFName:=strpas(fl_get_input(PFD_XCo(ob^.form^.fdui)^.IFB)); OFName:=strpas(fl_get_input(PFD_XCo(ob^.form^.fdui)^.OFB)); If (not Fileexists(IFName)) then fl_show_alert('Alert', 'Operation cannot be completed', 'Input file does not exists!', 0) else begin Assign(FromF,IFName); Reset(FromF, 1);{ Velikost zznamu = 1 } CRC := $FFFFFFFF; k:=Filesize(FromF); repeat BlockRead(FromF,buf,SizeOf(buf),NumRead); for i:=1 to NumRead do CRC := (CRC Shr 8) Xor CRCTable[(CRC Xor buf[i]) AND $FF]; until NumRead < SizeOf(buf); Close(FromF); If prdy=1 then begin CRC:=CRC Xor $FFFFFFFF; s:=GetHexWord((CRC shr 16) AND $FFFF)+GetHexWord(CRC); end else s:=GetHexWord((CRC shr 16) AND $FFFF)+' '+GetHexWord(CRC); fl_set_object_label(PFD_XCo(ob^.form^.fdui)^.CRCBox1, StrPCopy(p,s)); end; If (not Fileexists(OFName)) then fl_set_object_label(PFD_XCo(ob^.form^.fdui)^.CRCBox2, 'FFFFFFFF') else begin Assign(FromF,OFName); Reset(FromF, 1);{ Velikost zznamu = 1 } CRC := $FFFFFFFF; k:=Filesize(FromF); repeat BlockRead(FromF,buf,SizeOf(buf),NumRead); for i:=1 to NumRead do CRC := (CRC Shr 8) Xor CRCTable[(CRC Xor buf[i]) AND $FF]; until NumRead < SizeOf(buf); Close(FromF); If prdy=1 then begin CRC:=CRC Xor $FFFFFFFF; s:=GetHexWord((CRC shr 16) AND $FFFF)+GetHexWord(CRC); end else s:=GetHexWord((CRC shr 16) AND $FFFF)+' '+GetHexWord(CRC); fl_set_object_label(PFD_XCo(ob^.form^.fdui)^.CRCBox2, StrPCopy(p,s)); {note : string must be 0 terminated!, StrPCopy transforms string to #0 terminated pchar} end; end; procedure RunCo(ob : PFL_OBJECT;prdy : integer);export; begin fl_hide_object(PFD_XCo(ob^.form^.fdui)^.GOB); IFName:=strpas(fl_get_input(PFD_XCo(ob^.form^.fdui)^.IFB)); OFName:=strpas(fl_get_input(PFD_XCo(ob^.form^.fdui)^.OFB)); If ((not Fileexists(IFName)) OR (OFName='')) then fl_show_alert('Alert', 'Operation cannot be completed', 'Input file does not exists!', 0) else begin Assign(FromF,IFName); Reset(FromF, 1);{ Velikost zznamu = 1 } Assign(ToF, OFName); Rewrite(ToF, 1); { Velikost zznamu = 1 } Repeat begin BlockRead(FromF,buf,SizeOf(buf),NumRead); If NumRead>0 then For i:=1 to NumRead do If buf[i]>127 then buf[i]:=Ord(Table[buf[i]-127]); BlockWrite(ToF,buf,NumRead,NumWritten); end; Until NumRead=0; Close(FromF); Close(ToF) end; If fl_get_button(PFD_XCo(ob^.form^.fdui)^.cb1)=1 then fl_call_object_callback(PFD_XCo(ob^.form^.fdui)^.cb1); If fl_get_button(PFD_XCo(ob^.form^.fdui)^.cb2)=1 then fl_call_object_callback(PFD_XCo(ob^.form^.fdui)^.cb2); fl_set_button(PFD_XCo(ob^.form^.fdui)^.tl1,0); fl_set_button(PFD_XCo(ob^.form^.fdui)^.tl2,0); fl_set_button(PFD_XCo(ob^.form^.fdui)^.tl3,0); fl_set_button(PFD_XCo(ob^.form^.fdui)^.tl4,0); fl_set_button(PFD_XCo(ob^.form^.fdui)^.tl5,0); fl_set_button(PFD_XCo(ob^.form^.fdui)^.tl6,0); fl_set_button(PFD_XCo(ob^.form^.fdui)^.tl7,0); fl_set_button(PFD_XCo(ob^.form^.fdui)^.tl8,0); end; Procedure zprava(ob : PFL_OBJECT;prdy : integer);export; var kecy : string[40]; begin If prdy in [1..8] then begin Case prdy of 8:For i:=1 to 128 do Table[i]:=Kam2US[i]; 6:For i:=1 to 128 do Table[i]:=Kam2Lat[i]; 7:For i:=1 to 128 do Table[i]:=Lat2Kam[i]; 4:For i:=1 to 128 do Table[i]:=Kam2Win[i]; 5:For i:=1 to 128 do Table[i]:=Win2Kam[i]; 1:For i:=1 to 128 do Table[i]:=Iso2Win[i]; 2:For i:=1 to 128 do Table[i]:=Win2Iso[i]; 3:For i:=1 to 128 do Table[i]:=Iso2US[i]; end; fl_show_object(PFD_XCo(ob^.form^.fdui)^.GOB); end; Kecy:='Prdy'; If prdy=2 then kecy:='Windoze to ISO Latin2' else If prdy=1 then kecy:='ISO Latin2 to Windoze' else If prdy=3 then kecy:='ISO Latin2 to US 437 ASCII' else If prdy=4 then kecy:='Kamenik to Windoze' else If prdy=5 then kecy:='Windoze to Kamenik' else If prdy=6 then kecy:='Kamenik to Latin 2' else If prdy=7 then kecy:='Latin 2 to Kamenik' else If prdy=8 then kecy:='Kamenik to US 437 ASCII' else kecy:='Zadne prdy'; kecy:='Convert from '+kecy+#0; fl_set_object_label(PFD_XCo(ob^.form^.fdui)^.zprava, @kecy[1]); end; procedure ssel(ob : PFL_OBJECT;prdy : integer);export; begin If prdy=0 then begin IFNChar:=(fl_get_input(PFD_XCo(ob^.form^.fdui)^.IFB)); IFNChar:=fl_show_fselector('Open file to convert:','./','*',IFNChar); fl_set_input(PFD_XCo(ob^.form^.fdui)^.IFB,IFNChar); end; If prdy=1 then begin OFNChar:=(fl_get_input(PFD_XCo(ob^.form^.fdui)^.OFB)); OFNChar:=fl_show_fselector('Write to file:','./','*',OFNChar); fl_set_input(PFD_XCo(ob^.form^.fdui)^.OFB,OFNChar); end; end; procedure done_cb( ob : PFL_OBJECT; data : longint);export; begin halt(0); end; Function create_form_XCo : PFD_XCo; Var obj : PFL_OBJECT; fdui : PFD_XCo; Begin New(fdui); fdui^.XCo:=fl_bgn_form(FL_NO_BOX,600,310); obj:=fl_add_box(FL_UP_BOX,0,0,600,310,''); fdui^.group1:=fl_bgn_group; obj:=fl_add_lightbutton (FL_RADIO_BUTTON,10,20,110,30,'Win to ISO'); fl_set_object_boxtype(obj,FL_FRAME_BOX); fl_set_object_callback(obj,PFL_CALLBACKPTR(@zprava),2); fl_set_object_color(obj,FL_DARKCYAN,FL_GREEN); fl_set_object_lcol(obj,FL_BLACK); fl_set_object_lstyle(obj,FL_NORMAL_STYLE+FL_EMBOSSED_STYLE); fl_set_object_lsize(obj,FL_MEDIUM_SIZE); fdui^.tl1:=obj; obj:=fl_add_lightbutton (FL_RADIO_BUTTON,10,55,110,30,'ISO to Win'); fl_set_object_boxtype(obj,FL_FRAME_BOX); fl_set_object_callback(obj,PFL_CALLBACKPTR(@zprava),1); fl_set_object_color(obj,FL_DARKCYAN,FL_GREEN); fl_set_object_lcol(obj,FL_BLACK); fl_set_object_lstyle(obj,FL_NORMAL_STYLE+FL_EMBOSSED_STYLE); fl_set_object_lsize(obj,FL_MEDIUM_SIZE); fdui^.tl2:=obj; obj:=fl_add_lightbutton (FL_RADIO_BUTTON,10, 90,110,30,'ISO to US'); fl_set_object_callback(obj,PFL_CALLBACKPTR(@zprava),3); fl_set_object_boxtype(obj,FL_FRAME_BOX); fl_set_object_color(obj,FL_DARKCYAN,FL_GREEN); fl_set_object_lcol(obj,FL_BLACK); fl_set_object_lstyle(obj,FL_NORMAL_STYLE+FL_EMBOSSED_STYLE); fl_set_object_lsize(obj,FL_MEDIUM_SIZE); fdui^.tl3:=obj; obj:=fl_add_lightbutton (FL_RADIO_BUTTON,10,125,110,30,'Kam to Win'); fl_set_object_callback(obj,PFL_CALLBACKPTR(@zprava),4); fl_set_object_boxtype(obj,FL_FRAME_BOX); fl_set_object_color(obj,FL_DARKCYAN,FL_GREEN); fl_set_object_lcol(obj,FL_BLACK); fl_set_object_lstyle(obj,FL_NORMAL_STYLE+FL_EMBOSSED_STYLE); fl_set_object_lsize(obj,FL_MEDIUM_SIZE); fdui^.tl4:=obj; obj:=fl_add_lightbutton (FL_RADIO_BUTTON,10,160,110,30,'Win to Kam'); fl_set_object_callback(obj,PFL_CALLBACKPTR(@zprava),5); fl_set_object_boxtype(obj,FL_FRAME_BOX); fl_set_object_color(obj,FL_DARKCYAN,FL_GREEN); fl_set_object_lcol(obj,FL_BLACK); fl_set_object_lstyle(obj,FL_NORMAL_STYLE+FL_EMBOSSED_STYLE); fl_set_object_lsize(obj,FL_MEDIUM_SIZE); fdui^.tl5:=obj; obj:=fl_add_lightbutton (FL_RADIO_BUTTON,10,195,110,30,'Kam to Lat'); fl_set_object_callback(obj,PFL_CALLBACKPTR(@zprava),6); fl_set_object_boxtype(obj,FL_FRAME_BOX); fl_set_object_color(obj,FL_DARKCYAN,FL_GREEN); fl_set_object_lcol(obj,FL_BLACK); fl_set_object_lstyle(obj,FL_NORMAL_STYLE+FL_EMBOSSED_STYLE); fl_set_object_lsize(obj,FL_MEDIUM_SIZE); fdui^.tl6:=obj; obj:=fl_add_lightbutton (FL_RADIO_BUTTON,10,230,110,30,'Lat to Kam'); fl_set_object_callback(obj,PFL_CALLBACKPTR(@zprava),7); fl_set_object_boxtype(obj,FL_FRAME_BOX); fl_set_object_color(obj,FL_DARKCYAN,FL_GREEN); fl_set_object_lcol(obj,FL_BLACK); fl_set_object_lstyle(obj,FL_NORMAL_STYLE+FL_EMBOSSED_STYLE); fl_set_object_lsize(obj,FL_MEDIUM_SIZE); fdui^.tl7:=obj; obj:=fl_add_lightbutton (FL_RADIO_BUTTON,10,265,110,30,'Kam to US '); fl_set_object_callback(obj,PFL_CALLBACKPTR(@zprava),8); fl_set_object_boxtype(obj,FL_FRAME_BOX); fl_set_object_color(obj,FL_DARKCYAN,FL_GREEN); fl_set_object_lcol(obj,FL_BLACK); fl_set_object_lstyle(obj,FL_NORMAL_STYLE+FL_EMBOSSED_STYLE); fl_set_object_lsize(obj,FL_MEDIUM_SIZE); fdui^.tl8:=obj; fl_end_group; obj:=fl_add_labelframe (FL_ENGRAVED_FRAME,130,20,340,200,' Convert from '); fl_set_object_lstyle(obj,FL_NORMAL_STYLE+FL_EMBOSSED_STYLE); fdui^.zprava:=obj; obj:=fl_add_input (FL_NORMAL_INPUT,210,60,240,40,'Input File'); fl_set_object_lalign(obj,FL_ALIGN_TOP_LEFT); fl_set_object_lcol(obj,FL_BLACK); fl_set_object_lstyle(obj,FL_NORMAL_STYLE+FL_EMBOSSED_STYLE); fl_set_object_lsize(obj,FL_MEDIUM_SIZE); fdui^.IFB:=obj; obj:=fl_add_input (FL_NORMAL_INPUT,210,140,240,40,'Output File'); fl_set_object_lalign(obj,FL_ALIGN_TOP_LEFT); fl_set_object_lcol(obj,FL_BLACK); fl_set_object_lstyle(obj,FL_NORMAL_STYLE+FL_EMBOSSED_STYLE); fl_set_input(obj,'cosi.txt'); fl_set_object_lsize(obj,FL_MEDIUM_SIZE); fdui^.OFB:=obj; obj:=fl_add_button (FL_RETURN_BUTTON,310,240,60,40,'Go!'); fl_set_object_lsize(obj,FL_MEDIUM_SIZE); fl_set_object_color(obj,FL_COL1,FL_RED); fl_set_object_lcol(obj,FL_CHARTREUSE); fl_set_object_lstyle(obj,FL_BOLDITALIC_STYLE); fl_set_object_callback(obj,PFL_CALLBACKPTR(@RunCo),0); fl_hide_object(obj); fdui^.GOB:=obj; obj:=fl_add_box (FL_BORDER_BOX,310, 240,60,40,'Waiting'+^J+'for user'+^J+'Input!'); fl_set_object_lstyle(obj,FL_BOLD_STYLE); fdui^.GOBox:=obj; obj:=fl_add_button (FL_NORMAL_BUTTON,140,65,60,30,'Select'); fl_set_object_lcol(obj,FL_BLACK); fl_set_object_lstyle(obj,FL_BOLD_STYLE); fl_set_object_callback(obj,PFL_CALLBACKPTR(@ssel),0); fdui^.SELB:=obj; obj:=fl_add_button (FL_NORMAL_BUTTON,140,145,60,30,'Select'); fl_set_object_lcol(obj,FL_BLACK); fl_set_object_lstyle(obj,FL_BOLD_STYLE); fl_set_object_callback(obj,PFL_CALLBACKPTR(@ssel),1); fdui^.SELB1:=obj; obj:=fl_add_button (FL_NORMAL_BUTTON,390,240,60,40,'Exit'); fl_set_button_shortcut(obj,'q',1); fl_set_object_lcol(obj,FL_BLACK); fl_set_object_lstyle(obj,FL_BOLD_STYLE); fl_set_object_callback(obj,PFL_CALLBACKPTR(@done_cb),0); fdui^.ESCB:=obj; obj:= fl_add_text(FL_NORMAL_TEXT,140,230,150,60,'X-Co beta 4'+^J+' Radek Liboska'+^J+'(c) 1998'); fl_set_object_boxtype(obj,FL_EMBOSSED_BOX); fl_set_object_lalign(obj,FL_ALIGN_CENTER+FL_ALIGN_INSIDE); fl_set_object_lstyle(obj,FL_BOLD_STYLE+FL_SHADOW_STYLE); { fl_set_object_lcol(obj,FL_BLUE); } { fl_set_object_lsize(obj,FL_NORMAL_SIZE); } fl_set_object_color(obj,FL_MCOL,FL_MCOL); fdui^.TXT:=obj; obj:= fl_add_frame(FL_EMBOSSED_FRAME,144,234,142,52,''); fdui^.FRM:=obj; obj:=fl_add_labelframe (FL_ENGRAVED_FRAME,470,20,110,270,'CRC-32'); fl_set_object_lstyle(obj,FL_NORMAL_STYLE+FL_EMBOSSED_STYLE); fdui^.CRCFrame:=obj; obj:=fl_add_box (FL_SHADOW_BOX,480,60,90,40,'FFFFFFFF'); fl_set_object_lstyle(obj,FL_BOLD_STYLE); fdui^.CRCBox1:=obj; obj:=fl_add_box (FL_SHADOW_BOX,480,140,90,40,'FFFFFFFF'); fl_set_object_lstyle(obj,FL_BOLD_STYLE); fdui^.CRCBox2:=obj; fdui^.group2:=fl_bgn_group; obj:=fl_add_checkbutton (FL_RADIO_BUTTON,480,230,30,30,'CRC-32'); fl_set_object_callback(obj,PFL_CALLBACKPTR(@runcrc),1); fl_set_object_lcol(obj,FL_BLACK); fl_set_button(obj,1); fdui^.cb1:=obj; obj:=fl_add_checkbutton (FL_RADIO_BUTTON,480,260,30,30,'Validate'); fl_set_object_callback(obj,PFL_CALLBACKPTR(@runcrc),2); fl_set_object_lcol(obj,FL_BLACK); fdui^.cb2:=obj; fl_end_group; fl_end_form; fdui^.XCo^.fdui:=fdui; create_form_XCo:=fdui; end; Begin fl_initialize (@argc,argv,'XCo',nil,0); XCo :=Create_Form_XCo; fl_show_form(XCo^.XCo,FL_PLACE_CENTER,FL_FULLBORDER,'XConvert'); while (fl_do_forms<>nil) do; end.