Kirix Support Forums

wxAUInotebook question

Please post all general questions, comments, bug reports, and any other wxAUI feedback here.

wxAUInotebook question

Postby Brian on Thu Nov 30, 2006 4:49 pm

It seems that pages from a wxAUInotebook can be moved from one notebook to another, but they *can't* be :

1) ripped out of the notebook and into their own floating window,
2) ripped out of the notebook and docked as its own floating panel.

Is that correct?

If so, are there any plans to add that feature?
Brian
Registered User
 
Posts: 9
Joined: Thu Nov 30, 2006 4:39 pm

Postby Aaron on Thu Nov 30, 2006 7:08 pm

Brian,

Yes, you are correct. At this time, we're still tidying up wxAUI for the upcoming wxWidgets 2.8 release, so we aren't planning to implement this particular feature in the near future.

Do you have a particular application in mind?

Best Regards,
Aaron
User avatar
Aaron
Kirix Support Team
 
Posts: 120
Joined: Fri Dec 16, 2005 3:01 pm

Postby Brian on Thu Nov 30, 2006 8:00 pm

I'm not sure its an application-specific feature. But...

With bigger monitors and dual monitors becoming more and more common, people want the flexibility to tear off and put tools in separate windows, or separate monitors, or to have them docked into a single TabControl. Adobe Photoshop does it. Microsoft Visual Studio does it. Its kind of a "common" thing.

Keep up the good work! AuiNotebook and AuiManager Rock!! :)
Brian
Registered User
 
Posts: 9
Joined: Thu Nov 30, 2006 4:39 pm

Postby disasm on Thu Nov 30, 2006 11:59 pm

If it's possible, there is another feature that I'd like to see in AUI -- container tabs.

I'd like to be able to create a tab that contains more tabs inside it. Either all on one row, or docked in any configuration possible, but all contained inside a tab.

This kind of a feature would allow the user to create many different views of a certain data set, and group them however that user likes, and switch between them easily.
disasm
Registered User
 
Posts: 16
Joined: Tue Jan 10, 2006 8:56 pm

Postby Ben on Fri Dec 01, 2006 1:50 am

Hi disasm,

We would like to see this feature, too. It should be eventually possible to do this in combination with wxAuiManager. Right now, it can't yet be done in the way you are describing.

Best,
Ben
User avatar
Ben
Kirix Support Team
 
Posts: 525
Joined: Mon Dec 19, 2005 6:29 am

Postby Brian on Thu Dec 14, 2006 1:18 pm

Ah. Don't bother putting in tear-off wxAuiNotebook pages, unless you want to get sued by Adobe. They have a patent on it. They sued Macromedia over it (and won), before buying them. Rats.

http://www.internetnews.com/dev-news/article.php/435371
Brian
Registered User
 
Posts: 9
Joined: Thu Nov 30, 2006 4:39 pm

Don't Listen!

Postby Game_Ender on Wed Dec 20, 2006 9:50 am

No offense to Brian, but don't listen to him. Eclipse has had the feature for ages and is used as a basis for commercial projects. Please add this, wxAUI is so close to becoming super flexible.

You just need to unify the notebook and non-notebook windows. Panes should switch back and forth as needed. So if there were a notebook that would just have one tab it should look just like a normal pane then when you drag it over another pane it instantly becomes a notebook with two panes.
Game_Ender
Registered User
 
Posts: 5
Joined: Sat Feb 18, 2006 12:33 pm

Postby Brian on Wed Dec 20, 2006 2:10 pm

Actually, good point --- in my case, I won't be selling the software I'm working on, so go ahead and add it. :)
Brian
Registered User
 
Posts: 9
Joined: Thu Nov 30, 2006 4:39 pm

Re: Don't Listen!

Postby Huge on Thu Dec 28, 2006 8:35 am

Game_Ender wrote:You just need to unify the notebook and non-notebook windows. Panes should switch back and forth as needed. So if there were a notebook that would just have one tab it should look just like a normal pane then when you drag it over another pane it instantly becomes a notebook with two panes.


Hi,
Firstly, guys good work on wxAUI.

