Commit Graph

192 Commits

Author SHA1 Message Date
Volker Ruppert
08b120c5f8 Some code cleanup after implementing new text update API. 2020-11-22 09:02:38 +00:00
Volker Ruppert
45507705bf Implemented new text update API in the X gui and some related fixes.
- The X gui behaviour should be unchanged.
- RFB / vncsrv: cursor shape fixes.
- Changed format of the font parameters to fix "double width" characters.
- Restore guest charmap after leaving gui console.
2020-11-16 15:39:35 +00:00
Volker Ruppert
b94fff0501 Implemented new text update API in the vncsrv gui and console cursor fix.
- Now the vncsrv gui supports the VGA features split screen and h/v pel panning.
- Fixed new API cursor blinking in the gui console.
2020-11-15 16:16:14 +00:00
Volker Ruppert
6202244991 Implemented a new text update API in the common gui code and enabled it for RFB.
- Now using text_update_common() for the new text update API in addition to the
  graphical text snapshot feature.
- Drawing to snapshot buffer moved to new method draw_char_common().
- A gui using the new text update API only needs to implement the new method
  draw_char(). The method set_font() is optional and it can be used to update
  font bitmaps / pixmaps.
- Modified the RFB gui to use the new API. Now the VGA features split screen
  and h/v pel panning are supported by the RFB gui. The legacy text_update()
  method is now empty but it must be present for compatiblity.
- TODO: Implement new API in some other guis to reduce code duplication.
2020-11-15 09:55:38 +00:00
Volker Ruppert
f62baaa7fd Small fixes and cleanups in the text_update() code. 2020-10-20 16:20:33 +00:00
Volker Ruppert
2045ead0ce Improved error handling of the user shortcut feature.
- Shortcut parser sets a flag in case of error.
- String parameter handler resets to old value if the new one is invalid.
- User button handler shows a message box if the parser signals an error.
2020-10-19 15:01:40 +00:00
Volker Ruppert
d708382bc0 Added gui message box support and use it to display errors that can occur in
toolbar button handlers.
2020-10-18 19:57:05 +00:00
Volker Ruppert
3c1851aa40 Added support for vertical pel panning to graphical text snapshot feature. 2020-10-18 08:08:53 +00:00
Volker Ruppert
d1028178d3 Improved text mode snapshot in BMP format and text_update() API changes.
- Added support for split screen mode and horizontal pel panning.
- Text mode cursor now correctly visible independent from blink state.
- Workarounds for the existing text_update() API.
2020-10-17 15:44:52 +00:00
Volker Ruppert
163622a59a Modified text cursor handling and fixed text cursor bug in split screen mode
in some guis.
2020-10-16 21:41:02 +00:00
Volker Ruppert
dffaa9794b Added support for saving text mode snapshot in BMP format if file extension is
set accordingly.
TODO #1: Text mode features split screen and h/v pel panning missing for now.
TODO #2: Show error messages related to dialogs in message boxes.
2020-10-16 17:25:50 +00:00
Volker Ruppert
9cbe03f7f2 Pressing the "m" button in gui command mode writes a marker to log file.
Removed now obsolete patch.
2020-08-21 19:12:37 +00:00
Volker Ruppert
f545071b4d Added support for modifier keys in gui command mode (shift, control, alt, caps lock).
- Enter command mode with F7 key only, but no modifier pressed.
- Pressing / releasing modifier key only doesn't leave command mode.
- Changed some headerbar button access keys using modifiers (e.g. shift + c
  calls config button handler). See user doc for all supported keys.
2020-07-30 20:04:31 +00:00
Volker Ruppert
c28a07b5f1 Some gui command mode changes.
- win32: fixed mode after fullscreen toggle
- call floppy button handlers using 'a' and 'b' keys
2020-07-18 13:36:21 +00:00
Volker Ruppert
413388dfa3 Added support for calling headerbar button handlers or perform other actions
with keypress combination. This feature is currently supported by the x and
sdl2 guis only and it can be activated with the "cmdmode" (command mode)
display library option. If enabled, pressing the F7 key enters this mode (shown
in the leftmost statusbar item) and the next keypress (except F7) is not sent
to the emmulated keyboard. If the key is supported, the associated action is
performed. Both x and sdl2 support calling the handlers of 8 headerbar buttons.
The sdl2 gui additionaly supports toggling fullscreen / windowed mode.

Supported keys:
c - Press the Copy button
e - Press the Config button
f - Toggle fullscreen mode (sdl2 only)
n - Press the Snapshot button
o - Press the Power button
p - Press the Paste button
r - Press the Reset button
s - Press the Suspend button
u - Press the User button
F7 - Send F7 keypress to emulation

