Hi Fred and others

Thx for your precisions : that help a lot !

I came back with my original question and will try to precise what I want to
do, and how, I understood, I must do the job with gnustep to fit in the
Framework.

I want to use the low level GetOpenFileName on Windows. This function take a
big C structure to allow it to get all informations to configure the dialog
box and the feature that will be display to user to allow him/her to choose
a file name.

So in GNUstep way, I use NSOpenPanel, later the theme Framework detect that
this is a NSOpenPanel and the theme Framework call the appropriate
(and specifique win32) DisplayServer (win32) code whitch call the OS
GetOpenFileName. Does it is the trick ?

The scheme should be the same for PrintDialog, Color dialog, Fonts dialog,
etc....


Second question to all : where is the code for Theme Framework, does it is
available in trunk,(gui ?) and how does it get called (I took a quick look
yesterday at the NSWindow.m code and saw nothing about theme, but I m
certainly wrong ...

Thx for your help and answer.

Thierry

2008/5/9 Fred Kiefer <[EMAIL PROTECTED]>:

> I agree, this is a great answer. Still before we put it into the FAQ we may
> need to extend it a bit.
>
> There are of course two main interface classes between gui and back one of
> them is GSDisplayServer, the one that has been talked about and the other is
> NSGraphicsContext. The later does the actual drawing whereas the former
> manages windows and events. This separation is just great to have multiple
> graphics backends like art, xlib and cairo share the same x11 display
> server. (OK, there is room for improvement on this in our current
> implementation, but there always is)
>
> We may also want to point out that there is already theming code out there,
> written by Chrstopher Armstrong, that does the drawing of controls with
> native Windows functionality. Perhaps later this year, when the new theming
> framework is in place it will be possible to make a clean release of that
> theme.
>
> As for the drawing into a native window, there is the method
> initWithWindowRef: on NSWindow, which will create a GNUstep window from a
> native window reference. Allowing you to carefully create an NSView at the
> right place to draw into. This functionality requires a method on the
> display server that is currently not implemented on MS Window, but should be
> easy to add. (The only complex bit will be the GWL_USERDATA)
>
>
>
> Gregory John Casamento wrote:
>
>> We should probably put this in the FAQ someplace since the question
>> regarding using Win32 controls comes up relatively often.
>> I've found it necessary to explain this to a number of people in the past.
>>
>> ----- Original Message ----
>> From: Richard Frith-Macdonald <[EMAIL PROTECTED]>
>> On 8 May 2008, at 15:04, Thierry DELHAISE wrote:
>>
>>> Gregory John Casamento a écrit :
>>>
>>>> Thierry,
>>>>
>>>> GNUstep can be made to have a native win32 look through the use of
>>>>  themes.
>>>>
>>>> Great ! But ... this is not enought and this is my fault (sorry)  since
>>>  I've asked about look and should not have to. What I want is  that my
>>> Application be a Native win32 application using MS Windows  application
>>> recommendations : using of standards panel, alowing  interaction with
>>> clipboard, and Windows services (ODBC, COM, OLE) ,  Windows toolbar's, etc
>>> ...So what I want , is that GNUstep be a  layer between my application code
>>> and Win32.
>>>
>>
>> That's roughly what GNUstep is supposed to be ... but it's a little  more
>> complex than that
>>
>>  Currently there is no plan for using the standard panels.   This  would
>>>> be a welcome change, since it would help GS blend into the OS  better.
>>>>
>>>> Yes, I saw, and this is where I can may be contribute to the project
>>>  but with the directions/recommendations of some old steppers ;-)  (let call
>>> them gurus ! ;-) ).
>>>
>>> After spending my morning time to dig into GNUstep implementation  I've
>>> some (certainly stupid) questions about  how  is  port  GNUstep  on Win32 :
>>>
>>> So on Win32, the concept of  DisplayServer have been port ? What was  the
>>> functionnal need for this, I mean for Win32 ? It seems to me  (but may be
>>> I'm wrong) that the display server have the functionnal  job to draw all
>>> (GNUstep) windows inside an application. So,  DisplayServer is in charge of
>>> drawing low level window letting  gnustep gui drawing all controls with the
>>> look of GNUsetp since gui  don't use native control on win32 (?). It seems
>>> too that it have to  handle drag and drop operations and may be clipboard
>>> interaction ?  Why not have let this jobs to operating system ? Since on
>>> win32  windows could do the jobs ? (I know that win32 do mostly bad job ;-)
>>>  but this one, since it do it since so many years, we can hope it  will do
>>> it mostly correctly ;-), no ?
>>>
>>
>> The GNUstep GUI code is divided into two library ... the gui proper
>>  (gnustep-gui), which handles most of the work of implementing the  AppKit
>> API, and the backend (gnustep-back) which handles the interface  to the
>> native operating system.  The display server (GSDispalyServer)  is the class
>> which provides the main interface between the two parts.  So code in
>> gnustep-gui calls methods in the display server, and code  in gnustep-back
>> translates them to native calls of the system you are  running on.
>>
>> This means that application developers use the OpenStep/GNUstep/MacOS- X
>> AppKit API to write their applications, and the gnustep-back library  uses
>> the native functionality to do the job where possible.
>> For instance, you do cut and paste or DnD using the OpenStep API for
>>  that, and the actual calls to perform the operations are the native
>>  windows ones.  ie we do leave the job to the operating system.
>> Of course, where the two APIs (OpenStep and win32) operate in very
>>  different ways, the conversion between the two is hard, but often the
>>  layer between the two is quite thin.
>>
>> One area where there is not much scope for overlap is drawing within a
>>  window ... the way that the OpenStep API operates is so different that
>>  high level code for drawing things inside a windows using the native
>>  operating system generally cannot fit with OpenStep, so the gui  library
>> does all the drawing inside the window with quite low level  code rather
>> than trying to map OpenStep 'controls' to native 'widgets'.
>>
>> In this area, does controls in the spirit of GNUstep have to be draw  by
>>> GNUstep or could those be the native one's ? This questions since  I pretty
>>> sure that developping a Win32 theme could spent a lot of  time to recreate
>>> the exact look and feel (and function) of an  allready existing control
>>> under the native platform. And I'm not  sure (but may be I'm wrong) that
>>> Mac's users, or *nix one's want to  have a win32 native look on their host
>>> platform ? I know that *Step  one's want to remember the good day's ... so I
>>> understand why there  is a need to draw controls or windows or menus with
>>> *Step look and  feel in mind ;-) (my Sun's OpenStep workstation died last
>>>  years ... ;-) )
>>>
>>
>> Well, the amount of use of native controls can be quite variable.  The
>>  basic design of the two libraries is, to draw OpenStep controls rather
>>  than try to map to native controls, because that's generally easier.
>>  However, a theme engine is free to try to draw parts of a window using  the
>> native controls where that's a practical solution.
>>
>>
_______________________________________________
Gnustep-dev mailing list
Gnustep-dev@gnu.org
http://lists.gnu.org/mailman/listinfo/gnustep-dev

Reply via email to