More User Input

| | Comments (28)

If you had just one question that you'd like me to answer, what would it be? It can be programming related, or personal, or whatever. If it's possible for me to answer (or "legal" -- meaning that I won't be answering any trade secret questions), then I'll try to do so. I may turn the more interesting questions into entire blog postings, or I may answer the question within the comments section for this post.

This should be interesting. :-P

28 Comments

How big a hack are container controls? They seem like some odd blend of canvas and window....

-- SirG3

Is this kinda like a genie in a bottle and you are granting us one wish?

DARN!!!! I just blew my quesion!

What is your number 1 rated feature request for REALbasic? I mean personally, what would you like to implement the most? It has to be a feasible feature - not "programming by thought", although that would be awesome!

@Phil -- yes, sorta like a genie, cept the wish has to be in question form. :-P And you can use another question if you'd like, cuz I'm generous like that.

@SirG3 -- You're right on the money that it's a cross between a Canvas and a Window. However, it's not too much of a hack seeing as how both of those classes contain all the functionality needed to make container controls. But I'd have to agree that it does seem like an odd couple. How do you like the container control functionality? Do you find it solves your issues?

http://codeshock.com/sirg3/images/CGI.jpg -- this is my main expirience with container controls. It's a 'listbox' (container control with a canvas and a scrollbar) that has container controls in it. I've found that container controls are buggy, but I like the concept.

The problem comes that since it's a cross between a canvas and a window -- you get properties from both. For example:
myContainerControl.left = myContainerControl.left + 20 // does nothing

And it has issues with being on a tab panel (it'll show through), so in the open event you need to call:
myContainerControl.tabPanelValue = 1
myContainerControl.tabPanelValue =

There might have been others to, it's been about a month since I worked on that 'listbox'.

I actually was working on something like this back in RB 5.5.5 ;-). I was using window groups on OS X, couldn't *quite* get the effect right. >

And your comments stuff (well WordPress's) doesn't like the greater-than less-than emoticon. Cut off my sig in the last post =P.

-- SirG3

Is it currently feasible to write web applications with REALbasic? How might I go about doing that?

@SirG3 -- holy hell in a handbasket. That screen shot breaks about every UI rule under the sun. How do you tab between the fields? How do you tab out of the listbox?

But you're right -- the container control does get properties from both the window and the canvas. However, adjusting the position at runtime should certainly be supported. If you find that it's not, then it's a bug.

As for the tab panel issue, I believe that's been fixed in r2. I'm not certain though since I've never tested CCs within a tab panel.

@Jeff -- it depends on what you mean by web apps? You can write CGIs and things of that nature (in fact, Charlie has an excellent example of doing that here. But if you're asking after Swordfish-like functionality such as building web front-ends to your applications, etc then no, the current version of RB does not support this. However, we're still actively developing Swordfish to do just this.

Yea yea, figured the UI was lousy, I don't remember tabbing being an issue, but it's been a while. I hate doing UI -- give me a socket or some PHP any day =P.

-- SirG3

It's an interesting idea, that's for certain. Hmm... speaking of ideas...

My getting onto a soapbox and preaching about bad UI designs doesn't really help too much aside from seeing examples of what not to do. Perhaps it'd be an interesting exercise to take a bad UI and try to morph it into a good UI. For example, explain what about the UI is bad, then do a step-by-step redesign of the concept until it's a good UI and explain why it's better.

Thoughts?

Sounds like a good idea. Would you just pick whatever appalling MWrB app was submitted?

-- SirG3

Sure, or I could do apps that aren't MwRB as well. I think that'd make for an interesting blog topic(s) and would be a helpful learning experience for everyone. Plus, I'm sure I'll get some very interesting feedback from everyone on things that I may have overlooked, so there's a chance I'll learn from it too.

Sounds great! I'll be sure to submit EasyServe 0.5 when I finish it =P. I knew MWrB looked a bit strange, stupid letters changing capilization ;-).

-- SirG3

Pretty much what I would like to do is write a web app, for instance, a blog. I know that that would be trivial to do in REALbasic, but sadly short of writing my own HTTP server and buying a dedicated server, there is not really anything I can do for them.

May I ask another question? I want to make my own titlebar for my AIM client. If you take a look at http://amazon.wolfire.com/aimm2.gif you will see that the standard Windows title bar doesn't really look too good in my chat window. Yes, I know that everyone should use standards, etc. etc. but I don't really think that applies to my AIM client. It has to be snazzy.

I tried the Windows Functionality Suite 2.0, which gets the titlebar to disappear, but then whenever I try to resize or move the window in code, RB decides to move the window vertically 30 pixels as well and other oddness. Is there any work around?

OK, I am ready for my real question now. =)

I was looking over your Windows Functionality Suite 2.0 and remembered (after seeing it of course) that you have Compress/Decompress options for Windows NT and above. I tried to implement a LZW/LZ78 style compression with pure REALbasic code and it was *far* from efficient (something like a 100KB/sec). Now there are tons of feature requests for some type of built-in compression, and I am just wondering why it hasn't been implemented yet... is there a reason why public domain/open source code cannot be used, or is it that compression just has not received that high of a priority?

What I think would be ideal is the ZIP archive format since that is a universal compression format available on all platforms.

Now that RB2005 is an income stream, will Cortis be replaced by another experienced _Macintosh_ programmer?

@Gerard -- he's already been replaced by Jon Johnson, who is a Mac programmer.

@Jeff -- UI standards apply to us all, snazzy or not. As for why you see the behavior you see -- it's because using those declares sneaks around behind REALbasic's back. Since the framework was never alerted to your changes to the window's frame, it continues to happily make assumptions and report back what it thinks is correct information.

That being said, I think the framework shouldn't be making those assumptions since it's quite trivial to prove the framework wrong. I think it's worthy of a feature request to change the behavior so that the framework calculates that information when it is requested so that you're always given the correct information, even when working with declares.

@Phil -- Because it's a tough problem to solve. What type of compression you use, whether it's block or stream compression, etc. Personally, I'd love to see compression in the product, same with encryption. However, getting the API right so that it's accessible to users is hard. And export laws with encryption and things of that nature throw a real monkey wrench into the mix.

I think it'll happen at some point, but I'm just not certain when.

I am glad I asked. I never even considered export law issues.

To answer your API question, a simple way would be to use:

    Compress(in As BinaryStream, out As BinaryStream)
    Decompress(in As BinaryStream, out As BinaryStream)

that way we could decide whether it is a file or in-memory in/out chunk. Of course this would only work for single-file archives, but would be better than what we have now.

But the simple way isn't always the best way. ;-) For example, what if I'm not dealing with files, but dealing with data streaming over a socket. This API carries a lot of overhead to it, and there's really two different ways to look at the compression problem. There's compression of entire files of data, and then there's stream compression. To complicate the matter, there's many different algorithms for compression, so you have to make sure that the API you design will work with them or be extendable to work with them in the future.

It's certainly not an impossible problem to solve, by any means. It's one that we've kicked around internally a number of times. It's just a hard problem to solve in an elegant way that keeps everyone happy.

Okay, I can't pass up a free question!

My most burning question at this very moment in time is:

Why does RB save code in a proprietary format instead of nice portable reusable easy-to-work-with text files?

I'm sure there's an easy answer. ;)

Hey Aaron, posting this here cuz you told me to (*grin*):

"Here’s a UI frustration of mine:
To get a 10pt font in RB (in Windows) you have to choose 12pt! And in the Options dialog, the font previews show even smaller than that!"

In addition: I would like to be able to set icons on individual windows.

Thanks Scott. ;-) As for the icons on individual windows, I'm assuming you're talking about the window icon in the upper left on Windows (not the proxy icon on the Mac)? If so, the WFS lets you do this, IIRC.

With all the comments on your blog, you might need phpBB for a forum :)

Leave a comment

Disclaimer

I'm currently an employee of REAL Software. My blog is mine. The opinions represented in this blog are mine as well and may not represent my employer's opinions. All original material is copyrighted and property of the author.

REALbasic® is a registered trademark of REAL Software, Inc. REAL SQL Server™ and Lingua™ are pending trademarks of REAL Software, Inc. All rights reserved.