wxIFM 1.0.5 - docking library for wxWidgets

Do you like to promote your wxWidgets based application or component!? Post it here and let's see what the critics have to say. Also, if you found that ONE wx component the world needs to know about, put it here for future reference.
SnakeChomp
Filthy Rich wx Solver
Filthy Rich wx Solver
Posts: 235
Joined: Sun Oct 10, 2004 2:53 am
Contact:

Post by SnakeChomp » Mon Aug 29, 2005 10:17 pm

Chr wrote:if wxifm is in the codebase, you will stop supporting it??
(-toolbar support would be nice- :wink: )
Stop supporting it how? I will be its maintainer for quite some time to come regardless of what the source is physically located.

RealityMage
Experienced Solver
Experienced Solver
Posts: 75
Joined: Tue Aug 23, 2005 3:47 am

Post by RealityMage » Tue Aug 30, 2005 3:57 am

Code: Select all

diff -ur srcold/definterface.cpp src/definterface.cpp
--- srcold/definterface.cpp     2005-08-29 20:47:35.404324562 -0700
+++ src/definterface.cpp        2005-08-29 20:50:40.154458239 -0700
@@ -1570,7 +1570,7 @@
     m_caption_config.color = /*wxColour(0, 51, 153)*/ wxSystemSettings::GetColour(wxSYS_COLOUR_ACTIVECAPTION);

     int w, h;
-    GetManager()->GetParent()->GetTextExtent(" ", &w, &h, 0, 0, &m_caption_config.font);
+    GetManager()->GetParent()->GetTextExtent(wxT(" "), &w, &h, 0, 0, &m_caption_config.font);

     m_caption_config.font_height = h;
     m_caption_config.padding = m_caption_config.font_height / 4;
is needed to get it to compile with Unicode GTK2 build.

RealityMage
Experienced Solver
Experienced Solver
Posts: 75
Joined: Tue Aug 23, 2005 3:47 am

Post by RealityMage » Tue Sep 06, 2005 6:37 am

Would it be possible to make wxIFM hide the tab-bar for containers with only one tab? It really is redundant.

icStatic
Earned a small fee
Earned a small fee
Posts: 12
Joined: Thu Sep 08, 2005 6:41 pm
Location: Coventry, UK
Contact:

Toolbars

Post by icStatic » Thu Sep 08, 2005 7:13 pm

Yes, hiding the tabs when there is only one would be a good idea, it would make the interface slightly neater. Not having the tab there to drag to other containers is not really a problem as you can still drag the title.

The wxIFM module is actually really cool, it looks teriffic and is extremely useful. I am trying to integrate it into one of my projects but I'm having a few technical difficulties because my app has a toolbar.

I've written some splurge about it and put some screenshots on my blog here:
http://www.icstatic.com/blog/index.php? ... 908-190654

I didn't see much point in just copying and pasting it here when a link will quite happily do the job.

Anyway, nice code, keep up the good work!

SnakeChomp
Filthy Rich wx Solver
Filthy Rich wx Solver
Posts: 235
Joined: Sun Oct 10, 2004 2:53 am
Contact:

Post by SnakeChomp » Fri Sep 09, 2005 6:18 pm

The search function is useful.

http://forums.wxwidgets.org/viewtopic.php?t=3829

Short: The only thing that should be a chlid of your frame is a panel and wxIFM should be managing that panel. No the current sample doesn't do this but the one on my local machine does.

I tried to hack around it like you did but it is ultimately very pointless to try to work around wx's design flaws (letting you have children in the frame instead of a root panel with children like you should).

Just a warning, don't use the status bar message api when you are managing a panel, because that api assumes the thing you are managing if a frame and that the frame has a status bar. The api's for that on my copy of the source aren't so niave, you tell it what status bar to use and what pane to use.

icStatic
Earned a small fee
Earned a small fee
Posts: 12
Joined: Thu Sep 08, 2005 6:41 pm
Location: Coventry, UK
Contact:

Post by icStatic » Fri Sep 09, 2005 9:24 pm

SnakeChomp wrote:The search function is useful.
Whoops, sorry about that! Google you hath failed me!
SnakeChomp wrote: http://forums.wxwidgets.org/viewtopic.php?t=3829

Short: The only thing that should be a chlid of your frame is a panel and wxIFM should be managing that panel. No the current sample doesn't do this but the one on my local machine does.
Cheers for your help, will go and do as suggested now and let you know how I get on but I expect this will fix it nicely!
SnakeChomp wrote:I tried to hack around it like you did but it is ultimately very pointless to try to work around wx's design flaws (letting you have children in the frame instead of a root panel with children like you should).
Ah well, it kept me occupied for a few hours!
SnakeChomp wrote:Just a warning, don't use the status bar message api when you are managing a panel, because that api assumes the thing you are managing if a frame and that the frame has a status bar. The api's for that on my copy of the source aren't so niave, you tell it what status bar to use and what pane to use.
Thanks, I'll make a note of this for future reference.

Incidentally, has anyone successfully had wxIFM working on Mac OSX yet? All I've seen is that it 'probably' works.

icStatic
Earned a small fee
Earned a small fee
Posts: 12
Joined: Thu Sep 08, 2005 6:41 pm
Location: Coventry, UK
Contact:

Toolbars and tabs

Post by icStatic » Sat Sep 10, 2005 6:30 am

I managed to get the toolbar code working as you suggested, however it flickers when you resize the window. Did anybody else experience this problem or did I do the code wrong?

