2015-06-12 13:14:38 +00:00
|
|
|
namespace hiro {
|
2012-01-26 06:50:09 +00:00
|
|
|
|
2015-06-12 13:14:38 +00:00
|
|
|
struct AppMessage {
|
Update to v106r47 release.
byuu says:
This is probably the largest code-change diff I've done in years.
I spent four days working 10-16 hours a day reworking layouts in hiro
completely.
The result is we now have TableLayout, which will allow for better
horizontal+vertical combined alignment.
Windows, GTK2, and now GTK3 are fully supported.
Windows is getting the initial window geometry wrong by a bit.
GTK2 and GTK3 work perfectly. I basically abandoned trying to detect
resize signals, and instead keep a list of all hiro windows that are
allocated, and every time the main loop runs, it will query all of them
to see if they've been resized. I'm disgusted that I have to do this,
but after fighting with GTK for years, I'm about sick of it. GTK was
doing this crazy thing where it would trigger another size-allocate
inside of a previous size-allocate, and so my layouts would be halfway
through resizing all the widgets, and then the size-allocate would kick
off another one. That would end up leaving the rest of the first layout
loop with bad widget sizes. And if I detected a second re-entry and
blocked it, then the entire window would end up with the older geometry.
I started trying to build a message queue system to allow the second
layout resize to occur after the first one completed, but this was just
too much madness, so I went with the simpler solution.
Qt4 has some geometry problems, and doesn't show tab frame layouts
properly yet.
Qt5 causes an ICE error and tanks my entire Xorg display server, so ...
something is seriously wrong there, and it's not hiro's fault. Creating
a dummy Qt5 application without even using hiro, just int main() {
TestObject object; } with object performing a dynamic\_cast to a derived
type segfaults. Memory is getting corrupted where GCC allocates the
vtables for classes, just by linking in Qt. Could be somehow related to
the -fPIC requirement that only Qt5 has ... could just be that FreeBSD
10.1 has a buggy implementation of Qt5. I don't know. It's beyond my
ability to debug, so this one's going to stay broken.
The Cocoa port is busted. I'll fix it up to compile again, but that's
about all I'm going to do.
Many optimizations mean bsnes and higan open faster. GTK2 and GTK3 both
resize windows very quickly now.
higan crashes when you load a game, so that's not good. bsnes works
though.
bsnes also has the start of a localization engine now. Still a long way
to go.
The makefiles received a rather substantial restructuring. Including the
ruby and hiro makefiles will add the necessary compilation rules for
you, which also means that moc will run for the qt4 and qt5 targets, and
windres will run for the Windows targets.
2018-07-14 03:59:29 +00:00
|
|
|
enum : uint {
|
2015-06-12 13:14:38 +00:00
|
|
|
None = WM_APP,
|
2016-05-04 10:07:13 +00:00
|
|
|
TableView_doPaint,
|
|
|
|
TableView_onActivate,
|
|
|
|
TableView_onChange,
|
2015-06-12 13:14:38 +00:00
|
|
|
};
|
2011-02-24 09:25:20 +00:00
|
|
|
};
|
|
|
|
|
2015-06-12 13:14:38 +00:00
|
|
|
using WindowProc = auto CALLBACK (*)(HWND, UINT, WPARAM, LPARAM) -> LRESULT;
|
2013-03-15 13:11:33 +00:00
|
|
|
|
2015-06-15 22:16:43 +00:00
|
|
|
static vector<wObject> windows;
|
|
|
|
|
2013-03-15 13:11:33 +00:00
|
|
|
}
|
2015-06-12 13:14:38 +00:00
|
|
|
|
|
|
|
#define Declare(Name, Base) \
|
|
|
|
p##Name(m##Name& reference) : p##Base(reference) {} \
|
|
|
|
auto self() const -> m##Name& { return (m##Name&)reference; } \
|
|
|
|
auto state() const -> m##Name::State& { return self().state; } \
|
|
|
|
auto construct() -> void override; \
|
|
|
|
auto destruct() -> void override; \
|
|
|
|
auto reconstruct() -> void override { destruct(), construct(); } \
|
|
|
|
|
|
|
|
#include "font.hpp"
|
|
|
|
#include "desktop.hpp"
|
|
|
|
#include "monitor.hpp"
|
|
|
|
#include "keyboard.hpp"
|
|
|
|
#include "mouse.hpp"
|
|
|
|
#include "browser-window.hpp"
|
|
|
|
#include "message-window.hpp"
|
|
|
|
|
|
|
|
#include "object.hpp"
|
|
|
|
#include "group.hpp"
|
|
|
|
|
|
|
|
#include "timer.hpp"
|
|
|
|
#include "window.hpp"
|
|
|
|
#include "status-bar.hpp"
|
|
|
|
#include "menu-bar.hpp"
|
|
|
|
#include "popup-menu.hpp"
|
|
|
|
|
|
|
|
#include "action/action.hpp"
|
|
|
|
#include "action/menu.hpp"
|
|
|
|
#include "action/menu-separator.hpp"
|
|
|
|
#include "action/menu-item.hpp"
|
|
|
|
#include "action/menu-check-item.hpp"
|
|
|
|
#include "action/menu-radio-item.hpp"
|
|
|
|
|
|
|
|
#include "sizable.hpp"
|
|
|
|
|
Update to v106r57 release.
byuu says:
I've added tool tips to hiro for Windows, GTK, and Qt. I'm unsure how to
add them for Cocoa. I wasted am embarrassing ~14 hours implementing tool
tips from scratch on Windows, because the `TOOLTIPS_CLASS` widget just
absolutely refused to show up, no matter what I tried. As such, they're
not quite 100% native, but I would really appreciate any patch
submissions to help improve my implementation.
I added tool tips to all of the confusing settings in bsnes. And of
course, for those of you who don't like them, there's a configuration
file setting to turn them off globally.
I also improved Mega Drive handling of the Game Genie a bit, and
restructured the way the Settings class works in bsnes.
Starting now, I'm feature-freezing bsnes and higan. From this point
forward:
- polishing up and fixing bugs caused by the ruby/hiro changes
- adding DRC to XAudio2, and maybe exclusive mode to WGL
- correcting FEoEZ (English) to load and work again out of the box
Once that's done, a final beta of bsnes will go out, I'll fix any
reported bugs that I'm able to, and then v107 should be ready. This time
with higan being functional, but marked as v107 beta. v108 will restore
higan to production status again, alongside bsnes.
2018-08-08 08:46:58 +00:00
|
|
|
#include "tool-tip.hpp"
|
|
|
|
|
2015-06-12 13:14:38 +00:00
|
|
|
#include "widget/widget.hpp"
|
|
|
|
#include "widget/button.hpp"
|
|
|
|
#include "widget/canvas.hpp"
|
|
|
|
#include "widget/check-button.hpp"
|
|
|
|
#include "widget/check-label.hpp"
|
|
|
|
#include "widget/combo-button.hpp"
|
|
|
|
#include "widget/combo-button-item.hpp"
|
|
|
|
#include "widget/frame.hpp"
|
|
|
|
#include "widget/hex-edit.hpp"
|
2015-08-21 10:56:39 +00:00
|
|
|
#include "widget/horizontal-scroll-bar.hpp"
|
2015-06-12 13:14:38 +00:00
|
|
|
#include "widget/horizontal-slider.hpp"
|
|
|
|
#include "widget/label.hpp"
|
|
|
|
#include "widget/line-edit.hpp"
|
|
|
|
#include "widget/progress-bar.hpp"
|
|
|
|
#include "widget/radio-button.hpp"
|
|
|
|
#include "widget/radio-label.hpp"
|
|
|
|
#include "widget/tab-frame.hpp"
|
|
|
|
#include "widget/tab-frame-item.hpp"
|
2016-05-04 10:07:13 +00:00
|
|
|
#include "widget/table-view.hpp"
|
|
|
|
#include "widget/table-view-column.hpp"
|
|
|
|
#include "widget/table-view-item.hpp"
|
|
|
|
#include "widget/table-view-cell.hpp"
|
2015-06-12 13:14:38 +00:00
|
|
|
#include "widget/text-edit.hpp"
|
2015-08-21 10:56:39 +00:00
|
|
|
#include "widget/vertical-scroll-bar.hpp"
|
2015-06-12 13:14:38 +00:00
|
|
|
#include "widget/vertical-slider.hpp"
|
|
|
|
#include "widget/viewport.hpp"
|
|
|
|
|
|
|
|
#include "application.hpp"
|
Update to bsnes v107.1 release.
byuu says:
Don't let the point release fool you, there are many significant changes in this
release. I will be keeping bsnes releases using a point system until the new
higan release is ready.
Changelog:
- GUI: added high DPI support
- GUI: fixed the state manager image preview
- Windows: added a new waveOut driver with support for dynamic rate control
- Windows: corrected the XAudio 2.1 dynamic rate control support [BearOso]
- Windows: corrected the Direct3D 9.0 fullscreen exclusive window centering
- Windows: fixed XInput controller support on Windows 10
- SFC: added high-level emulation for the DSP1, DSP2, DSP4, ST010, and Cx4
coprocessors
- SFC: fixed a slight rendering glitch in the intro to Megalomania
If the coprocessor firmware is missing, bsnes will fallback on HLE where it is
supported, which is everything other than SD Gundam GX and the two Hayazashi
Nidan Morita Shougi games.
The Windows dynamic rate control works best with Direct3D in fullscreen
exclusive mode. I recommend the waveOut driver over the XAudio 2.1 driver, as it
is not possible to target a single XAudio2 version on all Windows OS releases.
The waveOut driver should work everywhere out of the box.
Note that with DRC, the synchronization source is your monitor, so you will
want to be running at 60hz (NTSC) or 50hz (PAL). If you have an adaptive sync
monitor, you should instead use the WASAPI (exclusive) or ASIO audio driver.
2019-04-09 01:16:30 +00:00
|
|
|
#include "settings.hpp"
|
2015-06-12 13:14:38 +00:00
|
|
|
|
|
|
|
#undef Declare
|