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.
tdepacman/tdepacman/tdepacmanview.cpp

164 lines
5.1 KiB

/***************************************************************************
tdepacmanview.cpp - description
-------------------
begin : Sam Jan 19 13:37:57 CET 2002
copyright : (C) 1998-2003 by Jörg Thönnissen
email : joe@dsite.de
***************************************************************************/
/***************************************************************************
* *
* 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 files for TQt
#include <tqmessagebox.h>
// include files for TDE
#include <kapp.h>
#include <tdeconfig.h>
#include <kstddirs.h>
// application specific includes
#include "tdepacmanview.h"
#include "bitfont.h"
#include "score.h"
#include "referee.h"
#include "status.h"
TDEpacmanView::TDEpacmanView( TQWidget *parent, const char *name) : TQWidget( parent, name )
{
bitfont = NULL;
fontName = "";
scheme = mode = -1;
confScheme();
score = new Score(this, name, scheme, mode, bitfont);
referee = new Referee( this, name, scheme, mode, bitfont);
status = new Status(this, name, scheme, mode);
setFixedSize(referee->width(), bitfont->height()*3 + referee->height() + status->height());
}
TDEpacmanView::~TDEpacmanView()
{
}
void TDEpacmanView::confMisc(bool defGroup)
{
TDEStandardDirs *dirs = TDEGlobal::dirs();
TQString findPath;
if (defGroup || kapp->config()->hasKey("Font")) {
fontName = kapp->config()->readEntry("Font");
if (fontName.left(1) != "/" && fontName.left(1) != "~")
fontName.insert(0, "fonts/");
if (fontName.right(1) == "/")
fontName.append("font.xbm");
findPath = dirs->findResource("appdata", fontName);
if (!findPath.isEmpty())
fontName = findPath;
bitfontFirstChar = kapp->config()->readNumEntry("FontFirstChar", 0x0e);
bitfontLastChar = kapp->config()->readNumEntry("FontLastChar", 0x5f);
}
}
void TDEpacmanView::confScheme()
{
TQString lastFontName = fontName;
TQString oldgroup = kapp->config()->group();
TQString newgroup;
// if not set, read mode and scheme from the configfile
if (mode == -1 && scheme == -1) {
scheme = kapp->config()->readNumEntry("Scheme", -1);
mode = kapp->config()->readNumEntry("Mode", -1);
// if mode is not set in the defGroup-group, lookup the scheme group
if (scheme != -1 || mode == -1) {
newgroup.sprintf("Scheme %d", scheme);
kapp->config()->setGroup(newgroup);
mode = kapp->config()->readNumEntry("Mode", -1);
kapp->config()->setGroup(oldgroup);
}
}
confMisc();
if (mode != -1) {
newgroup.sprintf("Mode %d", mode);
kapp->config()->setGroup(newgroup);
confMisc(FALSE);
}
if (scheme != -1) {
newgroup.sprintf("Scheme %d", scheme);
kapp->config()->setGroup(newgroup);
confMisc(FALSE);
}
if (lastFontName != fontName) {
if (bitfont != 0)
delete bitfont;
bitfont = new Bitfont(fontName, bitfontFirstChar, bitfontLastChar);
if (bitfont->width() == 0 || bitfont->height() == 0) {
TQString msg = i18n("The bitfont could not be contructed.\n\n"
"The file '@FONTNAME@' does not exist,\n"
"or is of an unknown format.");
msg.replace(TQRegExp("@FONTNAME@"), fontName);
// TQMessageBox::critical(this, i18n("Initialization Error"), msg);
printf("%s\n", msg.local8Bit().data());
}
}
kapp->config()->setGroup(oldgroup);
}
void TDEpacmanView::setScheme(int Scheme, int Mode)
{
mode = Mode;
scheme = Scheme;
confScheme();
score->setScheme(Scheme, Mode, bitfont);
referee->setScheme(Scheme, Mode, bitfont);
status->setScheme(Scheme, Mode);
setFixedSize(referee->width(),
bitfont->height()*3 + referee->height() + status->height());
updateGeometry();
score->repaint(FALSE);
referee->repaint(FALSE);
status->repaint(FALSE);
}
void TDEpacmanView::resizeEvent( TQResizeEvent * )
{
referee->setGeometry(0, bitfont->height()*3, referee->width(), referee->height());
referee->setBackgroundColor(BLACK);
status->setGeometry(0, bitfont->height()*3+referee->height(), referee->width(),
status->height());
status->setBackgroundColor(BLACK);
score->setGeometry(0, 0, referee->width(), bitfont->height()*3+referee->height()+status->height());
score->setBackgroundColor(BLACK);
}
#include "tdepacmanview.moc"