I also really agree that this is the way tabs/panes should work. I don't think notebooks should be explicitly added - they should just appear out of thin air as required. If the end user wants to group certain items, who are we to tell them otherwise? As a programmer, I just want to say "Here's a pane for you to control - stick it where you want".
As far as implementation goes, I think it is similar to stacking 3 items vertically on a dock with splitters - instead you are just sticking them "on top" of each other with some changes to the title display to show tabs.

Keep up the good work.
Huge
Registered User
 
Posts: 25
Joined: Thu Dec 28, 2006 1:12 am

Postby Huge on Sat Jan 06, 2007 7:20 am

Hi,
I have just submitted a patch 1629361 to sourceforge http://sourceforge.net/patch/?group_id=9863 to allow tabs to be moved between docked/frames and notebooks. This should cover most of the points here, excepth tabs-within-tabs. From the description:

This mod adds "automatic notebooks" to wxAUI. This allows panes to be dragged over the top of other eligible panes for form notebooks, and then you can drag the tabs out to for normal panes again.

To dock on another pane, firstly both panes must have the "optionNotebookDockable" flag (now on by default) and not be "Fixed" size. Then you drag over the centre 1/3 of the pane to cause a notebook-drop. You can globally disable this mod using wxAUI_MGR_NO_AUTO_NOTEBOOK flag on the manager.

This mod replaces 1626617 (wxAUI wxFrames), as the changes are too intertwined.

You can programatically create a notebook by first creating a notebook id at a certain position, and then adding pages to it:

int notebook = mManager->AddNotebook(wxAuiPaneInfo().Left().BestSize(250,500));

mManager->AddPane( pane1, wxAuiPaneInfo().BestSize(200,400).NotebookPage(notebook) );
mManager->AddPane( pane2, wxAuiPaneInfo().BestSize(200,400).NotebookPage(notebook) );

If you remove all-but-one pane, the notebook will convert to a normal pane.


Known issues: The notebook gets the "BestSize" from the first pane - perhaps some other thing would be better? MinSize/MaxSize are currently ignored. The notebooks are simple arrays of tabs - you can't split them like you can the wxAuiNotebook - although you don't really need to. The tab-order is currently hard to change. The active tab is not remembered.

You will also need patch 1626610 for MSW MDI children.

Let me know if anyone has any luck applying this.

Huge
Huge
Registered User
 
Posts: 25
Joined: Thu Dec 28, 2006 1:12 am

Postby Game_Ender on Sun Apr 15, 2007 10:33 pm

The comments on the patch say that it works but does not integrate with the saving and loading mechanisms. Has this feature been added yet and if not what version of wxWidgets is it on the roadmap for?
Game_Ender
Registered User
 
Posts: 5
Joined: Sat Feb 18, 2006 12:33 pm

Re: wxAUInotebook question

Postby mikael.delsol on Mon Apr 16, 2007 2:43 am

Brian wrote:It seems that pages from a wxAUInotebook can be moved from one notebook to another, but they *can't* be :

1) ripped out of the notebook and into their own floating window,
2) ripped out of the notebook and docked as its own floating panel.

Is that correct?

If so, are there any plans to add that feature?


Hi,
I just want to tell what I succed to do :
I declare the main class as a wxMDIParentFrame (which could be another class such as this one) with its wxAuiManager. And my wxMDIParentFrame is managed by the wxAuiManager.
Then, I declared a class derived from wxAuiNotebook, Notebook, and I overrided the OnTabEndDrag method. So, if we begin to drag a tab out of the wxAuiTabCtrl, I add a pane to the wxAuiManager of my wxMDIParentFrame, with AddPane(dragged_page_content,wxAuiPaneInfo().Float() or .Dock() [,wxPoint().... ]) and I remove the page from the Notebook. So I obtain a FloatingFrame with the content of the page dragged. So, I think that your first point is possible (maybe needs some improvement..). the second one is also possible for me.
But I the most would be to do the revese operation, I mean drag a floating frame to the notebook that I can't do since many weeks. It's due to that I can't override the OnLeftDown method of the wxAuiManager. So if you can help, me, go to see my questions here :
http://www.kirix.com/community/forums/viewtopic.php?t=425.
Thanks a lot and tell me if you have any questions.

Best
mikael.delsol
Registered User
 
Posts: 13
Joined: Fri Mar 02, 2007 11:22 am
Location: Montpellier, France

