Difference between revisions of "Roadmap to Windows"

From GNUstepWiki
Jump to navigation Jump to search
(cleanup)
Line 1: Line 1:
= Introduction =
 
 
 
This page is the starter for the "Road to Windows", a goal of the GNUstep project to deliver a very [[What is Native on Windows|native]] implementation.
 
This page is the starter for the "Road to Windows", a goal of the GNUstep project to deliver a very [[What is Native on Windows|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.
 
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.
Line 6: Line 4:
  
 
If you'd like to work on any of these tasks you should put your hand up in gnustep-discuss or e-mail [[User:Sheldon|me]] directly.
 
If you'd like to work on any of these tasks you should put your hand up in gnustep-discuss or e-mail [[User:Sheldon|me]] directly.
 
= Core Modules =
 
  
 
== Make ==
 
== Make ==
  
Relies on a unix shell
+
* Relies on a unix shell: We use MSYS and the mingw32 toolchain to provide a very unix-like build environment.
  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.
 
* 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.
 
* Current implementation of 'make install' assumes *nix which doesn't really apply.
Line 19: Line 13:
 
== Base ==
 
== Base ==
  
NSDate
+
=== General ===
* Olsen <-> Windows timezone name mapping
+
 
* knownTimeZoneNames returns Olsen
+
* More flexible layout mechanism (what needs doing for this) & options to control in config file.
* timeZoneWithName takes Olsen
+
* Win32 "native" mechanism over-rides
* unicode improvements (I have code for this...)
+
 
 +
=== GSXML ===
  
GSXML
 
 
* Use single url expansion mechanism for all (no special -//GNUstep//DTD
 
* Use single url expansion mechanism for all (no special -//GNUstep//DTD
  Add option for loading from URL, not just local files. (cache in ~)
+
* Add option for loading from URL, not just local files. (cache in ~)
  Organise them as
+
* Organise them as
    /Library/DTDs/GNUstep/
+
/Library/DTDs/GNUstep/
    /Library/DTDs/Apple Computer/
+
/Library/DTDs/Apple Computer/
    /Library/DTDs/Microsoft/
+
/Library/DTDs/Microsoft/
  
=== Additions & Improvements ===
+
=== Logging ===
 
 
==== General ====
 
* More flexible layout mechanism (what needs doing for this) & options to control in config file.
 
* Win32 "native" mechanism over-rides
 
  
==== Logging ====
+
* NSLog() should only be used for vital/error messages. These should be localizable.
NSLog() should only be used for vital/error messages. These should be localizable.
+
* Localize all error output.
Localize all error output.
+
* Should implement FACILITY options for logging to SYSLOG
 +
* Use more flexible DebugLog for other output.
  
Should implement FACILITY options for logging to SYSLOG
+
=== Dates & Times ===
Use more flexible DebugLog for other output.
 
  
==== Dates & Times ====
+
* NSDate
 +
** Olsen <-> Windows timezone name mapping
 +
** knownTimeZoneNames returns Olsen
 +
** timeZoneWithName takes Olsen
 +
** unicode improvements (I have code for this...)
  
 
* Build option for native timezones only
 
* Build option for native timezones only
Line 57: Line 51:
 
** + NSBuddhistCalendarDate
 
** + NSBuddhistCalendarDate
  
==== Strings ====
+
=== Strings ===
NSCaseInsensitiveSearch
 
* Implementation tests
 
* Add full Unicode case folding
 
  
NSLiteralSearch
+
* NSCaseInsensitiveSearch
* Corrections for composed sequences?
+
** Implementation tests
 +
** Add full Unicode case folding
  
Composed sequences & Normalisation
+
* NSLiteralSearch
* Check composed sequence handling generally
+
** Corrections for composed sequences?
* Implement additional normalisation forms
 
* proper (full) collation and comparison
 
  
UTF32
+
* Composed sequences & Normalisation
* Doesn't handle non-BMP characters right now.
+
** Check composed sequence handling generally
 +
** Implement additional normalisation forms
 +
** proper (full) collation and comparison
  
NSStringEncoding
+
* UTF32
* additional encodings for Indian, SE Asia...
+
** Doesn't handle non-BMP characters right now.
 +
 
 +
* NSStringEncoding
 +
** additional encodings for Indian, SE Asia...
  
 
== Gui ==
 
== Gui ==
  
Drawing
+
=== General ===
  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
 
 
 
  Drawing should be improved generally so that it looks better and is faster
 
  
Taskbar
+
* NSMenu
  Application icons should appear in the taskbar and on the applications windows in the same way as other windows applications. Behaviour should follow.
+
** Want horizontal, in-window menus
  
NSImage
+
* NSPopupButton
* support for more image types
+
** Menu shouldn't require continuous mousedown but rather behave like other windows menus.
  
NSColor/NSColorList
+
* NSHelpPanel
* Load System color palette from current desktop settings (I have code for this...)
+
** Interface to native windows help system
* improve system color startup, don't automatically write System.clr to user folder
+
** [NSApplication showHelp] looks in Resources/(lang).lproj
* get gnustep-back to handle WM_SYSCOLORCHANGE messages
+
*** Use Info.plist for name of help book
* Support ICCM colour profiles and colour correction
+
*** opens "AppName Help.chm" or
* +[availableColorLists] should read directory every time. If you need speed, cache yourself
+
*** opens "AppName Help.hlp"
 +
** [NSApplication activateContextHelpMode]  
  
NSMenu
+
* Logging
* Want horizontal, in-window menus
+
** Use NSLog() only for vital messages
 +
** Use NSDebugLLog() everywhere else
 +
** Localise everywhere
  
NSPopupButton
+
=== Drawing ===
* Menu shouldn't require continuous mousedown but rather behave like other windows menus.
 
  
NSHelpPanel
+
* 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
* 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]
 
  
=== Additions & Improvements ===
+
* Drawing should be improved generally so that it looks better and is faster
  
==== General ====
+
* Taskbar
Logging
+
** Application icons should appear in the taskbar and on the applications windows in the same way as other windows applications. Behaviour should follow.
  Use NSLog() only for vital messages
 
  Use NSDebugLLog() everywhere else
 
  Localise everywhere
 
  
= Additional Elements =
+
* NSImage
 +
** support for more image types
  
== Panels ==
+
* 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
  
NSOpenPanel
+
=== Panels ===
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
+
* 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

Revision as of 15:53, 17 September 2006

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.

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

General

  • More flexible layout mechanism (what needs doing for this) & options to control in config file.
  • Win32 "native" mechanism over-rides

GSXML

  • Use single url expansion mechanism for all (no special -//GNUstep//DTD
  • Add option for loading from URL, not just local files. (cache in ~)
  • Organise them as
/Library/DTDs/GNUstep/
/Library/DTDs/Apple Computer/
/Library/DTDs/Microsoft/

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

  • NSDate
    • Olsen <-> Windows timezone name mapping
    • knownTimeZoneNames returns Olsen
    • timeZoneWithName takes Olsen
    • unicode improvements (I have code for this...)
  • Build option for native timezones only
  • Add classes for other calendars:
    • + 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

General

  • NSMenu
    • Want horizontal, in-window menus
  • NSPopupButton
    • Menu shouldn't require continuous mousedown but rather behave like other windows 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]
  • Logging
    • Use NSLog() only for vital messages
    • Use NSDebugLLog() everywhere else
    • Localise everywhere

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
  • Drawing should be improved generally so that it looks better and is faster
  • Taskbar
    • Application icons should appear in the taskbar and on the applications windows in the same way as other windows applications. Behaviour should follow.
  • NSImage
    • support for more image types
  • 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

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