Author Topic: How do I add features into the menu?  (Read 2685 times)

momomo

  • Making baby steps
  • Posts: 2
    • View Profile
How do I add features into the menu?
« on: September 29, 2009, 01:22:44 am »
I would like to add certain features into the linuxMCE interface (for example MSN messenger that's integrated or facebook feed...), how do I change the interface within the code and add my own package [p.s. does it have to be in c++?]

pigdog

  • NEEDS to work for LinuxMCE
  • ***
  • Posts: 1105
    • View Profile
Re: How do I add features into the menu?
« Reply #1 on: September 29, 2009, 03:28:17 am »
Hi,

If you are talking about web bookmarks...

http://forum.linuxmce.org/index.php?topic=8865.0

and this would help ...

http://wiki.linuxmce.org/index.php/Source_Code
« Last Edit: September 29, 2009, 03:32:12 am by pigdog »

tschak909

  • LinuxMCE God
  • ****
  • Posts: 5549
  • DOES work for LinuxMCE.
    • View Profile
Re: How do I add features into the menu?
« Reply #2 on: September 29, 2009, 05:13:29 am »
Hello, and thanks for your interest.

I am giving you a set of search terms for the wiki for which you can start your research on how to extend LinuxMCE.

LinuxMCE is a highly modular system built around a message bus, and thus takes a radically different approach to design than most other "media centers."

Everything is built around the concept of a DCE device. DCE devices send commands, and recieve events. All DCE devices connect to the DCE Router, and use it to pass messages between end devices. This is literally ALL of the interaction within LinuxMCE.

Some DCE devices run within DCE Router's memory space, and can thus pass pointers to other plugins also running within DCE Router's memory space, these are plug-ins, and are used to implement house-wide logic. Examples of these include the Media Plug-In (and its subclasses such as Xine PlugIn), Lighting PlugIn, etc.

The DCE devices are arranged within a tree, and the tree is used to determine the relationship of devices to one another, so that intelligent decisions can be made as to where and how to send messages.

Now, if you dig a bit, you'll find my notes on a design for implementing Instant Messaging properly into LinuxMCE, and you'll see that it's split into two sections, the house-wide messaging independent part, which is the plugin, and the message transport specific parts which are standard DCE devices. This was done so that:

(1) any parts that need to be house wide, such as providing the data grids for IM display can be done via the plug-in (it has to be, because it has to get callbacks and pointers into the Datagrid plug-in), and...

(2) it makes it easier to implement more messaging transports, simply by implementing a new DCE device, the plug-in would automatically deal with registering the devices, and the devices would do all the transport specific communication.

The other aspect, is designing the UI for such parts of the system, this is accomplished via Designer, and I have placed Designer screen casts in the Developers Guide (look at section 9.3.1). You'll find that just like everywhere else, the buttons etc, merely send messages to do things. Orbiter in and of itself is just another DCE device, it just happens to display a user interface.

So while creating something for LinuxMCE is a bit different than other systems, what you gain, is functionality that can be re-targeted to many different devices throughout the home, and the UI will stay in sync.

-Thom

And yes, since this is more than a simple interface device, you'll need to do the work in C++.
« Last Edit: September 29, 2009, 05:16:32 am by tschak909 »