Postby Huge on Wed Apr 25, 2007 11:18 am

Hi,

I have gathered my mods into something that may be easier to play with. You can see them at http://gamemosaic.com/auimod/. This includes a demo that lets you move panes between windows/notebooks/mdi/full-frame windows. The layout loading and saving should be pretty good too. Let me know what you think.

Huge.
Huge
Registered User
 
Posts: 25
Joined: Thu Dec 28, 2006 1:12 am

Postby mikael.delsol on Thu Apr 26, 2007 2:58 am

Huge wrote:Hi,

I have gathered my mods into something that may be easier to play with. You can see them at http://gamemosaic.com/auimod/. This includes a demo that lets you move panes between windows/notebooks/mdi/full-frame windows. The layout loading and saving should be pretty good too. Let me know what you think.

Huge.


Hi!
Very good job, it rocks!!

Best
mikael.delsol
Registered User
 
Posts: 13
Joined: Fri Mar 02, 2007 11:22 am
Location: Montpellier, France

Postby Game_Ender on Wed May 09, 2007 9:21 pm

I don't know to much about the wxAUI internals, can you give me a few quick tips about how I would remove the MSW specific code? I am interested getting this to work with wxPython.
Game_Ender
Registered User
 
Posts: 5
Joined: Sat Feb 18, 2006 12:33 pm

Postby Huge on Mon May 14, 2007 9:55 am

Hi,
I don't think I used any MSW specific stuff - but I might have. If you post some compile errors, I could have a look. The biggest problem I see is with the MDI. I use the "wxMDIParentFrame" etc, which I think are fairly generic. However I think the easiest way to do the port would be to ignore the MDI stuff and just create a "Centre" panel. You should then be able to drag in and out tabs getting a kind-of MDI working.
My comment about MSW was that I have only tested it on MSW - so it is possible it will work otherwise. However with any software, if it's not tested, it probably not going to work the first time :)
Huge
Registered User
 
Posts: 25
Joined: Thu Dec 28, 2006 1:12 am

Re: wxAUInotebook question

Postby Ken on Fri Jun 22, 2007 8:15 pm

[Edit: Forum Transition Issue, Ken re-posted for sickboy]

Hi Huge, thanks for your wxAUIMod !
Unfortunately i found two bugs:
1. When you close all tabs of a notebook an empty container remains.
If your try to close it the app crash.
2. When you drag the the last tab of a notebook it crash too.

Both bugs are reproduceable with your AuiMod.exe

Are you going to commit another patch for the wxWidgets repository ?
I see that the current existing patch is much older than your wxAUImod.

It would be nice to see your mod as part of the wxUAU !
Ken Kaczmarek
Kirix Support Team
User avatar
Ken
Kirix Support Team
 
Posts: 147
Joined: Mon Dec 19, 2005 10:36 am

Re: wxAUInotebook question

Postby Huge on Mon Jun 25, 2007 9:24 pm

Hi Ken,
Well, I'm actually using this code so I must already have a fix for this :)
I can do a new release if people are interested. This is a bit of
a difficult one because I'm hoping this mod will be made redundant.
But then again, i've got several months milage out of it, so maybe it
is worth it.

I don't think the patches are going to make it into the standard tree
because I believe they conflict with basic roadmap set out here,
that is why I moved to an unofficial "mod" release.

The main problem is because it is a snapshot, it is missing out on
the updates to the wxWindows cvs tree. There are a lot of changes
so diff-based patching is difficult.

I'll have a look and see if the crash-fix is an easy one, and release a
new mod if it is easy or there is sufficient community desire.

Huge.
Huge
Registered User
 
Posts: 25
Joined: Thu Dec 28, 2006 1:12 am

Re: wxAUInotebook question

Postby sickboy on Tue Jun 26, 2007 4:18 am

Hi Huge,

i've merged your latest released wxAUImod and 2.8.4 with no problems. It works nice except of the mentioned bugs. Could you track them ?
sickboy
Registered User
 
Posts: 7
Joined: Wed Jun 06, 2007 8:40 am

Re: wxAUInotebook question

Postby Huge on Tue Jun 26, 2007 8:44 am

Hi sickboy,
There should be some new code at the original URL.
Just a few changes the framemanager.cpp
See how that goes for you.

