|
|
|||||||
Friends ... for those who have already the latest kixforms release running here is the (not yet finished) PostPrep 1.0.3 featuring the Resizing Framework : ; UBB PostPrep 1.0.3 (Engine build 5) ; ---------------------------------------------------------------------------------------------- ; MINIMUM REQUIREMENTS ; ; KIXTART 4.20 (WKiX32) ; KIXFORMS build 38 (2.30 Beta 1) ; ---------------------------------------------------------------------------------------------- ; AUTHORs ; Jooel Nieminen - Conversion Engine ! ; Jochen Polster - Form, Controls, Design, Codestarter ; ---------------------------------------------------------------------------------------------- ; ACKNOWLEDGEMENTS ; Shawn Tassie (for Kixforms of course!) ; Richard Howarth (for pointing out the <br>-tag Issue) ; All KiXtart Enthusiastics for which we wrote this ; ---------------------------------------------------------------------------------------------- ; VERSION HISTORY ; ; ; ; 1.0.2 - 03/10/2003 replaced Buttons with ToolButtons ; ; 1.0.1 - 01/28/2003 bug-fixes to conversion engine, optional WordWrap added ; ; 1.0 - 01/27/2003 Initial worthwhile release ; ; 0.9 A - different very buggy Alpha releases not worth to mention ; ; 0.9 P - Preview Version(s) discussed on kixtart.org Bulletin board ; http://www.kixtart.org/board/ultimatebb.php?ubb=get_topic;f=13;t=000426 ; ---------------------------------------------------------------------------------------------- break on $ = setascii("on") $ReqForms = 38 $Version = "1.0.3" $Wordfile = @scriptdir + '\Wordfile.ini' $Kix = substr(@kix,1,4) if $Kix < "4.20" $ = messagebox('This Script requires at least KiXtart 4.20 ','Version Check',4112) quit() endif Global $SourceText[0], $TargetText[0], $Colors[7], $PathOpen, $PathSave, $ShowStatistics, $wrap $Sections = "Comments","Strings","Numbers","Commands","Functions","Macros","Operators","Variables" if exist($Wordfile) for $i = 0 to 7 $Colors[$i] = readprofilestring($Wordfile,$Sections[$i],"Color") next $CTable = split(readprofilestring($Wordfile,"ColorTable","Colors"),',') $Commands = split(readprofilestring($Wordfile,"Commands", "words"),',') $Functions = split(readprofilestring($Wordfile,"Functions", "words"),',') $PathOpen = readprofilestring($Wordfile,"Global","PathOpen") $PathSave = readprofilestring($Wordfile,"Global","PathSave") $ShowStatistics = val(readprofilestring($Wordfile,"Global","ShowStats")) $wrap = val(readprofilestring($Wordfile,"Global","WordWrap")) $LastSize = split(readprofilestring($Wordfile,"Global","FormSize"),',') if not ubound($Commands) or not ubound($Functions) or not ubound($Colors) $ = messagebox('This Script requires a consistent wordfile','File check',4112) quit() endif else $ = messagebox('This Script requires a wordfile ','File missing',4112) quit() endif $frm = createobject("Kixtart.Form") if val($frm.Build) < $ReqForms $ = messagebox('This Script requires Kixforms build ' + $ReqForms,'Version check',4112) quit() endif $frm.Size = 810,620 $frm.Caption = "UBB Postprep " + $Version $frm.Icon = @scriptdir + "\Kix.ico" $frm.Resizable = 1 $frm.MaxButton = 1 $frm.ClipChildren = 1 $frm.Center $lblPowered = $frm.Label("Powered by", $frm.ClientWidth-98,$frm.ClientHeight-115,90,20) $lblPowered.FontName = "Comic sans MS" $lblPowered.FontBold = 1 $lblPowered.FontSize = 11 $lblPowered.ForeColor = Kixtart $lblPowered.Anchor = 4+8 $lblBuild = $frm.Label(" KiXtart " + $kix + @crlf + " and" + @crlf + " KiXforms build " + $frm.Build, $frm.ClientWidth-98,$frm.ClientHeight-90,90,40) $lblBuild.FontName = "Comic sans MS" $lblBuild.FontBold = 1 $lblBuild.FontSize = 7 $lblBuild.ForeColor = Kixtart $lblBuild.Anchor = 4+8 $hypBoard = $frm.HyperLink("Bulletin Board",$frm.ClientWidth-87, $frm.ClientHeight-45, 100, 25) $hypBoard.Value = "http://www.kixtart.org/cgi-bin/ultimatebb.cgi?Category=1" $hypBoard.ToolTip = $hypBoard.Value $hypBoard.Anchor = 4+8 $txtSource = $frm.TextBox(,3,5) $txtSource.Right = $frm.ClientWidth-110 $txtSource.Bottom = $frm.ClientHeight/2-3 $txtSource.ScrollBars = 3 $txtSource.AcceptsTab = 1 $txtSource.FontName = "Courier New" $txtSource.FontSize = 8 $txtSource.MultiLine = 1 $txtSource.Anchor = 1+2+4+8 $txtSource.OnChange = "TextSource_Change()" $txtTarget = $frm.TextBox(,3,5 + $txtSource.Bottom) $txtTarget.Right = $frm.ClientWidth - 110 $txtTarget.Bottom = $frm.ClientHeight - 20 $txtTarget.ScrollBars = 3 $txtTarget.FontName = "Courier New" $txtTarget.FontSize = 8 $txtTarget.MultiLine = 1 $txtTarget.Anchor = 1+4+8 $lblStatus1 = $frm.Label("",3,$frm.ClientHeight-17,$frm.ClientWidth/3*2,16) $lblStatus1.BorderStyle = 5 $lblStatus1.Anchor = 1+4+8 $lblStatus2 = $frm.Label("",$lblStatus1.Right+3,$frm.ClientHeight-17,$frm.ClientWidth/3-6,16) $lblStatus2.BorderStyle = 5 $lblStatus2.Anchor = 4+8 $prg = $lblStatus2.ProgressBar $prg.Size = $frm.ClientWidth/3-8,13 $prg.Style = 1 $prg.BorderStyle = 0 $prg.Value = 0 $prg.ForeColor = DarkBlue $prg.Visible = 0 $btnOpen = btn_Create($frm,"Open...",$txtTarget.Right+9,5,92,25,1,5,"btnOpen_Click()",1,"2+4") $btnClear = btn_Create($frm,"Clear",$txtTarget.Right+9,$btnOpen.Bottom,92,25,44,5,"btnClear_Click()",0,"2+4") $btnKeyWords = btn_Create($frm,"Keywords...",$txtTarget.Right+9,$btnClear.Bottom,92,25,41,5,"btnKeyWords_Click()",1,"2+4") $btnColor = btn_Create($frm,"Set Colors...",$txtTarget.Right+9,$btnKeyWords.Bottom,92,25,17,5,"btnColor_Click()",1,"2+4") $fraFormat = $frm.Frame("Convert:",$txtTarget.Right+9,$btnColor.Bottom+5,92,239) $fraFormat.Anchor = 2+4 dim $Top $Top = 17 for $i = 0 to ubound($Sections) $ = execute("$$txtFormat$i = $$fraFormat.TextBox($$Sections[$i],6,$Top,80,20)") $ = execute("$$txtFormat$i.Caption = $$Sections[$i]") $ = execute("$$txtFormat$i.ForeColor = &"+readprofilestring($Wordfile,$Sections[$i],'Color')) $ = execute("$$txtFormat$i.FontBold = -"+val(readprofilestring($Wordfile,$Sections[$i],'Bold'))) $ = execute("$$txtFormat$i.Locked = 2") $ = execute("$$txtFormat$i.TabStop = 0") $ = execute("$$Top = $$txtFormat$i.Bottom + 3") next $chkShowStats = $fraFormat.CheckBox("Statistics ?",6, $txtFormat7.Bottom+4,80,15) $chkShowStats.Value = $ShowStatistics $chkShowStats.OnClick = "chkShowStats_CLick($$chkShowStats.Value)" $chkWordWrap = $fraFormat.CheckBox("Word Wrap",6, $chkShowStats.Bottom+2,80,15) $chkWordWrap.Value = $wrap $chkWordWrap.OnClick = "chkWordWrap_CLick($$chkWordWrap.Value)" $btnConvert = btn_Create($frm,"Convert",$txtTarget.Right+9,$fraFormat.Bottom+10,92,25,36,5,"btnConvert_Click()",0,"2+4") $btnPreview = btn_Create($frm,"Preview",$txtTarget.Right+9,$btnConvert.Bottom,92,25,43,5,"btnPreview_Click($$txtTarget.text)",0,"2+4") $btnCopy = btn_Create($frm,"Copy All",$txtTarget.Right+9,$btnPreview.Bottom,92,25,7,5,"btnCopy_Click()",0,"2+4") $btnSave = btn_Create($frm,"Save As...",$txtTarget.Right+9,$btnCopy.Bottom,92,25,3,5,"btnSave_Click()",0,"2+4") if vartype($LastSize) > 8192 and ubound($LastSize) > 0 if $LastSize[0] > 810 and $LastSize[1] > 620 $frm.Size = $LastSize[0],$LastSize[1] endif endif $txtSource.SetFocus $frm.Show while $frm.Visible $ = execute($frm.DoEvents) loop $ = writeprofilestring($Wordfile,"Global","FormSize","" + $frm.ClientWidth + "," + $frm.ClientHeight) function btn_Create($ob,$z1,$z2,$z3,$z4,$z5,$z6,$z7,$z8,$z9,$z10) dim $,$! $ = "$$" $! = execute('$$btn_Create=$$ob.ToolButton("$z1",$z2,$z3,$z4,$z5) $$btn_Create.Icon=$z6 $$btn_Create.BorderStyle=$z7 $$btn_Create.onclick="$$z8" $$btn_Create.Enabled=$z9 $$btn_Create.Anchor=$z10 ') endfunction function btnAdd_Click() $frmAdd = createobject("Kixtart.Form") $frmAdd.Caption = "Add " + $cboSel.Text $frmAdd.Size = 200,100 $frmAdd.Location = $frm.Right-400,$frm.Top+142 $frmAdd.SysMenu = 0 $txtAdd = $frmAdd.TextBox("",13,10,150,20) $txtAdd.OnChange = "if $$txtAdd.Text <> '' and ascan($$"+$cboSel.Text+",$$txtAdd.Text)=-1 $$btnOk.Enabled=1 else $$btnOk.Enabled=0 endif" $btnOk = $frmAdd.Button("OK",$frmAdd.ClientWidth/2-83,$frmAdd.ClientHeight-30,80,25) $btnOk.BorderStyle = 5 $btnOk.Enabled = 0 $btnOk.OnClick = "$$=$$lvw.Items.Add($$txtAdd.Text) redim $$"+$cboSel.Text+"[0] for $$i=1 to $$lvw.Items.Count redim preserve $$"+$cboSel.Text+"[$$i-1] $$"+$cboSel.Text+"[$$i-1]=$$lvw.Items($$i-1).Text next $$=writeprofilestring($$Wordfile,$$cboSel.Text,'Words',join($$"+$cboSel.Text+",',')) for each $$item in $$lvw.SelectedItems $$Item.Selected = 0 next $$txtAdd.SetFocus $$txtAdd.Text=''" $btnEx = $frmAdd.Button("Exit",$frmAdd.CLientWidth/2+3,$frmAdd.ClientHeight-30,80,25) $btnEx.BorderStyle = 5 $btnEx.Cancel = 1 $btnEx.OnClick = "$$frmAdd=0" $frmAdd.Show $txtAdd.SetFocus while $frmAdd.Visible $ = execute($frmAdd.DoEvents) loop endfunction function btnClear_Click() $txtSource.Text = '' $txtTarget.Text = '' $lblStatus1.Text = '' $btnSave.Enabled = 0 $btnCopy.Enabled = 0 $btnClear.Enabled = 0 $btnConvert.Enabled = 0 $btnPreview.Enabled = 0 endfunction function btnColor_Click() dim $Left, $Top, $index $index = 0 $Left = 7 $Top = 19 $frmDialog1 = createobject("Kixtart.Form") $frmDialog1.Size = 245,233 $frmDialog1.Caption = "Set Colors" $frmDialog1.Location = $frm.Right - $frmDialog1.ClientWidth - 120 , $frm.Top + $btnColor.Bottom - 2 $frmDialog1.ForeColor = MediumBlue $frmDialog1.DrawWidth = 2 $frmDialog1.SysMenu = 0 $cboStrings = $frmDialog1.ComboBox $cboStrings.List = $Sections $cboStrings.Location = 5,8 $cboStrings.ListIndex = 0 $cboStrings.Style = 1 $cboStrings.Default = 1 $cboStrings.OnClick = "$$index = cboStrings_CLick($$Index,$$cboStrings.ListIndex)" $chkBold = $frmDialog1.CheckBox("Bold",112,11,50,15) $chkBold.OnClick = "chkBold_Click($$index)" $chkBold.Value = val(readprofilestring($Wordfile,$Sections[0],"Bold")) $btnClose1 = $frmDialog1.Button("Close",$frmDialog1.ClientWidth-75,7,70,25) $btnClose1.BorderStyle = 5 $btnClose1.Cancel = 1 $btnClose1.OnClick = "$$frmDialog1=0" $fraColor = $frmDialog1.Frame("Colors:",5,40,230,163) for $i = 0 to ubound($CTable) $ = execute("$$lblColor$i = $$fraColor.Label('',$Left,$Top,20,18)") $ = execute("$$lblColor$i.BorderStyle = 2") $ = execute("$$lblColor$i.BackColor = &" + $CTable[$i]) $ = execute("$$lblColor$i.OnClick = 'Color_Change($$$$index,$i)'") $Left = $Left + 28 if $Left = 231 $Left = 7 $Top = $Top + 24 endif next $e = ascan($CTable, $Colors[$index]) $ = execute("$$frmDialog1.Rectangle($$lblColor$e.Left+3,$$lblColor$e.Top+38,24,22)") $frm.Enabled = 0 $frmDialog1.Show while $frmDialog1.Visible $ = execute($frmDialog1.DoEvents) loop $frm.Enabled = 1 endfunction function btnConvert_Click() dim $StartTime, $EndTime, $HColors[7], $out, $i,$fb $txtSource.Locked = 2 $frm.MousePointer = 11 $prg.Visible = 1 $btnOpen.Enabled = 0 $btnKeyWords.Enabled = 0 $btnColor.Enabled = 0 $btnPreview.Enabled = 0 $btnCopy.Enabled = 0 $btnSave.Enabled = 0 $btnClear.Enabled = 0 for $i = 0 to ubound($Colors) $HColors[$i] = right($Colors[$i],2) + substr($Colors[$i],3,2) + left($Colors[$i],2) $ = execute("$$fb=''+$$fb+$$txtFormat$i.FontBold+' '") next $fb=split(left($fb,len($fb)-1)) $StartTime = @time + ':' + @msecs $out = kix2htm($txtSource.Text,$HColors,$fb,$Functions,$Commands,$wrap) $EndTime = @time + ':' + @msecs $txtTarget.Text = $out[0] $txtSource.Locked = 0 $frm.MousePointer = 0 $prg.Value = 0 $btnCopy.Enabled = 1 $btnPreview.Enabled = 1 $btnSave.Enabled = 1 $btnClear.Enabled = 1 $btnOpen.Enabled = 1 $btnKeyWords.Enabled = 1 $btnColor.Enabled = 1 $prg.Visible = 0 if $ShowStatistics $ = ShowStats(DeltaTime($StartTime, $EndTime), $out[3], $out[4], $out[2], $out[1]) endif endfunction function btnCopy_Click() $txtTarget.SelStart = 0 $txtTarget.SelLength = -1 $txtTarget.Copy endfunction function btnDel_Click() dim $ if $lvw.SelectedItems.Count > 0 and $lvw.FocusedItem.Selected $lvw.SelectedItems.clear $ = execute("redim $$"+$cboSel.Text+"[0]") for $i = 1 to $lvw.Items.Count $=execute("redim preserve $$"+$cboSel.Text+"[$$i-1] $$"+$cboSel.Text+"[$$i-1]=$$lvw.Items($$i-1).Text") next $ = execute("$$=writeprofilestring($$Wordfile,$$cboSel.Text,'Words',join($$"+$cboSel.Text+",','))") endif endfunction function btnKeyWords_Click() dim $frmDialog2 $frm.Enabled = 0 $frmDialog2 = createobject("Kixtart.form") $frmDialog2.Size = 400,380 $frmDialog2.Caption = "Maintain Keywords" $frmDialog2.Location = $frm.Right-$frmDialog2.ClientWidth-120,$frm.Top+$btnKeyWords.Bottom-2 $frmDialog2.SysMenu = 0 $cboSel = $frmDialog2.ComboBox $cboSel.List = "Commands","Functions" $cboSel.Location = 5,8 $cboSel.ListIndex = 0 $cboSel.Style = 1 $cboSel.OnClick = "cboSel_Click()" $btnAdd = $frmDialog2.Button("Add Keywords...",$cboSel.Right+5,5,95,25) $btnAdd.BorderStyle = 5 $btnAdd.OnCLick = "btnAdd_Click()" $btnDel = $frmDialog2.Button("Delete Selected",$btnAdd.Right+5,5,95,25) $btnDel.BorderStyle = 5 $btnDel.OnClick = "btnDel_Click()" $btnClose2 = $frmDialog2.Button("Close",$frmDialog2.ClientWidth-75,5,70,25) $btnClose2.BorderStyle = 5 $btnClose2.Cancel = 1 $btnClose2.OnClick = "$$frmDialog2=0" $lvw = $frmDialog2.ListView() $lvw.Left = 5 $lvw.Top = 35 $lvw.Right = $frmDialog2.ClientWidth-5 $lvw.Bottom = $frmDialog2.ClientHeight-5 $lvw.View = 2 $lvw.Gridlines = True $lvw.MultiSelect = True $lvw.Sorted = 1 for $i = 0 to ubound($Commands) $ = $lvw.Items.Add($Commands[$i]) next for each $Item in $lvw.SelectedItems $Item.Selected = 0 next $frmDialog2.Show while $frmDialog2.Visible $=execute($frmDialog2.DoEvents) loop $frm.Enabled = 1 endfunction function btnOpen_Click() dim $FileName, $nl $FileName = $frm.FileOpenDialog("Open",$PathOpen,, "KiX Files|*.kix;*.udf;*.k2k;*.udf|All Files|*.*",1) if $FileName $ = open(1,$Filename,2) if not @error $PathOpen = substr($FileName,1,instrrev($FileName,'\')-1) $ = writeprofilestring($Wordfile,"Global","PathOpen",$PathOpen) $frm.MousePointer = 11 $lblStatus1.Caption = "" $btnCopy.Enabled = 0 $btnSave.Enabled = 0 $btnClear.Enabled = 1 $txtTarget.Text = "" $txtSource.Text = "" $txtSource.BeginUpdate dim $in $nl = readline(1) while @error = 0 $in = $in + $nl + @crlf $nl = readline(1) loop $in = substr($in,1,instrrev($in,@crlf)-1) $ = close(1) $txtSource.Text = $in $txtSource.EndUpdate $frm.MousePointer = 0 $lblStatus1.Caption = " " + $FileName if $txtSource.Text $btnConvert.Enabled = 1 else $btnConvert.Enabled |
||||||||
|
|
|||||||
I would make the following change: code:Why not use the Color Dialog box for chosing colors for keywords? Gives the user much more flexibility in chosing colors.$txtSource.Anchor = 1+2+4+8 You might also consider removing the "Powered by..." off of the form and onto it's own form selected from an "About" button or menu item. |
||||||||
|
|
|||||||
Jochen - great job on the resize. I think I like the top textbox resizing: $txtSource.Anchor = 1+2+4+8 Better then having the bottom one resizing: $txtSource.Anchor = 1+2+4 $txtTarget.Anchor = 1+2+4+8 But will let you know after further playing. However, you can now see now why I want to get rid of that old Frame object ... it doesn't conform to the resizing too well. The non-transparent GroupBox should solve the problem nicely. Also - I see that there is a bit more work to do on the HyperLink object ... it doesn't refresh sometimes if you resize it up into the frame area, then back down ... will fix that. -Shawn [ 17. March 2003, 14:15: Message edited by: Shawn ] |
||||||||
|
|
|||||||
Instead of posting the source code here (long lones, long lines) ... maybe Rod could post postprep as a downloadable zipfile on KFO ? Then you could just post updates there and link from here. |
||||||||
|
|
|||||||
Chris, considered already (needs some more research though regarding the ComboBox on the sub, think that the Color Dialog is not that easy to be mixed with other controls ... stand by) OnAbout ... yeah, definetly worth to include {edit : Chris, you did consider the current state } Shawn, in the end I'd like to have the two TextBoxes "attached" to each other so that they would act just like Horizontally tiled edit areas in most editors (Not really like that but more a dragable border in between) Will try hard to get that but no promises made {edit2 : Forgot to mention that there is a minimum Form Size impemented which though only works at next start ... hint: try minimze form to unreadable and start over} [ 17. March 2003, 14:33: Message edited by: jpols ] |
||||||||
|
|
|||||||
Hmmm ... if I(and Joeel maybe) could maintain the zip-file on Kixforms.org it would be great ... I'd rather post a screenshot here than the code But still no own webspace for me |
||||||||
|
|
|||||||
Min Form Size - how do i get that working ? Was thinking about that the other day - can definitely implement a minimum form size though. Problem is is that there is no dotnet standard for that - i've seen two approaches: 1) Create a new property, eg: $Form.MinimumSize = 100,100 2) Set the minimum size of the form (by default) to the size of the form as its first created - this setting would somehow be remembered. Then one could set the size bigger (before it was actually shown). But that very first size setting would be remembered as "the minimum size". After thinking about it - feel that the first option would be better ... the second sounds kind weird. -Shawn [ 17. March 2003, 14:50: Message edited by: Shawn ] |
||||||||
|
|
|||||||
I'd definetly support the first approach the current implementation in PostPrep does not deny resizes to smaller than the initial form size but overrides the saved parameters on next start .... just try to resize to lets say ~30x30, close and reopen {Of course $frm.MinimumSize=810,620 would be much more comfortable} [ 17. March 2003, 16:36: Message edited by: jpols ] |
||||||||
|
|
|||||||
I like the option 1. |
||||||||
|
|
|||||||
jpols I actually had an idea. Would it be possible to allow a person to click on the color coded words in the "Convert:" frame and bring up the color properties for word type? |
||||||||
|
|
|||||||
J, krabourn had the same kind of idea I had about the Color Dialog. You your set the "Keyword" label with a OnDblClick property with a tooltip that says "Double Click to change keyword color." [ 17. March 2003, 17:32: Message edited by: Chris S. ] |
||||||||
|
|
|||||||
the code would be downloadable if it were zipped and uploaded. no zip seen, thus no download place. j? |
||||||||
|
|
|||||||
Kelly, Chris, Nice Ideas Think the end product will be just like Monthy Pythons running gag 'And now for something completely Different' Jooel, Can I upload? seen no possibilites yet |
||||||||
|
|
|||||||
I would like to see PostPrep given the TABCONTROL treatment ... a flippable page that has the SourceBox on one page, and the HTML box on another page, and whatever other goodies you can throw in there. Would also be wonderfull to get the HTML enabled RichTextBox working enough to support the PostPrep HTML ... it would look very WYSIWYG ... from what I've seen in the code, and from talking to Jooel - it is doable. -Shawn |
||||||||
|
|
|||||||
indeed that is what I would like too. what it helps if ppl see the html code in bottom box? yeah, me wants this too! |
||||||||
|
|
|||||||
Me toooo ... Oh wait ... Hmmm, ok, be back soon |
||||||||
|
|
|||||||
actually, with current engine it would be easy but dunno with the new one. the issue is not how to make the code but how to keep it wysiwyg as this board is wicked. most of us have probably already realized that even though the page looks nice in the preview window, they will be screwed on the board. |
||||||||
|
|
|||||||
Jochen, Lonk I'll host this on my site in a zip file if you let me know exactly which version of the KiXforms I should include. |
||||||||
|
|
|||||||
don't think we need to publish kixforms with it. I actually think I need to drop it of from checker too. |
||||||||
|
|
|||||||
Using KiXtart 4.22RC1 and KiXforms 2.3.0.42 doesn't seem to make the resizing behave correctly. The right-hand buttons don't seem to be anchored on the right border but static. When resizing, the input scrollboxes can overlap these buttons. |
||||||||
|
|
|||||||
Hi Jochen, I must have missed this topic the first time around, but better late than never If you send me a ZIP file containing the latest version of PostPrep, then I will add it to the KiXforms.org Script Archive with the usual screenshot. Hope that helps. Rod. |