From: <Kha...@us...> - 2010-01-28 14:28:26
|
Revision: 5402 http://planeshift.svn.sourceforge.net/planeshift/?rev=5402&view=rev Author: Khakilord Date: 2010-01-28 14:28:20 +0000 (Thu, 28 Jan 2010) Log Message: ----------- Added support for Unicode fallback fonts to support paws Unicode output. Modified Paths: -------------- trunk/src/common/paws/pawsprefmanager.cpp trunk/src/common/paws/pawsprefmanager.h trunk/src/common/paws/pawstextbox.cpp trunk/src/common/paws/pawswidget.cpp trunk/src/common/paws/pawswidget.h Modified: trunk/src/common/paws/pawsprefmanager.cpp =================================================================== --- trunk/src/common/paws/pawsprefmanager.cpp 2010-01-28 12:45:00 UTC (rev 5401) +++ trunk/src/common/paws/pawsprefmanager.cpp 2010-01-28 14:28:20 UTC (rev 5402) @@ -105,6 +105,7 @@ Error2("Could not load font: >%s<", (const char*)defaultFontName ); return false; } + unicodeFont = graphics2D->GetFontServer()->LoadFont("/fonts/ttf/Arial Unicode.ttf", 10 ); int r = node->GetAttributeValueAsInt( "r" ); int g = node->GetAttributeValueAsInt( "g" ); Modified: trunk/src/common/paws/pawsprefmanager.h =================================================================== --- trunk/src/common/paws/pawsprefmanager.h 2010-01-28 12:45:00 UTC (rev 5401) +++ trunk/src/common/paws/pawsprefmanager.h 2010-01-28 14:28:20 UTC (rev 5402) @@ -49,6 +49,7 @@ bool LoadBorderFile( const char* file ); iFont* GetDefaultFont( bool scaled = true ) { return scaled?defaultScaledFont:defaultFont; } + iFont* GetUnicodeFont() { return unicodeFont; } const char* GetDefaultFontName() { return defaultFontName; } int GetDefaultFontColour() { return defaultFontColour; } int GetBorderColour( int index ) { return borderColours[index]; } @@ -61,7 +62,7 @@ csRef<iDocumentSystem> xml; csRef<iGraphics2D> graphics2D; - csRef<iFont> defaultFont, defaultScaledFont; + csRef<iFont> defaultFont, defaultScaledFont, unicodeFont; int defaultFontColour; csString defaultFontName; Modified: trunk/src/common/paws/pawstextbox.cpp =================================================================== --- trunk/src/common/paws/pawstextbox.cpp 2010-01-28 12:45:00 UTC (rev 5401) +++ trunk/src/common/paws/pawstextbox.cpp 2010-01-28 14:28:20 UTC (rev 5402) @@ -520,22 +520,38 @@ if ( topLine < 0 ) topLine = 0; + for ( size_t x = topLine; x < (topLine+maxLines); x++ ) { if ( x < adjusted.GetSize() ) { + csRef<iFont> font = GetFont(); + + // Check all characters can be drawn in this font, if not use default. + // Check for unicode + utf32_char utf32Char[1024]; + int charLen = csUnicodeTransform::UTF8to32(utf32Char, 1023, (const utf8_char*) adjusted[x]->text.GetData(), (size_t)-1); + for(int i = 0; i < charLen; i++) + { + if(utf32Char[i] > 127 && !font->HasGlyph(utf32Char[i])) + { + font = GetUnicodeFont(); + break; + } + } + if(adjusted[x]->segments.IsEmpty()) { // Draw shadow - graphics2D->Write( GetFont(), + graphics2D->Write( font, screenFrame.xmin + 1, screenFrame.ymin + yPos*lineHeight + 1, 0, -1, (const char*)adjusted[x]->text ); // Draw actual text - graphics2D->Write( GetFont(), + graphics2D->Write( font, screenFrame.xmin, screenFrame.ymin + yPos*lineHeight, adjusted[x]->colour, @@ -547,14 +563,14 @@ for(size_t i = 0; i < adjusted[x]->segments.GetSize(); i++) { // Draw shadow - graphics2D->Write( GetFont(), + graphics2D->Write( font, screenFrame.xmin + adjusted[x]->segments[i].x + 1, screenFrame.ymin + yPos*lineHeight + 1, 0, -1, (const char*)adjusted[x]->segments[i].text ); // Draw actual text - graphics2D->Write( GetFont(), + graphics2D->Write( font, screenFrame.xmin + adjusted[x]->segments[i].x, screenFrame.ymin + yPos*lineHeight, adjusted[x]->segments[i].colour, Modified: trunk/src/common/paws/pawswidget.cpp =================================================================== --- trunk/src/common/paws/pawswidget.cpp 2010-01-28 12:45:00 UTC (rev 5401) +++ trunk/src/common/paws/pawswidget.cpp 2010-01-28 14:28:20 UTC (rev 5402) @@ -27,6 +27,7 @@ #include <iutil/evdefs.h> #include <ivideo/fontserv.h> #include <csutil/xmltiny.h> +#include <csutil/csuctransform.h> #include "util/localization.h" @@ -1192,6 +1193,20 @@ csRef<iFont> font = GetFont(); if (style==-1) style = GetFontStyle(); + + bool unicode = false; + + // Check all characters can be drawn in this font, if not use default. + utf32_char utf32Char[1024]; + int charLen = csUnicodeTransform::UTF8to32(utf32Char, 1023, (const utf8_char*) text, (size_t)-1); + for(int i = 0; i < charLen; i++) + { + if(utf32Char[i] > 127 && !font->HasGlyph(utf32Char[i])) + { + font = GetUnicodeFont(); + break; + } + } if (parent && !parent->GetBackground().IsEmpty() && parent->isFadeEnabled() && parent->GetMaxAlpha() != parent->GetMinAlpha()) { @@ -2534,6 +2549,11 @@ return font; } +iFont *pawsWidget::GetUnicodeFont() +{ + return PawsManager::GetSingleton().GetPrefs()->GetUnicodeFont(); +} + int pawsWidget::GetFontColour() { if (defaultFontColour != -1) Modified: trunk/src/common/paws/pawswidget.h =================================================================== --- trunk/src/common/paws/pawswidget.h 2010-01-28 12:45:00 UTC (rev 5401) +++ trunk/src/common/paws/pawswidget.h 2010-01-28 14:28:20 UTC (rev 5402) @@ -1165,6 +1165,11 @@ * or if it doesn't have a parent it returns windowManager DEFAULT_FONT. */ iFont *GetFont( bool scaled = true); + + /** Gets a font used to draw general Unicode characters that the current font + * doesn't have. + */ + iFont *GetUnicodeFont(); /** Gets the current font color. * @return defaultFontColour if it is != -1, if it has a parent This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Kha...@us...> - 2010-01-29 02:06:03
|
Revision: 5411 http://planeshift.svn.sourceforge.net/planeshift/?rev=5411&view=rev Author: Khakilord Date: 2010-01-29 02:05:56 +0000 (Fri, 29 Jan 2010) Log Message: ----------- Reverted r5402 as CS has built in support for font fallbacks when glyphs are missing. Modified Paths: -------------- trunk/src/common/paws/pawsprefmanager.cpp trunk/src/common/paws/pawsprefmanager.h trunk/src/common/paws/pawstextbox.cpp trunk/src/common/paws/pawswidget.cpp trunk/src/common/paws/pawswidget.h Modified: trunk/src/common/paws/pawsprefmanager.cpp =================================================================== --- trunk/src/common/paws/pawsprefmanager.cpp 2010-01-29 00:25:31 UTC (rev 5410) +++ trunk/src/common/paws/pawsprefmanager.cpp 2010-01-29 02:05:56 UTC (rev 5411) @@ -105,7 +105,6 @@ Error2("Could not load font: >%s<", (const char*)defaultFontName ); return false; } - unicodeFont = graphics2D->GetFontServer()->LoadFont("/fonts/ttf/Arial Unicode.ttf", 10 ); int r = node->GetAttributeValueAsInt( "r" ); int g = node->GetAttributeValueAsInt( "g" ); Modified: trunk/src/common/paws/pawsprefmanager.h =================================================================== --- trunk/src/common/paws/pawsprefmanager.h 2010-01-29 00:25:31 UTC (rev 5410) +++ trunk/src/common/paws/pawsprefmanager.h 2010-01-29 02:05:56 UTC (rev 5411) @@ -49,7 +49,6 @@ bool LoadBorderFile( const char* file ); iFont* GetDefaultFont( bool scaled = true ) { return scaled?defaultScaledFont:defaultFont; } - iFont* GetUnicodeFont() { return unicodeFont; } const char* GetDefaultFontName() { return defaultFontName; } int GetDefaultFontColour() { return defaultFontColour; } int GetBorderColour( int index ) { return borderColours[index]; } @@ -62,7 +61,7 @@ csRef<iDocumentSystem> xml; csRef<iGraphics2D> graphics2D; - csRef<iFont> defaultFont, defaultScaledFont, unicodeFont; + csRef<iFont> defaultFont, defaultScaledFont; int defaultFontColour; csString defaultFontName; Modified: trunk/src/common/paws/pawstextbox.cpp =================================================================== --- trunk/src/common/paws/pawstextbox.cpp 2010-01-29 00:25:31 UTC (rev 5410) +++ trunk/src/common/paws/pawstextbox.cpp 2010-01-29 02:05:56 UTC (rev 5411) @@ -520,38 +520,22 @@ if ( topLine < 0 ) topLine = 0; - for ( size_t x = topLine; x < (topLine+maxLines); x++ ) { if ( x < adjusted.GetSize() ) { - csRef<iFont> font = GetFont(); - - // Check all characters can be drawn in this font, if not use default. - // Check for unicode - utf32_char utf32Char[1024]; - int charLen = csUnicodeTransform::UTF8to32(utf32Char, 1023, (const utf8_char*) adjusted[x]->text.GetData(), (size_t)-1); - for(int i = 0; i < charLen; i++) - { - if(utf32Char[i] > 127 && !font->HasGlyph(utf32Char[i])) - { - font = GetUnicodeFont(); - break; - } - } - if(adjusted[x]->segments.IsEmpty()) { // Draw shadow - graphics2D->Write( font, + graphics2D->Write( GetFont(), screenFrame.xmin + 1, screenFrame.ymin + yPos*lineHeight + 1, 0, -1, (const char*)adjusted[x]->text ); // Draw actual text - graphics2D->Write( font, + graphics2D->Write( GetFont(), screenFrame.xmin, screenFrame.ymin + yPos*lineHeight, adjusted[x]->colour, @@ -563,14 +547,14 @@ for(size_t i = 0; i < adjusted[x]->segments.GetSize(); i++) { // Draw shadow - graphics2D->Write( font, + graphics2D->Write( GetFont(), screenFrame.xmin + adjusted[x]->segments[i].x + 1, screenFrame.ymin + yPos*lineHeight + 1, 0, -1, (const char*)adjusted[x]->segments[i].text ); // Draw actual text - graphics2D->Write( font, + graphics2D->Write( GetFont(), screenFrame.xmin + adjusted[x]->segments[i].x, screenFrame.ymin + yPos*lineHeight, adjusted[x]->segments[i].colour, Modified: trunk/src/common/paws/pawswidget.cpp =================================================================== --- trunk/src/common/paws/pawswidget.cpp 2010-01-29 00:25:31 UTC (rev 5410) +++ trunk/src/common/paws/pawswidget.cpp 2010-01-29 02:05:56 UTC (rev 5411) @@ -27,7 +27,6 @@ #include <iutil/evdefs.h> #include <ivideo/fontserv.h> #include <csutil/xmltiny.h> -#include <csutil/csuctransform.h> #include "util/localization.h" @@ -1193,20 +1192,6 @@ csRef<iFont> font = GetFont(); if (style==-1) style = GetFontStyle(); - - bool unicode = false; - - // Check all characters can be drawn in this font, if not use default. - utf32_char utf32Char[1024]; - int charLen = csUnicodeTransform::UTF8to32(utf32Char, 1023, (const utf8_char*) text, (size_t)-1); - for(int i = 0; i < charLen; i++) - { - if(utf32Char[i] > 127 && !font->HasGlyph(utf32Char[i])) - { - font = GetUnicodeFont(); - break; - } - } if (parent && !parent->GetBackground().IsEmpty() && parent->isFadeEnabled() && parent->GetMaxAlpha() != parent->GetMinAlpha()) { @@ -2549,11 +2534,6 @@ return font; } -iFont *pawsWidget::GetUnicodeFont() -{ - return PawsManager::GetSingleton().GetPrefs()->GetUnicodeFont(); -} - int pawsWidget::GetFontColour() { if (defaultFontColour != -1) Modified: trunk/src/common/paws/pawswidget.h =================================================================== --- trunk/src/common/paws/pawswidget.h 2010-01-29 00:25:31 UTC (rev 5410) +++ trunk/src/common/paws/pawswidget.h 2010-01-29 02:05:56 UTC (rev 5411) @@ -1165,11 +1165,6 @@ * or if it doesn't have a parent it returns windowManager DEFAULT_FONT. */ iFont *GetFont( bool scaled = true); - - /** Gets a font used to draw general Unicode characters that the current font - * doesn't have. - */ - iFont *GetUnicodeFont(); /** Gets the current font color. * @return defaultFontColour if it is != -1, if it has a parent This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Kha...@us...> - 2010-01-29 11:37:36
|
Revision: 5414 http://planeshift.svn.sourceforge.net/planeshift/?rev=5414&view=rev Author: Khakilord Date: 2010-01-29 11:37:29 +0000 (Fri, 29 Jan 2010) Log Message: ----------- Fixed bug pressing up/down in text input boxes. Modified Paths: -------------- trunk/src/common/paws/pawstextbox.cpp trunk/src/common/paws/pawstextwrap.cpp Modified: trunk/src/common/paws/pawstextbox.cpp =================================================================== --- trunk/src/common/paws/pawstextbox.cpp 2010-01-29 02:23:54 UTC (rev 5413) +++ trunk/src/common/paws/pawstextbox.cpp 2010-01-29 11:37:29 UTC (rev 5414) @@ -1205,7 +1205,7 @@ parent->OnChange(this); } - if (key < 128 && !isprint(key)) + if ((key < 128 && !isprint(key)) || CSKEY_IS_SPECIAL(key)) pawsWidget::OnKeyDown( code, key, modifiers ); return true; Modified: trunk/src/common/paws/pawstextwrap.cpp =================================================================== --- trunk/src/common/paws/pawstextwrap.cpp 2010-01-29 02:23:54 UTC (rev 5413) +++ trunk/src/common/paws/pawstextwrap.cpp 2010-01-29 11:37:29 UTC (rev 5414) @@ -209,7 +209,7 @@ topLine = cursorLine; SetupScrollBar(); - if ( key > 128 || isprint(key) ) + if ( !CSKEY_IS_SPECIAL(key) && (key > 128 || isprint(key) )) return true; if (code != CSKEY_ENTER) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Kha...@us...> - 2010-02-14 12:44:57
|
Revision: 5544 http://planeshift.svn.sourceforge.net/planeshift/?rev=5544&view=rev Author: Khakilord Date: 2010-02-14 12:44:50 +0000 (Sun, 14 Feb 2010) Log Message: ----------- Revert of #5532 and applied deprecation tag to styles. Styles are broken should not be used unless absolutely necessary until a better alternative is implemented. Modified Paths: -------------- trunk/src/common/paws/pawsstyles.cpp trunk/src/common/paws/pawsstyles.h Modified: trunk/src/common/paws/pawsstyles.cpp =================================================================== --- trunk/src/common/paws/pawsstyles.cpp 2010-02-14 09:46:24 UTC (rev 5543) +++ trunk/src/common/paws/pawsstyles.cpp 2010-02-14 12:44:50 UTC (rev 5544) @@ -129,6 +129,6 @@ void pawsStyles::ApplyStyle(iDocumentNode * style, iDocumentNode * target) { - CopyXMLNode(style, target, 1); + CopyXMLNode(style, target, 3); } Modified: trunk/src/common/paws/pawsstyles.h =================================================================== --- trunk/src/common/paws/pawsstyles.h 2010-02-14 09:46:24 UTC (rev 5543) +++ trunk/src/common/paws/pawsstyles.h 2010-02-14 12:44:50 UTC (rev 5544) @@ -70,6 +70,7 @@ * It adds all attributes and child nodes to 'target'. If target already * contains some of these attributes/nodes, then they are not overwritten */ + /* CS_DEPRECATED_METHOD_MSG("Styles are deprecated, do not use unless absolutely necessary.") */ void ApplyStyle(const char * style, iDocumentNode * target); void ApplyStyle(iDocumentNode * style, iDocumentNode * target); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-02-19 20:06:07
|
Revision: 5591 http://planeshift.svn.sourceforge.net/planeshift/?rev=5591&view=rev Author: weltall2 Date: 2010-02-19 20:05:55 +0000 (Fri, 19 Feb 2010) Log Message: ----------- patch for the patch by rlydontknow i have no idea what it does so i really rlydontknow anything about this. if it works good if it doesn't well try to argue with someone who doesn't know anything Modified Paths: -------------- trunk/src/common/paws/pawsmanager.h trunk/src/common/paws/pawsyesnobox.cpp Modified: trunk/src/common/paws/pawsmanager.h =================================================================== --- trunk/src/common/paws/pawsmanager.h 2010-02-19 19:25:51 UTC (rev 5590) +++ trunk/src/common/paws/pawsmanager.h 2010-02-19 20:05:55 UTC (rev 5591) @@ -194,6 +194,9 @@ /// Returns true if the current focused widget needs to override all controls bool GetFocusOverridesControls() { return focusOverridesControls; } + + /// Returns modal widget + pawsWidget* GetModalWidget() { return modalWidget; } /** @brief Give this widget focus. * @param widget The widget to focus. Modified: trunk/src/common/paws/pawsyesnobox.cpp =================================================================== --- trunk/src/common/paws/pawsyesnobox.cpp 2010-02-19 19:25:51 UTC (rev 5590) +++ trunk/src/common/paws/pawsyesnobox.cpp 2010-02-19 20:05:55 UTC (rev 5591) @@ -67,7 +67,7 @@ pawsWidget::Hide(); useCustomIDs = false; - if(PawsManager::GetSingleton().GetCurrentFocusedWidget() == this) + if(PawsManager::GetSingleton().GetModalWidget() == this) PawsManager::GetSingleton().SetModalWidget( 0 ); // Reset the ID's back to defaults This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Kha...@us...> - 2010-02-28 20:49:43
|
Revision: 5641 http://planeshift.svn.sourceforge.net/planeshift/?rev=5641&view=rev Author: Khakilord Date: 2010-02-28 20:49:37 +0000 (Sun, 28 Feb 2010) Log Message: ----------- Correction by RlyDontKnow to fix crash caused by r5498. Modified Paths: -------------- trunk/src/common/paws/pawslistbox.cpp trunk/src/common/paws/pawslistbox.h trunk/src/common/paws/pawsselector.cpp Modified: trunk/src/common/paws/pawslistbox.cpp =================================================================== --- trunk/src/common/paws/pawslistbox.cpp 2010-02-28 11:03:28 UTC (rev 5640) +++ trunk/src/common/paws/pawslistbox.cpp 2010-02-28 20:49:37 UTC (rev 5641) @@ -367,6 +367,7 @@ { pawsListBoxRow* zombie = rows[x]; Remove(zombie); + delete zombie; return; } } Modified: trunk/src/common/paws/pawslistbox.h =================================================================== --- trunk/src/common/paws/pawslistbox.h 2010-02-28 11:03:28 UTC (rev 5640) +++ trunk/src/common/paws/pawslistbox.h 2010-02-28 20:49:37 UTC (rev 5641) @@ -180,7 +180,7 @@ /// Remove selected row pawsListBoxRow* RemoveSelected(); - /// Remove based on widget id. Note this does not delete the row. + /// Remove based on widget id. Note this also deletes the row. void Remove( int id ); /// Remove based on row pointer Modified: trunk/src/common/paws/pawsselector.cpp =================================================================== --- trunk/src/common/paws/pawsselector.cpp 2010-02-28 11:03:28 UTC (rev 5640) +++ trunk/src/common/paws/pawsselector.cpp 2010-02-28 20:49:37 UTC (rev 5641) @@ -211,7 +211,7 @@ if (!row) return false; - sourceList->Remove(row->GetID()); + sourceList->Remove(row); destList->AddRow(row); moved = row; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-03-18 18:11:59
|
Revision: 5702 http://planeshift.svn.sourceforge.net/planeshift/?rev=5702&view=rev Author: weltall2 Date: 2010-03-18 18:11:52 +0000 (Thu, 18 Mar 2010) Log Message: ----------- fixed PS#3884 - pawsScrollbar::Setup() is broken! patch by rlydontknow Modified Paths: -------------- trunk/src/common/paws/pawscrollbar.cpp trunk/src/common/paws/pawstextbox.cpp trunk/src/common/paws/pawstextbox.h Modified: trunk/src/common/paws/pawscrollbar.cpp =================================================================== --- trunk/src/common/paws/pawscrollbar.cpp 2010-03-16 07:41:55 UTC (rev 5701) +++ trunk/src/common/paws/pawscrollbar.cpp 2010-03-18 18:11:52 UTC (rev 5702) @@ -168,7 +168,7 @@ // down button settings csRef<iDocumentNode> downNode = node->GetNode("down"); - if (upNode) + if (downNode) { attr = downNode->GetAttribute("grey"); if (attr) Modified: trunk/src/common/paws/pawstextbox.cpp =================================================================== --- trunk/src/common/paws/pawstextbox.cpp 2010-03-16 07:41:55 UTC (rev 5701) +++ trunk/src/common/paws/pawstextbox.cpp 2010-03-18 18:11:52 UTC (rev 5702) @@ -374,6 +374,7 @@ { topLine = 0; maxLines = 0; + scrollBarWidth = 25; CalcLineHeight(); scrollBar = NULL; } @@ -399,54 +400,58 @@ lineHeight -=2; } +pawsScrollBar * pawsMessageTextBox::GetScrollBar() +{ + csArray<pawsWidget*>::Iterator it = children.GetIterator(); + while(it.HasNext()) + { + pawsScrollBar * child = dynamic_cast<pawsScrollBar*>(it.Next()); + if (child) + return child; + } + + return NULL; +} + bool pawsMessageTextBox::Setup( iDocumentNode* node ) { csRef<iDocumentNode> scrollBarNode = node->GetNode( "pawsScrollBar" ); if ( scrollBarNode ) { - CalcLineHeight(); - - // Create the optional scroll bar here as well but hidden. - scrollBar = new pawsScrollBar; - //TODO: FIGURE OUT WHY THIS FUNCTION DOESN'T SETUP SCROLLBARS CORRECTLY! - //scrollBar->Setup( scrollBarNode ); - scrollBar->SetParent( this ); - csRef<iDocumentAttribute> widthAttribute = scrollBarNode->GetAttribute("width"); - int scrollBarWidth = 25; - if(widthAttribute){ + if(widthAttribute) scrollBarWidth = widthAttribute->GetValueAsInt(); - } + } - scrollBar->SetRelativeFrame( defaultFrame.Width() - scrollBarWidth, 6, scrollBarWidth, defaultFrame.Height() - 12 ); - - int attach = ATTACH_TOP | ATTACH_BOTTOM | ATTACH_RIGHT; - scrollBar->SetAttachFlags( attach ); - scrollBar->PostSetup(); - AddChild( scrollBar ); - OnResize(); - return true; - } - else - { - return Setup(); - } + CalcLineHeight(); + + return true; } bool pawsMessageTextBox::Setup() { CalcLineHeight(); + return true; +} +bool pawsMessageTextBox::PostSetup() +{ // Create the optional scroll bar here as well but hidden. - scrollBar = new pawsScrollBar; - scrollBar->SetParent( this ); - scrollBar->SetRelativeFrame( defaultFrame.Width() - 24, 6, 24, defaultFrame.Height() - 12 ); + scrollBar = GetScrollBar(); + if (!scrollBar) + { + scrollBar = new pawsScrollBar; + scrollBar->SetParent( this ); + scrollBar->PostSetup(); + AddChild( scrollBar ); + + scrollBar->SetTickValue( 1.0 ); + scrollBar->SetMaxValue(0.0); + } + + scrollBar->SetRelativeFrame( defaultFrame.Width() - scrollBarWidth, 6, scrollBarWidth, defaultFrame.Height() - 12 ); int attach = ATTACH_TOP | ATTACH_BOTTOM | ATTACH_RIGHT; scrollBar->SetAttachFlags( attach ); - scrollBar->PostSetup(); - scrollBar->SetTickValue( 1.0 ); - scrollBar->SetMaxValue(0.0); - AddChild( scrollBar ); OnResize(); @@ -1312,22 +1317,55 @@ } +pawsScrollBar * pawsMultiLineTextBox::GetScrollBar() +{ + csArray<pawsWidget*>::Iterator it = children.GetIterator(); + while(it.HasNext()) + { + pawsScrollBar * child = dynamic_cast<pawsScrollBar*>(it.Next()); + if (child) + return child; + } + + return NULL; +} + bool pawsMultiLineTextBox::Setup( iDocumentNode* node ) { - csRef<iDocumentNode> textNode = node->GetNode( "text" ); - + csRef<iDocumentNode> textNode = node->GetNode( "text" ); if ( textNode ) - { + { csRef<iDocumentAttribute> textAttribute = textNode->GetAttribute("string"); if ( textAttribute ) - { + { SetText( textAttribute->GetValue() ); } - } + } return true; } +bool pawsMultiLineTextBox::PostSetup() +{ + scrollBar = GetScrollBar(); + if (!scrollBar) + { + scrollBar = new pawsScrollBar; + scrollBar->SetParent( this ); + AddChild( scrollBar ); + scrollBar->SetTickValue( 1.0 ); + scrollBar->PostSetup(); + } + + scrollBar->SetRelativeFrame( defaultFrame.Width() - 40, 6, 24, defaultFrame.Height() - 12 ); + scrollBar->SetAttachFlags(ATTACH_TOP | ATTACH_BOTTOM | ATTACH_RIGHT); + pawsWidget::Resize(); + + scrollBar->Show(); + scrollBar->SetMaxValue(lines.GetSize() - canDrawLines ); + scrollBar->SetCurrentValue(0); +} + void pawsMultiLineTextBox::Resize() { pawsWidget::Resize(); @@ -1471,22 +1509,12 @@ usingScrollBar = true; lines.Empty(); OrganizeText( str.GetData() ); - if ( !scrollBar ) + if ( scrollBar ) { - // Create the optional scroll bar here as well but hidden. - scrollBar = new pawsScrollBar(); - scrollBar->SetParent( this ); - scrollBar->SetRelativeFrame( defaultFrame.Width() - 40, 6, 24, defaultFrame.Height() - 12 ); - scrollBar->SetAttachFlags(ATTACH_TOP | ATTACH_BOTTOM | ATTACH_RIGHT); - scrollBar->PostSetup(); - scrollBar->SetTickValue( 1.0 ); - AddChild( scrollBar ); - pawsWidget::Resize(); + scrollBar->Show(); + scrollBar->SetMaxValue(lines.GetSize() - canDrawLines ); + scrollBar->SetCurrentValue(0); } - - scrollBar->Show(); - scrollBar->SetMaxValue(lines.GetSize() - canDrawLines ); - scrollBar->SetCurrentValue(0); } startLine = 0; text.Replace( str.GetData() ); Modified: trunk/src/common/paws/pawstextbox.h =================================================================== --- trunk/src/common/paws/pawstextbox.h 2010-03-16 07:41:55 UTC (rev 5701) +++ trunk/src/common/paws/pawstextbox.h 2010-03-18 18:11:52 UTC (rev 5702) @@ -168,6 +168,7 @@ virtual ~pawsMessageTextBox(); virtual bool Setup( iDocumentNode* node ); virtual bool Setup( void ); + virtual bool PostSetup(); /** * This function allows a widget to fill in its own contents from an xml node @@ -220,6 +221,12 @@ /// Calculates value of the lineHeight attribute void CalcLineHeight(); + /** + * checks for a child of type pawsScrollBar. + * @return pawsScrollBar* pointer to child or NULL + */ + pawsScrollBar * GetScrollBar(); + csPDelArray<MessageLine> adjusted; int lineHeight; @@ -228,6 +235,7 @@ int topLine; pawsScrollBar* scrollBar; + int scrollBarWidth; private: static const int INITOFFSET = 20; @@ -339,6 +347,7 @@ virtual ~pawsMultiLineTextBox(); bool Setup ( iDocumentNode* node ); + bool PostSetup(); void Draw(); @@ -356,6 +365,12 @@ void OrganizeText( const char* text ); + /** + * checks for a child of type pawsScrollBar. + * @return pawsScrollBar* pointer to child or NULL + */ + pawsScrollBar * GetScrollBar(); + /// The text for this box. csString text; /// The text, broken into separate lines by OrganizeText() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jo...@us...> - 2010-04-07 07:28:11
|
Revision: 5787 http://planeshift.svn.sourceforge.net/planeshift/?rev=5787&view=rev Author: jorrit Date: 2010-04-07 07:28:05 +0000 (Wed, 07 Apr 2010) Log Message: ----------- Removed a few warnings. Modified Paths: -------------- trunk/src/common/paws/pawslistbox.cpp trunk/src/common/paws/pawstextbox.cpp Modified: trunk/src/common/paws/pawslistbox.cpp =================================================================== --- trunk/src/common/paws/pawslistbox.cpp 2010-04-07 07:25:48 UTC (rev 5786) +++ trunk/src/common/paws/pawslistbox.cpp 2010-04-07 07:28:05 UTC (rev 5787) @@ -612,7 +612,7 @@ return false; selected = -1; - if (rows.GetSize() <= index) + if (rows.GetSize() <= size_t(index)) return false; // If no row assume no selection is wanted. if ( index == -1 ) @@ -1373,7 +1373,7 @@ // Adjust this column width by the percentage growth of this column on the screen compared to original spec in file float w = this->screenFrame.Width(); w /= GetLogicalWidth(screenFrame.Width()); - int myWidth = def[column].width * w; + int myWidth = int(def[column].width * w); widget->SetRelativeFrame( offset+borderW+widget->DefaultFrame().xmin, borderH+widget->DefaultFrame().ymin, GetActualWidth(myWidth), GetActualHeight(def[column].height) ); Modified: trunk/src/common/paws/pawstextbox.cpp =================================================================== --- trunk/src/common/paws/pawstextbox.cpp 2010-04-07 07:25:48 UTC (rev 5786) +++ trunk/src/common/paws/pawstextbox.cpp 2010-04-07 07:28:05 UTC (rev 5787) @@ -841,7 +841,7 @@ screenFrame.Width() - offSet); /// If it can fit the entire string then return. - if (canDrawLength == stringBuffer.Length()) + if (size_t(canDrawLength) == stringBuffer.Length()) { if (!msgLine) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rly...@us...> - 2010-08-26 18:02:57
|
Revision: 6176 http://planeshift.svn.sourceforge.net/planeshift/?rev=6176&view=rev Author: rlydontknow Date: 2010-08-26 18:02:51 +0000 (Thu, 26 Aug 2010) Log Message: ----------- fail to load if the render manager doesn't support iRenderManagerTargets Modified Paths: -------------- trunk/src/common/paws/pawsobjectview.cpp trunk/src/common/paws/pawsobjectview.h Modified: trunk/src/common/paws/pawsobjectview.cpp =================================================================== --- trunk/src/common/paws/pawsobjectview.cpp 2010-08-26 18:01:57 UTC (rev 6175) +++ trunk/src/common/paws/pawsobjectview.cpp 2010-08-26 18:02:51 UTC (rev 6176) @@ -27,7 +27,6 @@ #include <iutil/objreg.h> #include <imap/loader.h> #include <iutil/vfs.h> -#include "iengine/rendermanager.h" #include <iengine/texture.h> #include <csutil/cscolor.h> #include "pawsobjectview.h" @@ -58,12 +57,16 @@ mouseDownRotate = false; needsDraw = true; - - PawsManager::GetSingleton().AddObjectView(this); } pawsObjectView::~pawsObjectView() { + if(!rmTargets.IsValid()) + { + // we failed to load, so there's nothing to deallocate + return; + } + if(target.IsValid()) { // unregister tex from render targets @@ -87,6 +90,15 @@ bool pawsObjectView::Setup(iDocumentNode* node ) { + rmTargets = scfQueryInterface<iRenderManagerTargets>(engine->GetRenderManager()); + if ( !rmTargets.IsValid()) + { + Error1("pawsObjectView: RenderManager doesn't support targets! object views will be disabled"); + return false; + } + + PawsManager::GetSingleton().AddObjectView(this); + csRef<iDocumentNode> distanceNode = node->GetNode( "distance" ); if ( distanceNode ) distance = distanceNode->GetAttributeValueAsFloat("value"); Modified: trunk/src/common/paws/pawsobjectview.h =================================================================== --- trunk/src/common/paws/pawsobjectview.h 2010-08-26 18:01:57 UTC (rev 6175) +++ trunk/src/common/paws/pawsobjectview.h 2010-08-26 18:02:51 UTC (rev 6176) @@ -20,6 +20,7 @@ #ifndef PAWS_OBJECT_VIEW_HEADER #define PAWS_OBJECT_VIEW_HEADER +#include <iengine/rendermanager.h> #include <iengine/camera.h> #include <iengine/engine.h> #include <iengine/light.h> @@ -144,6 +145,7 @@ csRef<iSector> stage; csRef<iView> view; csRef<iEngine> engine; + csRef<iRenderManagerTargets> rmTargets; csRef<iMeshWrapper> mesh; csRef<iSector> meshSector; csRef<iView> meshView; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-09-05 08:11:29
|
Revision: 6180 http://planeshift.svn.sourceforge.net/planeshift/?rev=6180&view=rev Author: weltall2 Date: 2010-09-05 08:11:22 +0000 (Sun, 05 Sep 2010) Log Message: ----------- fixed PS#4695 - Extra money icons in exange window. Modified Paths: -------------- trunk/src/common/paws/pawswidget.cpp trunk/src/common/paws/pawswidget.h Modified: trunk/src/common/paws/pawswidget.cpp =================================================================== --- trunk/src/common/paws/pawswidget.cpp 2010-09-05 06:20:30 UTC (rev 6179) +++ trunk/src/common/paws/pawswidget.cpp 2010-09-05 08:11:22 UTC (rev 6180) @@ -1166,16 +1166,17 @@ } } -void pawsWidget::DrawWindow() +bool pawsWidget::DrawWindow() { // Setup our clipping rect so we know where we can draw ClipToParent(true); // If we can't draw anywhere, then don't try. Our children can't be drawn either. if (clipRect.IsEmpty()) - return; + return false; DrawBackground(); + return true; } void pawsWidget::DrawForeground() @@ -1190,8 +1191,8 @@ void pawsWidget::Draw() { - DrawWindow(); - DrawForeground(); + if(DrawWindow()) + DrawForeground(); } void pawsWidget::DrawWidgetText(const char *text, int x, int y, int style) Modified: trunk/src/common/paws/pawswidget.h =================================================================== --- trunk/src/common/paws/pawswidget.h 2010-09-05 06:20:30 UTC (rev 6179) +++ trunk/src/common/paws/pawswidget.h 2010-09-05 08:11:22 UTC (rev 6180) @@ -566,8 +566,10 @@ */ virtual bool SelfPopulate( iDocumentNode *node ); - /// Does the first part of the drawing. It draws the background of the window. - void DrawWindow(); + /** Does the first part of the drawing. It draws the background of the window. + * @return TRUE if the widget can be drawn. + */ + bool DrawWindow(); /// Does the second part of the drawing drawing the background of the window. void DrawForeground(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-10-02 20:27:22
|
Revision: 6245 http://planeshift.svn.sourceforge.net/planeshift/?rev=6245&view=rev Author: weltall2 Date: 2010-10-02 20:27:16 +0000 (Sat, 02 Oct 2010) Log Message: ----------- commited PS#4726 - patch for paws for improved cs mouse eventhandling patch by natoka_ Modified Paths: -------------- trunk/src/common/paws/pawsmanager.cpp trunk/src/common/paws/pawsmanager.h Modified: trunk/src/common/paws/pawsmanager.cpp =================================================================== --- trunk/src/common/paws/pawsmanager.cpp 2010-10-02 16:53:10 UTC (rev 6244) +++ trunk/src/common/paws/pawsmanager.cpp 2010-10-02 20:27:16 UTC (rev 6245) @@ -277,33 +277,49 @@ bool PawsManager::HandleEvent( iEvent &event ) { - if (event.Name == MouseMove) + csRef<iEventNameRegistry> namereg = csEventNameRegistry::GetRegistry ( + GetObjectRegistry ()); + if (CS_IS_KEYBOARD_EVENT (namereg, event)) { - return HandleMouseMove (event); + if (event.Name == KeyboardDown || event.Name == KeyboardUp) + { + return HandleKeyDown( event ); + } } - - if (event.Name == MouseDown) + else if (CS_IS_MOUSE_EVENT (namereg, event)) { - return HandleMouseDown (event); - } + csMouseEventType type = csMouseEventHelper::GetEventType (&event); + csMouseEventData data; + csMouseEventHelper::GetEventData (&event, data); + //csKeyModifiers key_modifiers; + //csKeyEventHelper::GetModifiers (&event, key_modifiers); + uint32 modifiers = csMouseEventHelper::GetModifiers (&event); - if (event.Name == MouseDoubleClick) - { - return HandleDoubleClick (event); - } + if (type == csMouseEventTypeMove) + { + return HandleMouseMove (data); + } + else if (type == csMouseEventTypeUp) + { + return HandleMouseUp (data); + } + else if (type == csMouseEventTypeDown) + { + return HandleMouseDown (data); + } + /* + else if (type == csMouseEventTypeClick) + { + } + */ + else if (type == csMouseEventTypeDoubleClick) + { + return HandleDoubleClick (data); + } + } - if (event.Name == MouseUp) - { - return HandleMouseUp (event); - } - - if (event.Name == KeyboardDown || event.Name == KeyboardUp) - { - return HandleKeyDown( event ); - } - #if defined(CS_PLATFORM_UNIX) && defined(INCLUDE_CLIPBOARD) - if (event.Name == SelectionNotifyEvent) + if (ev.Name == SelectionNotifyEvent) { return HandleSelectionNotify (event); } @@ -313,15 +329,12 @@ } -bool PawsManager::HandleDoubleClick( iEvent& ev ) +bool PawsManager::HandleDoubleClick( csMouseEventData &data ) { pawsWidget* widget = NULL; - psPoint event = MouseLocation(ev); - uint button = csMouseEventHelper::GetButton(&ev); - uint32 modifiers = csMouseEventHelper::GetModifiers(&ev); + + widget = mainWidget->WidgetAt( data.x, data.y ); - widget = mainWidget->WidgetAt( event.x, event.y ); - if ( widget != NULL ) { if ( modalWidget != NULL ) @@ -332,7 +345,7 @@ pawsWidget* check = modalWidget->FindWidget( widget->GetName(), false ); if ( check != widget ) { - widget = modalWidget->WidgetAt( event.x, event.y ); + widget = modalWidget->WidgetAt( data.x, data.y ); } } if ( widget != NULL ) @@ -344,7 +357,7 @@ { widget->GetParent()->BringToTop( widget ); } - returnResult = widget->OnDoubleClick( button, modifiers, event.x, event.y ); + returnResult = widget->OnDoubleClick( data.Button, data.Modifiers, data.x, data.y ); return returnResult; } @@ -550,16 +563,12 @@ } #endif -bool PawsManager::HandleMouseDown( iEvent &ev ) +bool PawsManager::HandleMouseDown( csMouseEventData &data ) { pawsWidget* widget = 0; - psPoint event = MouseLocation(ev); - uint button = csMouseEventHelper::GetButton(&ev); - uint32 modifiers = csMouseEventHelper::GetModifiers(&ev); + widget = mainWidget->WidgetAt(data.x, data.y); - widget = mainWidget->WidgetAt(event.x, event.y); - if ( widget != NULL ) { @@ -572,7 +581,7 @@ pawsWidget* check = modalWidget->FindWidget( widget->GetName(), false ); if ( check != widget ) { - widget = modalWidget->WidgetAt(event.x, event.y); + widget = modalWidget->WidgetAt(data.x, data.y); } } @@ -591,10 +600,10 @@ widget->RunScriptEvent(PW_SCRIPT_EVENT_MOUSEDOWN); - bool returnResult = widget->OnMouseDown( button, - modifiers, - event.x, - event.y ); + bool returnResult = widget->OnMouseDown( data.Button, + data.Modifiers, + data.x, + data.y ); return returnResult; } @@ -604,13 +613,8 @@ return false; } -bool PawsManager::HandleMouseUp( iEvent &ev ) +bool PawsManager::HandleMouseUp( csMouseEventData &data ) { - psPoint event = MouseLocation(ev); - - uint button = csMouseEventHelper::GetButton(&ev); - uint32 modifiers = csMouseEventHelper::GetModifiers(&ev); - // Check to see if we are moving a widget. if ( movingWidget ) { @@ -627,13 +631,13 @@ if ( currentFocusedWidget ) { - return currentFocusedWidget->OnMouseUp( button, - modifiers, - event.x, - event.y ); + return currentFocusedWidget->OnMouseUp( data.Button, + data.Modifiers, + data.x, + data.y ); } - pawsWidget* widget = mainWidget->WidgetAt(event.x, event.y ); + pawsWidget* widget = mainWidget->WidgetAt(data.x, data.y ); SetCurrentFocusedWidget ( widget ); @@ -644,15 +648,16 @@ widget->GetParent()->BringToTop( widget ); } - return widget->OnMouseUp( button, - modifiers, - event.x, - event.y ); + return widget->OnMouseUp( data.Button, + data.Modifiers, + data.x, + data.y ); } return false; } +/* psPoint PawsManager::MouseLocation( iEvent &ev ) { csMouseEventData event; @@ -676,14 +681,13 @@ point.y = event.axes[1]; return point; } +*/ -bool PawsManager::HandleMouseMove( iEvent &ev ) +bool PawsManager::HandleMouseMove( csMouseEventData &data ) { - psPoint event = MouseLocation(ev); - - mouse->SetPosition( event.x, event.y ); + mouse->SetPosition( data.x, data.y ); PositionDragDropWidget(); timeOver = csGetTicks(); @@ -702,7 +706,7 @@ if (modalWidget == NULL) { - pawsWidget* widget = mainWidget->WidgetAt(event.x, event.y); + pawsWidget* widget = mainWidget->WidgetAt(data.x, data.y); if ( widget ) { Modified: trunk/src/common/paws/pawsmanager.h =================================================================== --- trunk/src/common/paws/pawsmanager.h 2010-10-02 16:53:10 UTC (rev 6244) +++ trunk/src/common/paws/pawsmanager.h 2010-10-02 20:27:16 UTC (rev 6245) @@ -416,20 +416,20 @@ * Determines if a widget is moving or being resized. If there is no modal * widget it operates on the topmost widget at the event coordinates. * - * @param event iEvent to process. + * @param data csMouseEventData containing the mouse event data. * @return TRUE if it moves, resizes or fades in a widget. */ - bool HandleMouseMove( iEvent& event ); + bool HandleMouseMove( csMouseEventData &data ); /** @brief Process mouse down events. * * Determines the widget at event coordinates. * Calls OnMouseDown() on the currentFocusedWidget or widget at the event * coordinates. - * @param event iEvent to process. + * @param data csMouseEventData containing the mouse event data. * @return TRUE if event stops moving or resizing. */ - bool HandleMouseDown( iEvent& event ); + bool HandleMouseDown( csMouseEventData &data ); /** @brief Process mouse double click events. @@ -437,10 +437,10 @@ * Calls OnDoubleClick on the currentFocusedWidget or widget at the event * coordinates. * - * @param event iEvent to process. + * @param data csMouseEventData containing the mouse event data. * @return Results of OnDoubleClick or FALSE. */ - bool HandleDoubleClick( iEvent& event ); + bool HandleDoubleClick( csMouseEventData &data ); /** @brief Process mouse up events. * @@ -448,10 +448,10 @@ * Calls OnMouseUp on the currentFocusedWidget or widget at the event * coordinates. * - * @param event iEvent to process. + * @param data csMouseEventData containing the mouse event data. * @return Results of OnMouseUp or FALSE. */ - bool HandleMouseUp( iEvent& event ); + bool HandleMouseUp( csMouseEventData &data ); /** @brief Process key down events. * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-11-01 22:07:57
|
Revision: 6334 http://planeshift.svn.sourceforge.net/planeshift/?rev=6334&view=rev Author: weltall2 Date: 2010-11-01 22:07:51 +0000 (Mon, 01 Nov 2010) Log Message: ----------- added left right support in tree Modified Paths: -------------- trunk/src/common/paws/pawslistbox.cpp trunk/src/common/paws/pawstree.cpp Modified: trunk/src/common/paws/pawslistbox.cpp =================================================================== --- trunk/src/common/paws/pawslistbox.cpp 2010-11-01 22:05:35 UTC (rev 6333) +++ trunk/src/common/paws/pawslistbox.cpp 2010-11-01 22:07:51 UTC (rev 6334) @@ -835,13 +835,13 @@ if (button == csmbHWheelLeft) { if (horzscrollBar) - horzscrollBar->SetCurrentValue(scrollBar->GetCurrentValue() - LISTBOX_MOUSE_SCROLL_AMOUNT); + horzscrollBar->SetCurrentValue(horzscrollBar->GetCurrentValue() - LISTBOX_MOUSE_SCROLL_AMOUNT); return true; } else if (button == csmbHWheelRight) { if (horzscrollBar) - horzscrollBar->SetCurrentValue(scrollBar->GetCurrentValue() + LISTBOX_MOUSE_SCROLL_AMOUNT); + horzscrollBar->SetCurrentValue(horzscrollBar->GetCurrentValue() + LISTBOX_MOUSE_SCROLL_AMOUNT); return true; } else if (!selectable) Modified: trunk/src/common/paws/pawstree.cpp =================================================================== --- trunk/src/common/paws/pawstree.cpp 2010-11-01 22:05:35 UTC (rev 6333) +++ trunk/src/common/paws/pawstree.cpp 2010-11-01 22:07:51 UTC (rev 6334) @@ -1160,6 +1160,18 @@ vertScrollBar->SetCurrentValue(vertScrollBar->GetCurrentValue() + TREE_MOUSE_SCROLL_AMOUNT); return true; } + if (button == csmbHWheelLeft) + { + if (horizScrollBar) + horizScrollBar->SetCurrentValue(horizScrollBar->GetCurrentValue() - TREE_MOUSE_SCROLL_AMOUNT); + return true; + } + else if (button == csmbHWheelRight) + { + if (horizScrollBar) + horizScrollBar->SetCurrentValue(horizScrollBar->GetCurrentValue() + TREE_MOUSE_SCROLL_AMOUNT); + return true; + } else { pawsTreeNode *node = NULL; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-11-07 22:37:10
|
Revision: 6364 http://planeshift.svn.sourceforge.net/planeshift/?rev=6364&view=rev Author: weltall2 Date: 2010-11-07 22:37:04 +0000 (Sun, 07 Nov 2010) Log Message: ----------- comments and style fixes from mikesflowers on pawstextbox Modified Paths: -------------- trunk/src/common/paws/pawstextbox.cpp trunk/src/common/paws/pawstextbox.h Modified: trunk/src/common/paws/pawstextbox.cpp =================================================================== --- trunk/src/common/paws/pawstextbox.cpp 2010-11-06 15:50:58 UTC (rev 6363) +++ trunk/src/common/paws/pawstextbox.cpp 2010-11-07 22:37:04 UTC (rev 6364) @@ -227,7 +227,7 @@ } } -bool pawsTextBox::SelfPopulate( iDocumentNode *node) +bool pawsTextBox::SelfPopulate( iDocumentNode *node ) { if (node->GetAttributeValue("text")) { Modified: trunk/src/common/paws/pawstextbox.h =================================================================== --- trunk/src/common/paws/pawstextbox.h 2010-11-06 15:50:58 UTC (rev 6363) +++ trunk/src/common/paws/pawstextbox.h 2010-11-07 22:37:04 UTC (rev 6364) @@ -40,9 +40,9 @@ */ enum pawsVertAdjust { - vertTOP, /** Adjusted to top */ - vertBOTTOM, /** Adjusted to bottom */ - vertCENTRE /** Adjusted to centre */ + vertTOP, ///< Adjusted to top + vertBOTTOM, ///< Adjusted to bottom + vertCENTRE ///< Adjusted to centre }; /** @@ -50,9 +50,9 @@ */ enum pawsHorizAdjust { - horizLEFT, /** Adjusted to left */ - horizRIGHT, /** Adjusted to right */ - horizCENTRE /** Adjusted to centre */ + horizLEFT, ///< Adjusted to left + horizRIGHT, ///< Adjusted to right + horizCENTRE ///< Adjusted to centre }; /** Basic constructor */ @@ -60,41 +60,134 @@ /** Basic deconstructor */ virtual ~pawsTextBox(); + /** + * Sets up the text box from a document node<br> + * Possible attributes in the node:<ul> + * <li>vertical - yes/no</li> + * <li>text</li><ul> + * <li>horizAdjust - CENTRE/RIGHT/LEFT</li> + * <li>vertAdjust - CENTRE/BOTTOM/TOP</li> + * <li>string - text</li></ul></ul> + * + * @param node The node to pull the attributes from + * @return True + */ bool Setup ( iDocumentNode* node ); - bool SelfPopulate( iDocumentNode *node); + /** + * Sets the text from the node using either the text attribute or the node's content + * @param node The node to pull the text from + * @return True if data is pulled, false if the node is empty + */ + bool SelfPopulate( iDocumentNode *node ); + /// Draws the text box void Draw(); + /** + * Sets the text to display + * @param text The string + */ void SetText( const char* text ); + + /** + * Sets the text to display using formatting + * @param fmt The format to use to format the string to display + */ void FormatText( const char *fmt, ... ); - const char* GetText() { return text; } + + /** + * Gets the text that is displayed by this text box + * @return \ref text + */ + const char* GetText() const { return text; } + + /** + * Sets if this text box should be rendered vertically (top to bottom) + * @param vertical Whether it should be rendered vertically + */ void SetVertical(bool vertical); - void Adjust (pawsHorizAdjust horiz, pawsVertAdjust vert); - void HorizAdjust (pawsHorizAdjust horiz); - void VertAdjust (pawsVertAdjust horiz); + /** + * Alters how the text box is laid out in its container + * @param horiz Sets the horizontal alignment for the text + * @param vert Sets the vertical alignment for the text + */ + void Adjust( pawsHorizAdjust horiz, pawsVertAdjust vert ); + /** + * Alters how the text box is laid out horizontally in its container + * @param horiz Sets the horizontal alignment for the text + */ + void HorizAdjust( pawsHorizAdjust horiz ); + /** + * Alters how the text box is laid out vertically in its container + * @param vert Sets the vertical alignment for the text + */ + void VertAdjust( pawsVertAdjust vert ); - // Sets size of the widget to fit the text that it displays: + /** + * Sets the size of the widget to fit the text that it displays + * @param padX Horizontal padding + * @param padY Vertical padding + */ void SetSizeByText(int padX,int padY); - // Normal text boxes should not be focused. - virtual bool OnGainFocus( bool notifyParent = true ) {return false;} + /** + * Normal text boxes should not be focused. Does nothing + * @return false + */ + virtual bool OnGainFocus( bool ) const {return false;} - int GetBorderStyle() { return BORDER_SUNKEN; } + /** + * Gets the border style for the text box + * @return Always \ref BORDER_SUNKEN + */ + inline int GetBorderStyle() const { return BORDER_SUNKEN; } - void Grayed(bool g) { grayed = g; } + /** + * Sets if the text box is having its text grayed + * @param g Overwrites \ref grayed + */ + inline void Grayed( bool g ) { grayed = g; } + /** + * Gets the font color based on the set colour and if \ref grayed is set + * @return Gray if grayed is true, colour otherwise + */ virtual int GetFontColour(); + /** + * Called whenever subscribed data gets updated + * Sets the text to either the data's string value or a properly formatted float representation + * @param dataname Unused + * @param data The data to update the text with + */ virtual void OnUpdateData(const char *dataname,PAWSData& data); - // Utility function to calculate number of code points in a substring + /** + * Utility function to calculate number of code points in a substring + * @param text Text to calculate on + * @param start Index to start on + * @param len Length to perform calculation on or -1 for start to end + * @return Number of code points + */ static int CountCodePoints(const char* text, int start = 0, int len = -1); - // Utility function to rewind a UTF-8 string by a certain number of codepoints + /** + * Utility function to rewind a UTF-8 string by a certain number of codepoints + * @param text Text to calculate on + * @param start Index to begin rewinding at + * @param count Number of code points to rewind by + * @return Resulting index + */ static int RewindCodePoints(const char* text, int start, int count); - // Utility function to skip a UTF-8 string by a certain number of codepoints + /** + * Utility function to skip a UTF-8 string by a certain number of codepoints + * @param text Text to calculate on + * @param start Index to begin rewinding at + * @param count Number of code points to rewind by + * @return Resulting index + */ static int SkipCodePoints(const char* text, int start, int count); protected: @@ -106,6 +199,8 @@ /** * Calculates size of text + * @param width Target to store width of text into + * @param height Target to store height of text into */ void CalcTextSize(int & width, int & height); @@ -117,21 +212,32 @@ /// The text for this box. csString text; - /// The colour of text. + /// The colour of the text. int colour; + /// Whether the text is currently being grayed out bool grayed; + /// The current horizontal alignment for the text box pawsHorizAdjust horizAdjust; + + /// The current vertical alignment for the text box pawsVertAdjust vertAdjust; + /// Whether the text box is rendering vertically (up-down rather than left-right) bool vertical; - int textX, textY; // Position of text inside the widget (depends on adjustment) + /// X-Position of text inside the widget (relative to adjustment) + int textX; - //These members are used only when vertical==true: - int textWidth; // Width of vertical column of letters (i.e. MAX(letter_width)) - psPoint *letterSizes; // Size of each letter. + /// X-Position of text inside the widget (relative to adjustment) + int textY; + + /// Width of vertical column of letters (only used when \ref vertical is true) + int textWidth; + + /// Array containing the size of each letter in text (only used when \ref vertical is true) + psPoint *letterSizes; }; //-------------------------------------------------------------------------- @@ -321,12 +427,12 @@ * @param maxlen The value to set for the max length */ void SetMaxLength(unsigned int maxlen); - /** + /** * Returns the max length for the text box * @return maxLen */ inline unsigned int GetMaxLength() const { return maxLen; } - /** + /** * Gets the remaining characters that can be input * @return Remaining characters or UINT_MAX if no max length specified */ @@ -499,12 +605,12 @@ * @param maxlen The value to set for the max length */ void SetMaxLength(unsigned int maxlen); - /** + /** * Returns the max length for the text box * @return maxLen */ inline unsigned int GetMaxLength() const { return maxLen; } - /** + /** * Gets the remaining characters that can be input * @return Remaining characters or UINT_MAX if no max length specified */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-12-13 14:00:07
|
Revision: 6528 http://planeshift.svn.sourceforge.net/planeshift/?rev=6528&view=rev Author: weltall2 Date: 2010-12-13 14:00:00 +0000 (Mon, 13 Dec 2010) Log Message: ----------- added support in pawstexturemanager for missing file runtime loading (use only as a temporary measure) Modified Paths: -------------- trunk/src/common/paws/pawstexturemanager.cpp trunk/src/common/paws/pawstexturemanager.h trunk/src/common/paws/pawswidget.cpp Modified: trunk/src/common/paws/pawstexturemanager.cpp =================================================================== --- trunk/src/common/paws/pawstexturemanager.cpp 2010-12-13 11:49:12 UTC (rev 6527) +++ trunk/src/common/paws/pawstexturemanager.cpp 2010-12-13 14:00:00 UTC (rev 6528) @@ -137,6 +137,25 @@ return csPtr<iPawsImage>(elementList.Get(name, 0)); } +csPtr<iPawsImage> pawsTextureManager::GetOrAddPawsImage(const char * name) +{ + csRef<iPawsImage> image = elementList.Get(name, 0); + if(!image.IsValid()) //if the image wasn't found + { + //try adding and reloading. This works only with full paths so you should still use + //imagelist.xml for faster performance. + if(AddImage(name)) //if this is a success we can now load it. + { + image = csPtr<iPawsImage>(elementList.Get(name, 0)); + Warning2(LOG_PAWS, "ART ERROR: PawsTextureManager loaded the image %s which was missing from the imagelist.xml and was loaded on demand. Add the image there!", name); + } + else //if it wasn't a success warn the user. + Warning2(LOG_PAWS, "ART ERROR: PawsTextureManager wasn't able to load the requested image: %s", name); + } + return csPtr<iPawsImage>(image); //we return regardless the caller must be able to handle null, which is failure. +} + + void pawsTextureManager::AddPawsImage(iPawsImage * element) { // printf("Adding pawsImage called %s\n", element->GetName() ); Modified: trunk/src/common/paws/pawstexturemanager.h =================================================================== --- trunk/src/common/paws/pawstexturemanager.h 2010-12-13 11:49:12 UTC (rev 6527) +++ trunk/src/common/paws/pawstexturemanager.h 2010-12-13 14:00:00 UTC (rev 6528) @@ -83,6 +83,7 @@ void Remove( const char* name ); csPtr<iPawsImage> GetPawsImage(const char *name); + csPtr<iPawsImage> GetOrAddPawsImage(const char * name); bool AddImage(const char* resource); void AddPawsImage(iPawsImage *element); Modified: trunk/src/common/paws/pawswidget.cpp =================================================================== --- trunk/src/common/paws/pawswidget.cpp 2010-12-13 11:49:12 UTC (rev 6527) +++ trunk/src/common/paws/pawswidget.cpp 2010-12-13 14:00:00 UTC (rev 6528) @@ -989,28 +989,13 @@ bgImage = NULL; return; } - bgImage = PawsManager::GetSingleton().GetTextureManager()->GetPawsImage(image); + bgImage = PawsManager::GetSingleton().GetTextureManager()->GetOrAddPawsImage(image); if (!bgImage) { csString parentName("None"); if ( parent ) parentName = parent->GetName(); - - if(PawsManager::GetSingleton().GetTextureManager()->AddImage(image)) //try on demand loading - { - //try getting the image again - bgImage = PawsManager::GetSingleton().GetTextureManager()->GetPawsImage(image); - } - if(!bgImage) - { - Warning4(LOG_PAWS, "Widget: %s (Parent: %s) Could Not load image: %s", name.GetData(), parentName.GetData(), image ); - return; - } - else - { - Warning4(LOG_PAWS, "Widget: %s (Parent: %s) The image %s was missing from the imagelist.xml and was loaded on demand. Add the image there!", name.GetData(), parentName.GetData(), image ); - } } alpha = bgImage->GetDefaultAlpha(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-12-13 15:08:16
|
Revision: 6530 http://planeshift.svn.sourceforge.net/planeshift/?rev=6530&view=rev Author: weltall2 Date: 2010-12-13 14:49:33 +0000 (Mon, 13 Dec 2010) Log Message: ----------- improved the texturemanager to not keep invalid elements Modified Paths: -------------- trunk/src/common/paws/pawsframedrawable.h trunk/src/common/paws/pawsimagedrawable.cpp trunk/src/common/paws/pawsimagedrawable.h trunk/src/common/paws/pawstexturemanager.cpp trunk/src/common/paws/pawstexturemanager.h trunk/src/common/paws/pawswidget.cpp Modified: trunk/src/common/paws/pawsframedrawable.h =================================================================== --- trunk/src/common/paws/pawsframedrawable.h 2010-12-13 14:01:00 UTC (rev 6529) +++ trunk/src/common/paws/pawsframedrawable.h 2010-12-13 14:49:33 UTC (rev 6530) @@ -90,6 +90,8 @@ int GetWidth() const; int GetHeight() const; + bool IsLoaded() const { return true; } + void ExpandClipRect(csRect &clipRect); int GetDefaultAlpha() const; Modified: trunk/src/common/paws/pawsimagedrawable.cpp =================================================================== --- trunk/src/common/paws/pawsimagedrawable.cpp 2010-12-13 14:01:00 UTC (rev 6529) +++ trunk/src/common/paws/pawsimagedrawable.cpp 2010-12-13 14:49:33 UTC (rev 6530) @@ -41,7 +41,10 @@ bool pawsImageDrawable::PreparePixmap() { if (imageFileLocation.Length() == 0) // tileable background + { + isLoaded = true; return true; + } // Check if already loaded first. csRef<iEngine> engine = csQueryRegistry<iEngine>(PawsManager::GetSingleton().GetObjectRegistry()); @@ -117,6 +120,8 @@ textureRectangle.ymax = height; } + //if we reach this point we are sure the image was loaded correctly. (note this doesn't mean image was assigned) + isLoaded = true; return true; } @@ -127,6 +132,7 @@ defaultTransparentColourBlue = -1; defaultTransparentColourGreen = -1; defaultTransparentColourRed = -1; + isLoaded = false; defaultAlphaValue = 0; @@ -184,6 +190,7 @@ defaultTransparentColourRed = transR; defaultTransparentColourGreen = transG; defaultTransparentColourBlue = transB; + isLoaded = false; PreparePixmap(); } @@ -199,6 +206,7 @@ defaultTransparentColourRed = -1; defaultTransparentColourGreen = -1; defaultTransparentColourBlue = -1; + isLoaded = false; PreparePixmap(); } @@ -280,6 +288,12 @@ return defaultAlphaValue; } +bool pawsImageDrawable::IsLoaded() const +{ + return isLoaded; +} + +//TODO: this piece of code looks dead. It's not called within the class and it's missing from the interface. iImage * pawsImageDrawable::GetImage() { if (image) @@ -305,6 +319,7 @@ } image->SetName(imageFileLocation); + isLoaded = true; return image; } Modified: trunk/src/common/paws/pawsimagedrawable.h =================================================================== --- trunk/src/common/paws/pawsimagedrawable.h 2010-12-13 14:01:00 UTC (rev 6529) +++ trunk/src/common/paws/pawsimagedrawable.h 2010-12-13 14:49:33 UTC (rev 6530) @@ -47,6 +47,7 @@ bool tiled; bool debugImageErrors; + bool isLoaded; /** * The actual image. @@ -76,6 +77,7 @@ int GetDefaultAlpha() const; + bool IsLoaded() const; iImage * GetImage(); int GetTransparentRed() const; int GetTransparentGreen() const; Modified: trunk/src/common/paws/pawstexturemanager.cpp =================================================================== --- trunk/src/common/paws/pawstexturemanager.cpp 2010-12-13 14:01:00 UTC (rev 6529) +++ trunk/src/common/paws/pawstexturemanager.cpp 2010-12-13 14:49:33 UTC (rev 6530) @@ -119,11 +119,12 @@ { iPawsImage *element = NULL; element = new pawsImageDrawable(resource, resource); - if(element) + if(element->IsLoaded()) //if all went ok this will be true. { AddPawsImage(element); return true; } + delete element; //it failed loading so we discard it. return false; } Modified: trunk/src/common/paws/pawstexturemanager.h =================================================================== --- trunk/src/common/paws/pawstexturemanager.h 2010-12-13 14:01:00 UTC (rev 6529) +++ trunk/src/common/paws/pawstexturemanager.h 2010-12-13 14:49:33 UTC (rev 6530) @@ -51,6 +51,7 @@ virtual void ExpandClipRect(csRect &clipRect) = 0; virtual int GetDefaultAlpha() const = 0; + virtual bool IsLoaded() const = 0; }; class pawsTextureManager Modified: trunk/src/common/paws/pawswidget.cpp =================================================================== --- trunk/src/common/paws/pawswidget.cpp 2010-12-13 14:01:00 UTC (rev 6529) +++ trunk/src/common/paws/pawswidget.cpp 2010-12-13 14:49:33 UTC (rev 6530) @@ -996,6 +996,7 @@ csString parentName("None"); if ( parent ) parentName = parent->GetName(); + return; } alpha = bgImage->GetDefaultAlpha(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rly...@us...> - 2010-12-24 21:00:21
|
Revision: 6575 http://planeshift.svn.sourceforge.net/planeshift/?rev=6575&view=rev Author: rlydontknow Date: 2010-12-24 21:00:15 +0000 (Fri, 24 Dec 2010) Log Message: ----------- don't use non-power-of-two textures in objectview as they cause issues on older hardware and are a performance issue don't redraw the stage each time - only redraw it if actually required (i.e. cam is moved) Modified Paths: -------------- trunk/src/common/paws/pawsobjectview.cpp trunk/src/common/paws/pawsobjectview.h Modified: trunk/src/common/paws/pawsobjectview.cpp =================================================================== --- trunk/src/common/paws/pawsobjectview.cpp 2010-12-24 20:06:23 UTC (rev 6574) +++ trunk/src/common/paws/pawsobjectview.cpp 2010-12-24 21:00:15 UTC (rev 6575) @@ -67,13 +67,18 @@ return; } - if(target.IsValid()) + if(meshTarget.IsValid()) { // unregister tex from render targets - csRef<iRenderManagerTargets> rmTargets = scfQueryInterface<iRenderManagerTargets>(engine->GetRenderManager()); - rmTargets->UnregisterRenderTarget(target); + rmTargets->UnregisterRenderTarget(meshTarget); } + if(stageTarget.IsValid()) + { + // unregister tex from render targets + rmTargets->UnregisterRenderTarget(stageTarget); + } + PawsManager::GetSingleton().RemoveObjectView(this); // free mesh @@ -133,36 +138,37 @@ void pawsObjectView::OnResize() { - if(target.IsValid() && rmTargets.IsValid()) + if(rmTargets.IsValid() && stageTarget.IsValid() && meshTarget.IsValid()) { - // unregister old tex from render targets - csRef<iRenderManagerTargets> rmTargets = scfQueryInterface<iRenderManagerTargets>(engine->GetRenderManager()); - rmTargets->UnregisterRenderTarget(target); + // unregister old texs from render targets + rmTargets->UnregisterRenderTarget(stageTarget); + rmTargets->UnregisterRenderTarget(meshTarget); } pawsWidget::OnResize(); csRef<iTextureManager> texman = PawsManager::GetSingleton().GetGraphics3D()->GetTextureManager(); - target = texman->CreateTexture(screenFrame.Width(), screenFrame.Height(), csimg2D, "rgba8", - CS_TEXTURE_2D | CS_TEXTURE_NOMIPMAPS | CS_TEXTURE_SCALE_UP | CS_TEXTURE_NPOTS); - if(target.IsValid()) + meshTarget = texman->CreateTexture(screenFrame.Width(), screenFrame.Height(), csimg2D, "rgba8", + CS_TEXTURE_2D | CS_TEXTURE_NOMIPMAPS | CS_TEXTURE_SCALE_UP); + stageTarget = texman->CreateTexture(screenFrame.Width(), screenFrame.Height(), csimg2D, "rgba8", + CS_TEXTURE_2D | CS_TEXTURE_NOMIPMAPS | CS_TEXTURE_SCALE_UP); + + if(meshTarget.IsValid() && stageTarget.IsValid()) { - target->SetAlphaType (csAlphaMode::alphaBinary); + meshTarget->SetAlphaType (csAlphaMode::alphaBinary); + stageTarget->SetAlphaType (csAlphaMode::alphaBinary); } else { Error1("pawsObjectView couldn't create render target!"); } - /*if (!resizeToScreen) - distance = origDistance * float(screenFrame.Width() * graphics2D->GetWidth())/800.0f;*/ - // update the views - int w = screenFrame.Width(); - int h = screenFrame.Height(); + int w, h; // update the stage view if(view) { + stageTarget->GetRendererDimensions(w,h); view->SetWidth(w); view->SetHeight(h); view->SetRectangle(0, 0, w, h, false); @@ -173,6 +179,7 @@ // update the doll view if(meshView) { + meshTarget->GetRendererDimensions(w,h); meshView->SetWidth(w); meshView->SetHeight(h); meshView->SetRectangle(0, 0, w, h, false); @@ -307,7 +314,7 @@ void pawsObjectView::Draw3D(iGraphics3D* graphics3D) { - if(!target.IsValid() || !view || !meshView /*|| !needsDraw*/) + if(!meshTarget.IsValid() || !stageTarget.IsValid() || !view || !meshView) { return; } @@ -318,28 +325,40 @@ else DrawNoRotate(); - // draw it - csRef<iRenderManagerTargets> rmTargets = scfQueryInterface<iRenderManagerTargets>(engine->GetRenderManager()); - rmTargets->RegisterRenderTarget(target, view, 0, iRenderManagerTargets::updateOnce | iRenderManagerTargets::clearScreen); - rmTargets->MarkAsUsed(target); - engine->GetRenderManager()->RenderView(view); - rmTargets->RegisterRenderTarget(target, meshView, 0, iRenderManagerTargets::updateOnce); - rmTargets->MarkAsUsed(target); + // draw the stage if needed + if(needsDraw) + { + rmTargets->RegisterRenderTarget(stageTarget, view, 0, iRenderManagerTargets::updateOnce | iRenderManagerTargets::clearScreen); + rmTargets->MarkAsUsed(stageTarget); + engine->GetRenderManager()->RenderView(view); + } + + // draw the mesh + rmTargets->RegisterRenderTarget(meshTarget, meshView, 0, iRenderManagerTargets::updateOnce | iRenderManagerTargets::clearScreen); + rmTargets->MarkAsUsed(meshTarget); engine->GetRenderManager()->RenderView(meshView); - //needsDraw = doRotate && !cameraLocked; + needsDraw = doRotate && !cameraLocked; } void pawsObjectView::Draw() { graphics2D->SetClipRect( 0,0, graphics2D->GetWidth(), graphics2D->GetHeight()); - if(target.IsValid()) + iGraphics3D* graphics3D = PawsManager::GetSingleton().GetGraphics3D(); + int w = screenFrame.Width(); + int h = screenFrame.Height(); + + if(stageTarget.IsValid()) { - iGraphics3D* graphics3D = PawsManager::GetSingleton().GetGraphics3D(); - graphics3D->DrawPixmap(target, - screenFrame.xmin, screenFrame.ymin, screenFrame.Width(), screenFrame.Height(), - 0, 0, screenFrame.Width(), screenFrame.Height()); + graphics3D->DrawPixmap(stageTarget, + screenFrame.xmin, screenFrame.ymin, w, h, 0, 0, w, h); } + + if(meshTarget.IsValid()) + { + graphics3D->DrawPixmap(meshTarget, + screenFrame.xmin, screenFrame.ymin, w, h, 0, 0, w, h); + } pawsWidget::Draw(); } Modified: trunk/src/common/paws/pawsobjectview.h =================================================================== --- trunk/src/common/paws/pawsobjectview.h 2010-12-24 20:06:23 UTC (rev 6574) +++ trunk/src/common/paws/pawsobjectview.h 2010-12-24 21:00:15 UTC (rev 6575) @@ -149,7 +149,8 @@ csRef<iMeshWrapper> mesh; csRef<iSector> meshSector; csRef<iView> meshView; - csRef<iTextureHandle> target; + csRef<iTextureHandle> stageTarget; + csRef<iTextureHandle> meshTarget; psCharAppearance* charApp; csVector3 objectPos; @@ -160,11 +161,11 @@ float distance; float origDistance; - + int rotateTime; float rotateRadians; float camRotate; - + unsigned int ID; csString meshFactory; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rly...@us...> - 2010-12-26 02:52:53
|
Revision: 6602 http://planeshift.svn.sourceforge.net/planeshift/?rev=6602&view=rev Author: rlydontknow Date: 2010-12-26 02:52:47 +0000 (Sun, 26 Dec 2010) Log Message: ----------- removed old unused pawsscript Removed Paths: ------------- trunk/src/common/paws/pawsscript.cpp trunk/src/common/paws/pawsscript.h Deleted: trunk/src/common/paws/pawsscript.cpp =================================================================== --- trunk/src/common/paws/pawsscript.cpp 2010-12-26 01:11:00 UTC (rev 6601) +++ trunk/src/common/paws/pawsscript.cpp 2010-12-26 02:52:47 UTC (rev 6602) @@ -1,276 +0,0 @@ -/* - * Author: Andrew Robberts - * - * Copyright (C) 2007 Atomic Blue (in...@pl..., http://www.atomicblue.org) - * http://www.atomicblue.org) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation (version 2 of the License) - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - */ - -#include <psconfig.h> - -#include <csutil/csstring.h> - -#include "pawsscript.h" -#include "pawswidget.h" -#include "util/mathscript.h" - -pawsScriptStatement::pawsScriptStatement(const char *scriptText) : env(PawsManager::GetSingleton().ExtraScriptVars()) -{ - script = MathScript::Create("pawsScript", scriptText); -} - -void pawsScriptStatement::ChangedResultsVarCallback(void * arg) -{ - pawsScriptResult * res = (pawsScriptResult *)arg; - res->widget->SetProperty(res->property, res->var->GetValue()); -} - -void pawsScriptStatement::AddLHSResult(pawsWidget * widget, const char * property, const char * name) -{ - pawsScriptResult res; - res.widget = widget; - res.property = property; - env.Define(name, 0.0); // Bogus value...it'll get set when we Execute(). We just need a var. - res.var = env.Lookup(name); - scriptResults.Push(res); -} - -void pawsScriptStatement::AddRHSVar(iScriptableVar * v, const char * name) -{ - env.Define(name, v); -} - -void pawsScriptStatement::Execute() -{ - for (size_t i = 0; i < scriptResults.GetSize(); ++i) - { - scriptResults[i].var->SetValue(scriptResults[i].widget->GetProperty(&env,scriptResults[i].property)); - scriptResults[i].var->SetChangedCallback(pawsScriptStatement::ChangedResultsVarCallback, (void*) &scriptResults[i]); - } - script->Evaluate(&env); -} - -bool pawsScript::NextChar(const char * script, size_t & currIndex, char & c, char & n) -{ - c = script[currIndex]; - if (!c) - return false; - - ++currIndex; - n = script[currIndex]; - return true; -} - -pawsWidget * pawsScript::FindWidget(pawsWidget * widget, const char * name) -{ - // a better FindWidget that will go back up the parents to really try and find the thing - pawsWidget * ret = 0; - while (!ret && widget) - { - ret = widget->FindWidget(name, false); - widget = widget->GetParent(); - } - return ret; -} - -bool pawsScript::Parse(const char * script) -{ - char c = 0; - char n = 0; - size_t currIndex = 0; - bool openQuotes = false; - csString currToken; - csArray<csString> tokens; - - // SCANNER: creates a list of tokens - while (NextChar(script, currIndex, c, n)) - { - // handle quotation marks; basically anything between two matching quotation marks is a single token - if (c == '\"') - { - openQuotes = !openQuotes; - if (!openQuotes) - { - tokens.Push(currToken); - currToken.Clear(); - } - continue; - } - - // if we're in quotation marks then handle everything - if (openQuotes) - { - currToken += c; - continue; - } - - // whitespace breaks a token, but doesn't get added to a token - if (c == ' ' || c == '\t' || c == '\n' || c == '\r') - { - if (!currToken.IsEmpty()) - { - tokens.Push(currToken); - currToken.Clear(); - } - continue; - } - - // alpha, numeric, and underscores don't break a token - if (isalnum(c) || c == '_') - { - currToken += c; - continue; - } - - // everything else breaks the token and is considered a token by itself - if (!currToken.IsEmpty()) - tokens.Push(currToken); - currToken = c; - tokens.Push(currToken); - currToken.Clear(); - } - - // PARSER: simple parsing that grabs key tokens - size_t a; - size_t len = tokens.GetSize(); - bool onRHS = false; - csArray<pawsScriptResult> lhsResults; - csArray<pawsWidget *> rhsDependencies; - size_t startToken = 0; - for (a=0; a<len; ++a) - { - csString token = tokens[a]; - if (tokens[a] == ":" && onRHS) - { - // check if it's an extra var - bool isExtraVar = PawsManager::GetSingleton().ExtraScriptVars().Lookup(tokens[a-1]) != NULL; - if (!isExtraVar) - { - pawsWidget * dep; - if (tokens[a-1] == "Me" || tokens[a-1] == "me") - dep = widget; - else - dep = FindWidget(widget, tokens[a-1]); - if (!dep) - { - Error2("pawsWidget '%s' referenced in a PAWS Script could not be found\n", tokens[a-1].GetData()); - return false; - } - - // widget names can have bad characters, so just rename all widgets to be safe - tokens[a-1] = "W"; - tokens[a-1] += (unsigned int)rhsDependencies.GetSize(); - - rhsDependencies.Push(dep); - } - } - else if (tokens[a] == '=') - { - onRHS = true; - if (a == startToken+3 && tokens[a-2] == ":") // have 'widget:property' on lhs - { - // keep track of result variable - pawsScriptResult result; - if (tokens[startToken] == "Me" || tokens[startToken] == "me") - result.widget = widget; - else - result.widget = FindWidget(widget, tokens[startToken]); - if (result.widget) - { - result.property = tokens[startToken+2]; - result.var = NULL; - lhsResults.Push(result); - - // rename variable to something mathscript can set - tokens[startToken].Clear(); - tokens[startToken+1].Clear(); - tokens[startToken+2] = "R"; - tokens[startToken+2] += (unsigned int)lhsResults.GetSize()-1; - } - } - } - else if (tokens[a] == ';') - { - if (!onRHS) - { // if we didn't get a rhs then we might have something like 'widget:Blah()', so try to resolve the widget name - for (size_t b=a-1; b>0 && tokens[b] != ';'; --b) - { - if (tokens[b] == ':') - { - pawsWidget * w; - if (tokens[b-1] == "Me" || tokens[b-1] == "me") - w = widget; - else - w = FindWidget(widget, tokens[b-1]); - if (w) - { - tokens[b-1] = "W"; - tokens[b-1] += (unsigned int)rhsDependencies.GetSize(); - rhsDependencies.Push(w); - } - break; - } - } - } - - onRHS = false; - startToken = a+1; - } - } - - csString augmentedScript; - len = tokens.GetSize(); - for (a=0; a<len; ++a) - augmentedScript += tokens[a]; - - statement = new pawsScriptStatement(augmentedScript); - - for (a=0; a<lhsResults.GetSize(); ++a) - { - csString varName = "R"; - varName += (unsigned int)a; - statement->AddLHSResult(lhsResults[a].widget, lhsResults[a].property, varName); - } - for (a=0; a<rhsDependencies.GetSize(); ++a) - { - csString varName = "W"; - varName += (unsigned int)a; - statement->AddRHSVar(rhsDependencies[a], varName); - } - return true; -} - -pawsScript::pawsScript(pawsWidget * widget, const char * script) - : widget(widget) -{ - statement = 0; - scriptText = script; -} - -pawsScript::~pawsScript() -{ - delete statement; -} - -void pawsScript::Execute() -{ - if (!scriptText.IsEmpty()) - { - Parse(scriptText); - scriptText.Clear(); - } - - if (statement) - statement->Execute(); -} Deleted: trunk/src/common/paws/pawsscript.h =================================================================== --- trunk/src/common/paws/pawsscript.h 2010-12-26 01:11:00 UTC (rev 6601) +++ trunk/src/common/paws/pawsscript.h 2010-12-26 02:52:47 UTC (rev 6602) @@ -1,69 +0,0 @@ -/* - * Author: Andrew Robberts - * - * Copyright (C) 2007 Atomic Blue (in...@pl..., http://www.atomicblue.org) - * http://www.atomicblue.org) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation (version 2 of the License) - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - */ - -#ifndef PAWS_SCRIPT_H -#define PAWS_SCRIPT_H - -#include <csutil/array.h> -#include "util/mathscript.h" - -class pawsWidget; - -struct pawsScriptResult -{ - pawsWidget *widget; - MathVar *var; - csString property; -}; - -class pawsScriptStatement -{ -private: - MathScript * script; - MathEnvironment env; - csArray<pawsScriptResult> scriptResults; - - static void ChangedResultsVarCallback(void * arg); -public: - pawsScriptStatement(const char * script); - void AddLHSResult(pawsWidget * widget, const char * property, const char * name); - void AddRHSVar(iScriptableVar * v, const char * name); - - void Execute(); -}; - -class pawsScript -{ -private: - pawsScriptStatement * statement; - pawsWidget * widget; - csString scriptText; - - bool NextChar(const char * script, size_t & currIndex, char & c, char & n); - bool Parse(const char * script); - - pawsWidget * FindWidget(pawsWidget * widget, const char * name); -public: - pawsScript(pawsWidget * widget, const char * script); - ~pawsScript(); - - void Execute(); -}; - -#endif // PAWS_SCRIPT_H This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rly...@us...> - 2010-12-26 02:55:59
|
Revision: 6603 http://planeshift.svn.sourceforge.net/planeshift/?rev=6603&view=rev Author: rlydontknow Date: 2010-12-26 02:55:53 +0000 (Sun, 26 Dec 2010) Log Message: ----------- reverted last change - it is used - sorry Added Paths: ----------- trunk/src/common/paws/pawsscript.cpp trunk/src/common/paws/pawsscript.h Added: trunk/src/common/paws/pawsscript.cpp =================================================================== --- trunk/src/common/paws/pawsscript.cpp (rev 0) +++ trunk/src/common/paws/pawsscript.cpp 2010-12-26 02:55:53 UTC (rev 6603) @@ -0,0 +1,276 @@ +/* + * Author: Andrew Robberts + * + * Copyright (C) 2007 Atomic Blue (in...@pl..., http://www.atomicblue.org) + * http://www.atomicblue.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation (version 2 of the License) + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include <psconfig.h> + +#include <csutil/csstring.h> + +#include "pawsscript.h" +#include "pawswidget.h" +#include "util/mathscript.h" + +pawsScriptStatement::pawsScriptStatement(const char *scriptText) : env(PawsManager::GetSingleton().ExtraScriptVars()) +{ + script = MathScript::Create("pawsScript", scriptText); +} + +void pawsScriptStatement::ChangedResultsVarCallback(void * arg) +{ + pawsScriptResult * res = (pawsScriptResult *)arg; + res->widget->SetProperty(res->property, res->var->GetValue()); +} + +void pawsScriptStatement::AddLHSResult(pawsWidget * widget, const char * property, const char * name) +{ + pawsScriptResult res; + res.widget = widget; + res.property = property; + env.Define(name, 0.0); // Bogus value...it'll get set when we Execute(). We just need a var. + res.var = env.Lookup(name); + scriptResults.Push(res); +} + +void pawsScriptStatement::AddRHSVar(iScriptableVar * v, const char * name) +{ + env.Define(name, v); +} + +void pawsScriptStatement::Execute() +{ + for (size_t i = 0; i < scriptResults.GetSize(); ++i) + { + scriptResults[i].var->SetValue(scriptResults[i].widget->GetProperty(&env,scriptResults[i].property)); + scriptResults[i].var->SetChangedCallback(pawsScriptStatement::ChangedResultsVarCallback, (void*) &scriptResults[i]); + } + script->Evaluate(&env); +} + +bool pawsScript::NextChar(const char * script, size_t & currIndex, char & c, char & n) +{ + c = script[currIndex]; + if (!c) + return false; + + ++currIndex; + n = script[currIndex]; + return true; +} + +pawsWidget * pawsScript::FindWidget(pawsWidget * widget, const char * name) +{ + // a better FindWidget that will go back up the parents to really try and find the thing + pawsWidget * ret = 0; + while (!ret && widget) + { + ret = widget->FindWidget(name, false); + widget = widget->GetParent(); + } + return ret; +} + +bool pawsScript::Parse(const char * script) +{ + char c = 0; + char n = 0; + size_t currIndex = 0; + bool openQuotes = false; + csString currToken; + csArray<csString> tokens; + + // SCANNER: creates a list of tokens + while (NextChar(script, currIndex, c, n)) + { + // handle quotation marks; basically anything between two matching quotation marks is a single token + if (c == '\"') + { + openQuotes = !openQuotes; + if (!openQuotes) + { + tokens.Push(currToken); + currToken.Clear(); + } + continue; + } + + // if we're in quotation marks then handle everything + if (openQuotes) + { + currToken += c; + continue; + } + + // whitespace breaks a token, but doesn't get added to a token + if (c == ' ' || c == '\t' || c == '\n' || c == '\r') + { + if (!currToken.IsEmpty()) + { + tokens.Push(currToken); + currToken.Clear(); + } + continue; + } + + // alpha, numeric, and underscores don't break a token + if (isalnum(c) || c == '_') + { + currToken += c; + continue; + } + + // everything else breaks the token and is considered a token by itself + if (!currToken.IsEmpty()) + tokens.Push(currToken); + currToken = c; + tokens.Push(currToken); + currToken.Clear(); + } + + // PARSER: simple parsing that grabs key tokens + size_t a; + size_t len = tokens.GetSize(); + bool onRHS = false; + csArray<pawsScriptResult> lhsResults; + csArray<pawsWidget *> rhsDependencies; + size_t startToken = 0; + for (a=0; a<len; ++a) + { + csString token = tokens[a]; + if (tokens[a] == ":" && onRHS) + { + // check if it's an extra var + bool isExtraVar = PawsManager::GetSingleton().ExtraScriptVars().Lookup(tokens[a-1]) != NULL; + if (!isExtraVar) + { + pawsWidget * dep; + if (tokens[a-1] == "Me" || tokens[a-1] == "me") + dep = widget; + else + dep = FindWidget(widget, tokens[a-1]); + if (!dep) + { + Error2("pawsWidget '%s' referenced in a PAWS Script could not be found\n", tokens[a-1].GetData()); + return false; + } + + // widget names can have bad characters, so just rename all widgets to be safe + tokens[a-1] = "W"; + tokens[a-1] += (unsigned int)rhsDependencies.GetSize(); + + rhsDependencies.Push(dep); + } + } + else if (tokens[a] == '=') + { + onRHS = true; + if (a == startToken+3 && tokens[a-2] == ":") // have 'widget:property' on lhs + { + // keep track of result variable + pawsScriptResult result; + if (tokens[startToken] == "Me" || tokens[startToken] == "me") + result.widget = widget; + else + result.widget = FindWidget(widget, tokens[startToken]); + if (result.widget) + { + result.property = tokens[startToken+2]; + result.var = NULL; + lhsResults.Push(result); + + // rename variable to something mathscript can set + tokens[startToken].Clear(); + tokens[startToken+1].Clear(); + tokens[startToken+2] = "R"; + tokens[startToken+2] += (unsigned int)lhsResults.GetSize()-1; + } + } + } + else if (tokens[a] == ';') + { + if (!onRHS) + { // if we didn't get a rhs then we might have something like 'widget:Blah()', so try to resolve the widget name + for (size_t b=a-1; b>0 && tokens[b] != ';'; --b) + { + if (tokens[b] == ':') + { + pawsWidget * w; + if (tokens[b-1] == "Me" || tokens[b-1] == "me") + w = widget; + else + w = FindWidget(widget, tokens[b-1]); + if (w) + { + tokens[b-1] = "W"; + tokens[b-1] += (unsigned int)rhsDependencies.GetSize(); + rhsDependencies.Push(w); + } + break; + } + } + } + + onRHS = false; + startToken = a+1; + } + } + + csString augmentedScript; + len = tokens.GetSize(); + for (a=0; a<len; ++a) + augmentedScript += tokens[a]; + + statement = new pawsScriptStatement(augmentedScript); + + for (a=0; a<lhsResults.GetSize(); ++a) + { + csString varName = "R"; + varName += (unsigned int)a; + statement->AddLHSResult(lhsResults[a].widget, lhsResults[a].property, varName); + } + for (a=0; a<rhsDependencies.GetSize(); ++a) + { + csString varName = "W"; + varName += (unsigned int)a; + statement->AddRHSVar(rhsDependencies[a], varName); + } + return true; +} + +pawsScript::pawsScript(pawsWidget * widget, const char * script) + : widget(widget) +{ + statement = 0; + scriptText = script; +} + +pawsScript::~pawsScript() +{ + delete statement; +} + +void pawsScript::Execute() +{ + if (!scriptText.IsEmpty()) + { + Parse(scriptText); + scriptText.Clear(); + } + + if (statement) + statement->Execute(); +} Property changes on: trunk/src/common/paws/pawsscript.cpp ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: trunk/src/common/paws/pawsscript.h =================================================================== --- trunk/src/common/paws/pawsscript.h (rev 0) +++ trunk/src/common/paws/pawsscript.h 2010-12-26 02:55:53 UTC (rev 6603) @@ -0,0 +1,69 @@ +/* + * Author: Andrew Robberts + * + * Copyright (C) 2007 Atomic Blue (in...@pl..., http://www.atomicblue.org) + * http://www.atomicblue.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation (version 2 of the License) + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef PAWS_SCRIPT_H +#define PAWS_SCRIPT_H + +#include <csutil/array.h> +#include "util/mathscript.h" + +class pawsWidget; + +struct pawsScriptResult +{ + pawsWidget *widget; + MathVar *var; + csString property; +}; + +class pawsScriptStatement +{ +private: + MathScript * script; + MathEnvironment env; + csArray<pawsScriptResult> scriptResults; + + static void ChangedResultsVarCallback(void * arg); +public: + pawsScriptStatement(const char * script); + void AddLHSResult(pawsWidget * widget, const char * property, const char * name); + void AddRHSVar(iScriptableVar * v, const char * name); + + void Execute(); +}; + +class pawsScript +{ +private: + pawsScriptStatement * statement; + pawsWidget * widget; + csString scriptText; + + bool NextChar(const char * script, size_t & currIndex, char & c, char & n); + bool Parse(const char * script); + + pawsWidget * FindWidget(pawsWidget * widget, const char * name); +public: + pawsScript(pawsWidget * widget, const char * script); + ~pawsScript(); + + void Execute(); +}; + +#endif // PAWS_SCRIPT_H Property changes on: trunk/src/common/paws/pawsscript.h ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2011-01-09 13:51:51
|
Revision: 6737 http://planeshift.svn.sourceforge.net/planeshift/?rev=6737&view=rev Author: weltall2 Date: 2011-01-09 13:51:44 +0000 (Sun, 09 Jan 2011) Log Message: ----------- fixed focus loss on listbox keyboard movements Modified Paths: -------------- trunk/src/common/paws/pawslistbox.cpp trunk/src/common/paws/pawstextbox.cpp trunk/src/common/paws/pawswidget.cpp trunk/src/common/paws/pawswidget.h Modified: trunk/src/common/paws/pawslistbox.cpp =================================================================== --- trunk/src/common/paws/pawslistbox.cpp 2011-01-09 13:22:11 UTC (rev 6736) +++ trunk/src/common/paws/pawslistbox.cpp 2011-01-09 13:51:44 UTC (rev 6737) @@ -765,7 +765,7 @@ //Hide all rows till the one which will be drawn for ( size_t x = 0; x < row; x++ ) - rows[x]->Hide(); + rows[x]->Hide(true); //figure out which ones to draw and position them for ( size_t z = 0; z < numberOfRows; z++ ) @@ -793,7 +793,7 @@ //hide the last rows we don't see for (size_t x = row; x < rows.GetSize(); x++ ) - rows[x]->Hide(); + rows[x]->Hide(true); if (scrollBar) { @@ -1310,6 +1310,7 @@ bool pawsListBoxRow::OnKeyDown(utf32_char keyCode, utf32_char keyChar, int modifiers) { + //give focus to the parentbox to avoid issues when using keys return GetParent()->OnKeyDown(keyCode,keyChar,modifiers); } @@ -1327,6 +1328,7 @@ { return parentBox->OnMouseDown(button, modifiers, x, y); } + //give focus back to the parent (the listbox) return parentBox->Select( this ); } Modified: trunk/src/common/paws/pawstextbox.cpp =================================================================== --- trunk/src/common/paws/pawstextbox.cpp 2011-01-09 13:22:11 UTC (rev 6736) +++ trunk/src/common/paws/pawstextbox.cpp 2011-01-09 13:51:44 UTC (rev 6737) @@ -1344,7 +1344,6 @@ } #endif - return pawsWidget::OnMouseDown( button, modifiers, x ,y); } Modified: trunk/src/common/paws/pawswidget.cpp =================================================================== --- trunk/src/common/paws/pawswidget.cpp 2011-01-09 13:22:11 UTC (rev 6736) +++ trunk/src/common/paws/pawswidget.cpp 2011-01-09 13:51:44 UTC (rev 6737) @@ -917,12 +917,15 @@ RunScriptEvent(PW_SCRIPT_EVENT_SHOW); } -void pawsWidget::Hide() +void pawsWidget::Hide(bool focusParent) { visible = false; if ( border ) border->Hide(); + if(focusParent && Includes(PawsManager::GetSingleton().GetCurrentFocusedWidget())) + PawsManager::GetSingleton().SetCurrentFocusedWidget(parent); + PawsManager::GetSingleton().OnWidgetHidden(this); RunScriptEvent(PW_SCRIPT_EVENT_HIDE); } Modified: trunk/src/common/paws/pawswidget.h =================================================================== --- trunk/src/common/paws/pawswidget.h 2011-01-09 13:22:11 UTC (rev 6736) +++ trunk/src/common/paws/pawswidget.h 2011-01-09 13:51:44 UTC (rev 6737) @@ -400,9 +400,12 @@ /** Makes widget invisible and removes focus if widget has current focus. * Sets visible FALSE, hides border if present and then if focused when - * called it calls SetCurrentFocusedWidget(NULL). + * called it calls SetCurrentFocusedWidget(NULL) or focuses the parent + * depending on the case. + * @param focusParent Determines if this widget should give his focus to + * the parent. */ - virtual void Hide(); + virtual void Hide(bool focusParent = false); /** Simply calls Hide() unless overidden. */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2011-01-09 15:00:52
|
Revision: 6738 http://planeshift.svn.sourceforge.net/planeshift/?rev=6738&view=rev Author: weltall2 Date: 2011-01-09 15:00:46 +0000 (Sun, 09 Jan 2011) Log Message: ----------- repositioned the handling on the listbox Modified Paths: -------------- trunk/src/common/paws/pawslistbox.cpp trunk/src/common/paws/pawslistbox.h trunk/src/common/paws/pawswidget.cpp trunk/src/common/paws/pawswidget.h Modified: trunk/src/common/paws/pawslistbox.cpp =================================================================== --- trunk/src/common/paws/pawslistbox.cpp 2011-01-09 13:51:44 UTC (rev 6737) +++ trunk/src/common/paws/pawslistbox.cpp 2011-01-09 15:00:46 UTC (rev 6738) @@ -765,7 +765,7 @@ //Hide all rows till the one which will be drawn for ( size_t x = 0; x < row; x++ ) - rows[x]->Hide(true); + rows[x]->Hide(); //figure out which ones to draw and position them for ( size_t z = 0; z < numberOfRows; z++ ) @@ -793,7 +793,7 @@ //hide the last rows we don't see for (size_t x = row; x < rows.GetSize(); x++ ) - rows[x]->Hide(true); + rows[x]->Hide(); if (scrollBar) { @@ -1310,7 +1310,6 @@ bool pawsListBoxRow::OnKeyDown(utf32_char keyCode, utf32_char keyChar, int modifiers) { - //give focus to the parentbox to avoid issues when using keys return GetParent()->OnKeyDown(keyCode,keyChar,modifiers); } @@ -1328,7 +1327,6 @@ { return parentBox->OnMouseDown(button, modifiers, x, y); } - //give focus back to the parent (the listbox) return parentBox->Select( this ); } @@ -1440,6 +1438,16 @@ } } +void pawsListBoxRow::Hide() +{ + //check if we are focused or a children is. + //if it's this way to avoid the listbox loosing focus we give focus back to it. + if(Includes(PawsManager::GetSingleton().GetCurrentFocusedWidget())) + PawsManager::GetSingleton().SetCurrentFocusedWidget(parent); + + pawsWidget::Hide(); +} + size_t pawsListBox::GetRowCount() { return rows.GetSize(); Modified: trunk/src/common/paws/pawslistbox.h =================================================================== --- trunk/src/common/paws/pawslistbox.h 2011-01-09 13:51:44 UTC (rev 6737) +++ trunk/src/common/paws/pawslistbox.h 2011-01-09 15:00:46 UTC (rev 6738) @@ -100,6 +100,11 @@ /// Heading rows exist within the list but are not clickable void SetHeading(bool flag); + /** Handles hiding of the row. Used to give focus back to the list box + * before hiding + */ + void Hide(); + bool IsHeading() { return isHeading; } private: /// Store whether this row should be a heading or not Modified: trunk/src/common/paws/pawswidget.cpp =================================================================== --- trunk/src/common/paws/pawswidget.cpp 2011-01-09 13:51:44 UTC (rev 6737) +++ trunk/src/common/paws/pawswidget.cpp 2011-01-09 15:00:46 UTC (rev 6738) @@ -917,15 +917,12 @@ RunScriptEvent(PW_SCRIPT_EVENT_SHOW); } -void pawsWidget::Hide(bool focusParent) +void pawsWidget::Hide() { visible = false; if ( border ) border->Hide(); - if(focusParent && Includes(PawsManager::GetSingleton().GetCurrentFocusedWidget())) - PawsManager::GetSingleton().SetCurrentFocusedWidget(parent); - PawsManager::GetSingleton().OnWidgetHidden(this); RunScriptEvent(PW_SCRIPT_EVENT_HIDE); } Modified: trunk/src/common/paws/pawswidget.h =================================================================== --- trunk/src/common/paws/pawswidget.h 2011-01-09 13:51:44 UTC (rev 6737) +++ trunk/src/common/paws/pawswidget.h 2011-01-09 15:00:46 UTC (rev 6738) @@ -400,12 +400,9 @@ /** Makes widget invisible and removes focus if widget has current focus. * Sets visible FALSE, hides border if present and then if focused when - * called it calls SetCurrentFocusedWidget(NULL) or focuses the parent - * depending on the case. - * @param focusParent Determines if this widget should give his focus to - * the parent. + * called it calls SetCurrentFocusedWidget(NULL). */ - virtual void Hide(bool focusParent = false); + virtual void Hide(); /** Simply calls Hide() unless overidden. */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2011-01-22 19:18:59
|
Revision: 6824 http://planeshift.svn.sourceforge.net/planeshift/?rev=6824&view=rev Author: weltall2 Date: 2011-01-22 19:18:53 +0000 (Sat, 22 Jan 2011) Log Message: ----------- improvement to the config window handling. now pressing the x to close it will restore the previous settings. Also activating it when already open will avoid doing anything. Modified Paths: -------------- trunk/src/common/paws/pawswidget.cpp trunk/src/common/paws/widgetconfigwindow.cpp trunk/src/common/paws/widgetconfigwindow.h Modified: trunk/src/common/paws/pawswidget.cpp =================================================================== --- trunk/src/common/paws/pawswidget.cpp 2011-01-22 18:55:50 UTC (rev 6823) +++ trunk/src/common/paws/pawswidget.cpp 2011-01-22 19:18:53 UTC (rev 6824) @@ -1431,7 +1431,7 @@ // there can only be one config window active for each widget WidgetConfigWindow* configWindow = dynamic_cast<WidgetConfigWindow*>(widget); - if ( widget ==NULL) + if(widget == NULL) { configWindow = new WidgetConfigWindow(); configWindow->LoadFromFile("widgetconfigwindow.xml"); Modified: trunk/src/common/paws/widgetconfigwindow.cpp =================================================================== --- trunk/src/common/paws/widgetconfigwindow.cpp 2011-01-22 18:55:50 UTC (rev 6823) +++ trunk/src/common/paws/widgetconfigwindow.cpp 2011-01-22 19:18:53 UTC (rev 6824) @@ -120,6 +120,16 @@ } +void WidgetConfigWindow::restoreSettings() +{ + // restore settings + configWidget->SetMinAlpha((int)oldMinAlpha); + configWidget->SetMaxAlpha((int)oldMaxAlpha); + configWidget->SetFadeSpeed(oldFadeSpeed); + configWidget->SetFade(oldFadeStatus); + configWidget->SetFontScaling(oldFontStatus); +} + /** * @brief Handle all button presses. */ @@ -138,16 +148,9 @@ } else if (widget == buttonCancel) { - // restore settings - configWidget->SetMinAlpha((int)oldMinAlpha); - configWidget->SetMaxAlpha((int)oldMaxAlpha); - configWidget->SetFadeSpeed(oldFadeSpeed); - configWidget->SetFade(oldFadeStatus); - configWidget->SetFontScaling(oldFontStatus); - - // close this window - //PawsManager::GetSingleton().GetMainWidget()->DeleteChild(this); - Hide(); + //just act like if the user closed the window. + //it will restore the previous settings and hide the widget. + Close(); return true; } else if (widget == checkboxFade) @@ -192,6 +195,14 @@ */ void WidgetConfigWindow::SetConfigurableWidget(pawsWidget *configWidget) { + //if it's the same widget we ignore the input we are already open with this. + if(this->configWidget == configWidget) + return; + //if we were working on a different widget we restore the previous widget setting + //before proceeding. + else if(this->configWidget != NULL) + restoreSettings(); + this->configWidget = configWidget; // get new values @@ -220,12 +231,12 @@ oldFontStatus = currentFontStatus; oldFadeStatus = currentFadeStatus; + scrollBarMaxAlpha->SetCurrentValue(currentMaxAlpha); + progressBarMaxAlpha->SetCurrentValue(currentMaxAlpha); + scrollBarMinAlpha->SetCurrentValue(currentMinAlpha); progressBarMinAlpha->SetCurrentValue(currentMinAlpha); - scrollBarMaxAlpha->SetCurrentValue(currentMaxAlpha); - progressBarMaxAlpha->SetCurrentValue(currentMaxAlpha); - scrollBarFadeSpeed->SetCurrentValue(currentFadeSpeed); progressBarFadeSpeed->SetCurrentValue(currentFadeSpeed); Modified: trunk/src/common/paws/widgetconfigwindow.h =================================================================== --- trunk/src/common/paws/widgetconfigwindow.h 2011-01-22 18:55:50 UTC (rev 6823) +++ trunk/src/common/paws/widgetconfigwindow.h 2011-01-22 19:18:53 UTC (rev 6824) @@ -43,6 +43,13 @@ bool PostSetup(); bool OnScroll( int direction, pawsScrollBar* widget ); bool OnButtonPressed( int mouseButton, int keyModifier, pawsWidget* widget ); + /** Restores the settings of the widget being configured to their previous values. + */ + void restoreSettings(); + /** Overrides the pawsWidget Close() in order to restore settings and null out + * the widget being configured. + */ + void Close() { restoreSettings(); configWidget = NULL; Hide(); } void SetConfigurableWidget(pawsWidget* w); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2011-02-12 17:39:05
|
Revision: 6914 http://planeshift.svn.sourceforge.net/planeshift/?rev=6914&view=rev Author: weltall2 Date: 2011-02-12 17:38:59 +0000 (Sat, 12 Feb 2011) Log Message: ----------- moved the drag and drop support in pawsmouse Modified Paths: -------------- trunk/src/common/paws/pawsmanager.cpp trunk/src/common/paws/pawsmanager.h trunk/src/common/paws/pawsmouse.cpp trunk/src/common/paws/pawsmouse.h Modified: trunk/src/common/paws/pawsmanager.cpp =================================================================== --- trunk/src/common/paws/pawsmanager.cpp 2011-02-12 16:20:55 UTC (rev 6913) +++ trunk/src/common/paws/pawsmanager.cpp 2011-02-12 17:38:59 UTC (rev 6914) @@ -703,7 +703,6 @@ bool PawsManager::HandleMouseMove( csMouseEventData &data ) { mouse->SetPosition( data.x, data.y ); - PositionDragDropWidget(); timeOver = csGetTicks(); @@ -800,10 +799,7 @@ mouseoverWidget->DrawToolTip(mouse->GetPosition().x, mouse->GetPosition().y); } - if (dragDropWidget == NULL) - mouse->Draw(); - else - dragDropWidget->Draw(); + mouse->Draw(); } void PawsManager::Draw3D() @@ -1146,20 +1142,9 @@ if (PawsManager::dragDropWidget != NULL) delete PawsManager::dragDropWidget; PawsManager::dragDropWidget = dragDropWidget; - PositionDragDropWidget(); + mouse->UpdateDragPosition(); } -void PawsManager::PositionDragDropWidget() -{ - if (dragDropWidget != NULL) - { - csRect frame = dragDropWidget->ScreenFrame(); - psPoint mousePos = mouse->GetPosition(); - dragDropWidget->MoveTo(mousePos.x - frame.Width()/2, mousePos.y - frame.Height()/2); - } -} - - #define RegisterFactory(factoryclass) \ factory = new factoryclass(); Modified: trunk/src/common/paws/pawsmanager.h =================================================================== --- trunk/src/common/paws/pawsmanager.h 2011-02-12 16:20:55 UTC (rev 6913) +++ trunk/src/common/paws/pawsmanager.h 2011-02-12 17:38:59 UTC (rev 6914) @@ -360,11 +360,6 @@ psPoint MouseLocation( iEvent &ev ); - /** Sets position of the dragDropWidget (if there is one) to the position - * of the mouse cursor. - */ - void PositionDragDropWidget(); - /// VFS Mount directory mapping to the specified skin zip file csString vfsPathToSkin; Modified: trunk/src/common/paws/pawsmouse.cpp =================================================================== --- trunk/src/common/paws/pawsmouse.cpp 2011-02-12 16:20:55 UTC (rev 6913) +++ trunk/src/common/paws/pawsmouse.cpp 2011-02-12 17:38:59 UTC (rev 6914) @@ -33,6 +33,7 @@ #include "pawsmanager.h" #include "pawstexturemanager.h" #include "pawsimagedrawable.h" +#include "pawswidget.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction @@ -65,8 +66,21 @@ currentPosition.x = x; currentPosition.y = y; + + UpdateDragPosition(); } +void pawsMouse::UpdateDragPosition() +{ + //update the drag and drop widget if any + pawsWidget *widget = PawsManager::GetSingleton().GetDragDropWidget(); + if(widget) + { + csRect frame = widget->ScreenFrame(); + widget->MoveTo(currentPosition.x - frame.Width()/2, currentPosition.y - frame.Height()/2); + } +} + void pawsMouse::ChangeImage( const char* imageName ) { if(basicCursor) @@ -126,7 +140,10 @@ void pawsMouse::Draw() { - if (!useOS && !hidden && cursorImage) + pawsWidget *widget = PawsManager::GetSingleton().GetDragDropWidget(); + if(widget) + widget->Draw(); + else if (!useOS && !hidden && cursorImage) cursorImage->Draw(currentPosition.x , currentPosition.y ); if (crosshair && crosshairImage) crosshairImage->Draw( graphics3D->GetDriver2D()->GetWidth() / 2, graphics3D->GetDriver2D()->GetHeight() / 2 ); Modified: trunk/src/common/paws/pawsmouse.h =================================================================== --- trunk/src/common/paws/pawsmouse.h 2011-02-12 16:20:55 UTC (rev 6913) +++ trunk/src/common/paws/pawsmouse.h 2011-02-12 17:38:59 UTC (rev 6914) @@ -43,6 +43,9 @@ /// Set the absolute screen position for mouse. void SetPosition( int x, int y ); + + /// Updates the position of the dragged widget if any. + void UpdateDragPosition(); /// Get the absolute position. psPoint GetPosition() { return currentPosition; } @@ -55,6 +58,7 @@ */ void ChangeImage( const char* imageName ); void ChangeImage(csRef<iPawsImage> drawable); + void Draw(); void Hide(bool h = true); void WantCrosshair(bool h = true) { crosshair = h; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2011-03-06 12:22:32
|
Revision: 7053 http://planeshift.svn.sourceforge.net/planeshift/?rev=7053&view=rev Author: weltall2 Date: 2011-03-06 12:22:26 +0000 (Sun, 06 Mar 2011) Log Message: ----------- improvements to color handling and comment expansions Modified Paths: -------------- trunk/src/common/paws/pawswidget.cpp trunk/src/common/paws/pawswidget.h Modified: trunk/src/common/paws/pawswidget.cpp =================================================================== --- trunk/src/common/paws/pawswidget.cpp 2011-03-06 12:19:45 UTC (rev 7052) +++ trunk/src/common/paws/pawswidget.cpp 2011-03-06 12:22:26 UTC (rev 7053) @@ -2521,7 +2521,10 @@ void pawsWidget::SetColour( int newColour ) { - if ( newColour != -1 ) + //-2 means we get the default color from the settings, + //else we set the not set color (so that we get the value from the parents, like what + //happens when nothing is defined or requested) + if ( newColour != -2 ) { defaultFontColour = newColour; } Modified: trunk/src/common/paws/pawswidget.h =================================================================== --- trunk/src/common/paws/pawswidget.h 2011-03-06 12:19:45 UTC (rev 7052) +++ trunk/src/common/paws/pawswidget.h 2011-03-06 12:22:26 UTC (rev 7053) @@ -1164,8 +1164,14 @@ */ csRect ClipRect() { return clipRect; } - /// Set text color. - void SetColour( int newColour = -1 ); + /** Set text color. + * @param newColour The colour to use from now on for this widget. + * If it's -1 it will make the selection at runtime + * (by checking first the parent then the default colour) + * If it's -2 (default) it will make the choice upon + * this call by setting the default color. + */ + void SetColour( int newColour = -2 ); /// Set font to use programmatically. void SetFont( const char* fontName, int Size=0 ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2011-03-25 12:09:58
|
Revision: 7107 http://planeshift.svn.sourceforge.net/planeshift/?rev=7107&view=rev Author: weltall2 Date: 2011-03-25 12:09:51 +0000 (Fri, 25 Mar 2011) Log Message: ----------- removed some static members Modified Paths: -------------- trunk/src/common/paws/pawsmanager.cpp trunk/src/common/paws/pawsmanager.h Modified: trunk/src/common/paws/pawsmanager.cpp =================================================================== --- trunk/src/common/paws/pawsmanager.cpp 2011-03-25 11:44:32 UTC (rev 7106) +++ trunk/src/common/paws/pawsmanager.cpp 2011-03-25 12:09:51 UTC (rev 7107) @@ -1,5 +1,5 @@ /* - * pspawsmanger.cpp - Author: Andrew Craig + * pawsmanger.cpp - Author: Andrew Craig * * Copyright (C) 2003 Atomic Blue (in...@pl..., http://www.atomicblue.org) * @@ -93,20 +93,11 @@ #define min(a,b) (((a) < (b)) ? (a) : (b)) #endif - ////////////////////////////////////////////////////////////////////// -// DEFINITION OF STATIC VARIABLES -////////////////////////////////////////////////////////////////////// -csString PawsManager::CONFIG_TOOLTIPS_FILE_NAME_SKIN = ""; -int PawsManager::ToolTipEnable = 0; -int PawsManager::ToolTipEnableBgColor = 0; -int PawsManager::TooltipsColors[3]; - - -////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// -PawsManager::PawsManager(iObjectRegistry* object, const char* skin, const char* skinBase) : render2texture(false) +PawsManager::PawsManager(iObjectRegistry* object, const char* skin, const char* skinBase) : + ToolTipEnable(true), ToolTipEnableBgColor(false), render2texture(false) { objectReg = object; @@ -466,12 +457,11 @@ textureManager->LoadImageList(imageFile); // Load tooltip settings from file - CONFIG_TOOLTIPS_FILE_NAME_SKIN = vfsPathToSkin + "tooltips.xml"; // Check if custom tooltips.xml was created. If not load defaults from skin.zip or data/options. - if( vfs->Exists(CONFIG_TOOLTIPS_FILE_NAME) ) + if(vfs->Exists(CONFIG_TOOLTIPS_FILE_NAME)) LoadTooltips(CONFIG_TOOLTIPS_FILE_NAME); // custom file - else if (vfs->Exists(CONFIG_TOOLTIPS_FILE_NAME_SKIN)) - LoadTooltips(CONFIG_TOOLTIPS_FILE_NAME_SKIN); // skin.zip + else if (vfs->Exists(GetLocalization()->FindLocalizedFile("tooltips.xml"))) + LoadTooltips(GetLocalization()->FindLocalizedFile("tooltips.xml")); // skin.zip else LoadTooltips(CONFIG_TOOLTIPS_FILE_NAME_DEF); // data/options @@ -1653,4 +1643,9 @@ } } return true; -} \ No newline at end of file +} + +csString PawsManager::getToolTipSkinPath() +{ + return GetLocalization()->FindLocalizedFile("tooltips.xml"); +} Modified: trunk/src/common/paws/pawsmanager.h =================================================================== --- trunk/src/common/paws/pawsmanager.h 2011-03-25 11:44:32 UTC (rev 7106) +++ trunk/src/common/paws/pawsmanager.h 2011-03-25 12:09:51 UTC (rev 7107) @@ -299,14 +299,14 @@ /* ToolTips Functions/Variables ------------------------------------------------------------------------*/ - static int TooltipsColors[]; /// array of colors - static int ToolTipEnable, ToolTipEnableBgColor; - static csString CONFIG_TOOLTIPS_FILE_NAME_SKIN; + int TooltipsColors[3]; ///< Array of tooltip colors + int ToolTipEnable; ///< Sets if the tooltip should be enable + int ToolTipEnableBgColor; ///< Sets if the tooltip should have a bgcolor /// Loads the Tooltips config-file bool LoadTooltips(const char* fileName); /// returns the full path to the tooltips.xml in skin.zip - csString getToolTipSkinPath() { return CONFIG_TOOLTIPS_FILE_NAME_SKIN; }; + csString getToolTipSkinPath(); /// returns tooltips enabled/disabled int getToolTipEnable() { return ToolTipEnable; }; /// changes tooltips enabled/disabled This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2011-04-16 19:19:26
|
Revision: 7148 http://planeshift.svn.sourceforge.net/planeshift/?rev=7148&view=rev Author: weltall2 Date: 2011-04-16 19:19:19 +0000 (Sat, 16 Apr 2011) Log Message: ----------- style fixes Modified Paths: -------------- trunk/src/common/paws/pawslistbox.cpp trunk/src/common/paws/pawslistbox.h Modified: trunk/src/common/paws/pawslistbox.cpp =================================================================== --- trunk/src/common/paws/pawslistbox.cpp 2011-04-16 16:49:34 UTC (rev 7147) +++ trunk/src/common/paws/pawslistbox.cpp 2011-04-16 19:19:19 UTC (rev 7148) @@ -21,7 +21,7 @@ #include <ivideo/fontserv.h> #include <iutil/document.h> #include <csutil/xmltiny.h> -#include <csutil/documenthelper.h> +#include <csutil/documenthelper.h> #include <iutil/virtclk.h> #include <iutil/event.h> #include "pawslistbox.h" @@ -125,7 +125,7 @@ rows.DeleteAll(); totalRows = 0; - if (scrollBar) + if (scrollBar) scrollBar->Hide(); if (horzscrollBar) horzscrollBar->Hide(); @@ -164,7 +164,7 @@ cInfo.height = GetActualHeight(columnHeight); cInfo.xmlbinding = colNode->GetAttributeValue("xmlbinding"); cInfo.sortable = colNode->GetAttributeValueAsBool("sortable", true); - + cInfo.widgetNode = colNode->GetNode("widget"); if (!cInfo.widgetNode) { @@ -194,7 +194,7 @@ } columnDef = new ColumnDef[totalColumns]; for (int i = 0; i < totalColumns; i++) - { + { columnDef[i] = colInfo[i]; } @@ -439,7 +439,7 @@ pawsListBoxRow* newRow = new pawsListBoxRow(); newRow->SetParent( this ); - // Here we automatically resize the row to be the width of the parent listbox, so the row can reference that when adding columns + // Here we automatically resize the row to be the width of the parent listbox, so the row can reference that when adding columns newRow->SetRelativeFrame( 0 ,(totalRows+1)*GetActualHeight(columnHeight), parent->GetActualWidth(), GetActualHeight(columnHeight));//GetActualHeight(columnHeight) ); for ( int x = 0; x < totalColumns; x++ ) @@ -483,7 +483,7 @@ CalculateDrawPositions(); newRow->SetBackground("Standard Background"); newRow->SetBackgroundAlpha(255); - + return newRow; } pawsListBoxRow* pawsListBox::NewTextBoxRow( csList<csString> &rowEntry,size_t position ) @@ -491,7 +491,7 @@ pawsListBoxRow* newRow = new pawsListBoxRow(); newRow->SetParent( this ); - // Here we automatically resize the row to be the width of the parent listbox, so the row can reference that when adding columns + // Here we automatically resize the row to be the width of the parent listbox, so the row can reference that when adding columns newRow->SetRelativeFrame( 0 ,(totalRows+1)*GetActualHeight(columnHeight), parent->GetActualWidth(), GetActualHeight(columnHeight));//GetActualHeight(columnHeight) ); for ( int x = 0; x < totalColumns; x++ ) @@ -537,7 +537,7 @@ CalculateDrawPositions(); newRow->SetBackground("Standard Background"); newRow->SetBackgroundAlpha(255); - + SortRows(); return newRow; } @@ -1285,15 +1285,15 @@ const char *pawsListBox::GetSelectedText(size_t columnId) { - pawsListBoxRow *row = GetSelectedRow(); - if (!row) - return NULL; + pawsListBoxRow *row = GetSelectedRow(); + if (!row) + return NULL; - pawsTextBox *box = (pawsTextBox *)GetSelectedRow()->GetColumn(columnId); - if (!box) - return NULL; + pawsTextBox *box = (pawsTextBox *)GetSelectedRow()->GetColumn(columnId); + if (!box) + return NULL; - return box->GetText(); + return box->GetText(); } //----------------------------------------------------------------------------- @@ -1384,10 +1384,10 @@ for ( int x = 0; x < column; x++ ) offset += children[x]->GetActualWidth(); - // Adjust this column width by the percentage growth of this column on the screen compared to original spec in file - float w = this->screenFrame.Width(); - w /= GetLogicalWidth(screenFrame.Width()); - int myWidth = int(def[column].width * w); + // Adjust this column width by the percentage growth of this column on the screen compared to original spec in file + float w = this->screenFrame.Width(); + w /= GetLogicalWidth(screenFrame.Width()); + int myWidth = int(def[column].width * w); widget->SetRelativeFrame( offset+borderW+widget->DefaultFrame().xmin, borderH+widget->DefaultFrame().ymin, GetActualWidth(myWidth), GetActualHeight(def[column].height) ); Modified: trunk/src/common/paws/pawslistbox.h =================================================================== --- trunk/src/common/paws/pawslistbox.h 2011-04-16 16:49:34 UTC (rev 7147) +++ trunk/src/common/paws/pawslistbox.h 2011-04-16 19:19:19 UTC (rev 7148) @@ -38,7 +38,7 @@ // struct ColumnInfo //----------------------------------------------------------------------------- -/** Defines the structure of the list box table. +/** Defines the structure of the list box table. * This describes how a column is defined. The height should be constant across * all the columns for a particular table. */ @@ -50,19 +50,19 @@ sortFunc = NULL; sortable = true; } - + int width; int height; csRef<iDocumentNode> widgetNode; /// Passed to new column widgets to create csString xmlbinding; bool sortable; - + listBoxSortingFunc sortFunc; /// Function used for comparing rows when sorting the listbox }; #define LISTBOX_HIGHLIGHTED 0x01 /// Single click event -#define LISTBOX_SELECTED 0x02 +#define LISTBOX_SELECTED 0x02 //----------------------------------------------------------------------------- // class pawsListBoxRow @@ -123,42 +123,42 @@ #define LISTBOX_MOUSE_SCROLL_AMOUNT 3 /** A simple list box widget. - * A list box is made up a list of another type of widgets called - * pawsListBoxRows. Each row is then made up of several widgets that - * constitue a 'row'. So a row may be a textbox, image, button. + * A list box is made up a list of another type of widgets called + * pawsListBoxRows. Each row is then made up of several widgets that + * constitue a 'row'. So a row may be a textbox, image, button. * - * This is how a list box is defined in XML. You define the basic layout + * This is how a list box is defined in XML. You define the basic layout * of it and how each column in the rows should be constructed. If you use * the autoid="yes" every widget in the listbox will have an * id=ListBoxID+ row*numberOfColumns+coloum: - - <widget name="PetitionList" factory="pawsListBox" xmlbinding="petition_list" id="0" autoid="yes" sortBy="2" sortOrder="asc" > + + <widget name="PetitionList" factory="pawsListBox" xmlbinding="petition_list" id="0" autoid="yes" sortBy="2" sortOrder="asc" > Size of entire list box <frame x="4" y="34" width="592" height="288" border="yes"/> - + Each row in the list box will be 32 high <columns height="32" xmlbinding="p"> - + define a column that is 140 wide. The first column of any row - will be a textbox widget as defined by the <widget></widget> class - <column width="140" xmlbinding="GM"> + will be a textbox widget as defined by the <widget></widget> class + <column width="140" xmlbinding="GM"> <widget name="GM" factory="pawsTextBox"></widget> - </column> - + </column> + define other columns: - <column width="150" xmlbinding="stat"> + <column width="150" xmlbinding="stat"> <widget name="Status" factory="pawsWidget"> <bgimage resource="Funny" /> </widget> - </column> - - <column width="302" xmlbinding="pet"> + </column> + + <column width="302" xmlbinding="pet"> <widget name="Petition" factory="pawsTextBox"></widget> - </column> + </column> </columns> </widget> - + */ class pawsListBox : public pawsWidget { @@ -177,16 +177,16 @@ /// Get selected row pawsListBoxRow* GetSelectedRow(); - - /// Get text from specified column in the selected row - const char *GetSelectedText(size_t columnId); + /// Get text from specified column in the selected row + const char *GetSelectedText(size_t columnId); + /// Returns number of selected row (-1 if none is selected) int GetSelectedRowNum(); /// Remove selected row pawsListBoxRow* RemoveSelected(); - + /// Remove based on widget id. Note this also deletes the row. void Remove( int id ); @@ -197,12 +197,12 @@ /// Get number of rows in listboz size_t GetRowCount(); - + /// Get a particular row pawsListBoxRow* GetRow( size_t x ); /// Creates a new row ( default at the end ) and returns a pointer to it. - pawsListBoxRow* NewRow( size_t position = (size_t)-1 ); + pawsListBoxRow* NewRow( size_t position = (size_t)-1 ); /// Creates a new row ( default at the end ) filled by values from rowEntry and returns a pointer to it. pawsListBoxRow* NewTextBoxRow( csList<csString> &rowEntry,size_t position = (size_t)-1 ); @@ -222,25 +222,25 @@ bool OnScroll( int direction, pawsScrollBar* widget ); - bool OnMouseDown(int button, int modifiers, int x, int y ); + bool OnMouseDown(int button, int modifiers, int x, int y ); int GetTotalColumns() { return totalColumns; } - + /** Set how many columns this list box will have. - * This is usually for code constructed list boxes and creates a new + * This is usually for code constructed list boxes and creates a new * set of column definitions. */ void SetTotalColumns( int numCols ); - + /** Set how a column should be constructed. - * This is usuall used for code constructed list boxes. + * This is usuall used for code constructed list boxes. *@param col The column number *@param height The height of what rows should be. - *@param widgetDesc This is an XML description of the widget. Much the same as you - would find in the .xml files. + *@param widgetDesc This is an XML description of the widget. Much the same as you + would find in the .xml files. */ void SetColumnDef( int col, int width, int height, const char* widgetDesc ); - + void UseTitleRow( bool yes ); /** @@ -260,18 +260,18 @@ */ bool ConvertFromAutoID(int id, int &row, int &col); - /** + /** * Moves the select bar up (direction=true) or down (direction=false). */ void MoveSelectBar(bool direction); - void CalculateDrawPositions(); - + void CalculateDrawPositions(); + /** When enter is pressed the highlighted row will be selected * and the widget will be notified */ bool OnKeyDown(utf32_char keyCode, utf32_char keyChar, int modifiers); - + void Resize(); /** Sets the widget that will be notified when a row is selected. @@ -279,17 +279,17 @@ * to the parent widget */ void SetNotify(pawsWidget* target){notifyTarget = target;}; - + /** * Gets and sets the column that the listbox is sorted by. * Number -1 means no sorting, in both cases. */ int GetSortedColumn(); void SetSortedColumn(int colNum); - + bool GetSortOrder(); void SetSortOrder(bool ascOrder); - + /** * Sets the function that compares listbox rows when sorting by given column. * This makes the column sortable. @@ -305,10 +305,10 @@ /** Returns listbox cell of type pawsTextBox or NULL (when the cell does not exist or it is another type) */ pawsTextBox * GetTextCell(int rowNum, int colNum); - + /** Returns value of cell of type pawsTextBox */ csString GetTextCellValue(int rowNum, int colNum); - + /** Sets value of cell of type pawsTextBox */ void SetTextCellValue(int rowNum, int colNum, const csString & value); @@ -323,12 +323,12 @@ void SetSortingArrow(int colNum, bool ascOrder); void CheckSortingArrow(int colNum, bool ascOrder); void DeleteSortingArrow(int colNum); - + pawsWidget * GetColumnTitle(int colNum); - + bool usingTitleRow; - + pawsScrollBar* scrollBar; pawsScrollBar* horzscrollBar; @@ -351,10 +351,10 @@ csArray<pawsListBoxRow*> rows; pawsListBoxRow* titleRow; csString xmlbinding_row; - + int sortColNum; // number of sorted column (or -1) bool ascOrder; - + /** * This is static function that is used as argument to qsort() and a few variables that influence * how this function works. @@ -379,4 +379,4 @@ CREATE_PAWS_FACTORY ( pawsListBox ); -#endif +#endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |