XBMC's Graphical User Interface
#1
Smile 
Hello there XBMC Community!

This may seem a little out there, but would anyone know how or what the XBMC GUI is built on? More specifically, what is used to get from the command line to the XBMC GUI?

The reason I'm asking is because I've been starting to tinker with linux and I'm trying to make a custom GUI for kiosk-type of system. I am a total newbie when it comes to linux and programming in C, but I'm learning a lot! I'm looking at the source code right now, but I don't feel like I understand most of it... hehe.. Blush

I like the XBMC GUI a lot and am wonder what I should take a look at to recreate something similar.

Any help would be greatly appreciated.
Reply
#2
You have about 10 years of learning c/c++ to go though Smile
Reply
#3
Rolleyes I know the road ahead is not easy, but everyone has to start somewhere... I don't really see how anyone would take 10 years to learn c/c++... Once I learn the basics, it'll just be a matter of thinking through the problems.

Any other guidance would be helpful. Thanks!Laugh
Reply
#4
Well, it takes about 10 minutes to learn C++. The other 9 years, 11 months, 30 days, 23 hours and 50 minutes are needed to learn the libraries you need to make C++ do anything useful :-)

Assuming you have some form of debugger set a breakpoint in CApplication::Create at the call to g_Windowing.InitWindowSystem() and trace it from there. You will quickly get an idea of how XBMC implements it's GUI. In Windows it's easy of course, but then I wrote my first call to CreateWindow() rather more than ten years ago - actually it was more than twenty years ago!

JR
Reply
#5
Thanks jhsrennie(JR)! This sounds like a great start for me! I actually don't have any type of debugger at the moment for C++ at the moment, but it's nothing a quick Googling can't solve.

Hopefully everything will work out.
Thanks a bunch! Wink
You'll be hearing from me again, if I get stuck... but hopefully that won't happen too often. hehe.. :o
Reply
#6
That's a big byte to chew, attempting to create a new skin and learn C++. GOODLUCK you will need it, you have a great attitude buts its also cocky which leads me to this quick question. Given that you user ID is GEEKSQUAD and your interest is in creating a kiosk type skin My guess is to display in a business....DO you work for Best Buy/GeekSquad?

It's none of my business, but from the sound of it you may. One more reason to stay out of BEST BUY for me.

Thanks and Good Luck oh btw you forgot to mention if you have any programming experience in other languages, if so it may become easier for you to pick up C++. Big Grin
Reply
#7
Don't let anyone dissuade you from learning, but yeah, the GUI interface is one of the tougher things to start with. It's a complex beast made more complex because of it's platform-independant nature, meaning much that an OS would normally handle for you is handled by XBMC. All the nice API that, say, Windows gives you to create and manipulate dialog boxes etc has to be replicated within the XBMC code - no help from the OS.
System: XBMC HTPC with HDMI WASAPI & AudioEngine - Denon  AVR-3808CI  - Denon DVD-5900 Universal Player  - Denon DCM-27 CD-Changer
- Sony BDP-S580 Blu-Ray  - X-Box 360  - Android tablet wireless remote - 7.1 Streem/Axiom/Velodyne Surround System
If I have been able to help feel free to add to my reputation +/- below - thanks!
Reply
#8
Threads like this give me an even greater appreciation for the devs. Thanks, y'all!
Reply
#9
@XBMC_FREAK - Lol. I do not work at BestBuy/Geeksquad. My username is inspired by the good ol' days when Geeksquad didn't have such a bad reputation. (Geeksquad's services isn't all that bad... depending on your area... just expensive... Rolleyes) What's so bad about Geeksquad/Best Buy anyways? They are made to seem so much worst than they actually are.

As far as past programming experience, it isn't much. I started off with Visual Basic. Then moved onto Alice, Python, and Java. Recently started dabbling in PHP, BASH scripting, and of course C++. No where near an expert by any means.

------------
@DDDamian - Thanks for your warm encouragement! I understand GUI related things are usually more difficult to understand, but I am optimistic. I know I can learn it--one way or another. One of the main reasons I turned to look at XBMC is because it is platform-independent, which is quite a major achievement. Understanding how it works will be a true eyeopener for me. I am looking forward to learn more and more about it. I'm sure that there will be things I don't understand about it, but hopefully my trusty googling skills can help me with that.

------------
@theophile - I agree. You smart developers out there are awesome! Hope I can be like them some day... lol(though that probably won't happen for QUITE some time).
Reply
#10
The basis of the GUI stuff is essentially a base class CGUIControl that's overridden into all the different controls you see (CGUIButtonControl, CGUISpinControl etc.). The next most important one is the grouping control (CGUIControlGroup and CGUIControlGroupList) that is basically a container for other controls - all child controls that it contains are offset from it's current position and so on. The next layer is CGUIWindow (which derives from a CGUIControlGroup) etc.

Messages are handled by passing to the window then down through the controlgroups/controls as necessary.

Messages from a control can then go up through it's parents to the window (or app) as required.

That's the basic structure of all UI's.

Have fun!

Cheers,
Jonathan
Always read the XBMC online-manual, FAQ and search the forum before posting.
Do not e-mail XBMC-Team members directly asking for support. Read/follow the forum rules.
For troubleshooting and bug reporting please make sure you read this first.


Image
Reply
#11
The 9 years, 11 months, 30 days, 23 hours and 50 minutes are to unlearn the bad mistakes in what was learned in 10 minutes. Smile
Reply
#12
if you want a general introduction in how to make a GUI, this link might be interesting: http://openglgui.sourceforge.net/tutorials.html

you might also want to read all of it, not just the "OpenGL GUI Series" part, because you get explanations on how to handle animations, load xml files (XBMC skins are xml files)
Reply
#13
GEEKSQUAD

First off my opinion is my two cents no one has to agree nor disagree

IMO Your user ID screamed affiliation or desire to become part of that organization. That would normally imply that you are very willing to accept both positive or negative associations toward that company.

I personally know a higher level employee for GS; we have had multiple conversations informing me of their practices within GS and BB as well as the horror stories. I hear a lot more horror stories than actual good things, I am not the only person here or anywhere that hasn't had a bad experience with BB.

I asked all the questions since joining I have read so many posts regarding the same ole topics usually from users with a couple of posts. IMO it seems as though no time is taken in searching of a subject versus just creating a post about it. Since most do not post anything about themselves and jump into posting, How would you expect someone to respond to you, without knowing an ounce about you, capabilities, and talent.

Great to know now a lil about you now, I appreciate the resume'.
Regardless learning C++ and coding a skin will be an large undertaking for anyone just to jump into, admit it or not and it was not mean to dis-encourage anyone from doing or attempting lets be real here.
Reply

Logout Mark Read Team Forum Stats Members Help
XBMC's Graphical User Interface0