Difference between revisions of "Game chat box"
From CEGUI Wiki - Crazy Eddie's GUI System (Open Source)
Line 54: | Line 54: | ||
mListBox->removeChildWindow("/Chat/Wnd/Edit"); | mListBox->removeChildWindow("/Chat/Wnd/Edit"); | ||
mListBox->getParent()->addChildWindow("/Chat/Wnd/Edit"); | mListBox->getParent()->addChildWindow("/Chat/Wnd/Edit"); | ||
+ | </pre> | ||
+ | |||
+ | <pre> | ||
+ | bool ChatWidget::EditTextAccepted(const CEGUI::EventArgs& args) | ||
+ | { | ||
+ | //add text to list | ||
+ | CEGUI::ListboxTextItem* item = new CEGUI::ListboxTextItem(mEditBox->getText()); | ||
+ | mListBox->addItem ( item ); | ||
+ | mListBox->ensureItemIsVisible(mListBox->getItemCount()); | ||
+ | //remove old text | ||
+ | mEditBox->setText(""); | ||
+ | |||
+ | return true; | ||
+ | } | ||
</pre> | </pre> |
Revision as of 03:06, 5 July 2005
**4/7/05 - This is still work in progress**
Chat input at bottom = Editbox Chat history at top = Listbox
chat.layout
<?xml version="1.0" ?> <GUILayout> <Window Type="TaharezLook/FrameWindow" Name="/Chat"> <Property Name="Position" Value="x:0.0 y:0.0" /> <Property Name="Size" Value="w:0.25 h:0.25" /> <Property Name="Alpha" Value="0.6" /> <Window Type="DefaultWindow" Name="/Chat/Wnd"> <Property Name="InheritsAlpha" Value="True" /> <Property Name="Position" Value="x:0.0 y:0.00" /> <Property Name="Size" Value="w:1 h:1" /> <Window Type="TaharezLook/Listbox" Name="/Chat/Wnd/List"> <Property Name="Position" Value="x:0.0 y:0.1" /> <Property Name="Size" Value="w:1 h:0.77" /> <Property Name="InheritsAlpha" Value="True" /> <Property Name="ReadOnly" value = "True" /> /Window> <Window Type="TaharezLook/Editbox" Name="/Chat/Wnd/Edit" > <Property Name="Position" Value="x:0.01 y:0.87" /> <Property Name="Size" Value="w:0.98 h:0.12" /> <Property Name="InheritsAlpha" Value="True" /> /Window> </Window> </Window> </GUILayout>
#define Helper
#define BIND_CEGUI_EVENT(window, event, method) window->subscribeEvent (event, CEGUI::Event::Subscriber(&method, this));
Initialise()
mMainWindow = CEGUI::WindowManager::getSingleton().loadWindowLayout("chat.layout"); if (mMainWindow) getMainSheet()->addChildWindow(mMainWindow); CEGUI::Window* pEditBoxWnd = CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*) "/Chat/Wnd/Edit"); BIND_CEGUI_EVENT(pEditBoxWnd, CEGUI::Editbox::EventTextAccepted, ChatWidget::EditTextAccepted) mEditBox = static_cast<CEGUI::Editbox*> (CEGUI::WindowManager::getSingleton() .getWindow("/Chat/Wnd/Edit")); mListBox = static_cast<CEGUI::Listbox*> (CEGUI::WindowManager::getSingleton() .getWindow("/Chat/Wnd/List")); mListBox->removeChildWindow("/Chat/Wnd/Edit"); mListBox->getParent()->addChildWindow("/Chat/Wnd/Edit");
bool ChatWidget::EditTextAccepted(const CEGUI::EventArgs& args) { //add text to list CEGUI::ListboxTextItem* item = new CEGUI::ListboxTextItem(mEditBox->getText()); mListBox->addItem ( item ); mListBox->ensureItemIsVisible(mListBox->getItemCount()); //remove old text mEditBox->setText(""); return true; }