Huge.
Huge
Registered User
 
Posts: 25
Joined: Thu Dec 28, 2006 1:12 am

Re: wxAUInotebook question

Postby reast on Wed Jun 27, 2007 10:13 am

I've also successfully merged your code into 8.4. I'm using the auto notebooking feature, it's very nice. One thing I would like to do is get tab bitmaps to work. Is there a way to do that now, or are there additional features to come? I exposed GetNotebooks() and am able to set a bitmap whenever I want by grabbing the wxAUINotebook object and calling SetPageBitmap(). The problem is when I drag a page out of a notebook and the drag it back in again it doesn't "remember" the bitmap. Any suggestions? I'd be happy to make whatever mods may be necessary to accomplish this. This could also be said of any of the Tab decorations (Maximize, Minimize, etc.)

Thanks.

Awesome job!

-Bob
reast
Registered User
 
Posts: 2
Joined: Wed Jun 27, 2007 10:04 am

Re: wxAUInotebook question

Postby Huge on Wed Jun 27, 2007 8:05 pm

Hi,
I've been thinking about bitmaps on pages too.
The maximise/minimise could be done globally and
separately (can it be done already with TabArt ?)
Originally, I though to attach the bitmap to the paneinfo.
This seems like the "right" idea, since we may also be able
to use the bitmap for, say, frame icons. It poses a
little problem with serialising, unless it's done via
name/resource (windows only?), or requires you to
set them up at the beginning, and are not changed.
Another easy idea may be to simply generate an
"OnNotebookPaged" event for the item - then you could
do whatever you want. Alternately, I could generate
a "GetPaneBitmap" event for a similar result.
Any ideas? Presumably the main trunk development
may also be looking to do something here.

Huge
Huge
Registered User
 
Posts: 25
Joined: Thu Dec 28, 2006 1:12 am

Re: wxAUInotebook question

Postby reast on Wed Jun 27, 2007 10:09 pm

Yeah, that's exactly what I did. I create a global wxImageList for any bitmap decorations I might want on my tabs, to which I assign to each panel and then just do the following...

void MyFrame::OnNotebookPageChange(wxAuiNotebookEvent&event)
{
wxAuiNotebook *notebook = (wxAuiNotebook *)event.GetEventObject();
if ((notebook != NULL) && (event.GetOldSelection() != -1))
AssignBitmapToPage(notebook, event.GetSelection());

event.Skip();
}

Where AssignBitmapToPage() just does the following for any page tab I want to place a bitmap...

wxString name = auiNotebook->GetPageText(page);
if (name.IsEmpty())
return;

if (name.Cmp(wxT("TestPane0"))==0)
auiNotebook->SetPageBitmap(page, Panel0->GetBitmap());

And if I want to use those same bitmaps in menus or other places I can access them via the global list or the panel. Whichever is most convenient.


-Bob
reast
Registered User
 
Posts: 2
Joined: Wed Jun 27, 2007 10:04 am

Re: wxAUInotebook question

Postby sickboy on Thu Jun 28, 2007 9:15 am

Thanks for your fix Huge ! It works without problems now.
sickboy
Registered User
 
Posts: 7
Joined: Wed Jun 06, 2007 8:40 am

Re: wxAUInotebook question

Postby sickboy on Mon Jul 02, 2007 7:12 am

Hi Huge,

there is another bug which cause a crash in framemanager.cpp
It appears (wxWidgets 2.8.4) when i try to drag one of two existing notebook items out of the notebook. I can't give a callstack because it crash at diffrent positions unreproduceable. Mostly when it tries to delete the old sizer in wxAUIManager::Update() (ln. 2865) which will be called from OnTabBeginDrag -> actionDragFloatingPane.

I fixed it this way:
wxFrameManager.cpp
line 2644: add "wxNotebook* notebookToDestroy = NULL;"
line 2729: Replace "notebook->Destroy();" with "notebook->Hide(); notebookToDestroy = notebook;"
line 2989: add "if (notebookToDestroy) notebookToDestroy->Destroy();"

I think that this is just a workaround, but i'm not sure if it's a problem of 2.8.4 or that we don't handle the first few lines of wxAuiManager::OnMotion(...) correctly...

