399 Commits

Author SHA1 Message Date
Bryce Denney
8d02c83536 - bx_param_bool_c constructor must init dependent_list before calling set(). 2002-09-03 16:00:50 +00:00
Bryce Denney
6e5dcfb83a - disable all menu choices that aren't implemented. Only a few remaining!
- implement the Edit Keyboard dialog using ParamDialog instead of the
  handcoded thing.
- make Serial/Parallel dialog look a little better
- change order of "other" dialog to get ips and vga_update_interval on top
2002-09-03 08:55:35 +00:00
Bryce Denney
dd4d31e5ea - now parameters can be enabled/disabled by boolean parameters in
ParamDialog.  When a boolean param changes, I read its dependent_list
  field to see which other parameters depend on it.  Then, for any
  dependents that are actually showing in the dialog, I set their
  enable bit accordingly.  This required addition of another hash table,
  called paramHash.  The two EnableChanged() methods implement this.
- remove all ConfigKeyboardDialog code because I can do just as well
  using the generic ParamDialog.
- fix bug that caused occasional crashes.  To attempt to find all the
  choices in an a wxChoice control, I was calling GetClientData() on
  increasing index until it returned NULL.  The docs implied that this
  was safe, but it's not.  Eventually I found an apparantly undocumented
  call wxChoice::GetCount() that gives the number of strings in the
  choice box and it allows me to do the right thing.
2002-09-03 08:53:41 +00:00
Bryce Denney
a768d54939 - the system of using the bx_param_c::set_handler() callback functions
to change the enable/disable status of other parameters worked fine for
  the text mode interface but poorly for the wxWindows gui.  So I
  implemented it a different way.  Now in every boolean parameter, there is
  a field called dependent_list which is a list of parameters which
  are enabled/disabled by that boolean.  Having this list available
  allows both the text mode CI and the wxWindows CI to know which fields
  should be enabled and disabled as a result of a boolean changing value.
- when the set() method of a bool param is called, or when the
  dependent_list is changed, a private method called update_dependents()
  changes the enabled status of all dependent parameters.
- add macros to get parameter ids of serial and parallel port parameters,
  using the port number as an input variable.
2002-09-03 08:46:30 +00:00
Bryce Denney
7918513df4 - the system of using the bx_param_c::set_handler() callback functions
to change the enable/disable status of other parameters worked fine for
  the text mode interface but poorly for the wxWindows gui.  So I
  implemented it a different way.  Now in every boolean parameter, there is
  a field called dependent_list which is a list of parameters which
  are enabled/disabled by that boolean.  Having this list available
  allows both the text mode CI and the wxWindows CI to know which fields
  should be enabled and disabled as a result of a boolean changing value.
- when the set() method of a bool param is called, or when the
  dependent_list is changed, a private method called update_dependents()
  changes the enabled status of all dependent parameters.
2002-09-03 08:44:55 +00:00
Bryce Denney
fbdf6cb89d - remove unused vars to fix warning 2002-09-03 05:40:59 +00:00
Bryce Denney
b74269a3b7 - add generic dialog class called ParamDialog. You create it, call
a method to add the parameters (bx_param_c) that you want to edit,
  and display it.  It knows how to display and edit boolean, int,
  enum, and string, so it can do a reasonable job on any parameter.
  The end result is not as nice as a box that you lay out by hand, but
  it's decent.  The most obvious thing that's missing from
  ParamDialog-generated dialogs is that I haven't found a way to
  make an "Enable" button that enables/disables a bunch of other
  parameters.  I'll keep thinking about that.
- using ParamDialog, I made dialogs for Sound, Cmos, Serial/Parallel,
  32bitOSloader, and an ugly catch-all category called other.
  Now I believe you can edit every single option using wxWindows.
2002-09-03 05:32:49 +00:00
Bryce Denney
2c5e29a77b - add get_size() on a bx_list_c 2002-09-03 05:31:42 +00:00
Bryce Denney
b9439c5f61 - correct abuse of local variable in bx_param_bool_c::text_ask. I had created
a temporary char[] buffer, filled it using sprintf, and then used a pointer
  to it even after it went out of scope.
2002-09-03 01:09:46 +00:00
Bryce Denney
1267d19090 - add ConfigKeyboardDialog
- remove the format string from GetTextCtrlInt() because the strtoul
  conversion is better than the sscanf with a format string (it supports
  both base 10 and 16 with 0xFF notation).
- modified files: gui/wxdialog.cc gui/wxdialog.h gui/wxmain.cc gui/wxmain.h
2002-09-02 22:53:39 +00:00
Bryce Denney
367c549fc4 - fix those browse buttons on the MemoryConfigDialog
- also other browse buttons were somewhat broken in that they didn't
  set the initial value of the wxFileDialog.  Now all text fields
  with a browse button use a single function BrowseTextCtrl() to
  avoid future problems of this sort.
- if the Ok on the MemoryConfigDialog is rejected because the integers
  can't be parsed, now give a more specific error message that points you
  to which field has the illegal value.
- print hex numbers with CAPS.  With proportional font this is much
  easier to read.
- accept either strings with base 10 or 16 numbers in GetTextCtrlInt by
  default.  If the sscanf fails, accept anything that strtoul can
  read.  Unfortunately legitimate "-1"'s being returned from strtoul will
  be rejected, but at present there is no need for negative numbers in
  textfields anywhere.
- modified files: gui/wxdialog.cc gui/wxdialog.h
2002-09-02 22:12:31 +00:00
Bryce Denney
6009e14996 - add MemoryConfigDialog that sets the ROM BIOS and VGA BIOS options,
and also the optional rom settings.  I think it all works except that
  the Browse buttons aren't hooked up yet.
- modified Files: gui/wxdialog.cc gui/wxdialog.h gui/wxmain.cc gui/wxmain.h
2002-09-02 20:13:52 +00:00
Bryce Denney
0268014110 - add LogOptionsDialog that lets you decide whether to ignore, report,
die, or ask the user for each type of event.  It has a button that
  will lead to the "advanced" dialog, which doesn't exist yet.
- in gui/wxdialog.h, sketch a few more dialogs to be done soon
- modified: gui/wxdialog.cc gui/wxdialog.h gui/wxmain.cc gui/wxmain.h
2002-09-02 17:03:14 +00:00
Bryce Denney
ed82a64ae5 - fix up NetConfigDialog and the code that calls it, so that what the
user selects actually changes the settings.
- modiified files: gui/wxdialog.cc gui/wxdialog.h gui/wxmain.cc
2002-09-01 21:24:14 +00:00
Bryce Denney
9e67dcb3e1 - add NetConfigDialog box, that configures networking settings
- for all modal dialogs that return a boolean result, return either
  wxOK or wxCANCEL instead of 0,-1.
- you can view the NetConfigDialog box if you choose the Edit:Network menu
  item, but it's not connected to the actual parameter values yet.
2002-09-01 19:38:08 +00:00
Bryce Denney
572fc4ed57 - I had been misunderstanding how you're supposed to convert wxStrings
into normal C strings.  After asking about it on wx-users, I understand
  it better now.

  Example of unsafe code:
    char *filename = dlg.GetFilename().c_str ();
    printf ("file name is %s\n", filename);

  The problem is that dlg.GetFilename() returns a temporary wxString
  that goes out of scope at the end of that line of code.  The "filename"
  string is unstable if you write it this way.

  Example of safe code:
    char filename[1024];
    wxString fn (dlg.GetFilename ());
    strncpy (filename, fn.c_str (), sizeof(filename));
    printf ("file name is %s\n", name);

  Now we have a stable copy of the wxString in "fn" which is usable
  as long as fn is in scope.

- also now we use wxStrings (almost) all the time in the interface to the
  wxdialogs.  Any conversion from char* to wxString and back is done in
  wxmain.cc now.
2002-09-01 15:27:33 +00:00
Volker Ruppert
dfe902554a - text mode cursor size feature implemented 2002-09-01 07:32:03 +00:00
Bryce Denney
b65997bb13 - implement Edit:Boot, which chooses the boot drive 2002-08-31 04:58:24 +00:00
Bryce Denney
329bc47b77 - move BX_BOOT_* constants from bochs.h into gui/siminterface.h 2002-08-31 04:57:21 +00:00
Bryce Denney
327cd86e9b - add sketches showing a large configuration dialog similar to Netscape's
Edit:Preferences.
2002-08-31 00:35:25 +00:00
Bryce Denney
9e2a602c56 - remove create image button from cdrom dialog 2002-08-30 22:52:32 +00:00
Volker Ruppert
c3d63b2e81 - in function DrawBochsBitmap(): use the system palette instead of fixed values
- in function fillBxKeyEvent_MSW(): simplified the detection of extended scancodes
- in function text_update(): fixed a warning
2002-08-30 17:39:14 +00:00
Bryce Denney
645f1a0365 - make the "File:New Configuration" menu item call bx_reset_options(),
with a little "Are you sure?" dialog.
2002-08-30 16:23:36 +00:00
Bryce Denney
77f87fbbca - to convince gcc -MM to ignore system headers, I had to change some
#include statements that used ""'s so that they used <>'s instead.
  (gcc -MM generates the dependency list in the Makefile.)
