[MacRuby-devel] macruby/hotcocoa questions
Gary Weaver
gary.weaver at duke.edu
Thu Feb 18 07:27:01 PST 2010
Hello,
I wrote a small application in HotCocoa/MacRuby just to get familiar
with it ( http://github.com/garysweaver/hourz ). MacRuby and HotCocoa
are awesome! I did have a few issues during development that I thought
I'd share in case anyone can assist.
I'm using MacRuby 0.5 and HotCocoa 0.5.1 on OS X 10.6.2, was using
TextMate vs. XCode to develop it. I have some experience with Ruby, but
consider me a newbie to MacRuby, HotCocoa, and Cocoa (and Obj-C for that
matter).
Here is what I ran into:
* If I take a stringValue from a text field, Marshal.dump it to a file,
and then Marshal.load it, and put it back into the text field, it puts
wierd characters in the end of the value like 'Òÿýÿÿÿ'. I think this
might be a result of the class that I'm Marshalling that contains
"include HotCocoa::Behaviors"? Not sure. I wasn't able to reproduce the
issue via macirb using simple array or array of simple custom class
Marshalling to file and back, but I'm able to reproduce the issue
everytime in my app, but the class is more complicated.
* I wasn't able to get File.copy to work so I wrote my own method to
copy a file. Could you provide an example that can copy a file in
MacRuby using File.copy or using FileUtils?
* I wasn't able to set the (HotCocoa) layout_view frame or hidden
properties successfully via calls by a button on_action. I could set
them fine as long as they were called during startup of the application.
For example, I wanted to do the following to hide a layout_view and
replace it with another layout_view and vice versa in the same area of
the window, but these methods only worked if being called during the
initial load. I'm thinking maybe there is some sort of refresh method I
need to call?
def in_add_mode
@edit_view.frame = [0, 0, 0, 0]
@edit_view.hidden = true
@add_view.frame = [0, 0, 0, 40]
@add_view.hidden = false
end
def in_edit_mode
@add_view.frame = [0, 0, 0, 0]
@add_view.hidden = true
@edit_view.frame = [0, 0, 0, 40]
@edit_view.hidden = false
# ...
end
* (window).will_miniaturize { exit } works great to keep the app active
(in the dock) after closing the window, but I don't know what to call
such that I could close the window and then click on the icon in the
dock it then show the window. Also when I close it, it doesn't appear to
be in the hidden state, because the dock menu indicates that I can hide
the window (but it is hidden).
* I couldn't figure out how to access the dock_menu in HotCocoa/MacRuby
(I'm not using XCode or
http://www.echographia.com/blog/2009/02/08/dynamic-dock-menus-in-macruby/
would have helped). I'd like to be able to manage it dynamically in
HotCocoa if possible to be able to choose which Task I'm working on at
the moment without showing the window. It would also be cool to
dynamically change the dock icon when this happens to somehow indicate
which task is being worked on (similar to Thunderbird showing the number
of new messages, maybe I could show a number or some brief text?).
* I couldn't figure out how to alter the "About" part of the application
to provide the authorship, license, and link to the project, although I
know the version number is specified in config/build.yml. It would also
be cool to have full control over that area and define the window, etc.
* I wasn't sure what the best practice would be to ensure that the
window could be resized if someone somehow is using larger/smaller
fonts, but to keep it from being resized so much that it is unusable.
Maybe the right thing to do is to just specify a defined size/frame for
the window that cannot be changed?
* Note that I might also look into storing the task data as xml or json.
I'd rather it be hand-editable if needed. (I assume I could just put the
array into a hash and use to_xml/from_xml or to_json/from_json.)
Again, thanks so much for all of your work on this. It is really cool to
develop apps for OS X this quickly! (<16 hours total dev time, not
including time to post to GitHub, and a lot of that was research,
documentation, making an icon, etc.)
Thanks in advance for any assistance!
Gary
More information about the MacRuby-devel
mailing list