From 81862972a98cbabad01de0d39cfd7dc5b965d77c Mon Sep 17 00:00:00 2001 From: squall-leonhart Date: Sat, 27 Nov 2010 01:06:20 +0000 Subject: [PATCH] applied gtk_rtc.patch by unmacaque --- src/gtk/gameboyadvanceconfig.cpp | 11 ++++++++++ src/gtk/gameboyadvanceconfig.h | 2 ++ src/gtk/ui/gameboyadvance.ui | 36 ++++++++++++++++++++++++++++++++ src/gtk/window.cpp | 15 +++++++++++++ src/gtk/window.h | 1 + 5 files changed, 65 insertions(+) diff --git a/src/gtk/gameboyadvanceconfig.cpp b/src/gtk/gameboyadvanceconfig.cpp index 0ea96d1d..6094a4c2 100644 --- a/src/gtk/gameboyadvanceconfig.cpp +++ b/src/gtk/gameboyadvanceconfig.cpp @@ -31,11 +31,13 @@ GameBoyAdvanceConfigDialog::GameBoyAdvanceConfigDialog(GtkDialog* _pstDialog, co refBuilder->get_widget("FlashSizeComboBox", m_poFlashSizeComboBox); refBuilder->get_widget("BiosCheckButton", m_poBiosCheckButton); refBuilder->get_widget("BiosFileChooserButton", m_poBiosFileChooserButton); + refBuilder->get_widget("RTCCheckButton", m_poRTCCheckButton); m_poSaveTypeComboBox->signal_changed().connect(sigc::mem_fun(*this, &GameBoyAdvanceConfigDialog::vOnSaveTypeChanged)); m_poFlashSizeComboBox->signal_changed().connect(sigc::mem_fun(*this, &GameBoyAdvanceConfigDialog::vOnFlashSizeChanged)); m_poBiosCheckButton->signal_toggled().connect(sigc::mem_fun(*this, &GameBoyAdvanceConfigDialog::vOnUseBiosChanged)); m_poBiosFileChooserButton->signal_selection_changed().connect(sigc::mem_fun(*this, &GameBoyAdvanceConfigDialog::vOnBiosSelectionChanged)); + m_poRTCCheckButton->signal_toggled().connect(sigc::mem_fun(*this, &GameBoyAdvanceConfigDialog::vOnEnableRTCChanged)); } void GameBoyAdvanceConfigDialog::vSetConfig(Config::Section * _poConfig, VBA::Window * _poWindow) @@ -83,6 +85,9 @@ void GameBoyAdvanceConfigDialog::vSetConfig(Config::Section * _poConfig, VBA::Wi m_poBiosFileChooserButton->add_filter(oAllFilter); m_poBiosFileChooserButton->add_filter(oBiosFilter); m_poBiosFileChooserButton->set_filter(oBiosFilter); + + bool bEnableRTC = m_poConfig->oGetKey("enable_rtc"); + m_poRTCCheckButton->set_active(bEnableRTC); } void GameBoyAdvanceConfigDialog::vOnSaveTypeChanged() @@ -120,4 +125,10 @@ void GameBoyAdvanceConfigDialog::vOnBiosSelectionChanged() m_poConfig->vSetKey("bios_file", sBios); } +void GameBoyAdvanceConfigDialog::vOnEnableRTCChanged() +{ + bool bEnableRTC = m_poRTCCheckButton->get_active(); + m_poConfig->vSetKey("enable_rtc", bEnableRTC); +} + } // namespace VBA diff --git a/src/gtk/gameboyadvanceconfig.h b/src/gtk/gameboyadvanceconfig.h index 70910a66..591ef4ea 100644 --- a/src/gtk/gameboyadvanceconfig.h +++ b/src/gtk/gameboyadvanceconfig.h @@ -39,6 +39,7 @@ private: void vOnFlashSizeChanged(); void vOnUseBiosChanged(); void vOnBiosSelectionChanged(); + void vOnEnableRTCChanged(); VBA::Window * m_poWindow; @@ -47,6 +48,7 @@ private: Gtk::ComboBox * m_poFlashSizeComboBox; Gtk::CheckButton * m_poBiosCheckButton; Gtk::FileChooserButton * m_poBiosFileChooserButton; + Gtk::CheckButton * m_poRTCCheckButton; }; } // namespace VBA diff --git a/src/gtk/ui/gameboyadvance.ui b/src/gtk/ui/gameboyadvance.ui index 05496327..d1a91e25 100644 --- a/src/gtk/ui/gameboyadvance.ui +++ b/src/gtk/ui/gameboyadvance.ui @@ -194,6 +194,42 @@ 2 + + + + True + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + + + True + True + Enable real-time clock + True + + + + + + + + + True + <b>Real-Time Clock</b> + True + + + + + 3 + diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index b2161020..38be11b5 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -27,6 +27,7 @@ #include #include "../gba/GBA.h" +#include "../gba/RTC.h" #include "../gba/Sound.h" #include "../gb/gb.h" #include "../gb/gbGlobals.h" @@ -148,6 +149,7 @@ Window::Window(GtkWindow * _pstWindow, const Glib::RefPtr & _poXml) : vApplyConfigGBPrinter(); vApplyConfigGBASaveType(); vApplyConfigGBAFlashSize(); + vApplyConfigGBARTC(); Gtk::MenuItem * poMI; Gtk::CheckMenuItem * poCMI; @@ -570,6 +572,7 @@ void Window::vInitConfig() m_poCoreConfig->vSetKey("frameskip", "auto" ); m_poCoreConfig->vSetKey("use_bios_file", false ); m_poCoreConfig->vSetKey("bios_file", "" ); + m_poCoreConfig->vSetKey("enable_rtc", false ); m_poCoreConfig->vSetKey("save_type", SaveAuto ); m_poCoreConfig->vSetKey("flash_size", 64 ); m_poCoreConfig->vSetKey("gb_border", false ); @@ -675,6 +678,10 @@ void Window::vCheckConfig() { m_poCoreConfig->vSetKey("use_bios_file", false); } + if (m_poCoreConfig->sGetKey("enable_rtc") == "") + { + m_poCoreConfig->vSetKey("enable_rtc", false); + } sValue = m_poCoreConfig->sGetKey("gb_bios_file"); if (sValue != "" && ! Glib::file_test(sValue, Glib::FILE_TEST_IS_REGULAR)) @@ -895,6 +902,12 @@ void Window::vApplyConfigGBAFlashSize() } } +void Window::vApplyConfigGBARTC() +{ + bool iRTC = m_poCoreConfig->oGetKey("enable_rtc"); + rtcEnable(iRTC); +} + void Window::vHistoryAdd(const std::string & _rsFile) { std::string sURL = "file://" + _rsFile; @@ -1038,6 +1051,8 @@ bool Window::bLoadROM(const std::string & _rsFile) m_poUseBiosItem->set_sensitive(false); m_poCoreConfig->vSetKey("bios_file", ""); } + + rtcEnable(m_poCoreConfig->oGetKey("enable_rtc")); } } diff --git a/src/gtk/window.h b/src/gtk/window.h index bda936ea..d9344667 100644 --- a/src/gtk/window.h +++ b/src/gtk/window.h @@ -106,6 +106,7 @@ public: void vApplyConfigGBPrinter(); void vApplyConfigGBASaveType(); void vApplyConfigGBAFlashSize(); + void vApplyConfigGBARTC(); void vUpdateScreen(); inline ECartridge eGetCartridge() const { return m_eCartridge; }