New plug-in editor: Rezilla Custom

We still need a more advanced Windows editor. <_<

@guy, on Apr 1 2006, 10:14 AM, said in New plug-in editor: Rezilla Custom:

Tabbing seems to work 🙂 Skips over some field types though (strings) - I guess that's supposed to happen? Now it just needs to automatically scroll when you tab to a field out of sight.
Changing outfit modtypes unfortunately does not appear to work. Always get this weird error no matter what resource or what I try changing it to and I'm left with no choice but to say "Crap" 😉
RSID popup menu always says it couldn't find any. I'll try setting them to "Please try later." to see if that makes my plug uber cool 🆒
Just had a crash before when pasting in a snd resource to overwrite an existing one (tried twice, same result).

And this isn't really related, but ViewRLE is annoying me by always asking me if I'm sure I want to close the file even when I don't have any RLEs loaded.

Happy April's Fool day! If you launch this Rezilla Custom 2.5 now, it should confirm that it is a joke (but still allow you to launch it, Just In Case™ you didn't grab it quickly enough and you want to experience the bugs).

People might remember last year that I did three April's fool jokes: I told that I was ceasing development of my plug-in guides, that Stuffit 9.0 for Windows was released, and that I was learning 68k assembly to program old Macs (and in fact the last two were true, save that it wasn't for old Macs in particular); I was obviously particularly lucky to have Allume release Stuffit Deluxe 9.0 for Windows a few days before, while as usual the Standard version wasn't ready yet (was a few days afterwards).

So this year I wondered what to do for this year's April the first. After some time finding no other idea, I decided to go the "Screen Cleaner pro" route and release some joke software, and as I was working on Rezilla Custom I might as well do a joke release of it. So I decided to pretend I added the three main features I talked about, and actually not really implement them, just quick stubs so that you can believe they should work but in fact don't. I decided that I would release the stuff on Saturday, April the first, at 9 AM GMT+2 (my timezone, with DST, yeah we switched to DST one week before you did), so that even people on the USA west coast would not see it before midnight, while allowing people in New Zealand, Australia and Japan to grab it at Saturday evening before midnight (and apparently, this paid off ;)).

Seeing that Ambrosia hints that many people do believe in Screen Cleaner pro, I decided to ember a date detection in this version's launch so that this version when launched clearly tells it is a joke at the end of the day (litteraly). But I feared that most people in Japan, Australia and New Zealand would not be able to grab RC 2.5 in the evening of April the 1st, but only April the second, so I made the message only show itself the third of April and later. Implementing this message was no problem, I just had some with fitting the text in 255 characters.

I began with tabbing. It was very quickly done using PowerPlant features, but to be clear, even if seems to work, there are a number of unacceptable limitations as it is: it skips some fields, doesn't scroll the window, and perhaps the biggest and most unacceptable one is that the tabbing order is the order in which the fields were created: this means that if you modify a TMPL by adding a few fields in the middle, they will be skipped by tabbing and only reached once all others have been browsed. Unfortunately PowerPlant's built-in tabbing does not allow you to insert fields in the middle of the tabbing order which means more work will be needed before tabbing can be properly implemented (not to mention making sure the new fields do end up in the right place). So actual tabbing won't be as easy to do.