I also had problems when integrating it with the MDI window, it seems the MDI client window does not appreciate being reparented into a wxPanel. Ah well, I've decided to switch to a tabbed style (as there is some nice looking code here: http://forums.wxwidgets.org/viewtopic.php?t=3781 )
Would it be possible to make wxIFM hide the tab-bar for containers with only one tab? It really is redundant.
I've modified the code a bit and uploaded a new copy here (with a list of changes and a screenshot): http://icstatic.uwcs.co.uk/wxIFM/

This adds a function which allows you to turn off the display of single tabs on their own. It would be cool if this could be integrated into the next release though obviously its up to SnakeChomp.

There are more details of this in my blog:

http://www.icstatic.com/blog/index.php? ... 910-062420

Hope this helps!

RealityMage
Experienced Solver
Experienced Solver
Posts: 75
Joined: Tue Aug 23, 2005 3:47 am

Post by RealityMage » Sat Sep 17, 2005 7:33 pm

icStatic, I found your patch useful. Is is possible to be able to set a flag on the child window to make it undetachable? (Can be put into a tab or repositioned, but not detached.)

RealityMage
Experienced Solver
Experienced Solver
Posts: 75
Joined: Tue Aug 23, 2005 3:47 am

Post by RealityMage » Mon Sep 19, 2005 5:02 pm

Also, are there any plans to implement the auto-hide/sidebar kind of thing as seen in VS200x and QT? That is, when the window isn't pinned open, it's reduced to a vertical or horizontal button lined on the window's edge.

BuschnicK
Experienced Solver
Experienced Solver
Posts: 80
Joined: Thu Oct 13, 2005 1:30 pm
Contact:

Post by BuschnicK » Thu Oct 13, 2005 1:37 pm

Heyho SnakeMan - thank you very much for IFM. I'have just arrived to the world of wxWidgets and good free toolkits like your's were a major draw to it.

Anyways, after playing with the demo application for a bit I have the following bugs/questions:

- if you hide all but one panel and drag that around over the text content window to release it there all text in the content window will be selected (somehow some mouse messages seem to propagate through to the underlying window?)

- the screenshot of your own "UberPad" application shows an MDI-like looking window as the content pane instead of the single fixed text window of the demo application. How would one go about implementing that?

regards,
S

SnakeChomp
Filthy Rich wx Solver
Filthy Rich wx Solver
Posts: 235
Joined: Sun Oct 10, 2004 2:53 am
Contact:

Post by SnakeChomp » Thu Oct 13, 2005 1:42 pm

BuschnicK wrote:- if you hide all but one panel and drag that around over the text content window to release it there all text in the content window will be selected (somehow some mouse messages seem to propagate through to the underlying window?)
wxWidgets bug.
BuschnicK wrote:- the screenshot of your own "UberPad" application shows an MDI-like looking window as the content pane instead of the single fixed text window of the demo application. How would one go about implementing that?
Make the MDIClientWindow the "Conent Window" of IFM and this will work fine. I advise against using toolbars in this scenario (toolbars created by wxFrame::CreateToolbar) because it will mess up the coordinate system of the frame and theres nothing that can be done to fix it except having the Content Window for IFM be a panel which is the only child of the frame. This doesn't work for MDI apps. You should not be using MDI in general, tab interfaces are simply better in all ways.

BuschnicK
Experienced Solver
Experienced Solver
Posts: 80
Joined: Thu Oct 13, 2005 1:30 pm
Contact:

Post by BuschnicK » Thu Oct 13, 2005 2:18 pm

Wow, that was a quick reply - thanks.

I agree with you disliking MDI - maybe my question was wrong. What I want is an application that consists of a big mainframe with lots of dockable childwindows, just like the example application of IFM. But the actual content area should not contain an automatically resizing window like it currently does but a blank area with a user resizable frame window. The reason is that I want to show and manipulate graphics and having them resize automatically would be irritating/annoying. The content window should have a maximize button which would switch it into the mode the example app currently supports.

I tried adding a wxFrame instead of a wxTextCtrl in SetContentWindow in the example program but that only left me with a black background that wouldn't redraw properly. Obviously I'm missing something?

regards,
S

SnakeChomp
Filthy Rich wx Solver
Filthy Rich wx Solver
Posts: 235
Joined: Sun Oct 10, 2004 2:53 am
Contact:

Post by SnakeChomp » Thu Oct 13, 2005 6:46 pm

You need to use the classes specifically designed to implement MDI. Your main window needs to be an MDIParentFrame, which contains an MDIClientWindow, and this MDIClientWindow must be the "content window" of wxIFM. You add MDIChildFrames to the MDIParentFrame to make the window that you can resize within the content area.

This post was edited to use a kinder tone than the original version on 10/14/05 01:00 AST

asp
Knows some wx things
Knows some wx things
Posts: 32
Joined: Sun Sep 12, 2004 4:35 pm

Post by asp » Tue Nov 08, 2005 6:33 pm

Thank you for this library. It looks great. I am considering using it in my application, but I have a question: Is it possible to load/save the layout?

Also, I have found a bug. If you press Alt+Tab to switch to another application while you are dragging a window, then it makes strange things when you go back to the application (the windows which is being dragged disappears, or it flickers a lot and makes stranges movements...).

SnakeChomp
Filthy Rich wx Solver
Filthy Rich wx Solver
Posts: 235
Joined: Sun Oct 10, 2004 2:53 am
Contact:

Post by SnakeChomp » Tue Nov 08, 2005 7:32 pm

A plugin to allow loading and saving of interface states is currently under development and to my knowledge is near completion. It will be made available when it is ready and not a moment sooner.

Note: I am not writing this plugin, but I am currently in communication with the person who is.

About your bug: I have been aware of this bug. It is fixable under win32 using a win32 only event, but for any other platform, I have no idea. I'll try to remember this and bring it up once wxIFM is sitting in wxWidgets CVS where itis easier to realize solutions for other platforms.

Post Reply