// Data transfert from  properties frame to item parameters
bool PROPERTIES_FRAME::CopyPrmsFromPanelToItem( WORKSHEET_DATAITEM* aItem )
{
    if( aItem == NULL )
        return false;

    double dtmp;
    wxString msg;

    // Import common parameters:
    aItem->m_Info = m_textCtrlComment->GetValue();

    switch( m_choicePageOpt->GetSelection() )
    {
    default:
    case 0:
        aItem->SetPage1Option( 0 );
        break;

    case 1:
        aItem->SetPage1Option( 1 );
        break;

    case 2:
        aItem->SetPage1Option( -1 );
        break;
    }

    // Import thickness
    msg = m_textCtrlThickness->GetValue();
    msg.ToDouble( &dtmp );
    aItem->m_LineWidth = dtmp;

    // Import Start point
    msg = m_textCtrlPosX->GetValue();
    msg.ToDouble( &dtmp );
    aItem->m_Pos.m_Pos.x = dtmp;

    msg = m_textCtrlPosY->GetValue();
    msg.ToDouble( &dtmp );
    aItem->m_Pos.m_Pos.y = dtmp;

    switch( m_comboBoxCornerPos->GetSelection() )
    {
    case 2:
        aItem->m_Pos.m_Anchor = RB_CORNER;
        break;
    case 0:
        aItem->m_Pos.m_Anchor = RT_CORNER;
        break;
    case 3:
        aItem->m_Pos.m_Anchor = LB_CORNER;
        break;
    case 1:
        aItem->m_Pos.m_Anchor = LT_CORNER;
        break;
    }

    // Import End point
    msg = m_textCtrlEndX->GetValue();
    msg.ToDouble( &dtmp );
    aItem->m_End.m_Pos.x = dtmp;

    msg = m_textCtrlEndY->GetValue();
    msg.ToDouble( &dtmp );
    aItem->m_End.m_Pos.y = dtmp;

    switch( m_comboBoxCornerEnd->GetSelection() )
    {
    case 2:
        aItem->m_End.m_Anchor = RB_CORNER;
        break;
    case 0:
        aItem->m_End.m_Anchor = RT_CORNER;
        break;
    case 3:
        aItem->m_End.m_Anchor = LB_CORNER;
        break;
    case 1:
        aItem->m_End.m_Anchor = LT_CORNER;
        break;
    }

    // Import Repeat prms
    long itmp;
    msg = m_textCtrlRepeatCount->GetValue();
    msg.ToLong( &itmp );
    aItem->m_RepeatCount = itmp;

    msg = m_textCtrlStepX->GetValue();
    msg.ToDouble( &dtmp );
    aItem->m_IncrementVector.x = dtmp;

    msg = m_textCtrlStepY->GetValue();
    msg.ToDouble( &dtmp );
    aItem->m_IncrementVector.y = dtmp;

    if( aItem->GetType() == WORKSHEET_DATAITEM::WS_TEXT )
    {
        WORKSHEET_DATAITEM_TEXT* item = (WORKSHEET_DATAITEM_TEXT*) aItem;

        item->m_TextBase = m_textCtrlText->GetValue();

        msg = m_textCtrlTextIncrement->GetValue();
        msg.ToLong( &itmp );
        item->m_IncrementLabel = itmp;

        item->SetBold( m_checkBoxBold->IsChecked() );
        item->SetItalic( m_checkBoxItalic->IsChecked() );

        switch( m_choiceHjustify->GetSelection() )
        {
        case 0:
            item->m_Hjustify = GR_TEXT_HJUSTIFY_LEFT;
            break;
        case 1:
            item->m_Hjustify = GR_TEXT_HJUSTIFY_CENTER;
            break;
        case 2:
            item->m_Hjustify = GR_TEXT_HJUSTIFY_RIGHT;
            break;
        }
        switch( m_choiceVjustify->GetSelection() )
        {
        case 0:
            item->m_Vjustify = GR_TEXT_VJUSTIFY_TOP;
            break;
        case 1:
            item->m_Vjustify = GR_TEXT_VJUSTIFY_CENTER;
            break;
        case 2:
            item->m_Vjustify = GR_TEXT_VJUSTIFY_BOTTOM;
            break;
        }

        msg = m_textCtrlRotation->GetValue();
        msg.ToDouble( &dtmp );
        item->m_Orient = dtmp;

        // Import text size
        msg = m_textCtrlTextSizeX->GetValue();
        msg.ToDouble( &dtmp );
        item->m_TextSize.x = dtmp;

        msg = m_textCtrlTextSizeY->GetValue();
        msg.ToDouble( &dtmp );
        item->m_TextSize.y = dtmp;

        // Import constraints:
        msg = m_textCtrlConstraintX->GetValue();
        msg.ToDouble( &dtmp );
        item->m_BoundingBoxSize.x = dtmp;

        msg = m_textCtrlConstraintY->GetValue();
        msg.ToDouble( &dtmp );
        item->m_BoundingBoxSize.y = dtmp;
    }

    if( aItem->GetType() == WORKSHEET_DATAITEM::WS_POLYPOLYGON )
    {
        WORKSHEET_DATAITEM_POLYPOLYGON* item = (WORKSHEET_DATAITEM_POLYPOLYGON*) aItem;

        msg = m_textCtrlRotation->GetValue();
        msg.ToDouble( &dtmp );
        item->m_Orient = dtmp;
    }

    if( aItem->GetType() == WORKSHEET_DATAITEM::WS_BITMAP )
    {
        WORKSHEET_DATAITEM_BITMAP* item = (WORKSHEET_DATAITEM_BITMAP*) aItem;
        // Set definition in PPI
        long value;
        msg = m_textCtrlBitmapPPI->GetValue();
        if( msg.ToLong( &value ) )
            item->SetPPI( (int)value );
    }

    return true;
}