You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
knights/knights/dlg_selectengine.cpp

202 lines
6.3 KiB

/***************************************************************************
dlg_selectengine.cpp - description
-------------------
begin : Wed Aug 28 2002
copyright : (C) 2003 by Troy Corbin Jr.
email : tcorbin@users.sf.net
***************************************************************************/
/***************************************************************************
* *
* 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; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include "dlg_selectengine.moc"
#include <tqvbox.h>
#include <tqgroupbox.h>
#include <tqslider.h>
#include <tqlabel.h>
#include <kcombobox.h>
#include "resource.h"
dlg_selectengine::dlg_selectengine(TQWidget *parent, resource *Rsrc, bool army ) :
KDialogBase( parent,
0,
TRUE,
i18n("Select Computer Player"),
Help|Ok,
Ok,
TRUE )
{
Resource = Rsrc;
Army = army;
BOX_Parent = makeVBoxMainWidget();
BOX_Engine = new TQGroupBox( 1,
Qt::Horizontal,
i18n( "Computer Players" ),
BOX_Parent );
COMBO_Engine = new KComboBox( BOX_Engine );
COMBO_Engine->setEditable( FALSE );
// BOX_EngineHelper = new TQGroupBox( 1,
// Qt::Horizontal,
// i18n( "Computer Players' Helper" ),
// BOX_Parent );
// COMBO_EngineHelper = new KComboBox( BOX_Engine );
// COMBO_EngineHelper->setEditable( FALSE );
buildEngineData();
connect( COMBO_Engine, TQT_SIGNAL( activated(int) ), this, TQT_SLOT( slotCurrent(int) ) );
// connect( COMBO_EngineHelper, TQT_SIGNAL( activated(int) ), this, TQT_SLOT( slotCurrentHelper(int) ) );
GROUP_Strength = new TQGroupBox( 3,
Qt::Horizontal,
i18n( "Player Strength" ),
BOX_Parent );
LABEL_Str_Min = new TQLabel( i18n( "Weak" ), GROUP_Strength );
SLIDER_Strength = new TQSlider ( 1,
7,
1,
Resource->Strength[ 1 * ( Army == BLACK ) ],
Qt::Horizontal,
GROUP_Strength );
LABEL_Str_Max = new TQLabel( i18n( "Strong" ), GROUP_Strength );
SLIDER_Strength->setTickmarks( TQSlider::Below );
connect( SLIDER_Strength, TQT_SIGNAL( valueChanged(int) ), this, TQT_SLOT( slotStrength(int) ) );
}
dlg_selectengine::~dlg_selectengine()
{
}
///////////////////////////////////////
//
// dlg_selectengine::buildEngineData
//
///////////////////////////////////////
void dlg_selectengine::buildEngineData( void )
{
bool FLAG1(FALSE);
// bool FLAG2(FALSE);
int Index(0);
TQStringList EngineList;
engineList::Iterator enginesIT;
/* Clear Comboboxes */
COMBO_Engine->clear();
// COMBO_EngineHelper->clear();
/* Handle status of Book-engine boxes */
// White_Use_Book->setChecked( Resource->OPTION_Book_White );
// Engines_White_Book->setEnabled( Resource->OPTION_Book_White );
if( Army == WHITE )
{
Engine1F = ENGINE_WHITE;
Engine2F = ENGINE_WHITE_BK;
}
else
{
Engine1F = ENGINE_BLACK;
Engine2F = ENGINE_BLACK_BK;
}
/* Read the engine list */
if( Resource->engines.isEmpty() ) return;
for ( enginesIT = Resource->engines.begin(); enginesIT != Resource->engines.end(); ++enginesIT )
{
EngineList.append( (*enginesIT).Name );
}
/* Insert engines into comboboxes */
EngineList.sort();
COMBO_Engine->insertStringList( EngineList );
// COMBO_EngineHelper->insertStringList( EngineList );
/* Now run the list again, setting the current engine for each combobox */
for ( enginesIT = Resource->engines.begin(); enginesIT != Resource->engines.end(); ++enginesIT )
{
if( (*enginesIT).CurrentRef & Engine1F )
for( Index = 0; Index < COMBO_Engine->count(); Index++ )
if( COMBO_Engine->text(Index) == (*enginesIT).Name )
{
COMBO_Engine->setCurrentItem(Index);
FLAG1 = TRUE;
}
// if( (*enginesIT).CurrentRef & Engine2F )
// for( Index = 0; Index < COMBO_Engine->count(); Index++ )
// if( COMBO_EngineHelper->text(Index) == (*enginesIT).Name )
// {
// COMBO_EngineHelper->setCurrentItem(Index);
// FLAG2 = TRUE;
// }
}
/*
This prevents a bug where you had to modify the
current_engine_comboboxes before you could get any engines to run.
*/
if( ( !FLAG1 ) && ( COMBO_Engine->count() ) ) slotCurrent( COMBO_Engine->currentItem() );
// if( ( !FLAG2 ) && ( COMBO_EngineHelper->count() ) ) slotCurrentHelper( COMBO_EngineHelper->currentItem() );
}
///////////////////////////////////////
//
// dlg_selectengine::slotCurrent
//
///////////////////////////////////////
void dlg_selectengine::slotCurrent( int Index )
{
TQString Name;
engineList::Iterator enginesIT;
Name = COMBO_Engine->text(Index);
for ( enginesIT = Resource->engines.begin(); enginesIT != Resource->engines.end(); ++enginesIT )
{
if( (*enginesIT).CurrentRef & Engine1F ) (*enginesIT).CurrentRef -= Engine1F;
if( (*enginesIT).Name == Name ) (*enginesIT).CurrentRef |= Engine1F;
}
emit valuesChanged();
}
///////////////////////////////////////
//
// dlg_selectengine::slotCurrentHelper
//
///////////////////////////////////////
void dlg_selectengine::slotCurrentHelper( int Index )
{
TQString Name;
engineList::Iterator enginesIT;
Name = COMBO_EngineHelper->text(Index);
for ( enginesIT = Resource->engines.begin(); enginesIT != Resource->engines.end(); ++enginesIT )
{
if( (*enginesIT).CurrentRef & Engine2F ) (*enginesIT).CurrentRef -= Engine2F;
if( (*enginesIT).Name == Name ) (*enginesIT).CurrentRef |= Engine2F;
}
emit valuesChanged();
}
///////////////////////////////////////
//
// dlg_selectengine::strength
//
///////////////////////////////////////
int dlg_selectengine::strength( void )
{
return SLIDER_Strength->value();
}
///////////////////////////////////////
//
// dlg_selectengine::slotStrength
//
///////////////////////////////////////
void dlg_selectengine::slotStrength( int value )
{
Resource->Strength[Army] = value;
emit valuesChanged();
}