Forum: wxRuby help with project viewer

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
F4d80b5fd1012948373adfb35defa34a?d=identicon&s=25 James Waudby (waudby)
on 2009-01-16 15:15
I've just begun using wxRuby and I've been finding my feet with things
quite easily, however there's one thing I'm uncertain of at the moment
which I'd like to do and that's a project viewer.

I know that it would have to be using TreeCtrl.

If someone could explain to me how to build a custom Tree with my own
folders and files that would be really appreciated.

I'm using it as a learning experience so that I can aid in creating a
new IDE for the Sphere games engine. So there's already a file structure
I just don't know how to recreate in in wxRuby.
3396e4a3df8a840faec520af8555a400?d=identicon&s=25 Mario Steele (Guest)
on 2009-01-16 19:10
(Received via mailing list)
Hey James,

If your interested in a way to setup projects, take a look at my IDE
that
I've been working on.  Currently, I'm in the process of re-implementing
everything, but you can get a basics for what I did, in the old
Subverison
repo, found here: http://wxride.rubyforge.org/svn/branch/alpha/wxRIDE/

The main points that you would want to look at, is lib/project.rb, and
lib/ui/PrjTree.rb and lib/ui/ProjectTree.rb.  PrjTree.rb is the current
one
used by the cold, and ProjectTree.rb is the old one.  It gives you two
ideas
on ways to go about this.

hth,

Mario
06f6780c99d4a8dd71f2b474082ea9ce?d=identicon&s=25 Alex Fenton (Guest)
on 2009-01-17 09:47
(Received via mailing list)
James Waudby wrote:
> I've just begun using wxRuby and I've been finding my feet with things
> quite easily, however there's one thing I'm uncertain of at the moment
> which I'd like to do and that's a project viewer.
>
> I know that it would have to be using TreeCtrl.
>
> If someone could explain to me how to build a custom Tree with my own
> folders and files that would be really appreciated.

Firstly, there's a generic directory / file tree widget built-in with
wxRuby., called GenericDirCtrl. This is built using TreeCtrl, so if you
know C++ it's a decent source for study.

One challenge can be that traversing a large file system in Ruby is slow
so the tree is slow to present. To get round this, you only present the
currently open items (adding them via append_item). For each item that
is a directory, call set_item_has_children to display it with an
unopened 'expand' button. Then provide an evt_tree_item_expanding event
handler that appends the file/directory children as a directory is
opened.

You'll probably want to use the item_data field (which attaches any Ruby
object to an item in the treectrl) to store fuller information about
each file/directory. This could just be the full path, or it could be a
hash with extra info (eg SVN status, or stat-like data).

Each icon that you might use is stored in a ImageList, and the index of
the relevant image (depending on file type, for example) is passed to
calls to append_item / add_item.

As an aside, it would be nice to have a model-based TreeCtrl - one where
a non-GUI class defines how objects are fetched and related, and the GUI
class does the presenting work. It's a nice way to write code, I find,
for Grid - GridTableBase - and the development version of wxWidgets
supports this, I believe.

a
F4d80b5fd1012948373adfb35defa34a?d=identicon&s=25 James Waudby (waudby)
on 2009-01-17 20:43
Thanks for the replies.

I'll take a look at those files you linked to.

I'm still trying to find my feet with the system but should hopefully
pick it up fairly easily.

Obviously, i'll post here again if I get stuck.
This topic is locked and can not be replied to.