TODO: add support for other guis.
2020-07-15 16:26:46 +00:00
Volker Ruppert
a201be5031 Since source and destination area overlap, we have to use memmove() here. 2019-11-24 18:13:12 +00:00
Volker Ruppert
100b097c29 Added symbol BX_GUI_CONFIRM_QUIT to enable showing the dialog after pressing
the power button (disabled by default).
2017-04-02 16:16:53 +00:00
Volker Ruppert
e9495af59a Set up VGA palette entries for gui console to make sure the text is visible. 2017-03-03 12:43:20 +00:00
Volker Ruppert
4502478b50 Changed a lot of malloc() / free() calls to C++ style new / delete. 2017-02-18 11:13:56 +00:00
Volker Ruppert
f59eaa2602 Simplified immediate shutdown code by using BX_FATAL. 2017-01-24 21:52:19 +00:00
Volker Ruppert
1546c8803b Bochs gui code cleanup
- Only keep the comments for the specific gui methods in nogui.cc and add
  references to this file in all other gui sources.
- Changed the order of methods and added some useful comments in gui.cc / gui.h.
- Minor other cleanups
2017-01-15 11:44:43 +00:00
Volker Ruppert
787307790f Moved event processing of the "classic" Bochs headerbar to the common gui code
and modified the gui code of rfb, sdl, sdl2, vncsrv and x to use it.
2017-01-14 13:10:20 +00:00
Volker Ruppert
5cd321dd02 Enabled gui console support for sdl2 using SDL_TEXTINPUT event. 2017-01-13 21:37:06 +00:00
Volker Ruppert
f18bb743be Added new symbol BX_USE_GUI_CONSOLE and set it to 1 for all guis with support
for the VGA to be used for textconfig at runtime.
2017-01-13 15:57:36 +00:00
Volker Ruppert
d7fd586451 In the save/restore handler change the display mode to "config". This fixes the
keyboard usage in the legacy sdl gui after saving state. Now the rfb and vncsrv
guis can also use this feature (dialog capabilities set to default).
2017-01-12 18:11:38 +00:00
Volker Ruppert
8e2803f98a Bochs gui code cleanup
- Moved helper function reverse_bitorder to the common gui code.
- In console_refresh() call flush() after text_update().
- Started preparing rfb, sdl, sdl2 and vncsrv gui for using the console.
- Some other small cleanups.
2017-01-03 20:59:59 +00:00
Volker Ruppert
c0f6caa03b Some work on the gui console support for the text runtime configuration.
- vncserv.cc: Fixed sdl font issue.
- Don't check for mouse toggle event if console is active.
- Added support for blinking cursor.
- Added stubs in the gui code to reduce BX_USE_TEXTCONIG usage in x.cc.
2017-01-02 19:11:23 +00:00
Volker Ruppert
5f5f40e3d6 Changing data type sdl fonts to "static const Bit8u" fixes conflict and
simplifies code. The gui code only needs the sdl font for the VGA console.
2017-01-01 19:37:26 +00:00
Volker Ruppert
eff3664fec Implemented VGA console support in the common gui code and the X11 specific
code. Now the runtime configuration runs in the Bochs window instead of
console / xterm. The simulation screen is restored when the
simulation continues. This feature can be implemented for all guis
without gui dialog box support (e.g. sdl2/sdl2 on non-win32 platforms, rfb).
2017-01-01 17:45:06 +00:00
Stanislav Shwartsman
1283292613 static code analysis fixes - what if file didn't open? 2016-12-05 18:17:22 +00:00
Volker Ruppert
639f361d02 Fix the fix: force a status bar update after registering an item, too. 2015-08-11 17:48:18 +00:00
Volker Ruppert
46d2c0adad Started implementing save/restore support for the USB floppy.
Fixed status indicator handling in case of connect failure.
2015-07-28 18:44:08 +00:00
Volker Ruppert
87d40fe673 Some work on the status LED support for removable devices.
- Force a status bar update after unregistering an item.
- Added status indicators for USB disk and cdrom.
- Handle USB device disconnect in the runtime config handler, too.
2015-07-13 21:57:09 +00:00
Volker Ruppert
3986a0b703 Extended status bar LED feature to support dynamic indicators for removable
devices like USB disk, cdrom or floppy. Using this feature for the new USB
floppy. Removed static indicators for port activity from the USB HC code.
TODO: Implement status LEDs for USB disk and cdrom.
2015-07-13 16:56:06 +00:00
Stanislav Shwartsman
055da948a0 fixed problems found by cppcheck tool (patch by Maxim Derbasov) - second round 2015-01-07 16:17:40 +00:00
Volker Ruppert
59f5a03af6 Rewrite of the virtual timer code to support both modes at the same timer.
The timers now have a new member 'realtime' and they are driven by the
selected engine. The VGA update timer and the status LED timer now always use
the realtime mode, but the PIT and CMOS RTC depend on the clock options.
2014-10-19 08:54:16 +00:00
Volker Ruppert
894e66574a Rewrite of the userbutton shortcut handling: now parsing shortcut string in
gui init and string paramter handler. The shortcut keys are now stored in an
array of BX_KEY* values in the gui object.
siminterface.h: Fixed some default return values.
2014-07-08 14:30:27 +00:00
Volker Ruppert
cb8d81defd Added new user shortcut "scrlck" (SDL/SDL2 using "Scroll Lock" for fullscreen toggle).
Cleanups and improvements in the userbutton shortcut code.
Documentation update (mention SDL2, updated userbutton list)
2014-07-07 07:29:08 +00:00
Volker Ruppert
42afaef2ba Load floppy plugin after the display plugin and simplified related init gui code. 2014-05-26 17:04:02 +00:00
Volker Ruppert
3273a24c1e Use realtime mode for the "LED auto-off" timer if enabled 2014-04-07 17:37:07 +00:00
Volker Ruppert
a3de279d3a Floppy runtime config dialog parameter handling rewritten
TODO: use modified version of win32ParamDialog for floppy config (similar to wx)
2013-12-07 22:58:41 +00:00
Volker Ruppert
b9944b43b5 Some small fixes
- bochs.h:     fixed gcc 4.8 warning
- config.h.in: fixed newline
- extplugin.h: fixed VS2008Ex plugins compilation
- gui.cc:      fixed tooltip
2013-11-07 19:38:23 +00:00
Volker Ruppert
97de484efb use enhanced gui debugger instead of classic wx debugger if BX_DEBUGGER_GUI == 1
The Windows version looks almost stable, but the GTK version fails in some cases.
That's why the classic wx debugger is still available if BX_DEBUGGER_GUI is set to 0.
- added function close_debug_dialog() to handle the simulation stop case in wx
- disable all the wx debugger related code if BX_DEBUGGER_GUI is set to 1
- added enhanced debugger specific init code similar to the code in sdl.cc
- include debugger related resources on Windows
- TODO: make the GTK / wxGTK case stable and remove the wx debugger
2013-02-12 21:08:35 +00:00
Volker Ruppert
b5dd859da8 changed floppy media status parameter type to bx_param_enum_c 2013-01-23 17:56:57 +00:00
Volker Ruppert
9933ffa3d9 vga refresh framework changes
- renamed trigger_timer() methods to refresh_display()
- new argument 'redraw' added to force a refresh of the entire screen
  (used in snapshot mode)
