CyberSlug Posted September 26, 2004 Share Posted September 26, 2004 (edited) Attached is ConvertGUI 0.1.1, a script that attempts to convert old-style GUI syntax to new-style. Motivation: I didn't want AutoBuilder to become obsolete yet, I sorta promised I'd write a GUI conversion script; and I had to be "on call" for work which limited my weekend plans Important Notes0) Some bug fixes, but there are flaws in some underling assumptions. For example, I assume that parameters to GUI functions do not contains nested function calls.... Everything is ad-hoc, so I'm not sure the best way to parse the code 1) It is impossible to fully convert a script at compile time. Consider the example GUISetControl($var, "text", $left, $top)If $var is a control type like "button", then I should convert it into GuiCtrlCreateButton.However, if $var is a gui controlID, then I should convert the statement into GuiSetData, GuiCtrlSetPos, and GuiCtrlSetStyle.....Since I have no way of knowing which case is correct, I perform GuiCtrlCreateXXX conversion when the type parameter is a literal string and perform the other conversion when the type param is a variable. The resulting code will contain a "CONVERSION WARNING" in any ambigious cases.2) Do not expect your converted script to run out of the box. For example, my conversion could lead to badly formed AutoIt code if you have GUICreateEx function within a single-line IF statement.3) I quit coding when I was able to successfully convert http://www.autoitscript.com/fileman/users/public/!Josbe/ with only a minor edit! (The edit was changing $typeCTRL to "label" in Line#128 due to the Conversion Warning mentioned above.)4) Since my conversion removes a lot of white space, you may want to run the resulting output through http://www.autoitscript.com/fileman/users/jdeb/jdeb_autoit_stuff.htm!5) Bug reports and easy-to-implement suggestions are welcome... but I don't promise to respond in a timely manner Code is based on a list of GUI changes jpm send me.Edit: Fixed typos in above text.ConvertGUI.au3 Edited September 26, 2004 by CyberSlug Use Mozilla | Take a look at My Disorganized AutoIt stuff | Very very old: AutoBuilder 11 Jan 2005 prototype I need to update my sig! Link to comment Share on other sites More sharing options...
jpm Posted September 26, 2004 Share Posted September 26, 2004 (edited) on schedule as ever, Thanks Cyberslug My first conversion blow up at line 222 one the arg I assume 4 is not define Thanks again Edited September 26, 2004 by jpm Link to comment Share on other sites More sharing options...
CyberSlug Posted September 26, 2004 Author Share Posted September 26, 2004 My first conversion blow up at line 222 one the arg I assume 4 is not define Thanks again <{POST_SNAPBACK}>Darn. Workaround: Add the following line before 222 If UBound($args) < 4 Then ContinueLoop I should mention that my script will probably crash if you have words such as "GuiSetControl" in comments or literal strings..... I look for these keywords regardless of context.... I added UBound checks in a few places because of this potential problem, but it looks like I missed one. Thanks for the feedback! Use Mozilla | Take a look at My Disorganized AutoIt stuff | Very very old: AutoBuilder 11 Jan 2005 prototype I need to update my sig! Link to comment Share on other sites More sharing options...
jpm Posted September 26, 2004 Share Posted September 26, 2004 Darn. Workaround: Add the following line before 222 If UBound($args) < 4 Then ContinueLoop I should mention that my script will probably crash if you have words such as "GuiSetControl" in comments or literal strings..... I look for these keywords regardless of context.... I added UBound checks in a few places because of this potential problem, but it looks like I missed one. Thanks for the feedback! <{POST_SNAPBACK}>The line is GUISetControl($_HWFlg[$i], StringMid(StringStripWS($H_[$i],2), 3) ) Thanks for the superfast answer Link to comment Share on other sites More sharing options...
jpm Posted September 26, 2004 Share Posted September 26, 2004 The correction must <= 4 another anomalie is the blank character stripping on If StringInStr($S, " ") > 0 And (NOT StringIsInt($key)) Then $S = '"' & $S & '"' the NOT is concatenate with StringIsInt Thanks a lot Link to comment Share on other sites More sharing options...
CyberSlug Posted September 26, 2004 Author Share Posted September 26, 2004 (edited) The line is GUISetControl($_HWFlg[$i], StringMid(StringStripWS($H_[$i],2), 3) ) Thanks for the superfast answer <{POST_SNAPBACK}>I thought GuiSetControl required at least four paramters and I only see two in your example.... My _StripSpace function is causing the problems of NOT joining with StringIsInt .... I didn't test it on complex boolean expressions.... I hope to post a fixed verison tomorrow. EDIT: Possible fix around line 357 before I fall asleep: ElseIf $char = " " And $quote = "" And $paren > 0 And (StringMid($str,$i+1,1) = "," OR StringMid($str,$i-1,1) = ",") Then Workaround: Only try to convert *simple* scripts Edited September 26, 2004 by CyberSlug Use Mozilla | Take a look at My Disorganized AutoIt stuff | Very very old: AutoBuilder 11 Jan 2005 prototype I need to update my sig! Link to comment Share on other sites More sharing options...
jpm Posted September 26, 2004 Share Posted September 26, 2004 (edited) The splitting of GUIWrite between GUICtrlSetData and GUICtrlSetState is not working. Perhaps you can also avoid to generate the splitting when it is setting the default value GUISetControlEX($id,0,-1,-1,"par") just generate GuiCtrlSet... I hope you have a good rest EDIT attach an update EDIT suppress the update see top of the thread Edited September 27, 2004 by jpm Link to comment Share on other sites More sharing options...
CyberSlug Posted September 26, 2004 Author Share Posted September 26, 2004 Uploaded a new attachmentThere are some problems in my underlying assumptions...... and all this ad-hoc text processing is rather borning to code, so I don't know about updates.....See first post for updates. Use Mozilla | Take a look at My Disorganized AutoIt stuff | Very very old: AutoBuilder 11 Jan 2005 prototype I need to update my sig! Link to comment Share on other sites More sharing options...
Valik Posted September 26, 2004 Share Posted September 26, 2004 You really don't like text processing, do you CS? Link to comment Share on other sites More sharing options...
CyberSlug Posted September 26, 2004 Author Share Posted September 26, 2004 You really don't like text processing, do you CS? <{POST_SNAPBACK}>Are you saying that because of my comments in this thread or because of my really ugly code Regular expressions would be nice... too bad I don't know Perl or Python well enough to write code in it. Use Mozilla | Take a look at My Disorganized AutoIt stuff | Very very old: AutoBuilder 11 Jan 2005 prototype I need to update my sig! Link to comment Share on other sites More sharing options...
Valik Posted September 26, 2004 Share Posted September 26, 2004 I'm asking because of your comments and because of you making the comment in another thread about my text-processing insight being better than yours. I haven't looked at your code because I've only got one GUI script left to convert and it should take about as much time as downloading and running your script would. Link to comment Share on other sites More sharing options...
friends Posted September 27, 2004 Share Posted September 27, 2004 well.... thanx CS for providing the Converter from old syntax to new syntax ! Great work A little bit of suggestion.... whenever I see the post, I always don't know which one to download, whereas there are few attachments there. I don't know which is the latest.... Therefore, is it possible for you guys to always put the LATEST attachment in the first thread and stated down the last update date ? By having this.... other users (like me) will know exactly which one to download. Hope you guys can make it that way.... that is my little suggestion. Anyway.... thanks for sharing great things with us ! Link to comment Share on other sites More sharing options...
CyberSlug Posted September 27, 2004 Author Share Posted September 27, 2004 Heck. More bugs: GuiWrite(...) sometimes remain even though they are converted. If you have leftover GuiWrites, simply remove them.I believe the bug is in line# 171 in ConvertGUI. Try changing the line to$flatCode[$i] = $startOfLine & @CRLF & "GuiCtrlSetData(" & $args[1] & "," & $args[3] & ")" Use Mozilla | Take a look at My Disorganized AutoIt stuff | Very very old: AutoBuilder 11 Jan 2005 prototype I need to update my sig! Link to comment Share on other sites More sharing options...
Josbe Posted September 27, 2004 Share Posted September 27, 2004 Good idea with a converter, CS!Thanks 4 share it. Heck. More bugs: GuiWrite(...) sometimes remain even though they are converted. If you have leftover GuiWrites, simply remove them.....I noticed this. AUTOIT > AutoIt docs / Beta folder - AutoIt latest beta Link to comment Share on other sites More sharing options...
friends Posted September 27, 2004 Share Posted September 27, 2004 I tested ConvertGUI.... and I'm not sure it is a bug or what. When you run the ConvertGUI, and select a file which to be converted. After processing, a new file will be created (with new syntax). However, the original file syntax also changed to new syntax. Isn't the original file should remain the contents ?? Please check and confirm.... :"> Link to comment Share on other sites More sharing options...
CyberSlug Posted September 27, 2004 Author Share Posted September 27, 2004 When you run the ConvertGUI, and select a file which to be converted.After processing, a new file will be created (with new syntax).However, the original file syntax also changed to new syntax.Isn't the original file should remain the contents ?? When you convert a file, a new file is created and the original file is not modified.The new file should contain only new syntax, but there are still bugs in my conversion script. The original file should not change.... Use Mozilla | Take a look at My Disorganized AutoIt stuff | Very very old: AutoBuilder 11 Jan 2005 prototype I need to update my sig! Link to comment Share on other sites More sharing options...
kalayaan Posted October 8, 2004 Share Posted October 8, 2004 One thing I noticed... Spaces are stripped that sometimes affect window text references like... WinWait("AutoIt Forums->Replying") when it should be WinWait("AutoIt Forums -> Replying") Just thought I'd give the feedback. But this is a very useful script and works fine overall and thanks to CS for sharing it. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now