Roadmap to Windows

From GNUstepWiki
Revision as of 03:52, 31 January 2006 by Sheldon (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Introduction

This page is the starter for the "Road to Windows", a goal of the GNUstep project to deliver a very native implementation. Windows has many differences with *nix and OpenStep generally. These need to be dealt with in a way that delivers a 'Windows experience' to the end users but doesn't compromise the OpenStep API. Some differences are expected.

If you'd like to work on any of these tasks you should put your hand up in gnustep-discuss or e-mail me directly.

Core Modules

Make

Relies on a unix shell

 We use MSYS and the mingw32 toolchain to provide a very unix-like build environment.
  • Make doesn't support paths with spaces. Fundamental design flaw. Ideally we'd like a solution to this.
  • Current implementation of 'make install' assumes *nix which doesn't really apply.

Base

  • register_printf_handler() -> make Unicode version which calls wprint

NSDate

  • Clean GSTimeNow for win32
  • Olsen <-> Windows timezone name mapping
  • knownTimeZoneNames returns Olsen
  • timeZoneWithName takes Olsen
  • unicode improvements (I have code for this...)

GSXML

  • loadEntityFunction() -> Munge (:) in URL specs as well. Can't be used on Win32!
 Use single url expansion mechanism for all (no special -//GNUstep//DTD
 Add option for loading from URL, not just local files. (cache in ~)
 ?? org as
   /Library/DTDs/GNUstep/
   /Library/DTDs/Apple Computer/
   /Library/DTDs/Microsoft/

Additions & Improvements

General

  • More flexible layout mechanism & options to control.
  • Win32 "native" mechanism over-rides

Logging

NSLog() should only be used for vital/error messages. These should be localizable. Localize all error output. + Should implement FACILITY options for logging to SYSLOG Use more flexible DebugLog for other output.

Dates & Times

  • Build option for native timezones only

+ NSJulianCalendarDate + NSHebrewCalendarDate + NSChineseCalendarDate + NSJapaneseCalendarDate + NSBuddhistCalendarDate

Strings

NSCaseInsensitiveSearch

  • Implementation tests
  • Add full Unicode case folding

NSLiteralSearch

  • Corrections for composed sequences?

Composed sequences & Normalisation

  • Check composed sequence handling generally
  • Implement additional normalisation forms
  • proper (full) collation and comparison

UTF32

  • Doesn't handle non-BMP characters right now.

NSStringEncoding

  • additional encodings for Indian, SE Asia...

Gui

NSColor/NSColorList

  • Load System color palette from current desktop settings (I have code for this...)
  • improve system color startup, don't automatically write System.clr to user folder
  • get gnustep-back to handle WM_SYSCOLORCHANGE messages
  • Support ICCM colour profiles and colour correction
  • +[availableColorLists] should read directory every time. If you need speed, cache yourself

NSMenu

  • Want horizontal, in-window menus

NSHelpPanel

  • Interface to native windows help system
  • [NSApplication showHelp] looks in Resources/(lang).lproj
    • Use Info.plist for name of help book
    • opens "AppName Help.chm" or
    • opens "AppName Help.hlp"
  • [NSApplication activateContextHelpMode]

Drawing

 Some controls are drawn. Others use pre-drawn images. These don't change
 in response to color preferences. That should be corrected.
 Notable: Radio buttons, check boxes. scrollbar arrows, menu arrows,
  • Clean drawing code to use right colors from system color map

NSPopupButton

  • Menu shouldn't require continuous mousedown but rather behave like other windows menus.

Additions & Improvements

General

Logging

 Use NSLog() only for vital messages
 Use NSDebugLLog() everywhere else
 Localise everywhere

Additional Elements

Panels

NSOpenPanel NSSavePanel

  • If NSDefaultOpenDirectory isn't set should use "~/" on *nix and "My Documents" on Win32.
  • Must support multiple drives etc on Win32

+ Should display as Treeview, rather than Browser