Import existing source tree; original VCS history is no longer available. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
153 lines
2.9 KiB
C++
153 lines
2.9 KiB
C++
/*(GPL)
|
|
------------------------------------------------------------
|
|
Kobo Deluxe - An enhanced SDL port of XKobo
|
|
------------------------------------------------------------
|
|
* Copyright (C) 2001-2003, 2006-2007 David Olofson
|
|
*
|
|
* 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.
|
|
*
|
|
* 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.,
|
|
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
*/
|
|
|
|
#include "kobolog.h"
|
|
#include "config.h"
|
|
#include "cfgform.h"
|
|
#include "kobo.h"
|
|
#include "sound.h"
|
|
#include "vidmodes.h"
|
|
|
|
int global_status = 0;
|
|
|
|
|
|
config_form_t::config_form_t()
|
|
{
|
|
prf = NULL;
|
|
stat = 0;
|
|
}
|
|
|
|
|
|
config_form_t::~config_form_t()
|
|
{
|
|
}
|
|
|
|
|
|
void config_form_t::open(prefs_t *p)
|
|
{
|
|
init(gengine);
|
|
place(wmain->x(), wmain->y(), wmain->width(), wmain->height());
|
|
font(B_NORMAL_FONT);
|
|
foreground(wmain->map_rgb(0xffffff));
|
|
background(wmain->map_rgb(0x000000));
|
|
prf = p;
|
|
prfbak = *p;
|
|
stat = global_status & (OS_RELOAD | OS_RESTART | OS_UPDATE);
|
|
build_all();
|
|
}
|
|
|
|
|
|
void config_form_t::close()
|
|
{
|
|
vmm_Close();
|
|
clean();
|
|
}
|
|
|
|
|
|
void config_form_t::undo()
|
|
{
|
|
*prf = prfbak;
|
|
undo_hook();
|
|
}
|
|
|
|
|
|
int config_form_t::status()
|
|
{
|
|
return stat;
|
|
}
|
|
|
|
|
|
void config_form_t::clearstatus(int mask)
|
|
{
|
|
stat &= ~mask;
|
|
global_status = stat & (OS_RELOAD | OS_RESTART | OS_UPDATE);
|
|
}
|
|
|
|
|
|
void config_form_t::setstatus(int mask)
|
|
{
|
|
stat |= mask;
|
|
global_status = stat & (OS_RELOAD | OS_RESTART | OS_UPDATE);
|
|
}
|
|
|
|
/*virtual*/ void config_form_t::change(int delta)
|
|
{
|
|
kobo_form_t::change(delta);
|
|
|
|
if(!selected())
|
|
return;
|
|
|
|
if(selected()->tag & OS_CLOSE)
|
|
{
|
|
if(delta == 0)
|
|
{
|
|
sound.ui_ok();
|
|
setstatus(OS_CLOSE);
|
|
}
|
|
}
|
|
else if(selected()->tag & OS_CANCEL)
|
|
{
|
|
if(delta == 0)
|
|
{
|
|
sound.ui_cancel();
|
|
undo();
|
|
setstatus(OS_CLOSE);
|
|
}
|
|
}
|
|
else
|
|
sound.ui_tick();
|
|
|
|
if(selected()->user)
|
|
prf->changed = 1;
|
|
|
|
setstatus(selected()->tag & (OS_RELOAD | OS_RESTART | OS_UPDATE));
|
|
|
|
// If a video mode from the table is selected, get the parameters
|
|
// from the video mode manager!
|
|
if(prf->videomode)
|
|
{
|
|
VMM_Mode *m = vmm_FindMode(prf->videomode);
|
|
if(m)
|
|
{
|
|
prf->width = m->width;
|
|
prf->height = m->height;
|
|
prf->aspect = (int)(m->aspect * 1000.0f + .5f);
|
|
}
|
|
}
|
|
|
|
if(selected()->tag & OS_REBUILD)
|
|
{
|
|
int sel = selected_index();
|
|
build_all();
|
|
select(sel);
|
|
}
|
|
}
|
|
|
|
/* virtual */void config_form_t::build()
|
|
{
|
|
}
|
|
|
|
/* virtual */ void config_form_t::undo_hook()
|
|
{
|
|
stat = 0;
|
|
global_status = 0;
|
|
}
|