From: S?bastien G. <kx...@us...> - 2004-05-21 20:44:38
|
Update of /cvsroot/vba/VisualBoyAdvance/src/gtk In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13737/src/gtk Modified Files: main.cpp window.cpp window.h Log Message: Added command line options to gvba. Updated help text formatting in SDL.cpp Index: main.cpp =================================================================== RCS file: /cvsroot/vba/VisualBoyAdvance/src/gtk/main.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** main.cpp 12 May 2004 01:07:06 -0000 1.5 --- main.cpp 21 May 2004 20:44:26 -0000 1.6 *************** *** 17,20 **** --- 17,24 ---- // Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + #include <limits.h> + #include <stdlib.h> + #include "../getopt.h" + #include <list> *************** *** 31,34 **** --- 35,78 ---- using Gnome::Glade::Xml; + static const char * csProgramName; + + static int iShowHelp; + static int iShowVersion; + + // Non-characters used for long options that have no equivalent short option + enum + { + IGNORED_OPTION = CHAR_MAX + 1 + }; + + static const char csShortOptions[] = "V"; + + static const struct option astLongOptions[] = + { + { "help", no_argument, &iShowHelp, IGNORED_OPTION }, + { "version", no_argument, NULL, 'V' }, + { 0, 0, 0, 0 } + }; + + static void vUsage(int iStatus) + { + if (iStatus != 0) + { + g_printerr(_("Try `%s --help' for more information.\n"), csProgramName); + } + else + { + g_print(_("Usage: %s [option ...] [file]\n"), csProgramName); + g_print(_("\ + \n\ + Options:\n\ + --help Output this help.\n\ + -V, --version Output version information.\n\ + ")); + } + + exit(iStatus); + } + static void vSetDefaultWindowIcon() { *************** *** 53,56 **** --- 97,102 ---- int main(int argc, char * argv[]) { + csProgramName = argv[0]; + #ifdef ENABLE_NLS setlocale(LC_ALL, ""); *************** *** 62,65 **** --- 108,140 ---- Gtk::Main oKit(argc, argv); + int iOpt; + while ((iOpt = getopt_long(argc, argv, csShortOptions, astLongOptions, NULL)) + != -1) + { + switch (iOpt) + { + case 'V': + iShowVersion = 1; + break; + case 0: + // Long options + break; + default: + vUsage(1); + break; + } + } + + if (iShowVersion) + { + g_print(_("VisualBoyAdvance version %s [GTK+]\n"), VERSION); + exit(0); + } + + if (iShowHelp) + { + vUsage(0); + } + vSetDefaultWindowIcon(); *************** *** 84,87 **** --- 159,174 ---- poXml->get_widget_derived<VBA::Window>("MainWindow", poWindow); + if (optind < argc) + { + // Display the window before loading the file + poWindow->show(); + while (Gtk::Main::events_pending()) + { + Gtk::Main::iteration(); + } + + poWindow->bLoadROM(argv[optind]); + } + Gtk::Main::run(*poWindow); delete poWindow; Index: window.h =================================================================== RCS file: /cvsroot/vba/VisualBoyAdvance/src/gtk/window.h,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** window.h 11 May 2004 03:07:30 -0000 1.20 --- window.h 21 May 2004 20:44:26 -0000 1.21 *************** *** 70,73 **** --- 70,74 ---- const int m_iGBAScreenHeight; + bool bLoadROM(const std::string & _rsFile); void vPopupError(const char * _csFormat, ...); void vPopupErrorV(const char * _csFormat, va_list _args); *************** *** 307,311 **** void vSetDefaultTitle(); void vCreateFileOpenDialog(); - bool bLoadROM(const std::string & _rsFile); void vLoadBattery(); void vSaveBattery(); --- 308,311 ---- Index: window.cpp =================================================================== RCS file: /cvsroot/vba/VisualBoyAdvance/src/gtk/window.cpp,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** window.cpp 15 May 2004 11:14:13 -0000 1.23 --- window.cpp 21 May 2004 20:44:26 -0000 1.24 *************** *** 1415,1418 **** --- 1415,1507 ---- } + bool Window::bLoadROM(const std::string & _rsFile) + { + vOnFileClose(); + + m_sRomFile = _rsFile; + const char * csFile = _rsFile.c_str(); + + IMAGE_TYPE eType = utilFindType(csFile); + if (eType == IMAGE_UNKNOWN) + { + vPopupError(_("Unknown file type %s"), csFile); + return false; + } + + bool bLoaded = false; + if (eType == IMAGE_GB) + { + bLoaded = gbLoadRom(csFile); + if (bLoaded) + { + m_eCartridge = CartridgeGB; + m_stEmulator = GBSystem; + } + } + else if (eType == IMAGE_GBA) + { + int iSize = CPULoadRom(csFile); + bLoaded = (iSize > 0); + if (bLoaded) + { + m_eCartridge = CartridgeGBA; + m_stEmulator = GBASystem; + + useBios = m_poCoreConfig->oGetKey<bool>("use_bios_file"); + CPUInit(m_poCoreConfig->sGetKey("bios_file").c_str(), useBios); + CPUReset(); + + // If the bios file was rejected by CPUInit + if (m_poCoreConfig->oGetKey<bool>("use_bios_file") && ! useBios) + { + m_poUseBiosItem->set_active(false); + m_poUseBiosItem->set_sensitive(false); + m_poCoreConfig->vSetKey("bios_file", ""); + } + } + } + + if (! bLoaded) + { + return false; + } + + vLoadBattery(); + vUpdateScreen(); + + debugger = false; // May cause conflicts + emulating = 1; + m_bWasEmulating = false; + m_uiThrottleDelay = 0; + + if (m_eCartridge == CartridgeGBA) + { + soundSetQuality(m_eSoundQuality); + } + else + { + gbSoundSetQuality(m_eSoundQuality); + } + + vUpdateGameSlots(); + vHistoryAdd(_rsFile); + + for (std::list<Gtk::Widget *>::iterator it = m_listSensitiveWhenPlaying.begin(); + it != m_listSensitiveWhenPlaying.end(); + it++) + { + (*it)->set_sensitive(); + } + + if (m_poCoreConfig->oGetKey<bool>("load_game_auto")) + { + vOnLoadGameMostRecent(); + } + + vStartEmu(); + + return true; + } + void Window::vPopupError(const char * _csFormat, ...) { *************** *** 1687,1779 **** } - bool Window::bLoadROM(const std::string & _rsFile) - { - vOnFileClose(); - - m_sRomFile = _rsFile; - const char * csFile = _rsFile.c_str(); - - IMAGE_TYPE eType = utilFindType(csFile); - if (eType == IMAGE_UNKNOWN) - { - vPopupError(_("Unknown file type %s"), csFile); - return false; - } - - bool bLoaded = false; - if (eType == IMAGE_GB) - { - bLoaded = gbLoadRom(csFile); - if (bLoaded) - { - m_eCartridge = CartridgeGB; - m_stEmulator = GBSystem; - } - } - else if (eType == IMAGE_GBA) - { - int iSize = CPULoadRom(csFile); - bLoaded = (iSize > 0); - if (bLoaded) - { - m_eCartridge = CartridgeGBA; - m_stEmulator = GBASystem; - - useBios = m_poCoreConfig->oGetKey<bool>("use_bios_file"); - CPUInit(m_poCoreConfig->sGetKey("bios_file").c_str(), useBios); - CPUReset(); - - // If the bios file was rejected by CPUInit - if (m_poCoreConfig->oGetKey<bool>("use_bios_file") && ! useBios) - { - m_poUseBiosItem->set_active(false); - m_poUseBiosItem->set_sensitive(false); - m_poCoreConfig->vSetKey("bios_file", ""); - } - } - } - - if (! bLoaded) - { - return false; - } - - vLoadBattery(); - vUpdateScreen(); - - debugger = false; // May cause conflicts - emulating = 1; - m_bWasEmulating = false; - m_uiThrottleDelay = 0; - - if (m_eCartridge == CartridgeGBA) - { - soundSetQuality(m_eSoundQuality); - } - else - { - gbSoundSetQuality(m_eSoundQuality); - } - - vUpdateGameSlots(); - vHistoryAdd(_rsFile); - - for (std::list<Gtk::Widget *>::iterator it = m_listSensitiveWhenPlaying.begin(); - it != m_listSensitiveWhenPlaying.end(); - it++) - { - (*it)->set_sensitive(); - } - - if (m_poCoreConfig->oGetKey<bool>("load_game_auto")) - { - vOnLoadGameMostRecent(); - } - - vStartEmu(); - - return true; - } - void Window::vLoadBattery() { --- 1776,1779 ---- |