mirror of https://github.com/stella-emu/stella.git
Added a ProgressDialog class, which shows a sliderwidget that represents the
progress of some activity. Some additions to the LauncherDialog. When populating the ROM list by directly examining the ROM files, it now uses a ProgressDialog to show the current status (since this operation sometimes take a long time). The last selected ROM is now re-selected when starting Stella. Some minor code refactoring to take into account zipped ROM support (yes, its coming soon). Re-added paddle support. Still TODO is tweak the sensitivity of mouse movements. Also still TODO is re-add joystick support. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@427 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
e12d010c45
commit
61d3922e70
|
@ -13,7 +13,7 @@
|
||||||
## See the file "license" for information on usage and redistribution of
|
## See the file "license" for information on usage and redistribution of
|
||||||
## this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
## this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
##
|
##
|
||||||
## $Id: makefile,v 1.79 2005-05-16 00:02:30 stephena Exp $
|
## $Id: makefile,v 1.80 2005-05-17 18:42:22 stephena Exp $
|
||||||
##============================================================================
|
##============================================================================
|
||||||
|
|
||||||
##============================================================================
|
##============================================================================
|
||||||
|
@ -159,7 +159,8 @@ GUI_OBJS = StellaFont.o Menu.o Launcher.o \
|
||||||
Widget.o PopUpWidget.o ScrollBarWidget.o ListWidget.o TabWidget.o \
|
Widget.o PopUpWidget.o ScrollBarWidget.o ListWidget.o TabWidget.o \
|
||||||
Dialog.o DialogContainer.o OptionsDialog.o VideoDialog.o AudioDialog.o \
|
Dialog.o DialogContainer.o OptionsDialog.o VideoDialog.o AudioDialog.o \
|
||||||
EventMappingDialog.o GameInfoDialog.o HelpDialog.o AboutDialog.o \
|
EventMappingDialog.o GameInfoDialog.o HelpDialog.o AboutDialog.o \
|
||||||
LauncherDialog.o LauncherOptionsDialog.o BrowserDialog.o GameList.o
|
LauncherDialog.o LauncherOptionsDialog.o BrowserDialog.o GameList.o \
|
||||||
|
ProgressDialog.o
|
||||||
|
|
||||||
CORE_OBJS = Booster.o Cart.o Cart2K.o Cart3F.o Cart4K.o CartAR.o CartDPC.o \
|
CORE_OBJS = Booster.o Cart.o Cart2K.o Cart3F.o Cart4K.o CartAR.o CartDPC.o \
|
||||||
CartE0.o CartE7.o CartF4.o CartF4SC.o CartF6.o CartF6SC.o \
|
CartE0.o CartE7.o CartF4.o CartF4SC.o CartF6.o CartF6SC.o \
|
||||||
|
@ -438,3 +439,6 @@ BrowserDialog.o: $(GUI)/BrowserDialog.cxx $(GUI)/BrowserDialog.hxx
|
||||||
|
|
||||||
GameList.o: $(GUI)/GameList.cxx $(GUI)/GameList.hxx
|
GameList.o: $(GUI)/GameList.cxx $(GUI)/GameList.hxx
|
||||||
$(CXX) -c $(FLAGS) $(OPTIONS) $(LDFLAGS) $(GUI)/GameList.cxx
|
$(CXX) -c $(FLAGS) $(OPTIONS) $(LDFLAGS) $(GUI)/GameList.cxx
|
||||||
|
|
||||||
|
ProgressDialog.o: $(GUI)/ProgressDialog.cxx $(GUI)/ProgressDialog.hxx
|
||||||
|
$(CXX) -c $(FLAGS) $(OPTIONS) $(LDFLAGS) $(GUI)/ProgressDialog.cxx
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: EventHandler.cxx,v 1.56 2005-05-16 00:02:31 stephena Exp $
|
// $Id: EventHandler.cxx,v 1.57 2005-05-17 18:42:22 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
@ -422,38 +422,26 @@ void EventHandler::handleMouseMotionEvent(SDL_Event& event)
|
||||||
switch(myState)
|
switch(myState)
|
||||||
{
|
{
|
||||||
case S_EMULATE:
|
case S_EMULATE:
|
||||||
// FIXME - add code here to generate paddle events
|
{
|
||||||
/*
|
// Take window zooming into account
|
||||||
uInt32 zoom = theDisplay->zoomLevel();
|
Int32 x = event.motion.x, y = event.motion.y;
|
||||||
Int32 width = theDisplay->width() * zoom;
|
myOSystem->frameBuffer().translateCoords(&x, &y);
|
||||||
|
int w = myOSystem->frameBuffer().baseWidth();
|
||||||
|
|
||||||
// Grabmouse introduces some lag into the mouse movement,
|
// Grabmouse introduces some lag into the mouse movement,
|
||||||
// so we need to fudge the numbers a bit
|
// so we need to fudge the numbers a bit
|
||||||
if(theGrabMouseIndicator && theHideCursorIndicator)
|
// FIXME - possibly do x *= 1.5 ??
|
||||||
mouseX = (int)((float)mouseX + (float)event.motion.xrel
|
|
||||||
* 1.5 * (float) zoom);
|
|
||||||
else
|
|
||||||
mouseX = mouseX + event.motion.xrel * zoom;
|
|
||||||
|
|
||||||
// Check to make sure mouseX is within the game window
|
|
||||||
if(mouseX < 0)
|
|
||||||
mouseX = 0;
|
|
||||||
else if(mouseX > width)
|
|
||||||
mouseX = width;
|
|
||||||
|
|
||||||
Int32 resistance = (Int32)(1000000.0 * (width - mouseX) / width);
|
|
||||||
|
|
||||||
theOSystem->eventHandler().handleEvent(Paddle_Resistance[thePaddleMode], resistance);
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
int resistance = (int)(1000000.0 * (w - x) / w);
|
||||||
|
handleEvent(Paddle_Resistance[myPaddleMode], resistance);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case S_MENU:
|
case S_MENU:
|
||||||
{
|
{
|
||||||
// Take window zooming into account
|
// Take window zooming into account
|
||||||
Int32 x = event.motion.x, y = event.motion.y;
|
Int32 x = event.motion.x, y = event.motion.y;
|
||||||
myOSystem->frameBuffer().translateCoords(&x, &y);
|
myOSystem->frameBuffer().translateCoords(&x, &y);
|
||||||
//cerr << "Motion: x = " << x << ", y = " << y << endl;
|
|
||||||
myOSystem->menu().handleMouseMotionEvent(x, y, 0);
|
myOSystem->menu().handleMouseMotionEvent(x, y, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -463,7 +451,6 @@ void EventHandler::handleMouseMotionEvent(SDL_Event& event)
|
||||||
// Take window zooming into account
|
// Take window zooming into account
|
||||||
Int32 x = event.motion.x, y = event.motion.y;
|
Int32 x = event.motion.x, y = event.motion.y;
|
||||||
myOSystem->frameBuffer().translateCoords(&x, &y);
|
myOSystem->frameBuffer().translateCoords(&x, &y);
|
||||||
//cerr << "Motion: x = " << x << ", y = " << y << endl;
|
|
||||||
myOSystem->launcher().handleMouseMotionEvent(x, y, 0);
|
myOSystem->launcher().handleMouseMotionEvent(x, y, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -486,11 +473,7 @@ void EventHandler::handleMouseButtonEvent(SDL_Event& event, uInt8 state)
|
||||||
switch(myState)
|
switch(myState)
|
||||||
{
|
{
|
||||||
case S_EMULATE:
|
case S_EMULATE:
|
||||||
// FIXME - add code here to generate paddle buttons
|
handleEvent(Paddle_Button[myPaddleMode], state);
|
||||||
/*
|
|
||||||
Int32 value = event.button.type == SDL_MOUSEBUTTONDOWN ? 1 : 0;
|
|
||||||
theOSystem->eventHandler().handleEvent(Paddle_Button[thePaddleMode], value);
|
|
||||||
*/
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case S_MENU:
|
case S_MENU:
|
||||||
|
@ -1354,3 +1337,30 @@ ActionList EventHandler::ourActionList[61] = {
|
||||||
{ Event::KeyboardOne0, "P2 GamePad 0", "" },
|
{ Event::KeyboardOne0, "P2 GamePad 0", "" },
|
||||||
{ Event::KeyboardOnePound, "P2 GamePad #", "" }
|
{ Event::KeyboardOnePound, "P2 GamePad #", "" }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Event::Type EventHandler::Paddle_Resistance[4] = {
|
||||||
|
Event::PaddleZeroResistance, Event::PaddleOneResistance,
|
||||||
|
Event::PaddleTwoResistance, Event::PaddleThreeResistance
|
||||||
|
};
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Event::Type EventHandler::Paddle_Button[4] = {
|
||||||
|
Event::PaddleZeroFire, Event::PaddleOneFire,
|
||||||
|
Event::PaddleTwoFire, Event::PaddleThreeFire
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef JOYSTICK_SUPPORT
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Event::Type EventHandler::SA_Axis[2][2][3] = {
|
||||||
|
Event::JoystickZeroLeft, Event::JoystickZeroRight, Event::PaddleZeroResistance,
|
||||||
|
Event::JoystickZeroUp, Event::JoystickZeroDown, Event::PaddleOneResistance,
|
||||||
|
Event::JoystickOneLeft, Event::JoystickOneRight, Event::PaddleTwoResistance,
|
||||||
|
Event::JoystickOneUp, Event::JoystickOneDown, Event::PaddleThreeResistance
|
||||||
|
};
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Event::Type EventHandler::SA_DrivingValue[2] = {
|
||||||
|
Event::DrivingZeroValue, Event::DrivingOneValue
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: EventHandler.hxx,v 1.28 2005-05-16 00:02:31 stephena Exp $
|
// $Id: EventHandler.hxx,v 1.29 2005-05-17 18:42:22 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#ifndef EVENTHANDLER_HXX
|
#ifndef EVENTHANDLER_HXX
|
||||||
|
@ -57,7 +57,7 @@ struct ActionList {
|
||||||
mapping can take place.
|
mapping can take place.
|
||||||
|
|
||||||
@author Stephen Anthony
|
@author Stephen Anthony
|
||||||
@version $Id: EventHandler.hxx,v 1.28 2005-05-16 00:02:31 stephena Exp $
|
@version $Id: EventHandler.hxx,v 1.29 2005-05-17 18:42:22 stephena Exp $
|
||||||
*/
|
*/
|
||||||
class EventHandler
|
class EventHandler
|
||||||
{
|
{
|
||||||
|
@ -153,6 +153,18 @@ class EventHandler
|
||||||
// Holds static strings for the remap menu
|
// Holds static strings for the remap menu
|
||||||
static ActionList ourActionList[61];
|
static ActionList ourActionList[61];
|
||||||
|
|
||||||
|
// Lookup table for paddle resistance events
|
||||||
|
static Event::Type Paddle_Resistance[4];
|
||||||
|
|
||||||
|
// Lookup table for paddle button events
|
||||||
|
static Event::Type Paddle_Button[4];
|
||||||
|
|
||||||
|
#ifdef JOYSTICK_SUPPORT
|
||||||
|
// Static lookup tables for Stelladaptor axis support
|
||||||
|
static Event::Type SA_Axis[2][2][3];
|
||||||
|
static Event::Type SA_DrivingValue[2];
|
||||||
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/**
|
/**
|
||||||
Send an event directly to the event handler.
|
Send an event directly to the event handler.
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: FrameBuffer.hxx,v 1.32 2005-05-12 18:45:21 stephena Exp $
|
// $Id: FrameBuffer.hxx,v 1.33 2005-05-17 18:42:22 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#ifndef FRAMEBUFFER_HXX
|
#ifndef FRAMEBUFFER_HXX
|
||||||
|
@ -41,7 +41,7 @@ class OSystem;
|
||||||
All GUI elements (ala ScummVM) are drawn here as well.
|
All GUI elements (ala ScummVM) are drawn here as well.
|
||||||
|
|
||||||
@author Stephen Anthony
|
@author Stephen Anthony
|
||||||
@version $Id: FrameBuffer.hxx,v 1.32 2005-05-12 18:45:21 stephena Exp $
|
@version $Id: FrameBuffer.hxx,v 1.33 2005-05-17 18:42:22 stephena Exp $
|
||||||
*/
|
*/
|
||||||
class FrameBuffer
|
class FrameBuffer
|
||||||
{
|
{
|
||||||
|
@ -138,7 +138,7 @@ class FrameBuffer
|
||||||
// cerr << "refresh() " << myNumRedraws++ << endl;
|
// cerr << "refresh() " << myNumRedraws++ << endl;
|
||||||
theRedrawEntireFrameIndicator = true;
|
theRedrawEntireFrameIndicator = true;
|
||||||
myMenuRedraws = 2;
|
myMenuRedraws = 2;
|
||||||
if(now) drawMediaSource();
|
if(now) update();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: OSystem.cxx,v 1.15 2005-05-16 00:02:32 stephena Exp $
|
// $Id: OSystem.cxx,v 1.16 2005-05-17 18:42:23 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
@ -256,20 +256,10 @@ bool OSystem::createConsole(const string& romfile)
|
||||||
myRomFile = romfile;
|
myRomFile = romfile;
|
||||||
|
|
||||||
// Open the cartridge image and read it in
|
// Open the cartridge image and read it in
|
||||||
ifstream in(myRomFile.c_str(), ios_base::binary);
|
uInt8* image;
|
||||||
if(!in)
|
int size;
|
||||||
|
if(openROM(myRomFile, &image, &size))
|
||||||
{
|
{
|
||||||
cerr << "ERROR: Couldn't open " << myRomFile << "..." << endl;
|
|
||||||
// myEventHandler->quit();
|
|
||||||
retval = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
uInt8* image = new uInt8[512 * 1024];
|
|
||||||
in.read((char*)image, 512 * 1024);
|
|
||||||
uInt32 size = in.gcount();
|
|
||||||
in.close();
|
|
||||||
|
|
||||||
delete myConsole; myConsole = NULL;
|
delete myConsole; myConsole = NULL;
|
||||||
|
|
||||||
// Create an instance of the 2600 game console
|
// Create an instance of the 2600 game console
|
||||||
|
@ -288,6 +278,12 @@ bool OSystem::createConsole(const string& romfile)
|
||||||
myEventHandler->reset(EventHandler::S_EMULATE);
|
myEventHandler->reset(EventHandler::S_EMULATE);
|
||||||
myFrameBuffer->setCursorState();
|
myFrameBuffer->setCursorState();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cerr << "ERROR: Couldn't open " << myRomFile << "..." << endl;
|
||||||
|
// myEventHandler->quit();
|
||||||
|
retval = false;
|
||||||
|
}
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
@ -309,6 +305,21 @@ void OSystem::createLauncher()
|
||||||
mySound->mute(true);
|
mySound->mute(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
bool OSystem::openROM(const string& rom, uInt8** image, int* size)
|
||||||
|
{
|
||||||
|
ifstream in(rom.c_str(), ios_base::binary);
|
||||||
|
if(!in)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
*image = new uInt8[512 * 1024];
|
||||||
|
in.read((char*)(*image), 512 * 1024);
|
||||||
|
*size = in.gcount();
|
||||||
|
in.close();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
OSystem::OSystem(const OSystem& osystem)
|
OSystem::OSystem(const OSystem& osystem)
|
||||||
{
|
{
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: OSystem.hxx,v 1.14 2005-05-16 00:02:32 stephena Exp $
|
// $Id: OSystem.hxx,v 1.15 2005-05-17 18:42:23 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#ifndef OSYSTEM_HXX
|
#ifndef OSYSTEM_HXX
|
||||||
|
@ -38,7 +38,7 @@ class Launcher;
|
||||||
other objects belong.
|
other objects belong.
|
||||||
|
|
||||||
@author Stephen Anthony
|
@author Stephen Anthony
|
||||||
@version $Id: OSystem.hxx,v 1.14 2005-05-16 00:02:32 stephena Exp $
|
@version $Id: OSystem.hxx,v 1.15 2005-05-17 18:42:23 stephena Exp $
|
||||||
*/
|
*/
|
||||||
class OSystem
|
class OSystem
|
||||||
{
|
{
|
||||||
|
@ -262,6 +262,17 @@ class OSystem
|
||||||
*/
|
*/
|
||||||
const string& features() { return myFeatures; }
|
const string& features() { return myFeatures; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
Open the given ROM and return an array containing its contents.
|
||||||
|
|
||||||
|
@param rom The absolute pathname of the ROM file
|
||||||
|
@param image A pointer to store the ROM data
|
||||||
|
Note, the calling method is responsible for deleting this
|
||||||
|
@param size The amount of data read into the image array
|
||||||
|
@return False on any errors, else true
|
||||||
|
*/
|
||||||
|
bool openROM(const string& rom, uInt8** image, int* size);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// The following methods are system-specific and must be implemented
|
// The following methods are system-specific and must be implemented
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: Settings.cxx,v 1.43 2005-05-14 03:26:28 stephena Exp $
|
// $Id: Settings.cxx,v 1.44 2005-05-17 18:42:23 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
@ -66,6 +66,7 @@ Settings::Settings(OSystem* osystem)
|
||||||
set("sssingle", "false");
|
set("sssingle", "false");
|
||||||
|
|
||||||
set("romdir", "");
|
set("romdir", "");
|
||||||
|
set("lastrom", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: LauncherDialog.cxx,v 1.14 2005-05-16 15:37:30 stephena Exp $
|
// $Id: LauncherDialog.cxx,v 1.15 2005-05-17 18:42:23 stephena Exp $
|
||||||
//
|
//
|
||||||
// Based on code from ScummVM - Scumm Interpreter
|
// Based on code from ScummVM - Scumm Interpreter
|
||||||
// Copyright (C) 2002-2004 The ScummVM project
|
// Copyright (C) 2002-2004 The ScummVM project
|
||||||
|
@ -34,6 +34,7 @@
|
||||||
#include "DialogContainer.hxx"
|
#include "DialogContainer.hxx"
|
||||||
#include "GuiUtils.hxx"
|
#include "GuiUtils.hxx"
|
||||||
#include "BrowserDialog.hxx"
|
#include "BrowserDialog.hxx"
|
||||||
|
#include "ProgressDialog.hxx"
|
||||||
#include "LauncherOptionsDialog.hxx"
|
#include "LauncherOptionsDialog.hxx"
|
||||||
#include "LauncherDialog.hxx"
|
#include "LauncherDialog.hxx"
|
||||||
|
|
||||||
|
@ -50,8 +51,13 @@ enum {
|
||||||
LauncherDialog::LauncherDialog(OSystem* osystem, DialogContainer* parent,
|
LauncherDialog::LauncherDialog(OSystem* osystem, DialogContainer* parent,
|
||||||
int x, int y, int w, int h)
|
int x, int y, int w, int h)
|
||||||
: Dialog(osystem, parent, x, y, w, h),
|
: Dialog(osystem, parent, x, y, w, h),
|
||||||
|
myStartButton(NULL),
|
||||||
|
myOptionsButton(NULL),
|
||||||
|
myReloadButton(NULL),
|
||||||
|
myQuitButton(NULL),
|
||||||
myList(NULL),
|
myList(NULL),
|
||||||
myGameList(NULL)
|
myGameList(NULL),
|
||||||
|
myProgressBar(NULL)
|
||||||
{
|
{
|
||||||
// Show game name
|
// Show game name
|
||||||
new StaticTextWidget(this, 10, 8, 200, kLineHeight,
|
new StaticTextWidget(this, 10, 8, 200, kLineHeight,
|
||||||
|
@ -68,22 +74,22 @@ LauncherDialog::LauncherDialog(OSystem* osystem, DialogContainer* parent,
|
||||||
int xpos = border;
|
int xpos = border;
|
||||||
|
|
||||||
#ifndef MAC_OSX
|
#ifndef MAC_OSX
|
||||||
new ButtonWidget(this, xpos, _h - 24, width, 16, "Play", kStartCmd, 'S');
|
myStartButton = new ButtonWidget(this, xpos, _h - 24, width, 16, "Play", kStartCmd, 'S');
|
||||||
xpos += space + width;
|
xpos += space + width;
|
||||||
new ButtonWidget(this, xpos, _h - 24, width, 16, "Options", kOptionsCmd, 'O');
|
myOptionsButton = new ButtonWidget(this, xpos, _h - 24, width, 16, "Options", kOptionsCmd, 'O');
|
||||||
xpos += space + width;
|
xpos += space + width;
|
||||||
new ButtonWidget(this, xpos, _h - 24, width, 16, "Reload", kReloadCmd, 'R');
|
myReloadButton = new ButtonWidget(this, xpos, _h - 24, width, 16, "Reload", kReloadCmd, 'R');
|
||||||
xpos += space + width;
|
xpos += space + width;
|
||||||
new ButtonWidget(this, xpos, _h - 24, width, 16, "Quit", kQuitCmd, 'Q');
|
myQuitButton = new ButtonWidget(this, xpos, _h - 24, width, 16, "Quit", kQuitCmd, 'Q');
|
||||||
xpos += space + width;
|
xpos += space + width;
|
||||||
#else
|
#else
|
||||||
new ButtonWidget(this, xpos, _h - 24, width, 16, "Quit", kQuitCmd, 'Q');
|
myQuitButton = new ButtonWidget(this, xpos, _h - 24, width, 16, "Quit", kQuitCmd, 'Q');
|
||||||
xpos += space + width;
|
xpos += space + width;
|
||||||
new ButtonWidget(this, xpos, _h - 24, width, 16, "Options", kOptionsCmd, 'O');
|
myOptionsButton = new ButtonWidget(this, xpos, _h - 24, width, 16, "Options", kOptionsCmd, 'O');
|
||||||
xpos += space + width;
|
xpos += space + width;
|
||||||
new ButtonWidget(this, xpos, _h - 24, width, 16, "Reload", kReloadCmd, 'R');
|
myReloadButton = new ButtonWidget(this, xpos, _h - 24, width, 16, "Reload", kReloadCmd, 'R');
|
||||||
xpos += space + width;
|
xpos += space + width;
|
||||||
new ButtonWidget(this, xpos, _h - 24, width, 16, "Start", kStartCmd, 'Q');
|
myStartButton = new ButtonWidget(this, xpos, _h - 24, width, 16, "Start", kStartCmd, 'Q');
|
||||||
xpos += space + width;
|
xpos += space + width;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -97,24 +103,6 @@ LauncherDialog::LauncherDialog(OSystem* osystem, DialogContainer* parent,
|
||||||
myNote = new StaticTextWidget(this, 50, _h - 43, w - 70, 16,
|
myNote = new StaticTextWidget(this, 50, _h - 43, w - 70, 16,
|
||||||
"", kTextAlignLeft);
|
"", kTextAlignLeft);
|
||||||
|
|
||||||
// Restore last selection
|
|
||||||
/*
|
|
||||||
string last = ConfMan.get(String("lastselectedgame"), ConfigManager::kApplicationDomain);
|
|
||||||
if (!last.isEmpty())
|
|
||||||
{
|
|
||||||
int itemToSelect = 0;
|
|
||||||
StringList::const_iterator iter;
|
|
||||||
for (iter = _domains.begin(); iter != _domains.end(); ++iter, ++itemToSelect)
|
|
||||||
{
|
|
||||||
if (last == *iter)
|
|
||||||
{
|
|
||||||
myList->setSelected(itemToSelect);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Create the launcher options dialog, where you can change ROM
|
// Create the launcher options dialog, where you can change ROM
|
||||||
// and snapshot paths
|
// and snapshot paths
|
||||||
myOptions = new LauncherOptionsDialog(osystem, parent, 20, 60, _w - 40, _h - 120);
|
myOptions = new LauncherOptionsDialog(osystem, parent, 20, 60, _w - 40, _h - 120);
|
||||||
|
@ -140,36 +128,26 @@ void LauncherDialog::loadConfig()
|
||||||
updateListing();
|
updateListing();
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
void LauncherDialog::close()
|
|
||||||
{
|
|
||||||
// Save romdir specified by the browser
|
|
||||||
/*
|
|
||||||
FilesystemNode dir(myBrowser->getResult());
|
|
||||||
instance()->settings().setString("romdir", dir.path());
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
// Save last selection
|
|
||||||
const int sel = _list->getSelected();
|
|
||||||
if (sel >= 0)
|
|
||||||
ConfMan.set(String("lastselectedgame"), _domains[sel], ConfigManager::kApplicationDomain);
|
|
||||||
else
|
|
||||||
ConfMan.removeKey(String("lastselectedgame"), ConfigManager::kApplicationDomain);
|
|
||||||
|
|
||||||
ConfMan.flushToDisk();
|
|
||||||
Dialog::close();
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void LauncherDialog::reset()
|
void LauncherDialog::reset()
|
||||||
{
|
{
|
||||||
myOptions->reset();
|
myOptions->reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
void LauncherDialog::enableButtons(bool enable)
|
||||||
|
{
|
||||||
|
myStartButton->setEnabled(enable);
|
||||||
|
myOptionsButton->setEnabled(enable);
|
||||||
|
myReloadButton->setEnabled(enable);
|
||||||
|
myQuitButton->setEnabled(enable);
|
||||||
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void LauncherDialog::updateListing(bool fullReload)
|
void LauncherDialog::updateListing(bool fullReload)
|
||||||
{
|
{
|
||||||
|
enableButtons(false);
|
||||||
|
|
||||||
// Figure out if the ROM dir has changed since we last accessed it.
|
// Figure out if the ROM dir has changed since we last accessed it.
|
||||||
// If so, we do a full reload from disk (takes quite some time).
|
// If so, we do a full reload from disk (takes quite some time).
|
||||||
// Otherwise, we can use the cache file (which is much faster).
|
// Otherwise, we can use the cache file (which is much faster).
|
||||||
|
@ -204,18 +182,54 @@ void LauncherDialog::updateListing(bool fullReload)
|
||||||
ostringstream buf;
|
ostringstream buf;
|
||||||
buf << myGameList->size() << " files found";
|
buf << myGameList->size() << " files found";
|
||||||
myRomCount->setLabel(buf.str());
|
myRomCount->setLabel(buf.str());
|
||||||
|
|
||||||
|
enableButtons(true);
|
||||||
|
|
||||||
|
// Restore last selection
|
||||||
|
if(!myList->getList().isEmpty())
|
||||||
|
{
|
||||||
|
string lastrom = instance()->settings().getString("lastrom");
|
||||||
|
if(lastrom == "")
|
||||||
|
myList->setSelected(0);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
unsigned int itemToSelect = 0;
|
||||||
|
StringList::const_iterator iter;
|
||||||
|
for (iter = myList->getList().begin(); iter != myList->getList().end();
|
||||||
|
++iter, ++itemToSelect)
|
||||||
|
{
|
||||||
|
if (lastrom == *iter)
|
||||||
|
{
|
||||||
|
myList->setSelected(itemToSelect);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(itemToSelect > myList->getList().size())
|
||||||
|
myList->setSelected(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void LauncherDialog::loadListFromDisk()
|
void LauncherDialog::loadListFromDisk()
|
||||||
{
|
{
|
||||||
Properties props;
|
|
||||||
|
|
||||||
string romdir = instance()->settings().getString("romdir");
|
string romdir = instance()->settings().getString("romdir");
|
||||||
FilesystemNode dir(romdir);
|
FilesystemNode dir(romdir);
|
||||||
FSList files = dir.listDir(FilesystemNode::kListAll);
|
FSList files = dir.listDir(FilesystemNode::kListAll);
|
||||||
|
|
||||||
|
// Create a progress dialog box to show the progress of processing
|
||||||
|
// the ROMs, since this is usually a time-consuming operation
|
||||||
|
string message = "Loading ROM's from disk ...";
|
||||||
|
int w = instance()->frameBuffer().font().getStringWidth(message) + 20,
|
||||||
|
h = kLineHeight * 4;
|
||||||
|
int x = (_w - w) / 2,
|
||||||
|
y = (_h - h) / 2;
|
||||||
|
ProgressDialog progress(instance(), parent(), x, y, w, h);
|
||||||
|
progress.setMessage(message);
|
||||||
|
progress.setRange(0, files.size() - 1, 10);
|
||||||
|
|
||||||
// Create a entry for the GameList for each file
|
// Create a entry for the GameList for each file
|
||||||
|
Properties props;
|
||||||
string path = dir.path(), rom, md5, name, note;
|
string path = dir.path(), rom, md5, name, note;
|
||||||
for (unsigned int idx = 0; idx < files.size(); idx++)
|
for (unsigned int idx = 0; idx < files.size(); idx++)
|
||||||
{
|
{
|
||||||
|
@ -234,7 +248,11 @@ void LauncherDialog::loadListFromDisk()
|
||||||
name = files[idx].displayName();
|
name = files[idx].displayName();
|
||||||
|
|
||||||
myGameList->appendGame(rom, name, note);
|
myGameList->appendGame(rom, name, note);
|
||||||
|
|
||||||
|
// Update the progress bar, indicating one more ROM has been processed
|
||||||
|
progress.setProgress(idx);
|
||||||
}
|
}
|
||||||
|
progress.done();
|
||||||
|
|
||||||
// Sort the list by rom name (since that's what we see in the listview)
|
// Sort the list by rom name (since that's what we see in the listview)
|
||||||
myGameList->sortByName();
|
myGameList->sortByName();
|
||||||
|
@ -303,19 +321,17 @@ void LauncherDialog::createListCache()
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
string LauncherDialog::MD5FromFile(const string& path)
|
string LauncherDialog::MD5FromFile(const string& path)
|
||||||
{
|
{
|
||||||
ifstream in(path.c_str(), ios_base::binary);
|
uInt8* image;
|
||||||
if(!in)
|
int size;
|
||||||
|
|
||||||
|
if(instance()->openROM(path, &image, &size))
|
||||||
|
{
|
||||||
|
string md5 = MD5(image, size);
|
||||||
|
delete[] image;
|
||||||
|
return md5;
|
||||||
|
}
|
||||||
|
else
|
||||||
return "";
|
return "";
|
||||||
|
|
||||||
uInt8* image = new uInt8[512 * 1024];
|
|
||||||
in.read((char*)image, 512 * 1024);
|
|
||||||
int size = (int) in.gcount();
|
|
||||||
in.close();
|
|
||||||
|
|
||||||
string md5 = MD5(image, size);
|
|
||||||
delete[] image;
|
|
||||||
|
|
||||||
return md5;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
@ -331,7 +347,9 @@ void LauncherDialog::handleCommand(CommandSender* sender, int cmd, int data)
|
||||||
item = myList->getSelected();
|
item = myList->getSelected();
|
||||||
if(item >= 0)
|
if(item >= 0)
|
||||||
{
|
{
|
||||||
|
string s = myList->getSelectedString();
|
||||||
instance()->createConsole(myGameList->rom(item));
|
instance()->createConsole(myGameList->rom(item));
|
||||||
|
instance()->settings().setString("lastrom", s);
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: LauncherDialog.hxx,v 1.7 2005-05-16 15:37:30 stephena Exp $
|
// $Id: LauncherDialog.hxx,v 1.8 2005-05-17 18:42:23 stephena Exp $
|
||||||
//
|
//
|
||||||
// Based on code from ScummVM - Scumm Interpreter
|
// Based on code from ScummVM - Scumm Interpreter
|
||||||
// Copyright (C) 2002-2004 The ScummVM project
|
// Copyright (C) 2002-2004 The ScummVM project
|
||||||
|
@ -24,9 +24,11 @@
|
||||||
|
|
||||||
class DialogContainer;
|
class DialogContainer;
|
||||||
class LauncherOptionsDialog;
|
class LauncherOptionsDialog;
|
||||||
|
class ProgressDialog;
|
||||||
class CommandSender;
|
class CommandSender;
|
||||||
class StaticTextWidget;
|
class StaticTextWidget;
|
||||||
class ListWidget;
|
class ListWidget;
|
||||||
|
class ButtonWidget;
|
||||||
class OSystem;
|
class OSystem;
|
||||||
|
|
||||||
#include "Dialog.hxx"
|
#include "Dialog.hxx"
|
||||||
|
@ -45,19 +47,25 @@ class LauncherDialog : public Dialog
|
||||||
protected:
|
protected:
|
||||||
void updateListing(bool fullReload = false);
|
void updateListing(bool fullReload = false);
|
||||||
|
|
||||||
void close();
|
|
||||||
void reset();
|
void reset();
|
||||||
void loadConfig();
|
void loadConfig();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
ButtonWidget* myStartButton;
|
||||||
|
ButtonWidget* myOptionsButton;
|
||||||
|
ButtonWidget* myReloadButton;
|
||||||
|
ButtonWidget* myQuitButton;
|
||||||
|
|
||||||
ListWidget* myList;
|
ListWidget* myList;
|
||||||
StaticTextWidget* myNote;
|
StaticTextWidget* myNote;
|
||||||
StaticTextWidget* myRomCount;
|
StaticTextWidget* myRomCount;
|
||||||
GameList* myGameList;
|
GameList* myGameList;
|
||||||
|
|
||||||
LauncherOptionsDialog* myOptions;
|
LauncherOptionsDialog* myOptions;
|
||||||
|
ProgressDialog* myProgressBar;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void enableButtons(bool enable);
|
||||||
void loadListFromDisk();
|
void loadListFromDisk();
|
||||||
void loadListFromCache();
|
void loadListFromCache();
|
||||||
void createListCache();
|
void createListCache();
|
||||||
|
|
|
@ -0,0 +1,92 @@
|
||||||
|
//============================================================================
|
||||||
|
//
|
||||||
|
// SSSS tt lll lll
|
||||||
|
// SS SS tt ll ll
|
||||||
|
// SS tttttt eeee ll ll aaaa
|
||||||
|
// SSSS tt ee ee ll ll aa
|
||||||
|
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
|
||||||
|
// SS SS tt ee ll ll aa aa
|
||||||
|
// SSSS ttt eeeee llll llll aaaaa
|
||||||
|
//
|
||||||
|
// Copyright (c) 1995-2005 by Bradford W. Mott
|
||||||
|
//
|
||||||
|
// See the file "license" for information on usage and redistribution of
|
||||||
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
|
//
|
||||||
|
// $Id: ProgressDialog.cxx,v 1.1 2005-05-17 18:42:23 stephena Exp $
|
||||||
|
//
|
||||||
|
// Based on code from ScummVM - Scumm Interpreter
|
||||||
|
// Copyright (C) 2002-2004 The ScummVM project
|
||||||
|
//============================================================================
|
||||||
|
|
||||||
|
#include "OSystem.hxx"
|
||||||
|
#include "Widget.hxx"
|
||||||
|
#include "Dialog.hxx"
|
||||||
|
#include "DialogContainer.hxx"
|
||||||
|
#include "ProgressDialog.hxx"
|
||||||
|
#include "GuiUtils.hxx"
|
||||||
|
|
||||||
|
#include "bspf.hxx"
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
ProgressDialog::ProgressDialog(OSystem* osystem, DialogContainer* parent,
|
||||||
|
int x, int y, int w, int h)
|
||||||
|
: Dialog(osystem, parent, x, y, w, h),
|
||||||
|
myMessage(NULL),
|
||||||
|
mySlider(NULL),
|
||||||
|
myStart(0),
|
||||||
|
myFinish(0),
|
||||||
|
myStep(0)
|
||||||
|
{
|
||||||
|
myMessage = new StaticTextWidget(this, 0, 10, w, kLineHeight, "", kTextAlignCenter);
|
||||||
|
myMessage->setColor(kTextColorEm);
|
||||||
|
mySlider = new SliderWidget(this, 10, 15 + kLineHeight, w - 20, kLineHeight, "", 0, 0);
|
||||||
|
mySlider->setMinValue(100);
|
||||||
|
mySlider->setMaxValue(200);
|
||||||
|
mySlider->setValue(100); // Prevents the slider from initially drawing
|
||||||
|
// across the entire screen for a split-second
|
||||||
|
|
||||||
|
parent->addDialog(this);
|
||||||
|
instance()->frameBuffer().refresh(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
ProgressDialog::~ProgressDialog()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
void ProgressDialog::done()
|
||||||
|
{
|
||||||
|
parent()->removeDialog();
|
||||||
|
instance()->frameBuffer().refresh(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
void ProgressDialog::setMessage(const string& message)
|
||||||
|
{
|
||||||
|
myMessage->setLabel(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
void ProgressDialog::setRange(int start, int finish, int step)
|
||||||
|
{
|
||||||
|
myStart = start;
|
||||||
|
myFinish = finish;
|
||||||
|
myStep = step;
|
||||||
|
myCurrentStep = 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
void ProgressDialog::setProgress(int progress)
|
||||||
|
{
|
||||||
|
// Only increase the progress bar if we have arrived at a new step
|
||||||
|
// IE, we only increase in intervals specified by setRange()
|
||||||
|
int p = (int) (((double)progress / myFinish) * 100 + 100);
|
||||||
|
if(p >= myCurrentStep)
|
||||||
|
{
|
||||||
|
myCurrentStep += myStep;
|
||||||
|
mySlider->setValue(p);
|
||||||
|
instance()->frameBuffer().refresh(true);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
//============================================================================
|
||||||
|
//
|
||||||
|
// SSSS tt lll lll
|
||||||
|
// SS SS tt ll ll
|
||||||
|
// SS tttttt eeee ll ll aaaa
|
||||||
|
// SSSS tt ee ee ll ll aa
|
||||||
|
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
|
||||||
|
// SS SS tt ee ll ll aa aa
|
||||||
|
// SSSS ttt eeeee llll llll aaaaa
|
||||||
|
//
|
||||||
|
// Copyright (c) 1995-2005 by Bradford W. Mott and the Stella team
|
||||||
|
//
|
||||||
|
// See the file "license" for information on usage and redistribution of
|
||||||
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
|
//
|
||||||
|
// $Id: ProgressDialog.hxx,v 1.1 2005-05-17 18:42:23 stephena Exp $
|
||||||
|
//
|
||||||
|
// Based on code from ScummVM - Scumm Interpreter
|
||||||
|
// Copyright (C) 2002-2004 The ScummVM project
|
||||||
|
//============================================================================
|
||||||
|
|
||||||
|
#ifndef PROGRESS_DIALOG_HXX
|
||||||
|
#define PROGRESS_DIALOG_HXX
|
||||||
|
|
||||||
|
class DialogContainer;
|
||||||
|
class StaticTextWidget;
|
||||||
|
class SliderWidget;
|
||||||
|
|
||||||
|
#include "OSystem.hxx"
|
||||||
|
#include "bspf.hxx"
|
||||||
|
|
||||||
|
class ProgressDialog : public Dialog
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ProgressDialog(OSystem* osystem, DialogContainer* parent,
|
||||||
|
int x, int y, int w, int h);
|
||||||
|
~ProgressDialog();
|
||||||
|
|
||||||
|
void setMessage(const string& message);
|
||||||
|
void setRange(int begin, int end, int step);
|
||||||
|
void setProgress(int progress);
|
||||||
|
void done();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
StaticTextWidget* myMessage;
|
||||||
|
SliderWidget* mySlider;
|
||||||
|
|
||||||
|
int myStart, myFinish, myStep, myCurrentStep;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue