Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

eDriven.Gui - GUI for programmers

Discussion in 'Assets and Asset Store' started by dkozar, Jul 10, 2012.

  1. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410


    Greetings to all!

    eDriven.Gui is a powerful GUI framework for Unity, part of eDriven RIA framework, packed with features GUI developers are used to.

    You could use eDriven.Gui to build a wide range of apps, from games to business applications.

    The workflow is similar to Java Swing or Apache Flex.

    Controls are totally skinnable via custom skins and stylable via stylesheets.

    Features:
    - Built on top of eDriven.Core
    - Retained mode GUI
    - Display list (composite pattern)
    - Component lifecycle
    - Invalidation-validation mechanism
    - Implements OOP concepts
    - Event-driven (DOM Level 3 events)
    - Event bubbling
    - Signals and slots
    - Skinnable
    - Layout engine
    - Plugin architecture
    - Internal tweening engine
    - Dialogs and alerts
    - Firebug-like inspector
    - Cursor management
    - Focus management
    - Tab management
    - Tooltips
    - Components as C# classes
    - DLL component distribution

    Homepage: http://edrivengui.com
    Forum: http://forum.edrivengui.com
    Demo site (old): http://edrivenunity.com/gui
    API: http://edriven.dankokozar.com/api/2-0/
    Asset Store link: http://t.co/y5JPsamY2e
    Video playlist: https://www.youtube.com/watch?v=_YuFw-Jtz0k&list=PL7EE340828F962941

    So many cool things coming up, stay tuned! :)

    Danko Kozar, dankokozar.com




     
    Last edited: Jan 20, 2014
  2. Dreamora

    Dreamora

    Joined:
    Apr 5, 2008
    Posts:
    26,601
    Very interesting solution and seems to be pretty flexible and powerfull.
    Looking forward to see where it goes in todays environment of UI competition, especially with its not that 'impulse buy' approachable price tag which I though don't consider to be that much out of scale given the flexibility and power it seems to offer
     
  3. Univerb-Gaming

    Univerb-Gaming

    Joined:
    Jun 28, 2012
    Posts:
    255
    And it's got a decent tabbing system. Nice work so far - definitely something I can use on other projects.
     
  4. Univerb-Gaming

    Univerb-Gaming

    Joined:
    Jun 28, 2012
    Posts:
    255
    Can you data bind? Seems like you can and it seems like I like it ;)
     
  5. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    Yes, a kind of.

    Data binding is really a meter of 2 things:

    1) auto-generated code
    2) event-dispatching

    Since eDriven framework doesn't have auto-generation tools yet, I call it semi-automatic. :D

    Basically you can have setters that dispatch events.

    Here's the script I actually use for changing the volume in eDriven Demo app:

    Code (csharp):
    1. using eDriven.Audio;
    2. using eDriven.Core.Events;
    3. using UnityEngine;
    4. using Event=eDriven.Core.Events.Event;
    5.  
    6. namespace eDriven.Playground.Demo.Models
    7. {
    8.     /// <summary>
    9.     /// Going MVC here
    10.     /// </summary>
    11.     public class OptionsModel : EventDispatcher
    12.     {
    13.         #region Singleton Here (skipped for brevity)
    14.         #endregion
    15.  
    16.         public const string VOLUME_CHANGED = "volumeChanged";
    17.  
    18.         private float _volume;
    19.         public float Volume
    20.         {
    21.             get { return _volume; }
    22.             set
    23.             {
    24.                 if (value == _volume)
    25.                     return;
    26.                 _volume = value;
    27.                 AudioPlayerMapper.GetDefault().Volume = _volume; // setting the value here
    28.                 DispatchEvent(new Event(VOLUME_CHANGED));
    29.             }
    30.         }
    31.     }
    32. }
    All interested parties can subscribe to VOLUME_CHANGED event of this Singleton, or could set the volume via setter.
     
    Last edited: Jul 10, 2012
  6. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
  7. tombali

    tombali

    Joined:
    Jun 7, 2012
    Posts:
    132
    majstore, svaka čast :)
     
  8. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    Oh, hvala ti! ^_^
     
  9. keithsoulasa

    keithsoulasa

    Joined:
    Feb 15, 2012
    Posts:
    2,126
    Its pretty costly, but since linux support is coming soon I might buy this to build cross platform apps .
     
  10. keithsoulasa

    keithsoulasa

    Joined:
    Feb 15, 2012
    Posts:
    2,126
    After trying the demo, I must say that its amazing amazingness, like IF and when I have enough money to buy it I will just to make Linux Application development a bit easier .
     
  11. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    Hey, thanks for the positive crytics!

    About the price: I'm aware of it, but this is a middleware, and can't expect it to cost like an AppStore game. With this tool you build serious GUIs (and make money with it) - multiple projects, because this is the price per developer.

    Let's say you need a GUI system and you want to outsource that job to other company. How much would they cost per hour? Probably more than price of this package. Could they build this stuff in 1 hour? Well, I doubt it, because it took me 2 dev years and additional few of learning GUI internals..:)
     
    Last edited: Aug 15, 2012
  12. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    Making an image gallery with Unity3d and eDriven: http://edrivenunity.com/load-images

    This is a tipical Rich Internet Application (RIA) demo. It shows basic concepts of using eDriven.Core/Gui.

    Classes used in this demo:

    - HttpConnector [eDriven.Core]: makes a Flickr query and loads JSON data, which is then deserialized by JsonFx
    - TextureLoader [eDriven.Core]: loads images (both thumbnails and biggies) over HTTP and caches them locally
    - Pager: handles browsing results
    - GlobalLoadingMask: disables the display while the async operation is active
    - PopupManager: opens the big image in a popup window, exists on mouse click or wheel outside

    Also, the demo shows how to play an effect on multiple target (thumbnails) and how to disable autoLayout on a container while effect playing.

    Additionaly, it shows how to create a composite component (Thumbnail).

    Source is available, as always. Please comment!



     
    Last edited: Aug 16, 2012
  13. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    Last edited: Aug 17, 2012
  14. Dreamora

    Dreamora

    Joined:
    Apr 5, 2008
    Posts:
    26,601
    Very cool.
    Its a stunning technology and I would have loved if Unity GUI worked like this, the 'proper C# / .NET way'
     
  15. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    Drag drop demo: http://edrivenunity.com/drag-drop

    This demo introduces core drag and drop concepts. In drag drop there are a few most common operations, such as MOVE and COPY. These operations are being shown in this demo.

    Children of the source container should be dragged and dropped onto the children of the destination container.

    COPY operation is implemented in 4 flavours: copy text, copy color, copy text+color and copy data. With copy data, the data could be observed using Options->Inspector, Options->Details->Tab "Data".

    The class responsible for handling drag drop is DragDropManager.

    Drag drop operations use cursor management to give a feedback. The item being dragged is called a "proxy", and it can be fully customized (not shown in this demo).

     
  16. keithsoulasa

    keithsoulasa

    Joined:
    Feb 15, 2012
    Posts:
    2,126
    Whoa, I didn't say to make it 5$ , but it has to be competitively priced .

    NGUI's the top Asset on the Asset store and its only 95$, its also a very good GUI system, plus its made insane amounts of cash during sales .

    I'm going to be blunt here, most people, me included( i paid 95$ for NGUI) will look for a GUI asset and see NGUI for 95$, and your tool for 250$, the vast majority of people will just go with NGUI, of course the author for NGUI is making far more money since his asset is one of the top sellers . Plus he offers a free demo for everyone to try and even start building their applications before deciding to upgrade- i used the free version for a few months before deciding I just needed this . Most of the folks using Unity aren't professonals , we're hobbyist - I can justify spending 100$ or so on a GUI system for my Hobby .

    I understand how good your tool is, but I'll put it this way, if you were to put your Asset in the next Asset store sale and it only cost say 90$( just to undercut 90$) you would probably get hundreds of sales , once this happens even if you raised the price back to 250$ it would be a top asset and more people would be able to find it .

    Just my opinions, I don't mean to offend, but I'm sure the NGUI author has made plenty of money selling a GUI system for 95$ .
     
  17. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    keithsoulasa, thanks for suggestions!

    I'm aware of all the points mentioned here, but you must know that this system has a very narrow audience from the start. It is not for a massive-sale product, and is meant for those 0.1% percent of Unity users who are really demanding on GUI and understand the OOP, callback and event-driven programming.

    Since I really tend to develop it further - bringing a new components, even (hopefully) wrapping up the next (yet unknown) Unity 4 GUI instead of the immediate one - I have to think about covering my expenses.

    Also, this is the only priced item in the system: core is free and all the tools are free.

    I still didn't have time to show all of its superpowers, but if you take the top 10 features you'll see what it brings to the table.

    Thanks again!
     
    Last edited: Aug 17, 2012
  18. keithsoulasa

    keithsoulasa

    Joined:
    Feb 15, 2012
    Posts:
    2,126
    If you want to make a higher profit you should try to make it easier to use/ mass market .
    As a consumer when I buy an asset I run the risk it might not be something I ultimately make use of . Playmaker is an example of this, it works fine , but I never use it . At 50$( it was on sale) , it was ok . Your asking for 250$ for something i'm not sure I have the skill to use , or I might go with a different solution .

    Your free to charge how much you want for your product , but you'd have a much easier time charging 100$ for this, and getting 20 people to buy it, then charging 250$ for it and getting 5 people to buy it. Plus, more people would be willing to buy it after seeing a few positive reviews on the Asset store . Right now you have none, so someone like me doesn't really want to be that guy who takes the first leap and finds out if it works or not .

    Good luck, maybe you could make a cheaper basic version , like how IGUI works where you can buy basic for 100 , and for like 200 buy pro.
     
  19. Dreamora

    Dreamora

    Joined:
    Apr 5, 2008
    Posts:
    26,601
    It works great :)

    And its well worth its price.

    If you want to find out how it works, you can for example download eDriven.Core with the event based downloading of data and images, timers and various other things.
    The UI works the same way and if you ever worked with the real C# and Windows.Forms and its paradigm, then you know how eDriven.GUI works basically.

    If you bought playmaker and igui I would assume that it wouldn't fit you the slightest bit as it is a 100% programmer solution for real applications, its no game gui per se (you can naturally use it for it, but thats only a fraction of what it can do)

    I also see it as kind of insult to say that iGUI at $100 is fair but this not, cause with this here being $250, iGUI to be adequate would need to cost around $40 just to give you an idea on the scale of features, capabilities and power we talk here.


    But I guess thats my personal view as a professional who is sick of toy solutions like NGUI and EZGUI that try to appeal to designers yet are jokes (at best, at worst they are nightmares) for programmers cause they do not even comply to .NET 1.0 best practices on UI and framework design, despite them being over a decade old in their roots. the fact that NData / EZData / iData exists proofs that just too well out of my view, they add fundamental features to UI solutions that are not sold at 'low cost' in any way
     
    Last edited: Aug 18, 2012
  20. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    keithsoulasa, just want to check a few things:

    - have you noticed that I gave a part of my framework for free, not for half price? (and that's a very important and usable part of the framework)
    - have you seen packages on the asset store, costing much more than my framework, but not listed under the Scripting->GUI?
    - are you aware that Unity takes from me 30% of my sales? ;)

    I'll tell you what we're gonna do:

    Please notify me the moment you find out when the next sale is, and I'll apply. As you said, this gives me the opportunity to get back to my old price after the sale.

    IF it will be a madness as you think - I will definitely lower the original price. And I would then owe you a beer, of course! :)
     
  21. DavidB

    DavidB

    Joined:
    Dec 13, 2009
    Posts:
    530
    I'm behind on browsing new assets apparently... this framework looks absolutely incredible. Wonderful job. I don't have any serious GUI projects on the go, but if I ever need some serious punch, I'll definitely check this out.
     
  22. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    Thank you Dave...

    Yes, this stuff looks somehow extraterrestrial to game developers because it comes from the GUI programming techniques/languages such as Javascript and Actionscript3. But if one has been just a step in this direction, then he or she knows what the GUI, event-driven and async programming is for, and how it should be done.

    After all - the SW stuff we are interacting today is event driven... I only realized that it works with game programming and that it makes your code more structured and less spaghetti.

    If you wish, be kind and retweet.
     
  23. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    I added a few new features to "Image gallery" demo... it seems this demo is becoming a showcase for multiple eDriven features :)

    http://edrivenunity.com/load-images

    Direct link (no preloader)
    Source

    There's an example of composite component (OptionsPopup). Additionaly, I raised this popup as non-modal, and placed it right below the button, which is the popup-control example.

    I'm uploading the new version to the asset store soon: both Gui and Core.

    Cheers! ^_^

     
  24. keithsoulasa

    keithsoulasa

    Joined:
    Feb 15, 2012
    Posts:
    2,126
    Don't get me wrong , your framework looks fantastic . And i'm sure it does things far beyond my skills as a coder . Like I was just wowed by the Flicker photo search , I only have a basic understanding of what Json is , and the fact that you've integrated in so well into Unity is nice . But the problem is you have to find people who want to build .net applications or generalist applications from within Unity . Something like Visual Studio is much more suited for this task . Although with Unity Linux support coming soon you might have a market opening , as I could build a app in Unity , and then port it to Linux and Mac Osx very easily . From what i've heard from other asset authors you just need to email the asset store and ask them to let you in the next sale .

    If you get into the sale then its on you to push your asset and get the word out .

    I have a feeling that your target market is far from the average game dev , so your going to have some challenges in marketing this, but good luck !
     
  25. handsomePATT

    handsomePATT

    Joined:
    Nov 30, 2010
    Posts:
    574
    Is this built on Unitys native GUI?
     
  26. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    Yap, some parts are (scrollable areas) but other are even more low-level GUStyle.Draw().
     
    Last edited: Aug 20, 2012
  27. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    Last edited: Aug 20, 2012
  28. oddgoo

    oddgoo

    Joined:
    Nov 22, 2011
    Posts:
    12
    Very intersted in the tool!

    Quick question for my current project, how straight forward would it be to implement masks like this?



    Tho rectangle clipping is all I would need.

    Thanks!
     
  29. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    Rectangle or circle?

    You can do rounded masking by multiplying a semi-transparent image alpha values with your image, pixel by pixel. I have experimented with this, but is very slow with Unity. Although, it's OK with a smaller images.

    If you need a rectangle 'masking', it can be done with my framework using the image inside the container. Depending of the container size and child image's offset, you get clipping.

    I used this effect with combobox: the list control (which is a part of the combobox, but not a child in an exact sence, since it is being poped-up to popup stage) is being masked with a parent container which is being animated in sync with the list going up or down. So, you get the clipping effect. You can pick any combobox on edrivenunity.com demo site and test this with Inspector ON.
     
  30. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    Thank you for considering this framework.

    Yes, it's pretty different philosophy than "classic" Unity thing, but I wouldn't rigorous about other GUI framework authors - it's really a great stuff and can beat this framework in many things.

    This framework is just the result of my async background: I really missed that from the first time I turned Unity on. If I came from another background, the framework would be - I guess - very much different.

    However, I'm proud of the fact that I finished it (didn't give up half a way through) and delivered. It was not easy: since I actually have a daytime job, I had no free weekends or holidays for a long time.
     
  31. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    I got another question:
    Didn't quite understand which part do you mean:

    1) Calling LoadLevel()? You use Unity functions from within any of eDriven-ish callbacks, event handlers or anything as it is in fact all being run inside Update() or OnGUI() methods. Just load a new level by calling Unity's LoadLevel().

    2) SystemManager (singleton) is the core of the system. It is the "master clock" which emits signals, so you could Connect() to LevelLoadedSignal if wanting to react on level change.

    SystemManager stays alive between scenes, so if you want to dispose it, you should call SystemManager.Instance.Dispose(). All the stuff that needs to be disposed has to be connected (directly or indirectly) to DisposingSignal (naturally - because this is the event-driven environment and we have to clean-up after using).

    If you find any bugs in eDriven.Core, feel free to fork it: if it solves the problem, your solution will be included in the build.
     
    Last edited: Aug 22, 2012
  32. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    For now, just dispose the system manager before loading a new scene:

    Code (csharp):
    1. btnTest.Click += delegate
    2. {
    3.     SystemManager.Instance.Dispose(); // this line added
    4.     Application.LoadLevelAdditive(1);
    5. };
    Example Gui script is in the attach [don't forget to attach the second scene in the project! ;) ]

    As I said, the event-driven paradigm is all about connecting (the "cables"), and disconnecting them when no more needed. eDriven.Gui is indirectly connected to DisposingSignal signal of system manager, so it does its own cleanup. Note: when connecting your own stuff to system manager, you should subscribe to DisposingSignal by yourself (use one time signal for auto-disconnect) and handle this by yourself.

    After I added the Dispose() line, the additive version works (of course, there is a merging of 2 scenes, with 2 cameras, so you get the "audio listener" warning, but in general, it works fine).

    The non-additive one is complaining about the font mapper: I have to admit that didn't test scene change after implemented font mappers. These are basically MonoBehaviours, so suspecting this is some kind of timing problem. FontMappers are looked upon during the stage creation process (CreateChildren method), so I guess no font mappers exist at that particular moment in time, but the moment later they do. I have to meditate on this... till tomorrow...
     

    Attached Files:

    Last edited: Aug 22, 2012
  33. ronan-thibaudau

    ronan-thibaudau

    Joined:
    Jun 29, 2012
    Posts:
    1,722
    Demos aren't working for me at all on IE9 (windows 7), neither in normal nor compatbility mode, clicking on any demo startes the "launching X%" thingy, but at 100% nothing happens.
    Works just fine in firefox.
    Could you publish your demo as a stand alone exe so it's testable outside of web browser issues?
    Are you planning to make this a full fledged application style GUI for cross platform applications? (that is, not just the basic frameowork and a few widgets, but the full business controls suits, advanced nested grids, 3D charts etc etc)?
     
  34. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    - I just found out that I have a same problem with IE9 (as you described). This must be the LoadUnityWeb bug, since I'm using that :roll:
    - weird: I thought I had an Javascript error (because of the hotlinking just before the demo is loaded), so I turned on the script debugger, but suddenly it all started working with IE9. This is like quantum physics :) you shouldn't watch or you get the different results! ;)

    - yes, you can directly access demos without the preloader app, by adding "unity" and replacing "-" by "_", like in: http://edrivenunity.com/unity/load_images/
    - btw you can see what the preloader is loading by sniffing with Firebug ;)

    - I could publish an EXE tomorrow evening, ok?

    - 3D charts are OF COURSE being planned because of the nature of Unity :)

    - and YESSSS, I'd like to have a growing library of controls, the nesting and composition is of course the standard for this type of thing.

    - counting on community (of course). This is my vision: the community builds eDriven-based components and sells them on the Asset Store. Just like Javascript components built on top of the Javascript framework.

    - planning to release more demos that would make very easy to learn how to nest stuff... datagrid exists, but didn't include them inside this package because I'm still not satisfied with it.. planing to publish grids as additional (low budget component)... but definitelly inside another DLL..
     
  35. agentleo

    agentleo

    Joined:
    Jan 2, 2011
    Posts:
    56
    If I was not currently looking to go acs 3 route and evaluating the scaleform plugin this is something I would consider buying.
     
    Last edited: Aug 23, 2012
  36. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    As I remember my Flash Professional days, SF is more like timeline animating, while eDriven.Gui relates to Flex. Both tools are OK but don't cover exactly the same topics.

    Refarding Actionscript3: eDriven has AS3 syntax, and if you missed the EventDispatcher, now you have it.
     
  37. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    Code (csharp):
    1. protected override void OnInitialize()
    2. {
    3.     base.OnInitialize();
    4.     KeyboardMapper.Instance.Map(
    5.         new KeyCombination(KeyboardEvent.KEY_DOWN, KeyCode.Escape, false, false, false), // "false" for shift, ctrl or alt
    6.         delegate
    7.         {
    8.             Alert.Show("Question", "Do you want to exit?", AlertButtonFlag.Yes | AlertButtonFlag.No);
    9.         }
    10.     );
    11. }
    button.FocusEnabled = true; // doc

    // doc

    TabNavigator. Use the NavigatorDescriptor property of each child for tab labels.
     
    Last edited: Aug 23, 2012
  38. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
  39. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    Skin it via CheckBoxStyleMapper.

    checkbox.Change += delegate { foo() };

    Slider:

    MinValue, MaxValue, slider.Change += delegate { foo() };
     
  40. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    Use Dialog class.
    Use ContentX methods for content: AddContentChild, ContentChildren etc.
    Use Children methods for actual children (header stuff also): AddChild, Children etc.
     
  41. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    Style the button via ButtonStyleMapper. Use background image or make padding 0 and use the Image property of a button (use Texture).

    No.
     
  42. ronan-thibaudau

    ronan-thibaudau

    Joined:
    Jun 29, 2012
    Posts:
    1,722
    Eskimojoe, could you try to "collapse" your posts into one,
    As someone who's following this thread (and receiving emails on a per post basis) you're making it pretty hard on me, it seems you have a ton of very specific quick questions as they pop up in your mind, i think setting up a quick skype chat with the OP would be a better experience for you and would leave the thread cleaner.
     
  43. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    I created a thread for Q&A: http://forum.unity3d.com/threads/148424-eDriven-Q-amp-A just because of this. Thanks ;)

    PS. I'll try to replay to all the "technical" questions, but only the evening time is reserved for that (CET)... Thanks for understanding!
     
    Last edited: Aug 23, 2012
  44. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    Ronan, I created a PC Standalone demo (Windows 64bit) for LoadImages. You can download it from here.

    Be sure not to run it in "Fastest" mode.

    Cheers!
     
    Last edited: Aug 24, 2012
  45. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
  46. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    Just found eDriven.Gui sitting on the 4th place of the Scripting->GUI->Top Grossing list.

    :)

     
  47. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    Hi eskimo, long time no see :)

    Unfortunately, I didn't implement this in combo box internally (but definitely would in future versions). Anyway, since the combo box list is nothing but a popup, you could subscribe to popup manager:

    Code (csharp):
    1. PopupManager.Instance.Closing += YourHandler;
    By the way, PopupManager dispatches the folowing events:

    Code (csharp):
    1. public const string OPENING = "opening";
    2. public const string OPEN = "open";
    3. public const string CLOSING = "closing";
    4. public const string CLOSE = "close";
    5. public const string CLOSE_ALL = "closeAll";
    When closing the popup, the event is being dispatched, firstly as CLOSING, and then as the CLOSE event.
    If you subscribe to Opening or Closing, and cancel the event, the popup won't open or close (and OPEN or CLOSE events won't run).

    (the Target of this event is a wrapper around list which is of Container type)

    Internal PopupManager code:

    Code (csharp):
    1. if (HasEventListener(CLOSING))
    2. {
    3.       Event e = new Event(CLOSING, popup, false, true); // cancelable
    4.       DispatchEvent(e);
    5.  
    6.       if (e.Canceled)
    7.             return;
    8. }
    9.  
    10. // ... closing popup here...
    11.  
    12. if (HasEventListener(CLOSE))
    13.       DispatchEvent(new Event(CLOSE, popup));
    Additionally, you could subscribe to IndexChangeEvent.SELECTED_INDEX_CHANGED event:

    Code (csharp):
    1. _combo.AddEventListener(IndexChangeEvent.SELECTED_INDEX_CHANGED, YourHandler);
    You get IndexChangeEvent with property Index containing the selected index.

    Oh, you found that bug. :) Yes, seems that the default one overrides all other (named) sliders.
    Yes, I have to look into it (starting from Unity itself because skinning of a slider works just like all the other controls, so..).

    Until now, just change the default slider skin: I guess the SliderStyleMapper inside the GuiInspector gameobject has Default checked. Uncheck it for now, e.g. check the one referencing your skin.

    Similary to Alert (which you have to additionally chase using the PopupManager), you could manipulate the HeaderGroup of Panel or Dialog as soon is has been constructed (unlike the "classic" children, for this group you don't have to wait for the validation pass to be created).

    The group has an absolute layout by default, containing 2 elements: TitleLabel and Tools. Here's the internal Panel constructor code to see the defaults:

    Code (csharp):
    1. TitleLabel = new Label {MouseEnabled = false, VerticalCenter = 0};
    2.            
    3. Tools = new Container
    4.          {
    5.              Layout = new BoxLayout
    6.                           {
    7.                               Direction = LayoutDirection.Horizontal,
    8.                               HorizontalAlign = eDriven.Gui.Layout.HorizontalAlign.Right,
    9.                               VerticalAlign = eDriven.Gui.Layout.VerticalAlign.Middle,
    10.                               HorizontalSpacing = 2
    11.                           },
    12.              Right = 4,
    13.              VerticalCenter = 0,
    14.              MouseEnabled = false
    15.          };
    So, you could completely change the positioning of TitleLabel or Tools here. Here's the example of centering the label:

    Code (csharp):
    1. TitleLabel.HorizontalCenter = 0;
    Additionally, you could add or remove stuff from Tools, you could even put anything you want inside the HeaderGroup. The same applies to a ContentGroup (for both Panel and Dialog) and ButtonGroup (for Dialog). If you extend Panel or Dialog, do this modifications in CreateChildren method.

    PS I would really like to see how you use the framework (at least some screenshots :)). If you have any demo, I could post it to my demo site with you as an author. :)

    Cheers!
     
  48. CaptainExtra300

    CaptainExtra300

    Joined:
    Jul 14, 2012
    Posts:
    130
    quite expensive for a gui tool
    plus complicated to use

    unity really needs to release their gui editor soon.
     
  49. IcyPeak

    IcyPeak

    Joined:
    Dec 1, 2009
    Posts:
    377
    It's really not too expensive for a commercial tool. It's very much meant for non-hobbyist use. Regardless, I think this isn't really the right place to talk about pricing: I'd say take it up with a PM or email to the developer, rather than filling this thread.
     
  50. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    Nono, this si perfectly normal because my TextField wraps both the immediate-mode TextField and TextArea. And also the PasswordField.