I'm not using the wxAUI_MGR_MANAGE_DOCUMENT but wxMDI and haven't merged the src/msw/mdi.cpp. But i don't think that this will be the reason for the crash.
sickboy
Registered User
 
Posts: 7
Joined: Wed Jun 06, 2007 8:40 am

Re: wxAUInotebook question

Postby Ben on Tue Jul 03, 2007 12:18 am

Hi,

A few days ago I patched a bad bug in the wx 2.8 branch (as well as the trunk). It fixes a crash with page removing. Your symptoms sound like it could be caused by that bug. Can you get the latest and try your code with that?

Thanks,
Ben
Ben Williams
Kirix Support Team
User avatar
Ben
Kirix Support Team
 
Posts: 525
Joined: Mon Dec 19, 2005 6:29 am

Re: wxAUInotebook question

Postby Huge on Wed Jul 04, 2007 12:27 am

Hi,
If I were to date my changes, which version would you recommend I do it against?
A CVS checkout (HEAD?), or last stable or something else.

Huge
Huge
Registered User
 
Posts: 25
Joined: Thu Dec 28, 2006 1:12 am

Re: wxAUInotebook question

Postby NinjaNL on Wed Jul 04, 2007 3:33 am

Huge wrote:A CVS checkout (HEAD?), or last stable or something else.


If I were you, I would make a patch against SVN TRUNK, and also check it against WX_2_8_BRANCH.

This way your code (hopefully) will be taken up into the future release tree, but also can be applied to the current release branch.

If I read the code correctly, the patch generated against TRUNK should also correctly alter WX_2_8_BRANCH.

Mal
NinjaNL
Registered User
 
Posts: 40
Joined: Thu Jun 14, 2007 6:53 am

Re: wxAUInotebook question

Postby Ben on Wed Jul 04, 2007 5:23 am

Huge wrote:Hi,
If I were to date my changes, which version would you recommend I do it against?
A CVS checkout (HEAD?), or last stable or something else.



Simply get the latest 2.8 branch. Either that, or the change will be integrated in wxWidgets 2.8.5 (I don't know when this release is due).

CVS is no longer used for wxWidgets development, so you'll need to install subversion.

Once you've installed subverison, simply install run this command:

Code: Select all
svn co https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH/ wxWidgets
User avatar
Ben
Kirix Support Team
 
Posts: 525
Joined: Mon Dec 19, 2005 6:29 am

Re: wxAUInotebook question

Postby Huge on Mon Jul 16, 2007 8:58 am

Hi all,

I have updated the code to match the latest code on the branch.
I have also added the ability to specify an icon for a pane - this will show up in the frame or the notebook, as required. I have submitted the MDI code as a separate patch - if you are interested I can provide more details. You will need to comment out a line in the sample code if you do not get this patch.

Get it here: http://gamemosaic.com/auimod/index.html
Huge
Registered User
 
Posts: 25
Joined: Thu Dec 28, 2006 1:12 am

Re: wxAUInotebook question

Postby NinjaNL on Fri Aug 03, 2007 8:18 am

So Ben, are there any plans to incorporate these changes into the HEAD?

I guess that it would make sense.

Thanks
NinjaNL
Registered User
 
Posts: 40
Joined: Thu Jun 14, 2007 6:53 am

Re: wxAUInotebook question

Postby Ben on Fri Aug 03, 2007 9:24 am

Hi there,

We definitely want these abilities incorporated into the library. However, we need the ability to have them fully integrated into the existing functionality of the library, i.e. they need to be able to be saved and loaded as perspectives.

Please let me know if I'm wrong about this.

All the best,
Ben
Ben Williams
Kirix Support Team
User avatar
Ben
Kirix Support Team
 
Posts: 525
Joined: Mon Dec 19, 2005 6:29 am

Re: wxAUInotebook question

Postby Huge on Sun Aug 05, 2007 8:21 am

Hi,
These changes are "mostly" compatible with the load/save perspective.
The load/save certainly works well enough to use in a production application,
the main issue is to do with tab-order, but this can be seen more like a bug
fix than an architectural change requirement. You can check out the
"Load/Save Layout" menu options on the demo to see if these meet your requirements.

I don't think you need to load/save the icon because the icon can be linked at
window creation time, and need not change.

I would like to see these incoprorated, since it would make bug-fixing and improvements
easier.

Huge.
Huge
Registered User
 
Posts: 25
Joined: Thu Dec 28, 2006 1:12 am

Re: wxAUInotebook question

Postby Ben on Mon Aug 06, 2007 10:38 am

Hey Huge,

Ok-- sounds great, I'll check it out.

Thanks,
Ben
Ben Williams
Kirix Support Team
User avatar
Ben
Kirix Support Team
 
Posts: 525
Joined: Mon Dec 19, 2005 6:29 am

Re: wxAUInotebook question

Postby sickboy on Mon Aug 13, 2007 7:11 am

Any idea how to make the MinSize/MaxSize work again, Huge ?
sickboy
Registered User
 
Posts: 7
Joined: Wed Jun 06, 2007 8:40 am

Re: wxAUInotebook question

Postby Huge on Wed Aug 15, 2007 9:04 am

On the notebooks?
Well, that would require me to implement it :)
My main problem was for a notebook, how to combine the min/max sizes?
Obviously it may not be possible to satisfy all constraints, but I'm open to ideas.

Or is it that the pane "loses" some info when it goes in and out of a notebook?
That should certainly be fixed.

Huge

sickboy wrote:Any idea how to make the MinSize/MaxSize work again, Huge ?
Huge
Registered User
 
Posts: 25
Joined: Thu Dec 28, 2006 1:12 am

Re: wxAUInotebook question

Postby phi on Mon May 19, 2008 2:32 am

Hi,

I'm greatly interseted in this patch, however I can't found it on the wxwidgets patch page and I didn't saw corresponding svn updates.

May somebody point me in the right direction, please.

Thanx for all.

Pascal
phi
Registered User
 
Posts: 2
Joined: Mon May 19, 2008 2:28 am

Re: wxAUInotebook question

Postby Ken on Mon May 19, 2008 8:18 am

This hasn't yet been officially incorporated into wxAUI. I believe you can get the latest patch here:

http://gamemosaic.com/auimod/index.html
Ken Kaczmarek
Kirix Support Team
User avatar
Ken
Kirix Support Team
 
Posts: 147
Joined: Mon Dec 19, 2005 10:36 am

Re: wxAUInotebook question

Postby Huge on Wed May 21, 2008 12:09 am

Hi,
I should warn you that I have pretty much stopped work on this project.
The decision was hard, but the logic goes like this:
1. wxAUI layout is based on laying out windows, not objects such as "window groups"
2. wxAUI will not accept a patch that uses child windows in place of objects
therefore,
-> wxAUI will not allow objects such as "window groups" to be laid out heirarchically - all the positions must be marshalled from the central, Manager, location, and all changes must be made through it too.

Changing the manager to this extent would require new data structures and changes I do not really want to make. It would be easier to relax point 1. (the "proper" way to do it), or point 2. (the "easy" way to do it, as is done by this patch). Anything else, IMHO, is just too hard.

The irony is, that the current recommend way around this is to "Just create and extra notebook - for layout purposes - but since it is you doing it, it does not violate our 'no extra window' policy, even it it is a bit more work"

Huge
Huge
Registered User
 
Posts: 25
Joined: Thu Dec 28, 2006 1:12 am

Re: wxAUInotebook question

Postby phi on Fri May 23, 2008 3:10 am

Thanx for these informations,

I already started the port of your code for an integration into the 2.8 branch (currently against the 2.8.7 stable release).
I removed everything that was related to document handling, MDI (the 2.8 branch already has another MDI handling), and also full frame for floating frames. So I left only the bare minimum for auto-creation of notebook panes and handling of drap-n-drop with center drop.

There are no changes to auibook.cpp, little change to floatpane.cpp and some changes to framemanager.cpp.

The current load/save perspective code correctly handles persistance (as you've done in your code).

I still have to investigate a bug near notebook destruction time.

What should I do to have a chance the patch being accepted? I don't really catch those conceptual views about hierarchical window layout or not. Ben, What are the current concerns about the philosophy of Aui knowing that the changes will be source compatible with older code?

Thanx.

Pascal
phi
Registered User
 
Posts: 2
Joined: Mon May 19, 2008 2:28 am
Next

Return to wxAUI Questions, Thoughts & Feedback