PeterT Posted July 17, 2015 Share Posted July 17, 2015 I have a complicated dialog script I wrote years ago that has been running fine in 2012-2014, but does not work in 2015. This script has 2100 lines of code and the dialog has two Tab Panes, and each tab pane has various radio buttons and checkboxes and has various images that display depending on the choices made. It was built using Dialog Builder 4 and had many deprecated handler routines, so I replaced them all with the new Layout Manager APIs. I did this in 2014 until I got it compiling and producing no errors when running in Developer Mode. This modified script runs fine in VW 2014 and the dialog displays correctly. In VW 2015, this script compiles and has no errors while running in developer mode, yet when I use the tool, the only dialog that come up is the default empty dialog with only O.K. and cancel buttons. Can anyone explain what is going on here? Quote Link to comment
MullinRJ Posted July 20, 2015 Share Posted July 20, 2015 It would be difficult to guess w/o seeing the dialog code. You can strip out your handler code just send the creation and element placement calls. Raymond Quote Link to comment
PeterT Posted July 20, 2015 Author Share Posted July 20, 2015 I now believe the problem is with the Image Resources in my dialog. The image is the First Layout Item in my dialog setup, so it does not get past this. I have read the Developer Page on the new .vwr image resource format, but I am not understanding it completely. On a Mac, how do I make a .vwr folder. Is this just a Mac folder with the .vwr extension, or is this some special file type? Is the name of the .vwr folder the name of the Plug-in? Inside this file/folder do I have a sub- folder called 'Images', and then put my Images In there? What Image type is required, are .png files O.K.? Can anyone explain this a bit more clearly? Quote Link to comment
Vectorworks, Inc Employee klinzey Posted July 20, 2015 Vectorworks, Inc Employee Share Posted July 20, 2015 (edited) A .vwr file is actually an uncompressed zip file. You should be able to make a folder with a .vwr extension. (I know this works on Windows but on Mac you may have to zip the folder using the command line or another utility but it must NOT be compressed.) .png files are just fine. Using sub-folders asr optional. When you create or update the image control you are going to specify the file using. Resource file -> MyCustomResource.vwr Image -> xyz.png CreateImageControl2(DialogID,ControlID,Size1,Size2,'MyCustomResource/xyz.png'); Vectorworks VWR Resource Edited July 20, 2015 by klinzey Quote Link to comment
PeterT Posted July 20, 2015 Author Share Posted July 20, 2015 Thank you, My dialog now shows the Image when it first comes up, but it disappears when I click on anything in the dialog. The folder seems to work without being Zipped (uncompressed). So what do I use in the Handler Routine to set the Image choice? SetControlData takes a LONGINT variable, so I found "SetImageControlPath" in the Function Reference and tried it using: IF boo9 then boo := SetImageControlPath(DialogID,ControlID,'MyCustomResource/xyz.png'); But it did not fix it. The image still disappears when I click on anything or if I choose the second dialog Tab. And how do error check the Image availability in the main routine? I have: rsAvailable:= SetVSResourceFile('MyCustomResource'); But I do not think "SetVSResourceFile" works anymore. Quote Link to comment
JBenghiat Posted July 20, 2015 Share Posted July 20, 2015 Resource files were totally re-worked for 2015. See Kevin's link to the developer wiki above. The page explains the correct format for resource files. If you scroll down to the bottom of the page, you can find information on the new vs routines. Once you get the hang of it, managing resources actually becomes much easier. -Josh Quote Link to comment
PeterT Posted July 20, 2015 Author Share Posted July 20, 2015 The only one VectorScript routine I see at the bottom of the Wiki page is "GetVWRString". The 2015 Function Reference says this loads a "String" from a VWR file. I am Loading "Images" not "Strings". Is this still the correct Procedure? I have 97 Images in my dialog that display depending on the choices made. I have now used "GetVWRString" to set all my Images. The good news is the image no longer disappears when I make choices in the dialog, the bad news is only Image 1 of 97 displays no matter which choice is made or which Tab is selected. Here is what I am using to call the Images in the Handler Routine: IF boo1 THEN GetVWRString(str2,'MyCustomResource/Images', 'Image1.png'); IF boo2 THEN GetVWRString(str2,'MyCustomResource/Images', 'Image2.png'); IF boo3 THEN GetVWRString(str2,'MyCustomResource/Images', 'Image3.png'); etc. Is this the correct format? What is the third variable, the "Key", or StringIdentifier? Is that the name of the Image File? Quote Link to comment
JBenghiat Posted July 20, 2015 Share Posted July 20, 2015 The command you want is UpdateImageControl2. http://developer.vectorworks.net/index.php/VS:UpdateImageControl2 As the command takes a path to the image in your resource package, you don't specify a resource file elsewhere. Quote Link to comment
PeterT Posted July 21, 2015 Author Share Posted July 21, 2015 O.K. Thank you very much for that. I searched through the Function Reference for such a command, but I guess I missed that. I wish the Function Reference had a search function. I sure do not see UpdateImageControl2 or CreateImageControl2 mentioned in the Developer Wiki Page, or did I miss that too?. Is there somewhere I can find a list of ALL the new functions necessary for Image control in a Dialog for VectorScript? I am also curious why the Resource Functions that do not work in 2015 are not shown as obsolete or deprecated in the Function reference. I also searched the VS List Archives for anything on Image Resource Control and struck out. Or is it because of the SDK and Python that VectorScript is just not being used by anyone anymore? Sorry if I sound frustrated, But I am an architect and I am supposed to be working on projects, but I have spent the last four days trying to fix a script that has been running flawlessly for many years. Thanks again for the help. Quote Link to comment
Vectorworks, Inc Employee klinzey Posted July 21, 2015 Vectorworks, Inc Employee Share Posted July 21, 2015 All the obsolete functions and replacements are listed here: Version Information CreateImageControl() and other functions may not be completely deprecated but are just deprecated in the instance you are trying to use them. We can mark a call if it is completely deprecated but if it is still used under certain conditions it remains functional. VectorScript is still a valid language and the Python interface to Vectorworks is based on the Vectorscript functions. Much of the changes in the resource handling is due to Apple's deprecation of QuickTime. Quote Link to comment
JBenghiat Posted July 21, 2015 Share Posted July 21, 2015 The function reference in the developer wiki is more comprehensive than that in the help. You can both search the page for a function name, and there is a site search function. http://developer.vectorworks.net/index.php/VS:Function_Reference The new image controls have actually been around for a while -- since VW 2012. What has changed is the resource file format, as well as the SetVSResourceFile command. Setting the image isn't deprecated per se, but the command that loads a resource file into memory is. The one thing that has changed completely is string functions. Because of the resource file update, this switch happened fairly abruptly. Usually, deprecated functions will simply generate warnings for a few versions before they disappear completely. HTH, Josh Quote Link to comment
PeterT Posted July 23, 2015 Author Share Posted July 23, 2015 O.K., So I guess even if you are using CreateControl which says is deprecated since 2012, it will not generate a VS warning in VW 2013 or VW 2014. Since I was using it for Image Resources I guess I figured it would have generated an error, but it does not. I always run VW in Developer Mode as I want to know if any of my scripts are generating errors. I guess I cannot completely rely on that anymore. As for SetControlData, It must still be used for something in 2015, as it is not marked as deprecated. And for SetVSResourceFile, the Vectorworks VWR Resources page says: Old functions VS:SetVSResourceFile -- not doing anything in Vectorworks 2015 If it really does nothing, shouldn't that be marked as obsolete in 2015? Also, I find it hard to believe that a Developer page devoted to "VWR in Vectorworks 2015" does not even mention the Procedures "CreateImageControl2" or "UpdateControlData2", even if they were introduced in 2012, since they did not stop working until 2015. That would have saved me several days of work. I was still using "CreateControl" and SetControlData" in 2014 and they worked fine. Thanks Joshua and Kevin for pointing me in the right direction. I will dig a bit deeper in the Developer Wiki the next time I have a problem. Bottom Line: My script is running again. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.