just to give some hints about the new code:

Issues

  • ppc not yet tested
  • kill stray softmmus with "./killall9.sh softmmu" (the script is in the Q2 souces) :)
  • no edit PC yet

things that bother mike

  • since I checked in OpenGL, Q sometimes does not close correctly (looks like munmap has to wait for an unlock - munmap disabled for now)
  • single click on Q Control are handled like a doubleclick, why?
  • if a new document is opened, the view is placed wrong - if the previous document had a different size... wtf
  • sparkle 1.1 is leaking
  • leak with load/save sheets

Wishes

  • You can create feature requests for the Q2 milesone
  • DON'T bugreport on Q2, yet

Outline of the new Q:

  • QApplication
    • QApplication:NSApplication (manipulate lowlevel events)
      • grab special NSEvents
    • QApplicationController:NSObject (handling the app delegates and initialization)
      • load user defaults
  • QControl (a browser to manage VMs that are saved in the default or a known location)
    • QControlController:NSObject
      • load VMs from default location
      • addVMToKnownVMs (add VMs that where started from different locations (and remember them/remove them if deleted/moved)
      • startVM
      • pauseVM/unpauseVM
      • stopVM
      • editVM
      • deleteVM
      • togglePreferences (handled like in  rhetoris:) )
      • preferences: check for updates
      • preferences: default Path to guests
      • preferences: output of QEMU errors
      • preferences: swich between yellow and gray interface
      • preferences: display fullscreen warning
    • QControlTableView:NSObject (drawing and handling the microicons)
      • draw microicons
      • handle microicons
    • QControlTableViewController:NSObject (handling delegates and actions of the tableView)
      • implement NSTableView delegates
      • mouseover shows QEMU commandline
      • drag'n'drop
        • diskimage (create new VM from image - differently handle iso/harddisk/floppy)
        • .qvm (add to known VMs list and show in Q Control))
        • files (copy to the VMs shared Folder, that the files where dropped on)
    • mainmenu.nib
      • Menu entry to show QControl window, when closed
      • Menu entry to check for updates
    • QControlNewPcAssistent:NSObject
      • preconfigured VMs for various systems
    • QControlImportExport:NSObject
      • VPC7 (Warning, that no custom drivers are supported)
      • VMWare (Warning, that no custom drivers are supported)
      • Parallels (Warning, that no custom drivers are supported)
      • Flashdisc im/export
      • download Images from  http://free.oszoo.org
      • recompress/update qvms
  • QDocument (handling the VM)
    • QDocument:NSDocument (loading and saving the VM)
      • loading and saving .qvm profiles
      • saving a snapshots or a qvm (save/save as)
      • revert to a snapshots (revert to saved)
      • loading VM from "Open Recent" menu and QControl
      • handle Application Ternimation (save dialogs etc)
      • show CPU/IDE activity
    • QDoucmentEditVMController:NSObject (editing the VM settings)
      • QEditVM.nib
      • Emulation Tab (VM name, grabless mode, pause while Inactive, shared folder)
      • Hardware Tab (new: machine, cpu, multiple Networkcards)
      • Network Tab (Interface to edit up to 2 (or 4?) network cards
      • Advanced Tab (new: use only optional arguments "no GUI configuration")
    • QDoucmentTaskController:NSObject (handling the QEMU process)
      • launch task
      • capture exit of QEMU
      • handle error messages of QEMU
    • QDocumentDistributedObject:NSObject (handling the connection between QEMU and Q)
      • change/eject FDA
      • change/eject FDB
      • change/eject CDROM
      • reset
      • save & add a screenshot to the package (only qcow2 supported)
      • shutdown
      • CPU/IDE activity
      • pause emaulation
      • send ctrl-alt-del
      • taking screenshots
    • QDocumentOpenGLView:NSOpenGLView (handling in and output)
      • vga output
      • keyboard input
      • mouse input
      • QEMU tablet support
      • resizable window
      • fullscreen
        • window
        • animations
    • FSController:NSObject (handling fullscreen toolbar)
      • show fullscreen toolbar
  • QShared (Objects that are used by different parts of Q)
    • QWindow:NSWindow
      • custom window background
    • QButtonCell:NSButtonCell
      • custom "textured round button" (to beTiger compatible)
    • QPopUpButtonCell:NSPopUpButtonCell
      • custom textured round popupbutton (to beTiger compatible)
    • QvmManager:NSObject
      • singleton instance to handle reading and writing of configuration.plist
    • QSharedQemuImgController:NSObject
      • create diskimages
      • convert diskimages
      • recompress diskimages
      • compress diskimages
  • cocoa.m
    • move base to  QEMU 0.9.1
    • vga output to QDocumentWindow (changes are sent by lines of DO vga over shared memory (mmap) and displayRect via DO)
    • resizing QDocumentWindow
    • controlling QEMU (QEMU is polling QDocumentDistributedObject - sending Inputs to QEMU was blocked by tight QEMU runloop)
      • keyboard
      • mouse
      • monitor
      • changing drives
      • (un)pause
      • save
      • quit
      • reset
      • select console
      • return CPU/IDE activity