/**************************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 *************************************************************/



#include "solveroptions.hrc"

ModalDialog RID_SCDLG_SOLVEROPTIONS
{
    OutputSize = TRUE ;
    HelpId = HID_SC_SOLVEROPTIONS ;
    SVLook = TRUE ;
    Size = MAP_APPFONT ( 218 , 156 ) ;
    Moveable = TRUE ;
    FixedText FT_ENGINE
    {
        Pos = MAP_APPFONT ( 6 , 8 ) ;
        Size = MAP_APPFONT ( 59 , 8 ) ;
        Text [ en-US ] = "Solver engine" ;
    };
    ListBox LB_ENGINE
    {
        HelpID = "sc:ListBox:RID_SCDLG_SOLVEROPTIONS:LB_ENGINE";
        Border = TRUE ;
        Pos = MAP_APPFONT ( 67 , 6 ) ;
        Size = MAP_APPFONT ( 145 , 90 ) ;
        TabStop = TRUE ;
        DropDown = TRUE ;
    };
    FixedText FT_SETTINGS
    {
        Pos = MAP_APPFONT ( 6 , 24 ) ;
        Size = MAP_APPFONT ( 156 , 8 ) ;
        Text [ en-US ] = "Settings:" ;
    };
    Control LB_SETTINGS
    {
        Border = TRUE ;
        Pos = MAP_APPFONT ( 6 , 35 ) ;
        Size = MAP_APPFONT ( 206 , 67 ) ;
        TabStop = TRUE ;
    };
    PushButton BTN_EDIT
    {
        HelpID = "sc:PushButton:RID_SCDLG_SOLVEROPTIONS:BTN_EDIT";
        Pos = MAP_APPFONT ( 6 , 108 ) ;
        Size = MAP_APPFONT ( 50 , 14 ) ;
        TabStop = TRUE ;
        Text [ en-US ] = "Edit..." ;
    };
    FixedLine FL_BUTTONS
    {
        Pos = MAP_APPFONT ( 0 , 125 ) ;
        Size = MAP_APPFONT ( 218 , 8 ) ;
    };
    HelpButton BTN_HELP
    {
        Pos = MAP_APPFONT ( 6 , 136 ) ;
        Size = MAP_APPFONT ( 50 , 14 ) ;
        TabStop = TRUE ;
    };
    OKButton BTN_OK
    {
        Pos = MAP_APPFONT ( 106 , 136 ) ;
        Size = MAP_APPFONT ( 50 , 14 ) ;
        TabStop = TRUE ;
        DefButton = TRUE ;
    };
    CancelButton BTN_CANCEL
    {
        Pos = MAP_APPFONT ( 162 , 136 ) ;
        Size = MAP_APPFONT ( 50 , 14 ) ;
        TabStop = TRUE ;
    };
    Text [ en-US ] = "Options" ;
};


ModalDialog RID_SCDLG_SOLVER_INTEGER
{
    OutputSize = TRUE ;
    HelpId = HID_SC_SOLVER_INTEGER ;
    SVLook = TRUE ;
    Size = MAP_APPFONT ( 118 , 76 ) ;
    Moveable = TRUE ;
    FixedText FT_OPTIONNAME
    {
        Pos = MAP_APPFONT ( 6 , 8 ) ;
        Size = MAP_APPFONT ( 106 , 16 ) ;
        WordBreak = TRUE ;
        // text is dynamic
    };
    NumericField NF_VALUE
    {
        HelpID = "sc:NumericField:RID_SCDLG_SOLVER_INTEGER:NF_VALUE";
        Border = TRUE ;
        Pos = MAP_APPFONT ( 6 , 27 ) ;
        Size = MAP_APPFONT ( 30 , 12 ) ;
        TabStop = TRUE ;
        Spin = TRUE ;
        SpinSize = 1 ;
        Repeat = TRUE ;
        Minimum = -2147483648 ;
        Maximum = 2147483647 ;
        First = 0 ;
        Last = 100 ;
    };
    FixedLine FL_BUTTONS
    {
        Pos = MAP_APPFONT ( 0 , 45 ) ;
        Size = MAP_APPFONT ( 118 , 8 ) ;
    };
    OKButton BTN_OK
    {
        Pos = MAP_APPFONT ( 6 , 56 ) ;
        Size = MAP_APPFONT ( 50 , 14 ) ;
        TabStop = TRUE ;
        DefButton = TRUE ;
    };
    CancelButton BTN_CANCEL
    {
        Pos = MAP_APPFONT ( 62 , 56 ) ;
        Size = MAP_APPFONT ( 50 , 14 ) ;
        TabStop = TRUE ;
    };
    Text [ en-US ] = "Edit Setting" ;
};

ModalDialog RID_SCDLG_SOLVER_DOUBLE
{
    OutputSize = TRUE ;
    HelpId = HID_SC_SOLVER_DOUBLE ;
    SVLook = TRUE ;
    Size = MAP_APPFONT ( 118 , 76 ) ;
    Moveable = TRUE ;
    FixedText FT_OPTIONNAME
    {
        Pos = MAP_APPFONT ( 6 , 8 ) ;
        Size = MAP_APPFONT ( 106 , 16 ) ;
        WordBreak = TRUE ;
        // text is dynamic
    };
    Edit ED_VALUE
    {
        HelpID = "sc:Edit:RID_SCDLG_SOLVER_DOUBLE:ED_VALUE";
        Border = TRUE ;
        Pos = MAP_APPFONT ( 6 , 27 ) ;
        Size = MAP_APPFONT ( 50 , 12 ) ;
        TabStop = TRUE ;
    };
    FixedLine FL_BUTTONS
    {
        Pos = MAP_APPFONT ( 0 , 45 ) ;
        Size = MAP_APPFONT ( 118 , 8 ) ;
    };
    OKButton BTN_OK
    {
        Pos = MAP_APPFONT ( 6 , 56 ) ;
        Size = MAP_APPFONT ( 50 , 14 ) ;
        TabStop = TRUE ;
        DefButton = TRUE ;
    };
    CancelButton BTN_CANCEL
    {
        Pos = MAP_APPFONT ( 62 , 56 ) ;
        Size = MAP_APPFONT ( 50 , 14 ) ;
        TabStop = TRUE ;
    };
    Text [ en-US ] = "Edit Setting" ;
};