2002-08-30 07:03:50 +00:00
Bryce Denney
4c20c5cd81 - add dependencies for wxwindows source files 2002-08-30 07:01:59 +00:00
Bryce Denney
de5daefbb6 - move all dialog box sketches from README-wxWindows into gui/wxdialog.h,
commented of course.
2002-08-30 06:49:19 +00:00
Bryce Denney
f23005efbf - move ASCII version of menu layout into wxmain.cc next to the code that
implements it.
2002-08-30 06:46:38 +00:00
Bryce Denney
3ce8912089 - add CdromConfigDialog to configure cdroms
- HDConfigDialog now uses an EnableChanged() method to set the enabled bit
  on components controlled by the enable checkbox.
- now sets the present bit on hard disks and cdrom
- enforces the rule that you can't have DISKD and CDROMD (just in time for
  Christophe to add another interface)
2002-08-30 06:06:36 +00:00
Bryce Denney
4bd24c2771 - now the same function is used to create both floppy and hard disk images.
They were nearly the same code anyway.
2002-08-29 23:28:52 +00:00
Bryce Denney
2aba2436fa - add "create image" for hard disk image
- now the megabytes field is a wxStaticText, which makes it clear that
  it cannot be edited.
- add "enter size/compute geometry" button for HD image
- make a few more strings into #defines in wxdialog.h
- disable most of the Edit menu during simulation, reenable it when
  simulation stops
2002-08-29 23:18:10 +00:00
Bryce Denney
e7fbe9e04e - propose new floppy config dialog that distinguished between device
config and changing the media.  The proposed change is NOT implemented.
2002-08-29 22:09:55 +00:00
Bryce Denney
d77a796a10 - add some vertical space between some things 2002-08-29 21:00:27 +00:00
Bryce Denney
a0828d3ee7 - make cancel buttons use id wxID_CANCEL so that pressing Cancel and
pressing ESCAPE are equivalent
2002-08-29 20:41:45 +00:00
Bryce Denney
ef4b975884 - add "Create Image" button to floppy dialog, and make it actually work 2002-08-29 20:13:05 +00:00
Bryce Denney
7ab99b2ac9 - this patch from Volker: make SetFilename arg be const char* as well 2002-08-29 20:09:54 +00:00
Bryce Denney
7ce3b36770 - get rid of the not-so-great name CUI which I introduced a few days
ago.  Now we have the simulator, the siminterface, the VGA display
  window (VGAW), and the configuration interface (CI).
2002-08-29 14:59:37 +00:00
Bryce Denney
e43d822c32 - change SetDriveName() method to take const char * 2002-08-28 21:06:14 +00:00
Bryce Denney
17da6fe3c1 - add HDConfigDialog box for wxWindows for editing hard disk params.
Now you can edit floppy and hard disk parameters using dialogs.
2002-08-28 15:27:26 +00:00
Bryce Denney
a08cf194c5 - add another wxWindows dialog, FloppyConfigDialog, which lets you
choose the filename and capacity of a floppy image.  This dialog
  can recognize a list of names as physical disk drives, and it has a
  Browse button so that you can click on a new image intead of having
  to type it.  If you press ok, then the Bochs parameters are updated.
- eventually we should make a function that makes a list of the
  physical devices that should be mentioned here.  For Windows it should
  say "Physical drive A:" for "a:", while on Linux it should say
  "Physical drive fd0" for "/dev/fd0" or something.  Even if bochs
  doesn't find the correct physical disk drives, you can still type
  whatever file name you want.
2002-08-28 07:54:53 +00:00
Bryce Denney
7fc65e2e25 - add first custom dialog box to the wxWindows interface in
gui/wxdialog.h and gui/wxdialog.cc.  The first dialog box is
  called LogMsgAskDialog.  It displays panic messages and asks if you
  want to continue, quit, etc.
2002-08-28 03:20:23 +00:00
Bryce Denney
67f9213460 - eliminate unused BX_ASYNC_EVT_SHUTDOWN_GUI event. 2002-08-28 03:14:53 +00:00
Bryce Denney
44ec9a0fc8 - update Makefile dependencies on nearly everything 2002-08-27 22:43:57 +00:00
Bryce Denney
6bbf7d5957 - use setjmp() and longjmp() to quit the simulation thread cleanly.
I use setjmp() to save the context just before calling
  bx_continue_after_config_interface().  Then, in
  bx_real_sim_c:quit_sim, I use longjmp() to jump back to that context.
  This happens in main.cc and in gui/wxmain.cc (wxWindows only).
  I haven't tested with the debugger yet.  Possibly with debugger
  the quit longjmp() should jump back to the debugger prompt loop
  instead of actually quitting the program.