- siminterface method refresh_vga() now checks if the Bochs gui init is complete
- use SIM->refresh_vga() in some more cases
2012-10-28 08:23:39 +00:00
Volker Ruppert
4eae421272 Graphics snapshot feature re-implemented for the new graphics API
- graphics_tile_info() split into a common and specific part
- store snapshot mode in structure bx_svga_tileinfo_t
- in snapshot mode, display adapters copy raw data to buffer
- rewrite of the trigger_timer() code to make it work in all cases
- added new class bx_nonvga_device_c to make forwarding refresh requests to the
  Voodoo adapter possible
2012-10-25 15:53:04 +00:00
Volker Ruppert
bdf28d89dd Graphics snapshot handling for standard VGA and compatible modes (old graphics
API) moved to the gui code. Splitted graphics_tile_update() in a common and a
specific part. The common part handles the snapshot case if active. As a side
effect, the snapshot feature now works for CGA modes, too. Fixed palette colors
in 8 bpp snapshots.
2012-10-15 19:43:06 +00:00
Volker Ruppert
1fd6745aea Started rewrite of the gui code to make the graphics snapshot independent from
the display adapter code. When ready, the common gui code should handle it
completely. The snapshot handler should set a flag 'snapshot_mode' and then it
should force a display update. The graphics update code should be redirected to
some code that 'draws' to a snapshot buffer. These first steps are done:

- store some guest display settings in the gui code (text / graphics switch,
  x / y resolution and bpp)
- split 8 bpp palette update code in a common and a specific part and store the
  palette values in the gui code
2012-10-14 18:29:44 +00:00
Volker Ruppert
b142dbcc2c - add new function hdimage_open_file() that returns file size and modification
time if requested (reduces code duplication)
- 'vpc' image mode: moved header check to a separate function that opens the
  file, checks header/footer and returns disk type (if requested)
- implemented restore function for 'vpc' mode images
- gui: updated yes/no dialog message after saving state
- save/restore documentation update (TODO: developer doc)
2012-09-27 18:38:30 +00:00
Stanislav Shwartsman
553d1bfb37 fixed SIGSEGV when cannot open file for text snapshot 2012-07-28 08:17:08 +00:00