4,382 bytes added
, 07:25, 26 June 2009
== Foreward ==
LibwiiGui is written in C++ and uses classes. Classes are a collection of functions and variables related to a single thing. When using these classes, their collected functions and variables (if they are declared public) can be accessed by a dot (.) in some cases, and an arrow (->) in other cases. This will become more understandable later on in the tutorial, but for now, know that when the class instance is created with an asterisk (*) before it, you will be using the arrow (->). When the class is created without the asterisk, you will use the dot (.).
This tutorial uses the same design as the demo included with libwiigui. Every menu is created inside a function. The GUI updating routine is created as a function, and is in a thread. When wanting to change to a knew menu, you set the menu variable to a value that denotes the menu you wish to change to. Again, this will become more apparent later on.
Lastly, before attempting to read this tutorial (or try to use libwiigui for that matter) you should already have at least a basic understanding of C++, if not more. You can easily find some online tutorials ([http://www.cprogramming.com cprogramming.com], [http://www.cplusplus.com cplusplus.com]) or a book from your local library.
== Setting Up ==
You first must have devkitPro. DevkitPro is what allows programmer's to compile their programs for other systems, such as the Wii, PSP, and DS. This should be pretty straight-foreward for Windows users. Just [http://www.devkitpro.org/downloads/ download] the latest Windows installer, and go through the installer. When asked what to install, you must install devkitPPC. That allows you to compile for the PowerPC architecture, which the Wii uses. You also will need libOGC, which is the library that lets you program for the Wii. Windows users may skip to the horizontal line below.
Linux and Mac users will need to [http://sourceforge.net/project/showfiles.php?group_id=114505 download] devkitPPC and libOGC. Select the appropriate version to download, and put them both in a directory (I would suggest making a devkitpro directory in your home folder and putting both in this folder). In Linux, you will want to edit your bash configuration file to define the DEVKITPRO and DEVKITPPC variables. The following code should do the trick for most linux users:
<source lang = "text">
sudo gedit /usr/bash.bashrc
</source>
Then input your password, and add the following to the top of the file:
<source lang = "text">
export DEVKITPPC="<path to devkitpro directory>"
eport DEVKITPPC="<path to devkitPPC directory>"
</source>
You also may want to [http://sourceforge.net/project/showfiles.php?group_id=114505 download] the examples from devkitpro. Put these in your devkitpro directory in a folder named examples.
----
If you haven't already done so, [http://code.google.com/p/libwiigui/downloads/list download] libwiigui. You can extract this anywhere, as this is where your source will be for your entire project. You also will need to [http://code.google.com/p/libwiigui/downloads/list download] the required devkitpro libraries. Extract these to your libogc folder (should be devkitPro/libogc) overwriting any existing files.
== Class Creation ==
There are two ways a class instance can be created. LibwiiGui uses both methods. When you want a class to be able to be accessed by any other function, you will want to create it with an asterisk, which declares a pointer to your class. You will want to use this for your main GuiWindow, which should contain the background, and every other window (these other windows will be your menus). You also will want to initially set it to NULL for safety's sake.
<source lang = "c++" >
GuiWindow * mainWindow = NULL;
</source>
These declarations should be at the top of the file, underneath the includes. Then, when using it, you will use ->
<source lang = "c++">
mainWindow->Append(image);
</source>
If you have a class that is only relavent to the function you are in (e.g. a menu) you will want to declare the instance inside the function:
<source lang = "c++">
int menu_function(){
GuiWindow menuwindow;
GuiImage menuimage;
}
</source>
and then use the dot:
<source lang = "c++">
int menu_function(){
GuiWindow menuwindow;
GuiImage menuimage;
menuwindow.Append(&menuimage);
}
</source>
== Your First Image ==