View Full Version : [SOLVED] Please Epic, I need help with the Multi-Column UIList
Ok, I'm on my knees now pleading :-) I need help with Multi-Column lists!
I can't seem to create a custom Datastore class that works with the UIList for MULTIPLE Columns! One column is easy (eg UTUIDataStore_StringList).
What I want to do is control the data that the DataStore feeds the UIList in script. However, it appears that the only way a DataStore will successfully work with a UIList is when the DataStore implements UIListElementProvider and UIListElementCellProvider.
I've looked at functions in UIDataProvider for "Script Only" classes. I assume this is what I am trying to achieve, although I've messed around with this for some time and can't seem to achieve what I desire.
The only thing I've been able to do is subclass UIDataStore_GameResource and make my own UIResourceDataProvider classes to fill out its "ElementProviderTypes". However, this system is really only designed for reading static PerObjectConfig items like maps and mutators etc. What I need to do is control the DataSource dynamically, yet let it be able to feed a UIList.
In all the UT classes that connect to UILists, they natively implement UIListElementProvider and UIListElementCellProvider. I obviously can't do this from UScript, so I need some way to hook into this mechanism.
If Row Drawing was exposed, like in 2K3/4, ie OnDrawItem(), and there was a way to interact with the sorting mechanism then I would most likely be able to achieve my desired result, bypassing DataStores all together, however all this stuff is now natively coded in UT3 and the only way to control a UIList is with a DataStore that natively supports multi-column features.
If there is something I'm not doing then please, please, please point me in the right direction, or if it simply isn't possible then just let me know if you are planning to implement a system that can be controlled via script.
I would really appreciate your help here. Thank you.
[BIA]DarthMushak
12-21-2007, 01:43 PM
Agreed, please help!
Geist
12-21-2007, 01:54 PM
While I hope you get an answer ASAP, I just wanted to note that this close to the holiday, the guys at Epic that could answer this for you might be out on break/vacation for the next 2 weeks.
Good luck though!
Thanks and yeah, I agree but modders don't stop for christmas ;-) lol j/k
I've ended up creating my own multi-column lister from scratch that doesn't require a DataStore and therefore sidesteps all the problems I faced with native coding.
It supports any number of columns, custom sorting, column resizing etc...
It's pretty much implemented like the 2K4 Multi-Column Lister, except with no native coding, obviously.
It's all working atm, I just have to implement multi-select and perhaps look at drag-n-drop.
The only issue I've had that I found difficult to get around is getting mouse and keyboard input into the class without adding an entry for each sub-classed list in the WidgetInputAliases array in Engine.UIInputConfiguration. Everytime I subclasses my list class, it would stop receiving the OnProcessInputKey delegate.
BattleMode
01-12-2008, 06:55 AM
I've ended up creating my own multi-column lister from scratch that doesn't require a DataStore and therefore sidesteps all the problems I faced with native coding.
It supports any number of columns, custom sorting, column resizing etc...
It's pretty much implemented like the 2K4 Multi-Column Lister, except with no native coding, obviously.
It's all working atm, I just have to implement multi-select and perhaps look at drag-n-drop.
The only issue I've had that I found difficult to get around is getting mouse and keyboard input into the class without adding an entry for each sub-classed list in the WidgetInputAliases array in Engine.UIInputConfiguration. Everytime I subclasses my list class, it would stop receiving the OnProcessInputKey delegate. Sounds like an incredibly useful tool. Does it allow dynamic changes to the content of the table (e.g. some form of re-init)? Who do I have to kill to get a copy of this?
If you are familiar with the 2K4 Multi-Column list then it's pretty much identical in terms of usage. So dynamic changes are completely possible, also with respect to sorting. You have complete control over the actual rendering, so you can pretty much do whatever you like. It's not rocket science - just labor.
I'd happily give you a copy but I'd be much happier to release it once I have actually used it in my mod (mapmixer). That way I know for a fact that everything is working how I like it.
I'm constantly coming across things with the UI that hold back my progress, so it's really slow going at the moment. I'm currently stuck on getting Context Menus to function, which is my next step in applying my lister in my mod.
Here's a very basic screenshot of it working. Not much to see in this example but you get the idea.
Basic Example (http://mapmixer.oceaniaut.com/forumstuff/mcl_basicexample.jpg)
BakerCo
01-12-2008, 02:11 PM
very cool indeed I am glad to see you making progress on this. Keep it up.
BattleMode
01-12-2008, 08:14 PM
If you are familiar with the 2K4 Multi-Column list then it's pretty much identical in terms of usage. So dynamic changes are completely possible, also with respect to sorting. You have complete control over the actual rendering, so you can pretty much do whatever you like. It's not rocket science - just labor.
I'd happily give you a copy but I'd be much happier to release it once I have actually used it in my mod (mapmixer). That way I know for a fact that everything is working how I like it.
I'm constantly coming across things with the UI that hold back my progress, so it's really slow going at the moment. I'm currently stuck on getting Context Menus to function, which is my next step in applying my lister in my mod.
Here's a very basic screenshot of it working. Not much to see in this example but you get the idea.
Basic Example (http://mapmixer.oceaniaut.com/forumstuff/mcl_basicexample.jpg) This is exactly what I have been looking for. Whenever you allow me to use this for BattleRPG I will be jumping with joy :D. BTW, I do not need context menu's for that. A table like the one you are showing here is all I need. If killing someone doesn't do it, would some begging perhaps help? It's like someone once said: "Ok, I'm on my knees now pleading :-) I need help with Multi-Column lists!" :D.
If killing someone doesn't do it, would some begging perhaps help? It's like someone once said: "Ok, I'm on my knees now pleading :-) I need help with Multi-Column lists!" :D.
For some reason this sounds familiar to me...;)
I would have finished this thing ages ago if it weren't for the simple fact that so much with the UI seems so frustratingly difficult at times.
...Just stay away from dangerous implements for the moment :D
BattleMode
01-13-2008, 01:59 PM
For some reason this sounds familiar to me...;)
I would have finished this thing ages ago if it weren't for the simple fact that so much with the UI seems so frustratingly difficult at times.
...Just stay away from dangerous implements for the moment :D :) Please don't forget to let me know when the glorious moment has arrived I can use your great table in BattleRPG.
I'm also having tremendous issues with getting keyboard and mouse input to my custom widget. See here: http://forums.epicgames.com/showthread.php?t=596864
I can hack it and get it working, though it never appears to detect when the Control Key is pressed, even though I have set it up correctly as a required option for a particular key alias. Alt and Shift work, so what I'm doing is correct. Control key is just not being detected.
I've thrown my hands up in the air and given up for the moment. Seems so silly to get so far with my lister, only to find issues with something basic like mouse+keyboard input. I think I need to take a break and clear my head :|
BattleMode
01-15-2008, 06:57 PM
I'm also having tremendous issues with getting keyboard and mouse input to my custom widget. See here: http://forums.epicgames.com/showthread.php?t=596864
I can hack it and get it working, though it never appears to detect when the Control Key is pressed, even though I have set it up correctly as a required option for a particular key alias. Alt and Shift work, so what I'm doing is correct. Control key is just not being detected.
I've thrown my hands up in the air and given up for the moment. Seems so silly to get so far with my lister, only to find issues with something basic like mouse+keyboard input. I think I need to take a break and clear my head :| Hm that sux, hope you find a way around it.
Hm that sux, hope you find a way around it.
I'm using Alt now instead of Ctrl for multi-select. That's my only work around. :( It's almost like Ctrl is being overridden by some other key alias - except there isn't another (at least in my widget). I also have Shift working for group select.
I still can't get user input into my widget except for manually adding the WidgetAliases in UTInput.ini for each class and sub-class. But at least I can get something working :|
I've given up on Context Menus for the moment - just can't get them to work. If someone else has any info then I'd appreciate it!
Here's another screenshot (http://mapmixer.oceaniaut.com/forumstuff/mcl_example2.jpg) showing some more progress:
BattleMode
01-16-2008, 03:05 AM
Here's another screenshot (http://mapmixer.oceaniaut.com/forumstuff/mcl_example2.jpg) showing some more progress: Impressive! I know I asked this before, but there isn't a simple version of this I could get from you for BattleRPG? "All" I need is a scrollable list with dynamic content, preferably multiple columns where the user can select a single item. It would allow me to replace the current PREV NEXT with something much nicer.
Just for your info, I'm presently also constructing my own ComboBox widget that utilises my list. While not entirely necessary, as the String DataStore works fine with the present ComboBox, as most combobox lists are single column, it will allow for added flexibility as you will have full control over the list class, as ALL code is exposed.
I know this is an added delay but the only way to iron out bugs and make sure everything is implemented in the list is to use it in a practical way.
BattleMode
01-23-2008, 06:02 AM
Just for your info, I'm presently also constructing my own ComboBox widget that utilises my list. While not entirely necessary, as the String DataStore works fine with the present ComboBox, as most combobox lists are single column, it will allow for added flexibility as you will have full control over the list class, as ALL code is exposed.
I know this is an added delay but the only way to iron out bugs and make sure everything is implemented in the list is to use it in a practical way. Sounds interesting. BTW I am less in a hurry then I used to be. I remade the BattleRPG menu with a dynamic combo box now and that works quite well. I am still very interested in your controls though. Did you get context menu's working? Thought up some things that could use this.
Did you get context menu's working? Thought up some things that could use this.
Nope, I've put context menus to the side for the moment. All the stuff you apparently need is there but I just couldn't get them to work at the time I tried. I'm sure they do, I just need to spend some more time on it. Although the fact that I can't see anywhere in the game where they are used isn't encouraging :|
Obviously in 2K4 we had context menus in the Server Browser but it appears that presently we don't in UT3.
BattleMode
01-29-2008, 04:27 AM
Any news? (Every day I think about new things I could do with your amazing list :D)
Well, I keep getting side-tracked. :)
I've just decided to ditch the UI Editor and hand code everything in my mod's UI (my list was already hand coded), as the Editor was causing me some serious woes.
As far as the Multi-Column List goes, there are still some accessor functions to be implemented, so nothing really big left for the list class. I'm only adding these functions to the list when I require them, so I can actually put some attention into progressing further in other areas of my mod. The whole UI issue has held my progress back quite substantially.
bushbomb
02-03-2008, 10:21 PM
Are you able to accept user input yet? How did you get it to work? I've come across the same thing where it only works if I put it in the ini manually. Even putting it in manually does not work on the network though. Is yours able to work on a network server?
Nope this is a big dead end for me. The only way I have been able to get Key Alias Events, as I mentioned in another thread, is to manually add a WidgetInputAliases line for EACH Custom UI Widgets and ALL Subclasses in the [Engine.UIInputConfiguration] section in the UTInput.ini file.
And like I've said in that other thread, this is going to be a pain for anyone installing my mod or create an impossible situation for Clients that don't have my mod (ie ClientPackage) installed and receive it automatically.
Somehow I don't think it was within the vision of Epic for people to create their own custom widgets. But hey, I'd be more than happy to be proven wrong here!!....(please)
BattleMode
02-05-2008, 05:09 PM
Nope this is a big dead end for me. The only way I have been able to get Key Alias Events, as I mentioned in another thread, is to manually add a WidgetInputAliases line for EACH Custom UI Widgets and ALL Subclasses in the [Engine.UIInputConfiguration] section in the UTInput.ini file.
And like I've said in that other thread, this is going to be a pain for anyone installing my mod or create an impossible situation for Clients that don't have my mod (ie ClientPackage) installed and receive it automatically.
Somehow I don't think it was within the vision of Epic for people to create their own custom widgets. But hey, I'd be more than happy to be proven wrong here!!....(please) You could consider releasing what you have now and let others have a try at it? I release everything I make with all source code, have already received many useful sugestions that way. (And also it would allow me to start using your nice table :D)
bushbomb
02-05-2008, 10:47 PM
Yes, please release it :) I've finally figured out a workaround for my stuff. I have a new widget, a new UIScene that uses it, and I had the problem where it only worked by adding to the ini manually. Through a "workaround" until epic fixes this bug, I now have a list like the CommandMenu (orders/taunts) that allows me to scroll through it with the wheel, middle click to go in, escape to go back one, #'s 1-9 to select a particular item, etc.
I created it so I could do like, pick "weapon" then pick "JohnDoe" then "Flak Cannon" and then JohnDoe gets a flak. Running now smooth as butter.
BattleMode, if you do get the code for his list, I can give you what I got to maybe get it working. I already posted it in the Epic Mod mailing list, so anyone there has it.
BattleMode
02-08-2008, 03:53 PM
BattleMode, if you do get the code for his list, I can give you what I got to maybe get it working. I already posted it in the Epic Mod mailing list, so anyone there has it. Sounds very interesting!
bushbomb
02-08-2008, 05:06 PM
Here are some sample screenshots:
http://www.dawga.com/screenshots/ScreenShot127.jpg
http://www.dawga.com/screenshots/ScreenShot128.jpg
Here's an example, if I want to create a manta for myself, I can be running around, shooting people, and at the same time, just use the mouse wheel and mousewheel-click to navigate and create one ( I could also just hit "4 8 1" and it would do the same:
http://www.dawga.com/screenshots/ScreenShot129.jpg
http://www.dawga.com/screenshots/ScreenShot130.jpg
http://www.dawga.com/screenshots/ScreenShot131.jpg
http://www.dawga.com/screenshots/ScreenShot133.jpg
I've been spending some more time on my mod (mapmixer v3) and now that I've got all my UI Components together that I needed (ie Multi-Column List, ComboBox and Numeric Edit Box) I've been able to release my first UI Screenshot.
See here (http://oceaniaut.com/vbb/showthread.php?p=337584#post337584)
You'll see in the screenshot that there are three lists. Two on the left, which are based off a subclass of my Multi-Column List that act as a general-purpose simple list to store a visible column, as well as two other hidden ones. (This is a similar concept to the UT2K4 GUIList class). On the right is another subclass of the Multi-Column List that deals with Mutators - actually showing multiple-columns :].
Neither the Multi-column list base class or the Combo Box rely on the DataStore system, so they are easy to access by code and don't suffer the limitations imposed by the native code requirements of the DataStore system for list presentation.
Now that I've been able to implement the List class in real-life situations, I've removed some bugs and increased functionality. Although I don't think I'll be ready to make the List class public until I complete my Map Lists section of the MapMixer UI, as this requires the most functionality from the List class. :[
[Still no luck on the WidgetInputAliases issue though.]
BattleMode
03-13-2008, 12:49 PM
Any progress on this lately?
Yup, I've been doing quite a lot of work on my mod lately and also specifically on the Multi-Column List.
It now supports Multi-select as well as Drag-n-drop. I got really fed up with the whole WidgetInputAliases + ini file issue, so I decided to take a somewhat drastic path. As follows:
My multi-column list class extends from UTDrawPanel, so I went back a step and inserted another class upon which to base my multi-column list off, as well as anything else I have to recreate from scratch.
I then routed all input to my base Scene class using the OnReceivedNativeInputKey and OnReceivedNativeInputAxis delegates. This then keeps an eye on the Active Control, as well as the last Focused Control and routes input events (where appropriate) to them if they are based from my Draw Panel class, which of course my List Class is. I now have total control over input events and can do *anything* I want. There should now no longer be issues for UT clients who receive my MapMixer client and not be able to use my custom widgets, due to the WidgetInputAliases issue.
This has meant quite a bit of extra work work as it's pretty much like re-inventing the wheel. The upside to all this is that I can do everything I want and in fact I've actually been able to do more than I had hoped for.
Here's a preview of the list in action. This is a shot of my map list editor for MapMixer, which is still in development. I haven't even released a preview shot of the map list editor yet because it's still in progress but since you asked about the list, you can have a sneak preview.
http://mapmixer.oceaniaut.com/forumstuff/mm300a-MLE-sneakpreview.jpg
This shot shows multi-select drag-and-drop in process. I'm extremely happy with the way everything has worked out so far with the list class.
Currently I'm ironing out some bugs with the list but it's pretty much (hopefully) finished. It gets a little complicated when you throw into the mix: multi-select, reverse sorting and drag-and-drop :)
Anyone who's interested in the mod should refer to the MapMixer website and forums.
BattleMode
03-14-2008, 11:33 AM
Impressive! When you release it, will other mod authors be allowed to use your UI controls in their mods?
Yeah, anyone who asks permission first can use it (just want to know who's using it).
It's not hard coded to my specific purposes and is generic enough to be used by anyone for anything.
There's three classes: the base DrawPanel Class, the List Class and the Custom Input Class. The List class is an Abstract class (subclassed from the DrawPanel class), so it needs to be sub-classed and the Custom Input class just simply needs to be created once in your scene and initialised.
My priorities are for my mod at this stage, so the sooner I get that out, the sooner people will get access to the List class and the associated ComboBox class that uses it.
BattleMode
03-22-2008, 03:59 AM
Yeah, anyone who asks permission first can use it (just want to know who's using it). In that case I would like to ask permission to use it :D.
pingfreak
03-23-2008, 05:34 PM
I would like to use it as well, I'm working on a rather large configurable GUI and I'm thinking this may help me work out some bugs.
Powered by vBulletin® Version 4.2.0 Copyright © 2013 vBulletin Solutions, Inc. All rights reserved.