Then I did the fake keyed section popup menu. It took me way too much time. The reason is that first the menus did not work (they couldn't be clicked on), and once I got them to work I only wanted the window to close, not crash Rezilla, but due to some code that's executed in returning from handling the event (of clicking the popup menu) that assumes the menu is still around, but in fact has been destroyed with the window when handling the event, invalid memory is accessed and Rezilla crashes.

Then, RSID. This time I went for somthing simple: I did not even modify the code, just added some CASE fields (always the same ones) after each RSID I came across using the hex editor. That's it, really.

Just so you know, due to the keyed section popup menu obnoxiousities (is that a word? :blink:), and I'm not telling you of all of them, I almost did an all-nighter and only finished uploading the file and went to bed at 6AM. Then I actually ended up sleeping more than the three hours I had set up (so that I would post the message at 9AM as planned) and only woke up at 10 and posted this at 10:30. Still Guy got it in time so this is a success anyway.

Back to seriousness (though planning an April's fool is already quite serious stuff), I'm working on fixing the annoyances you noticed, and beginning to investigate how to implement these new features (the April's fool partly helped this endeavour, though don't be mislead, what you got isn't by any mean a development snapshot, most of the stuff being done in a way too dirty way). Guy, do you have more specifics on your crasher and file smasher? These are serious indeed, but I don't know what the heck could be causing them in the first place. As opening multiple resource at once, just hit command-E.

Oh yeah, guess I was a little sloppy with ViewRLE. I'll come back to it once I'll have worked enough on Rezilla, but in the meantime, I have an Universal Binary build (in fact in contains only the Intel code) from when I got a chance to sit on an Intel Mac, if you're interested Guy email me for it. It worked fine on the Mac mini on which I built it.

One last thing: this the last place in the World in which to post about needing a new Windows plug editor, as I don't have Windows, I don't know how to program for Windows, and the less I know in this matter, the better I feel.

Now don't I feel silly :rolleyes:. I guess I'm the only one who actually needs this program at the moment. Well good luck in actually implementing these features. If the popup menu for keyed sections never works out, how about making the secondary template just "outf"? The only possible problem this could cause would be if Apple actually used a resource called "outf" somewhere but I seriously doubt they have.

As for the crashes and stuff I'll get some more info sometime but you could try doing the same things I did and see what happens.

This post has been edited by Guy : 03 April 2006 - 06:29 PM

Haha, nice one.

The Windows thing was only half-serious and directed to nobody in particular.

@guy, on Apr 4 2006, 01:12 AM, said in New plug-in editor: Rezilla Custom:

Now don't I feel silly :rolleyes:. I guess I'm the only one who actually needs this program at the moment. Well good luck in actually implementing these features. If the popup menu for keyed sections never works out, how about making the secondary template just "outf"? The only possible problem this could cause would be if Apple actually used a resource called "outf" somewhere but I seriously doubt they have.

As for the crashes and stuff I'll get some more info sometime but you could try doing the same things I did and see what happens.

No, there is another reason for not using plain 'outf': it's because people might forget (or be lazy...) and not put the umlaut when creating the resource, and the newly-created resource would open almost just like an oütf, but of course wouldn't work in Nova and there is no clue about it in the editor. Even if I add a dedicaced popup menu to select the resource type at creation amongst the known ones (like the "edit resource as type" dialog), the problem will still remain as people may select it, while with oűtf it's clear(er) it's not the right one.

Thanks to Spring break, I've made tremendous advances to Rezilla Custom. I've fixed the issue you reported Guy with the error when saving a second time (it happened when keyed sections were present). It was simply that the routines which were retrieving data from the fields also removed some internal structures for the keyed sections, which as a consequence were no longer there for the second save. This made me realise that hitting the "save" button was not as harmless that I had assumed so far, and got me back on track to try and reproduce one of the first bugs we noticed with Rezilla: as it turns out, stuff becomes corrupted in the TMPLs (or variable-length lists in general) if you add list items after you hit save. I fixed this. I also fixed a bug where file with a '(' in the filename would should up as disabled menu items in the recent files submenu (I noticed this thanks to the recent update to SpacePort, with the xxx (Nova) filenames...). I fixed the opening of locked files by drag and drop.

In the feature front, I think I have reliably implemented tabbing. However, work is still needed on proper scrolling to the field (it should scroll so that the field appear at the top if it wouldn't have been completely visible without scrolling, but right now it scrolls a little too much, and may scroll too low.

Now scrolling when you tab works reliably: it scrolls exactly what is needed and does not scroll beyond the bottom. Now I'm going to tackle RSID.

However, I've been unable to reproduce your two serious bugs Guy. Probably some specific circumstances are required.

Looking good. I had the crash again recently. Similar thing - pasting and overwriting an existing resource. This time the existing resource hadn't actually been saved in the file yet and I can reproduce it by doing the same thing. But I'm pretty sure the first time it happened the existing resource was saved.

I'll try this more. In the meantime, try to see if it happens on a PowerPC Mac, I mean no offense but it * might * be a bug related to Rosetta (specifically, the handling of copy/pasted data between native and big-endian byte order which happens when going from emulated Rezilla to system clipboard and back).

Could you provide me the crash log, also?

Yup, happens on PPC too. Try this: copy something (anything, eg a file on the desktop), go into Rezilla and make a new file, paste, paste again and choose overwrite, crash.

**********

Host Name:	  Discombobulator
Date/Time:	  2006-04-16 10:24:20.455 +1200
OS Version:	 10.4.6 (Build 8I1119)
Report Version: 4

Command: Rezilla
Path:	/Users/Andrew/Games/EV Nova/Stuff/Utilities/Rezilla Custom.app/Contents/MacOS/Rezilla
Parent:  WindowServer (84)
Rosetta: Yes

Version: 1.0.8c2 (1.0.8c2)

PID:	3881
Thread: 0

Exception:  EXC_BAD_ACCESS (0x0001)
Codes:	  KERN_PROTECTION_FAILURE (0x0002) at 0x000000b5

Thread 0 Crashed:
0   net.sourceforge.rezilla 	0xb8080c47 0xb8000000 + 527431
1   net.sourceforge.rezilla 	0xb807b116 0xb8000000 + 504086
2   net.sourceforge.rezilla 	0xb808f47a 0xb8000000 + 586874
3   net.sourceforge.rezilla 	0xb80e3e1d spin_lock_wrapper + 2799

Thread 1:
0   net.sourceforge.rezilla 	0xb81f2deb strchr + 72
1   net.sourceforge.rezilla 	0xb818e52a pthread_cond_wait + 3114
2   net.sourceforge.rezilla 	0xb812a9b0 catch_exception_raise_state_identity + 320
3   net.sourceforge.rezilla 	0xb8129eda CallPPCFunctionAtAddressInt + 174780
4   net.sourceforge.rezilla 	0xb8129dd1 CallPPCFunctionAtAddressInt + 174515
5   net.sourceforge.rezilla 	0xb812aaae catch_exception_raise_state_identity + 574
6   net.sourceforge.rezilla 	0xb81c3f0c pthread_create + 1124

Thread 2:
0   net.sourceforge.rezilla 	0xb80f8198 spin_lock_wrapper + 85610
1   net.sourceforge.rezilla 	0xb8112c75 CallPPCFunctionAtAddressInt + 79959
2   net.sourceforge.rezilla 	0xb808192e 0xb8000000 + 530734
3   net.sourceforge.rezilla 	0xb807b116 0xb8000000 + 504086
4   net.sourceforge.rezilla 	0xb808f47a 0xb8000000 + 586874
5   net.sourceforge.rezilla 	0xb80e4742 spin_lock_wrapper + 5140

Thread 3:
0   net.sourceforge.rezilla 	0xb80f7da0 spin_lock_wrapper + 84594
1   net.sourceforge.rezilla 	0xb8110c9c CallPPCFunctionAtAddressInt + 71806
2   net.sourceforge.rezilla 	0xb809a35e 0xb8000000 + 631646

Thread 0 crashed with i386 Thread State:
eax: 0x00000009	ebx: 0xb8080c1e ecx:0x000000b5 edx: 0x000000a0
edi: 0x000000b5	esi: 0x00000000 ebp:0xb7fffa08 esp: 0xb7fff9d0
 ss: 0x0000002f	efl: 0x00010206 eip:0xb8080c47  cs: 0x00000027
 ds: 0x0000002f	 es: 0x0000002f  fs:0x00000000  gs: 0x00000037

Binary Images Description:
	0x1000 -   0x1aefff net.sourceforge.rezilla 1.0.8c2	/Users/Andrew/Games/EV Nova/Stuff/Utilities/Rezilla Custom.app/Contents/MacOS/Rezilla
0x8fc00000 - 0x8fc52fff dyld 44.17	/usr/lib/dyld
0x8fe00000 - 0x8fe4bfff dyld 44.17	/usr/lib/dyld
0x90000000 - 0x901bbfff libSystem.B.dylib 	/usr/lib/libSystem.B.dylib
0x90213000 - 0x90218fff libmathCommon.A.dylib 	/usr/lib/system/libmathCommon.A.dylib
0x9021a000 - 0x9025cfff com.apple.CoreText 1.1.0 (???)	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreText.framework/Versions/A/CoreText
0x90284000 - 0x90361fff ATS 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS
0x9038a000 - 0x9072ffff com.apple.CoreGraphics 1.258.27 (???)	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
0x907be000 - 0x90894fff com.apple.CoreFoundation 6.4.5 (368.26)	/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
0x908db000 - 0x908dbfff com.apple.CoreServices 10.4 (???)	/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
0x908dd000 - 0x909e3fff libicucore.A.dylib 	/usr/lib/libicucore.A.dylib
0x90a34000 - 0x90ab7fff libobjc.A.dylib 	/usr/lib/libobjc.A.dylib
0x90ae0000 - 0x90b51fff libstdc++.6.dylib 	/usr/lib/libstdc++.6.dylib
0x90bc4000 - 0x90bcffff libgcc_s.1.dylib 	/usr/lib/libgcc_s.1.dylib
0x90bd4000 - 0x90c46fff com.apple.framework.IOKit 1.4.2 (???)	/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
0x90c5c000 - 0x90c6efff libauto.dylib 	/usr/lib/libauto.dylib
0x90c74000 - 0x90f3cfff com.apple.CoreServices.CarbonCore 682.10 (679)	/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
0x90f99000 - 0x91012fff com.apple.CoreServices.OSServices 4.1	/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
0x91054000 - 0x91093fff com.apple.CFNetwork 129.13	/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
0x910a7000 - 0x910bafff com.apple.WebServices 1.1.3 (1.1.0)	/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/WebServicesCore.framework/Versions/A/WebServicesCore
0x910c6000 - 0x9114cfff com.apple.SearchKit 1.0.5	/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
0x91182000 - 0x911a2fff com.apple.Metadata 10.4.4 (121.36)	/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
0x911af000 - 0x911befff libz.1.dylib 	/usr/lib/libz.1.dylib
0x911c1000 - 0x9138bfff com.apple.security 4.2.1 (24989)	/System/Library/Frameworks/Security.framework/Versions/A/Security
0x9147a000 - 0x91483fff com.apple.DiskArbitration 2.1	/System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
0x9148a000 - 0x914b2fff com.apple.SystemConfiguration 1.8.5	/System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
0x914c4000 - 0x914ccfff libbsm.dylib 	/usr/lib/libbsm.dylib
0x914d0000 - 0x9154dfff com.apple.audio.CoreAudio 3.0.3	/System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
0x91594000 - 0x91594fff com.apple.ApplicationServices 10.4 (???)	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
0x91596000 - 0x915c8fff com.apple.AE 314 (313)	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
0x915de000 - 0x916b8fff com.apple.ColorSync 4.4.6	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSync.framework/Versions/A/ColorSync
0x916f5000 - 0x91782fff com.apple.print.framework.PrintCore 4.5 (177.10)	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore
0x917be000 - 0x9186ffff com.apple.QD 3.10.8 (???)	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD
0x918a4000 - 0x918fafff com.apple.HIServices 1.5.2 (???)	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices
0x91922000 - 0x9193bfff com.apple.LangAnalysis 1.6.3	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis
0x91949000 - 0x91966fff com.apple.FindByContent 1.5	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/FindByContent.framework/Versions/A/FindByContent
0x91972000 - 0x919aefff com.apple.LaunchServices 176	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
0x919c6000 - 0x919d3fff com.apple.speech.synthesis.framework 3.4	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis
0x919db000 - 0x91a12fff com.apple.ImageIO.framework 1.4.6	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO
0x91a25000 - 0x91ae7fff libcrypto.0.9.7.dylib 	/usr/lib/libcrypto.0.9.7.dylib
0x91b32000 - 0x91b47fff libcups.2.dylib 	/usr/lib/libcups.2.dylib
0x91b4c000 - 0x91b6afff libJPEG.dylib 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib
0x91b6f000 - 0x91bcdfff libJP2.dylib 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib
0x91bdd000 - 0x91be1fff libGIF.dylib 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib
0x91be3000 - 0x91c31fff libRaw.dylib 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libRaw.dylib
0x91c35000 - 0x91c74fff libTIFF.dylib 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
0x91c7a000 - 0x91c94fff libPng.dylib 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib
0x91c99000 - 0x91c9bfff libRadiance.dylib 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib
0x91c9d000 - 0x91c9dfff com.apple.Accelerate 1.2.1 (Accelerate 1.2.1)	/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
0x91c9f000 - 0x91d81fff com.apple.vImage 2.3	/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage
0x91d89000 - 0x91da8fff com.apple.Accelerate.vecLib 3.2.1 (vecLib 3.2.1)	/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib
0x91e14000 - 0x91e82fff libvMisc.dylib 	/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib
0x91e8d000 - 0x91f21fff libvDSP.dylib 	/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
0x91f3b000 - 0x924c3fff libBLAS.dylib 	/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
0x924f6000 - 0x92821fff libLAPACK.dylib 	/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
0x92851000 - 0x928ddfff com.apple.DesktopServices 1.3.3	/System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv
0x9291a000 - 0x92b50fff com.apple.Foundation 6.4.5 (567.26)	/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
0x92c65000 - 0x92d53fff libxml2.2.dylib 	/usr/lib/libxml2.2.dylib
0x92d72000 - 0x92e61fff libiconv.2.dylib 	/usr/lib/libiconv.2.dylib
0x92f07000 - 0x92f07fff com.apple.Carbon 10.4 (???)	/System/Library/Frameworks/Carbon.framework/Versions/A/Carbon
0x92f09000 - 0x92f1cfff com.apple.ImageCapture 3.0.3	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture
0x92f2c000 - 0x92f36fff com.apple.speech.recognition.framework 3.5	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition
0x92f3e000 - 0x92f46fff com.apple.securityhi 2.0.1 (24742)	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI
0x92f4d000 - 0x92fd7fff com.apple.ink.framework 101.2.1 (71)	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink
0x92fec000 - 0x92ff0fff com.apple.help 1.0.3 (32.1)	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help
0x92ff4000 - 0x93015fff com.apple.openscripting 1.2.5 (???)	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting
0x93028000 - 0x93030fff com.apple.print.framework.Print 5.1 (192.3)	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print
0x93037000 - 0x9309efff com.apple.htmlrendering 66.1 (1.1.3)	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HTMLRendering.framework/Versions/A/HTMLRendering
0x930c4000 - 0x9310bfff com.apple.NavigationServices 3.4.4 (3.4.3)	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/NavigationServices.framework/Versions/A/NavigationServices
0x93135000 - 0x93145fff com.apple.audio.SoundManager 3.9.1	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CarbonSound.framework/Versions/A/CarbonSound
0x9314e000 - 0x93154fff com.apple.CommonPanels 1.2.3 (73)	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels
0x9315a000 - 0x93478fff com.apple.HIToolbox 1.4.6 (???)	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
0x9461b000 - 0x9462bfff libCGATS.A.dylib 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libCGATS.A.dylib
0x94632000 - 0x9463efff libCSync.A.dylib 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libCSync.A.dylib
0x9468d000 - 0x946a6fff libRIP.A.dylib 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libRIP.A.dylib
0xb8000000 - 0xb827bfff net.sourceforge.rezilla 1.0.8c2	/Users/Andrew/Games/EV Nova/Stuff/Utilities/Rezilla Custom.app/Contents/MacOS/Rezilla

Translated Code Information:

Rosetta Version:  14.07
Args:	  /Users/Andrew/Games/EV Nova/Stuff/Utilities/Rezilla Custom.app/Contents/MacOS/Rezilla -psn_0_60817409 
Exception: EXC_BAD_ACCESS (0x0001)

Thread 0: Crashed (0xb7fff9d0, 0xb8080c47)
0x0001c6e0: /Users/Andrew/Games/EV Nova/Stuff/Utilities/Rezilla Custom.app/Contents/MacOS/Rezilla : __ZN10CRezMapDoc13PasteResourceEmsPPcPA256_hsh + 0x154 
0x0001c528: /Users/Andrew/Games/EV Nova/Stuff/Utilities/Rezilla Custom.app/Contents/MacOS/Rezilla : __ZN10CRezMapDoc11PasteRezMapEP7CRezMap + 0x1dc 
0x00019a1c: /Users/Andrew/Games/EV Nova/Stuff/Utilities/Rezilla Custom.app/Contents/MacOS/Rezilla : __ZN10CRezMapDoc11ObeyCommandElPv + 0x644 
0x000bb058: /Users/Andrew/Games/EV Nova/Stuff/Utilities/Rezilla Custom.app/Contents/MacOS/Rezilla : __ZN10LCommander14ProcessCommandElPv + 0x60 
0x000bb0a0: /Users/Andrew/Games/EV Nova/Stuff/Utilities/Rezilla Custom.app/Contents/MacOS/Rezilla : __ZN10LCommander11ObeyCommandElPv + 0x2c 
0x000af5b0: /Users/Andrew/Games/EV Nova/Stuff/Utilities/Rezilla Custom.app/Contents/MacOS/Rezilla : __ZN7LWindow11ObeyCommandElPv + 0x38 
0x000bb058: /Users/Andrew/Games/EV Nova/Stuff/Utilities/Rezilla Custom.app/Contents/MacOS/Rezilla : __ZN10LCommander14ProcessCommandElPv + 0x60 
0x000bb0a0: /Users/Andrew/Games/EV Nova/Stuff/Utilities/Rezilla Custom.app/Contents/MacOS/Rezilla : __ZN10LCommander11ObeyCommandElPv + 0x2c 
0x000bb058: /Users/Andrew/Games/EV Nova/Stuff/Utilities/Rezilla Custom.app/Contents/MacOS/Rezilla : __ZN10LCommander14ProcessCommandElPv + 0x60 
0x000d1ed0: /Users/Andrew/Games/EV Nova/Stuff/Utilities/Rezilla Custom.app/Contents/MacOS/Rezilla : __ZN16LEventDispatcher12EventKeyDownERK11EventRecord + 0xa0 
0x000b3008: /Users/Andrew/Games/EV Nova/Stuff/Utilities/Rezilla Custom.app/Contents/MacOS/Rezilla : __ZN12LApplication16ProcessNextEventEv + 0xd0 
0x000b2da0: /Users/Andrew/Games/EV Nova/Stuff/Utilities/Rezilla Custom.app/Contents/MacOS/Rezilla : __ZN12LApplication3RunEv + 0xa8 
0x0000b6b0: /Users/Andrew/Games/EV Nova/Stuff/Utilities/Rezilla Custom.app/Contents/MacOS/Rezilla : _main + 0x7c 
0x000039c0: /Users/Andrew/Games/EV Nova/Stuff/Utilities/Rezilla Custom.app/Contents/MacOS/Rezilla : start + 0x1b0 
0x00003840: /Users/Andrew/Games/EV Nova/Stuff/Utilities/Rezilla Custom.app/Contents/MacOS/Rezilla : start + 0x30 
0xd036e18f: No symbol

PPC Thread State
srr0: 0x00000000	srr1: 0x00000000					 vrsave: 0x00000000
cr:  0xXXXXXXXX		xer: 0x00000000		 lr: 0x0001c6e0		ctr: 0x90003620
r00: 0x0001c6e0 	r01: 0xbffff260 	r02: 0xa0002a70 	r03: 0x006cbae0 	
r04: 0x00000020 	r05: 0xa0c74890 	r06: 0x00000000 	r07: 0x00000001 	
r08: 0x00703c7e 	r09: 0x00000015 	r10: 0x00701c7a 	r11: 0x48000082 	
r12: 0x90003028 	r13: 0x00000000 	r14: 0x00000000 	r15: 0x00000000 	
r16: 0x00000000 	r17: 0x00000000 	r18: 0x00000000 	r19: 0x00000000 	
r20: 0x00000000 	r21: 0x00000000 	r22: 0x00000000 	r23: 0x00000003 	
r24: 0x00000019 	r25: 0x00000000 	r26: 0x006df142 	r27: 0x005fb084 	
r28: 0x00000080 	r29: 0x006b32c0 	r30: 0x006e3cf0 	r31: 0x6675726c 	

Thread 1: (0xb011adf8, 0xb80f7da0)
0x90030e5c: /usr/lib/libSystem.B.dylib : _pthread_cond_wait + 0x1b0 
0x90cafb70: /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore : _MPWaitOnQueue + 0x110 
0x92853fcc: /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv : __ZN13TNodeSyncTask12SyncTaskProcEPv + 0x88 
0x90caf950: /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore : _PrivateMPEntryPoint + 0x50 
0x9002bd28: /usr/lib/libSystem.B.dylib : __pthread_body + 0x60 
0x00000000: /Users/Andrew/Games/EV Nova/Stuff/Utilities/Rezilla Custom.app/Contents/MacOS/Rezilla :  + 0x0 

PPC Thread State
srr0: 0x00000000	srr1: 0x00000000					 vrsave: 0x00000000
cr:  0xXXXXXXXX		xer: 0x00000000		 lr: 0x90030e8c		ctr: 0x9002c3e0
r00: 0xffffffdb 	r01: 0xf0101900 	r02: 0x00000001 	r03: 0x00005a03 	
r04: 0x00005b03 	r05: 0x00000000 	r06: 0x0007a11f 	r07: 0xfff0bdc0 	
r08: 0x00000000 	r09: 0xa0001fcc 	r10: 0x00086589 	r11: 0xa0006c08 	
r12: 0x9002c3e0 	r13: 0x00000000 	r14: 0x00000000 	r15: 0x00000000 	
r16: 0x00000000 	r17: 0x00000000 	r18: 0xf0101a88 	r19: 0x00000000 	
r20: 0x00000000 	r21: 0x00000000 	r22: 0x00000000 	r23: 0x00000000 	
r24: 0xf0101a84 	r25: 0x7fffffff 	r26: 0xa0000cbc 	r27: 0xa0c748a8 	
r28: 0xa0001fcc 	r29: 0x006a8a38 	r30: 0xa0001fcc 	r31: 0x90030cbc 	

Thread 2: (0xb0099d18, 0xb80f8198)
0x92853914: /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv : __ZN19TFSNotificationTask22FSNotificationTaskProcEPv + 0x20 
0x90caf950: /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore : _PrivateMPEntryPoint + 0x50 
0x9002bd28: /usr/lib/libSystem.B.dylib : __pthread_body + 0x60 
0x00000000: /Users/Andrew/Games/EV Nova/Stuff/Utilities/Rezilla Custom.app/Contents/MacOS/Rezilla :  + 0x0 

PPC Thread State
srr0: 0x00000000	srr1: 0x00000000					 vrsave: 0x00000000
cr:  0xXXXXXXXX		xer: 0x00000000		 lr: 0x9285392c		ctr: 0x9002f080
r00: 0x0000016b 	r01: 0xf0080d70 	r02: 0x00000000 	r03: 0x0000000d 	
r04: 0x00000000 	r05: 0x00000000 	r06: 0xf0080da8 	r07: 0x00000001 	
r08: 0x00000000 	r09: 0x00000000 	r10: 0x00000000 	r11: 0xa2851318 	
r12: 0x9002f080 	r13: 0x00000000 	r14: 0x00000000 	r15: 0x00000000 	
r16: 0x00000000 	r17: 0x00000000 	r18: 0x00000000 	r19: 0x00000000 	
r20: 0x00000000 	r21: 0x00000000 	r22: 0x00000000 	r23: 0x00000000 	
r24: 0x00000000 	r25: 0x00000000 	r26: 0x00000000 	r27: 0x01891a00 	
r28: 0x00000000 	r29: 0x01891a00 	r30: 0x006aa670 	r31: 0x90caf908 	

This post has been edited by Guy : 15 April 2006 - 05:31 PM

Bug confirmed, investigated, exposed and dissected. But not squashed yet.

It happens when you overwrite by copy-paste a resource, and there is only one resource of that type in the file, as when this happens, the previous resource (and its visual item in the window) is deleted, and as a side consequence since it is the only one for the type, the visual item for the type is deleted, but the object (for the visual item for the type) is attempted to be used afterwards when creating the new pasted resource. Crash. This is not that easy to fix, since either I forget about the older reference to the now-deleted object and create a new one, but it would perhaps be inefficient to delete it to recreate it just afterwards, or I prevent it from being deleted but then I need to modify all code that deletes a resource as it assumes that the type is deleted as well if the resource was the last one, or I create the new resource before deleting the old one but it might cause problems to have two resources with the same ID (even temporarily).

So I guess that for now the workaround will be not to chose overwrite, and if you mean to overwrite AND there is only one resource (of the given type) which is going to be overwritten, then choose "Unique ID", and manually remove the old one and change the ID of the new one. This only a workaround for now, I expect to have fixed it by Custom 3.

Also, I changed all the template...labels. This in order to conform more to the Apple Human Interface Guidelines (they have recently added stuff about colons), this mostly meant making uppercase letters and adding colons.

Aha, interesting. I thought the easiest workaround would just be to delete the existing resource then paste in the new one 😉
As for the solution, I'd probably go with the first option. Inefficient? Pft, it's only gonna happen to one resource at a time. Unless your file is full of single resources and you want to overwrite all them at the same time.

Well...

...you could just replace the info/data of the resource. I haven't the faintest clue if this is feasible.

Otherwise, I'd actually go with the third option if possible. It isn't auto-saving, so there shouldn't be any conflicts with the actual resource fork (hell, I know the resource fork format, and if I remember right, it would theoretically accept two resources with the same type and ID anyway, though no editor would), but how does it store the IDs? As a seperate value, or as, say, an index in an array? If the former, the resource-managing framework will probably not notice as long as it doesn't rely too much on the ID and instead goes straight to the exact object - i.e. rather than referring to "resource with ID xxx", it would refer to a unique resource whose ID happened to be xxx. If it doesn't do that, then it could potentially pose problems - especially if the original resource's editor was open.

@guy, on Apr 18 2006, 11:49 PM, said in New plug-in editor: Rezilla Custom:

Aha, interesting. I thought the easiest workaround would just be to delete the existing resource then paste in the new one 😉
As for the solution, I'd probably go with the first option. Inefficient? Pft, it's only gonna happen to one resource at a time. Unless your file is full of single resources and you want to overwrite all them at the same time.

No! I will not settle for an inefficient option, even if it's only 20 microseconds lost once or twice every time the user does something he won't do often! I'm a low-level programmer! I could rewrite all this code in non object-oriented Intel, PowerPC AND 68k assembly, and it would only take me a few man-centuries (but consider the microseconds saved in execution! as long as the execution time is decreased by more than one 10^37th of the programmer time spent, it's worth it!) Unfortunately as I understand it, it is a rush job I should have already completed by MacWorld january, so I'm forced to cope with and (God forbid!) write C++ code. Yuck.

In fact, I think I should reverse engineer the G5 and reimplement it by optimising it to death and placing all the transistors by hand on the silicium substrate. It would just take me a few millenia (per chip), the end result would cost 1,000,000 dollars, would have to be shipped to you with a cold chamber-class liquid coling system, but you would be able to save a few seconds over the whole development of your Nova plug-ins! How about it?

@orcaloverbri9, on Apr 19 2006, 06:27 AM, said in New plug-in editor: Rezilla Custom:

Well...

...you could just replace the info/data of the resource. I haven't the faintest clue if this is feasible.

Otherwise, I'd actually go with the third option if possible. It isn't auto-saving, so there shouldn't be any conflicts with the actual resource fork (hell, I know the resource fork format, and if I remember right, it would theoretically accept two resources with the same type and ID anyway, though no editor would), but how does it store the IDs? As a seperate value, or as, say, an index in an array? If the former, the resource-managing framework will probably not notice as long as it doesn't rely too much on the ID and instead goes straight to the exact object - i.e. rather than referring to "resource with ID xxx", it would refer to a unique resource whose ID happened to be xxx. If it doesn't do that, then it could potentially pose problems - especially if the original resource's editor was open.

Replacing the info-data is unreliable, at best. Say, there could be a window with this resource being edited open, it should be closed and this is done automatically when the resource object is deleted. As for the third option, the CRezMap (the object that tracks down, well, a resource map) keeps track of which IDs are used inside it and would be confused (if it wouldn't refuse to begin with) having two resource with the same ID.

So, I settled for the inefficient option.

Also, I worked on RSID and it seems to work reliably. I now have to test the case where the resource type is grabbed off a TNAM field (a feature that we don't use but that is essential to add to RSID, or I would just have half the work). Next: fitting multiple field in the same line.

I'm back to school so I'm back to the usual periods of work: during weekends. Today I have been able to implement stuffing more than one field in the same line in a way that I hope is reliable. As a tease you can see how it looks:

Posted Image
(in the background you can see Project Builder, then the Finder)

Does that look good to you (especially Edwards who complained about the long list of fields issue, as this was the solution I proposed?), or do you think it could be improved?

This post has been edited by Zacha Pedro : 30 April 2006 - 11:55 AM

Looks good. The only annoyance (very minor) I can see is that the two grids are not the same width, due to the RSID fields in the upper one. However, I doubt that will even be noticed by anyone after they've used the editors for a couple hours.

Edwards

Excellent, I shall then go on this way, though I'll add two pixels of space between one popup menu and the field for the next RSID, to better tell to which field the popup menu is attached, and three-four pixels between consecutive DWRDs so as to give them more breathing space.

Yeah, I thought about that, but in fact the fields themselves can be of varying size (say, DLNG is longer than HBYT) and trying to make them all match would be wasteful of space, at best. Plus the difference of width is not important enough to get anyone confused about which goes with which.

And by the way, the best thing about this is that the TMPL hasn't changed a bit. It's still FCNT-LSTC-DWRD-LSTE, just now the code is smart enough to detect such stuff and save space by not putting these bulky list items, not repeating the label which is going to be the same, and since only fields remains, arranging them better.

This post has been edited by Zacha Pedro : 30 April 2006 - 02:46 PM

Another tease: today I implemented "stuffing" of checkboxes too:

Posted Image
(Again Project Builder and the Finder in the background; you can also see I'm listening to Ambrosia Musics in iTunes, and see other such wonderful stuff, like the fact I'm working late).

I extended stuffing to support all simple fields like UBYT, HLNG, WBnn, etc... Oh, if you're observative you'll also notice there is no top-left-down-right above the outfit counts at the top... I just replaced the RECT by FCNT-LSTC-DWRD-LSTE in the template, that way there won't be any problem with top-left-width-height.

Next thing: changing keyed sections dynamically. In all honesty, this is going to be hard. Very hard. It's possible I end up not doing it, I'll see when I'll try doing it how hard it can be. At any rate, whether I'll do it or not, this is the last thing I'll do to main Rezilla (save maybe for little bugfixes, since I'm now familiar with the code and especially the template editor). There won't be any Custom version after Custom 3. After that my work will be directed to plug-in editors (plug-in in the sense that they plug into Rezilla, but are not part of it, not that they edit plug-ins, though they of course will edit the Nova-specific resources but I think I'll try to make one for DITL too...)

@zacha-pedro, on May 8 2006, 02:01 PM, said in New plug-in editor: Rezilla Custom:

Another tease: today I implemented "stuffing" of checkboxes too:

YAHOO! (No reference to a certain large company intended.)
That should make Contribute/Require fields and ScanMasks much nicer.

@zacha-pedro, on May 8 2006, 02:01 PM, said in New plug-in editor: Rezilla Custom:

Next thing: changing keyed sections dynamically. In all honesty, this is going to be hard.

Well, if you end up not getting this working, I would recommend including instructions on how to swap the oütf TMPL with keyed sections for a TMPL without them, for those of us who don't mind having to remember what each OutfitType does, and who hate having to exert a lot of effort just to change what an outfit does.

Good luck!

Edwards

This post has been edited by Edwards : 08 May 2006 - 07:01 PM

Wow, did I really not update this for that long? It just went out of the "topics from the last 30 days" list. I first took a break to better prepare the Next Big Thing, then I've been more or less working on it the last two weeks.

Anyway, I'm pleased to report I have made enough progress on dynamic keyed section changing that I can confirm it's definitely going to be there. Not that's it's ready or even done yet; so far I have been able to change the previous interface for keyed sections to a popup menu containing the variants, and below in a outline similar to the one of the list item (except you can't select it) are the contents of the section. I've checked that you can open resources, modify things, and save the resource fine (for instance grabbing the value for the key from the popup menu). The "only" thing missing is that selecting another item in the popup menu doesn't change the contents of the section, which is obviously the point of all that (however, right now if I change the item in the popup menu and save, the new key value is indeed saved); but I've done much work behind the scenes which paves the way for the implementation of this. Now that doesn't necessarily mean it's going to be completed soon, but this going along well enough that it's definitely going to be done.