- clean up BX_ASYNC_EVT_LOG_MSG implementation by creating a different,
  synchronous event called BX_SYNC_EVT_LOG_ASK.  The async event
  could be used to simply tell the CI that an event has occurred,
  for example if the user wanted to view the events on screen
  (not implemented).  The sync event is used when you want the user
  to respond before the simulation can continue, such as a for the
  "panic=ask" behavior.
- in wxmain.cc, move the updates to the Start,Stop,Pause,Resume menu
  items into a separate method simStatusChanged().  This makes the code that
  does important stuff more readable.
- remove wxMutexGuiEnter()/Leave() from MyFrame::OnSim2CuiEvent().
  This method is an event handler called in the gui thread, so it
  already has the gui lock.  This call caused thread lock on my linux
  box.
2002-08-27 18:11:13 +00:00
Volker Ruppert
9882c64fb6 - removed unused static char *ask_about_config_interface
- changed quickstart option in start menu help text to -q
2002-08-27 16:27:57 +00:00
Bryce Denney
26385f2866 - I've added lots of comments in siminterface.h, and tried to clean up
the terminology a bit.  In particular, the term "gui" has started
  to mean different things in different contexts, so I've defined
  some more specific names for the parts of the user interface, and
  updated comments and some variable names to reflect it.  See
  siminterface.h for a more complete description of all of these.

    VGAW: VGA display window and toolbar buttons, the traditional Bochs
      display which is ported to X, win32, MacOS X, etc.  Implemented
      in gui/gui.* and platform dependent gui/*.cc files.
    CI: configuration interface that lets the user change settings such
      as floppy disk image, ne2k settings, log options.  The CI consists
      of two parts: configuration user interface (CUI) which does the
      actual rendering to the screen and handles key/mouse/menu events,
      and the siminterface object.
    CUI: configuration user interface.  This handles the user interactions
      that allow the user to configure Bochs.  To actually change any
      values it talks to the siminterface object.  One implementation of
      the CUI is the text-mode menus in gui/control.cc.  Another
      implementation is (will be) the wxWindows menus and dialogs in
      gui/wxmain.cc.
    siminterface: the glue between the CUI and the simulation code,
      accessible throughout the code by the global variable
        bx_simulator_interface_c *SIM;
      Among other things, siminterface methods allow the simulator to ask the
      CUI to display things or ask for user input, and allows the CUI
      to query and modify variables in the simulation code.


    GUI: Literally, "graphical user interface".  Until the configuration menus
      and wxWindows came along, everyone understood that "gui" referred to the
      VGA display window and the toolbar buttons because that's all there
      was.  Now that we have the wxWindows code, which implements both the VGAW
      and the CUI, while all other platforms implement only the VGAW, it's not
      so clear.  So, I'm trying to use VGAW, CI, and CUI consistently since
      they are more specific.
    control panel: This has been used as another name for the configuration
      interface.  "control panel" is also somewhat unspecific and it sounds
      like it would be graphical with buttons and sliders, but our text-mode
      thing is not graphical at all.  I've replaced "control panel" with
      "configuration interface" wherever I could find it.  In configure script,
      the --disable-control-panel option is still supported, but it politely
      suggests that you use --disable-config-interface instead.
- clean up comments in siminterface,wx* code
- add comments and examples for bx_param_* and BxEvents
- remove some obsolete stuff: notify_*_args,
  bx_simulator_interface_c::[sg]et_enabled() methods
- in siminterface.cc, move a few bx_real_sim_c methods to where they belong,
  with the rest of the methods.  No changes to the actual methods.
- remove some DOS ^M's which crept in and confused my editor.
2002-08-26 15:31:23 +00:00
Volker Ruppert
026f0dcb8d - disable menu items "New Configuration" and "Read Configuration" when the
simulation thread starts
2002-08-25 20:35:19 +00:00
Volker Ruppert
6055c158e9 - wx gui menu functions "Read Configuration" and "Save Configuration" implemented
- loading default bochsrc for the wx gui no longer necessary
- the wx gui version of bochs now accepts the same command line arguments as
  the other guis
2002-08-25 15:51:46 +00:00
Volker Ruppert
dc07804616 - simple user shortcut dialog for wxWindows added
- floppya, floppyb and cdromd handlers: don't change anything when the user has
  cancelled the dialog
2002-08-25 12:32:54 +00:00
Volker Ruppert
4a58339cad - pass command line arguments to function bx_init_main() 2002-08-25 09:54:05 +00:00
Volker Ruppert
95771fe0e5 - command line parameter --help added
- this changes also fix a carbon gui compile problem (SF bug #594718)
2002-08-25 08:31:16 +00:00