suggest a better name :)), triggered by a double click.
Very kewl to change the layout...
CtrlImage::CtrlImage( intf_thread_t *pIntf, const GenericBitmap &rBitmap,
- resize_t resizeMethod, const UString &rHelp,
- VarBool *pVisible ):
+ CmdGeneric &rCommand, resize_t resizeMethod,
+ const UString &rHelp, VarBool *pVisible ):
CtrlFlat( pIntf, rHelp, pVisible ), m_rBitmap( rBitmap ),
- m_resizeMethod( resizeMethod )
+ m_rCommand( rCommand ), m_resizeMethod( resizeMethod )
{
OSFactory *pOsFactory = OSFactory::instance( pIntf );
// Create an initial unscaled image in the buffer
CmdDlgHidePopupMenu cmd( getIntf() );
cmd.execute();
}
-
+ else if( rEvent.getAsString() == "mouse:left:dblclick:none" )
+ {
+ m_rCommand.execute();
+ }
}
if( m_resizeMethod == kScale )
{
// Use scaling method
- if( width != m_pImage->getWidth() ||
- height != m_pImage->getHeight() )
+ if( width != m_pImage->getWidth() ||
+ height != m_pImage->getHeight() )
{
OSFactory *pOsFactory = OSFactory::instance( getIntf() );
// Rescale the image with the actual size of the control
class GenericBitmap;
class OSGraphics;
+class CmdGeneric;
/// Control image
// Create an image with the given bitmap (which is NOT copied)
CtrlImage( intf_thread_t *pIntf, const GenericBitmap &rBitmap,
- resize_t resizeMethod, const UString &rHelp,
- VarBool *pVisible );
+ CmdGeneric &rCommand, resize_t resizeMethod,
+ const UString &rHelp, VarBool *pVisible );
virtual ~CtrlImage();
/// Handle an event on the control
const GenericBitmap &m_rBitmap;
/// Buffer to stored the rendered bitmap
OSGraphics *m_pImage;
+ /// Command triggered by a double-click on the image
+ CmdGeneric &m_rCommand;
/// Resize method
resize_t m_resizeMethod;
};
return;
}
+ CmdGeneric *pCommand = parseAction( rData.m_action2Id );
+ if( pCommand == NULL )
+ {
+ msg_Err( getIntf(), "Invalid action: %s", rData.m_action2Id.c_str() );
+ return;
+ }
+
// Get the visibility variable
// XXX check when it is null
Interpreter *pInterpreter = Interpreter::instance( getIntf() );
CtrlImage::resize_t resizeMethod =
(rData.m_resize == "scale" ? CtrlImage::kScale : CtrlImage::kMosaic);
- CtrlImage *pImage = new CtrlImage( getIntf(), *pBmp, resizeMethod,
- UString( getIntf(), rData.m_help.c_str() ), pVisible );
+ CtrlImage *pImage = new CtrlImage( getIntf(), *pBmp, *pCommand,
+ resizeMethod, UString( getIntf(), rData.m_help.c_str() ), pVisible );
// Compute the position of the control
const Position pos = makePosition( rData.m_leftTop, rData.m_rightBottom,
Anchor xPos:int yPos:int range:int priority:int points:string layoutId:string
Button id:string xPos:int yPos:int leftTop:string rightBottom:string visible:string upId:string downId:string overId:string actionId:string tooltip:string help:string layer:int windowId:string layoutId:string
Checkbox id:string xPos:int yPos:int leftTop:string rightBottom:string visible:string up1Id:string down1Id:string over1Id:string up2Id:string down2Id:string over2Id:string state:string action1:string action2:string tooltip1:string tooltip2:string help:string layer:int windowId:string layoutId:string
-Image id:string xPos:int yPos:int leftTop:string rightBottom:string visible:string bmpId:string actionId:string resize:string help:string layer:int windowId:string layoutId:string
+Image id:string xPos:int yPos:int leftTop:string rightBottom:string visible:string bmpId:string actionId:string action2Id:string resize:string help:string layer:int windowId:string layoutId:string
Text id:string xPos:int yPos:int visible:string fontId:string text:string width:int leftTop:string rightBottom:string color:uint32_t scrolling:string alignment:string help:string layer:int windowId:string layoutId:string
RadialSlider id:string visible:string xPos:int yPos:int leftTop:string rightBottom:string sequence:string nbImages:int minAngle:float maxAngle:float value:string tooltip:string help:string layer:int windowId:string layoutId:string
Slider id:string visible:string xPos:int yPos:int leftTop:string rightBottom:string upId:string downId:string overId:string points:string thickness:int value:string imageId:string nbHoriz:int nbVert:int padHoriz:int padVert:int tooltip:string help:string layer:int windowId:string layoutId:string
/// Type definition
struct Image
{
- Image( const string & id, int xPos, int yPos, const string & leftTop, const string & rightBottom, const string & visible, const string & bmpId, const string & actionId, const string & resize, const string & help, int layer, const string & windowId, const string & layoutId ):
-m_id( id ), m_xPos( xPos ), m_yPos( yPos ), m_leftTop( leftTop ), m_rightBottom( rightBottom ), m_visible( visible ), m_bmpId( bmpId ), m_actionId( actionId ), m_resize( resize ), m_help( help ), m_layer( layer ), m_windowId( windowId ), m_layoutId( layoutId ) {}
+ Image( const string & id, int xPos, int yPos, const string & leftTop, const string & rightBottom, const string & visible, const string & bmpId, const string & actionId, const string & action2Id, const string & resize, const string & help, int layer, const string & windowId, const string & layoutId ):
+m_id( id ), m_xPos( xPos ), m_yPos( yPos ), m_leftTop( leftTop ), m_rightBottom( rightBottom ), m_visible( visible ), m_bmpId( bmpId ), m_actionId( actionId ), m_action2Id( action2Id ), m_resize( resize ), m_help( help ), m_layer( layer ), m_windowId( windowId ), m_layoutId( layoutId ) {}
string m_id;
int m_xPos;
string m_visible;
string m_bmpId;
string m_actionId;
+ string m_action2Id;
string m_resize;
string m_help;
int m_layer;
CheckDefault( "lefttop", "lefttop" );
CheckDefault( "rightbottom", "lefttop" );
CheckDefault( "action", "none" );
+ CheckDefault( "action2", "none" );
CheckDefault( "resize", "mosaic" );
CheckDefault( "help", "" );
const BuilderData::Image imageData( uniqueId( attr["id"] ),
atoi( attr["x"] ) + m_xOffset, atoi( attr["y"] ) + m_yOffset,
attr["lefttop"], attr["rightbottom"], attr["visible"],
- attr["image"], attr["action"], attr["resize"], attr["help"],
- m_curLayer, m_curWindowId, m_curLayoutId );
+ attr["image"], attr["action"], attr["action2"], attr["resize"],
+ attr["help"], m_curLayer, m_curWindowId, m_curLayoutId );
m_curLayer++;
m_pData->m_listImage.push_back( imageData );
}
rightbottom CDATA "lefttop"
image CDATA #REQUIRED
action CDATA "none"
+ action CDATA "none2"
resize CDATA "mosaic"
help CDATA ""
>