From: Florian J. <flo...@we...> - 2012-02-14 17:35:02
|
Hi my custom arranger columns changes are going pretty well, in fact the infrastructure for it works now. if you manually write your columns into your config file, muse respects them and can handle them. however, an in-app-change is impossible currently, because... my current approach is to delete the old Header and create a new one (with the changed columns). Arranger::updateTListHeader() should do the job. it does, however, break muse. calling the function once (in Arranger::Arranger()) works fine. but calling it a second time, it will remove the header, but not set the newly created header where it belongs. i've attached a patch. try checking out trunk (revision 1402), apply that patch, start muse, and in the arranger, select a different tool. i hacked the setTool() slot, so that it updates the custom columns and fires updateTListHeader() expected result: a shiny new header appears with some added columns ("Vol", "Pan", "Mod") actual result: the header disappears, and the layout for the arranger is broken. i assume the problem lies in the TLLayout, which isn't designed to handle deletion of its objects and replacing of them. i also tried to wrap the header into a QWidget* headerContainer, add that container to the TLLayout instead of the actual header, and create my new headers with headerContainer as parent. didn't work. i also tried to completely rebuild the tgrid (by clearing its internal lists, so that the dtor doesn't delete objects i still need), creating a new one and filling it with the widgets again. didn't work either do you have any idea how i could change my header? the best way would probably be to directly manipulate the header's columns. but it doesn't support that as well :-/ i hope someone can help me ;) greetings flo |