* Microsoft UWP/WinRt @ 2017-06-02 1:23 alby.gamper 2017-06-02 7:24 ` Dmitry A. Kazakov 0 siblings, 1 reply; 12+ messages in thread From: alby.gamper @ 2017-06-02 1:23 UTC (permalink / raw) Hello Ada community Would anyone be interested in a set of Ada bindings to the new Microsoft UWP/WinRT api ?. This would enable Ada to be used to develop native Windows Store applications and also allow parts of the Api to be used from Desktop applications as well. (Note, as documented by Microsoft, only a subset of the WinRT api can be used by traditional desktop applications) Below is a very simple sample of what the bindings would look like procedure Test4 is procedure ConnectAsync_Callback (asyncInfo : Windows.Foundation.IAsyncAction ; asyncStatus : Windows.Foundation.AsyncStatus) is Hr : Windows.HRESULT := 0; m_RetVal : aliased Windows.Void; begin Hr := asyncInfo.GetResults(m_RetVal'access); Put_Line("Callback Invoked - connected to www.microsoft.com"); end; Hr : Windows.HRESULT := 0; m_RetVal : aliased Windows.Void; m_HostNameFactory : HostNameFactory; m_IHostName : IHostName; m_StreamSocket : StreamSocket; m_IAsyncAction : IAsyncAction; m_AsyncActionCompleted : AsyncActionCompletedHandler := new AsyncActionCompletedHandler_Interface(ConnectAsync_Callback'access); begin m_IHostName := m_HostNameFactory.CreateHostName(To_String("www.microsoft.com")); m_IAsyncAction := m_StreamSocket.ConnectAsync(m_IHostName, To_String("http")); Hr := m_IAsyncAction.put_Completed(m_AsyncActionCompleted, m_RetVal'access); delay 5.0; m_StreamSocket.Close; end; ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Microsoft UWP/WinRt 2017-06-02 1:23 Microsoft UWP/WinRt alby.gamper @ 2017-06-02 7:24 ` Dmitry A. Kazakov 2017-06-02 12:27 ` Lucretia 0 siblings, 1 reply; 12+ messages in thread From: Dmitry A. Kazakov @ 2017-06-02 7:24 UTC (permalink / raw) On 02/06/2017 03:23, alby.gamper@gmail.com wrote: > Would anyone be interested in a set of Ada bindings to the new Microsoft > UWP/WinRT api ?. This would enable Ada to be used to develop native Windows Store > applications and also allow parts of the Api to be used from Desktop applications > as well. (Note, as documented by Microsoft, only a subset of the WinRT api can > be used by traditional desktop applications) I don't think there would be much interest in that. Ada's strength is in developing portable software. So unless UWP runs on Linux, VxWorks etc few would invest much time into it. Another point is that Microsoft API is pretty much low-level (which is OK by itself). So it is not a big deal to call individual operations from Ada program without any bindings. Though one could expect that AdaCore would expand Win32Ada with these. The point is about having thick bindings to make it useful/usable, e.g. hiding Windows handles in controlled wrappers, enumeration and variant record parameters etc. That would be more work than calls you presented. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Microsoft UWP/WinRt 2017-06-02 7:24 ` Dmitry A. Kazakov @ 2017-06-02 12:27 ` Lucretia 2017-06-02 13:28 ` Dmitry A. Kazakov 2017-06-08 15:31 ` Pascal Obry 0 siblings, 2 replies; 12+ messages in thread From: Lucretia @ 2017-06-02 12:27 UTC (permalink / raw) On Friday, 2 June 2017 08:24:19 UTC+1, Dmitry A. Kazakov wrote: > On 02/06/2017 03:23, alby.gamper@ wrote: > > > Would anyone be interested in a set of Ada bindings to the new Microsoft > > UWP/WinRT api ?. This would enable Ada to be used to develop native Windows Store You really should be doing something you are interested in. > > applications and also allow parts of the Api to be used from Desktop applications > > as well. (Note, as documented by Microsoft, only a subset of the WinRT api can > > be used by traditional desktop applications) > > I don't think there would be much interest in that. Ada's strength is in > developing portable software. So unless UWP runs on Linux, VxWorks etc > few would invest much time into it. That's a bit narrow minded, imo. One part of portable software is os level bindings. So, yes, someone will find them useful. > Another point is that Microsoft API is pretty much low-level (which is > OK by itself). So it is not a big deal to call individual operations > from Ada program without any bindings. Though one could expect that > AdaCore would expand Win32Ada with these. Never heard of Win32Ada, where's this then? > The point is about having thick bindings to make it useful/usable, e.g. > hiding Windows handles in controlled wrappers, enumeration and variant > record parameters etc. That would be more work than calls you presented. Yes, thick bindings are always better. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Microsoft UWP/WinRt 2017-06-02 12:27 ` Lucretia @ 2017-06-02 13:28 ` Dmitry A. Kazakov 2017-06-02 14:53 ` gautier_niouzes 2017-06-08 15:31 ` Pascal Obry 1 sibling, 1 reply; 12+ messages in thread From: Dmitry A. Kazakov @ 2017-06-02 13:28 UTC (permalink / raw) On 02/06/2017 14:27, Lucretia wrote: > Never heard of Win32Ada, where's this then? It comes with GNAT GPL and Pro for Windows. It is [necessarily] never complete, yet contains all essential Windows API parts (def, crt, ole, base etc). It is thin bindings and quite easy to extend if something is amiss. Win32Ada is used less frequently because GNAT provides a nice set of OS-abstraction packages (GNAT sockets, serial COMM etc) and because for GUI design Gtk, Qt, Gnoga are more attractive. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Microsoft UWP/WinRt 2017-06-02 13:28 ` Dmitry A. Kazakov @ 2017-06-02 14:53 ` gautier_niouzes 2017-06-02 14:56 ` Dmitry A. Kazakov 2017-06-02 21:11 ` Randy Brukardt 0 siblings, 2 replies; 12+ messages in thread From: gautier_niouzes @ 2017-06-02 14:53 UTC (permalink / raw) > Win32Ada is used less frequently because GNAT provides a nice set of > OS-abstraction packages (GNAT sockets, serial COMM etc) and because for > GUI design Gtk, Qt, Gnoga are more attractive. Not forgetting GWindows (for Windows only) !... Gautier ___________________________________________________ A free online game in Ada: http://pasta.phyrama.com ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Microsoft UWP/WinRt 2017-06-02 14:53 ` gautier_niouzes @ 2017-06-02 14:56 ` Dmitry A. Kazakov 2017-06-02 21:11 ` Randy Brukardt 1 sibling, 0 replies; 12+ messages in thread From: Dmitry A. Kazakov @ 2017-06-02 14:56 UTC (permalink / raw) On 2017-06-02 16:53, gautier_niouzes@hotmail.com wrote: >> Win32Ada is used less frequently because GNAT provides a nice set of >> OS-abstraction packages (GNAT sockets, serial COMM etc) and because for >> GUI design Gtk, Qt, Gnoga are more attractive. > > Not forgetting GWindows (for Windows only) !... Well, IMO if Windows only then Windows bindings only. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Microsoft UWP/WinRt 2017-06-02 14:53 ` gautier_niouzes 2017-06-02 14:56 ` Dmitry A. Kazakov @ 2017-06-02 21:11 ` Randy Brukardt 1 sibling, 0 replies; 12+ messages in thread From: Randy Brukardt @ 2017-06-02 21:11 UTC (permalink / raw) <gautier_niouzes@hotmail.com> wrote in message news:6726e56e-6c49-433e-ac4e-0d31d287c822@googlegroups.com... >> Win32Ada is used less frequently because GNAT provides a nice set of >> OS-abstraction packages (GNAT sockets, serial COMM etc) and because for >> GUI design Gtk, Qt, Gnoga are more attractive. > > Not forgetting GWindows (for Windows only) !... And of course Claw (which GWindows was a knock-off of). Randy. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Microsoft UWP/WinRt 2017-06-02 12:27 ` Lucretia 2017-06-02 13:28 ` Dmitry A. Kazakov @ 2017-06-08 15:31 ` Pascal Obry 2017-06-14 5:43 ` Microsoft UWP/WinRT - Update alby.gamper 2017-06-18 2:03 ` JEDI, Win32Ada and GNAT-COM Ivan Levashev 1 sibling, 2 replies; 12+ messages in thread From: Pascal Obry @ 2017-06-08 15:31 UTC (permalink / raw) Le vendredi 02 juin 2017 à 05:27 -0700, Lucretia a écrit : > Never heard of Win32Ada, where's this then? Here: https://github.com/AdaCore/win32ada Since some hours! -- Pascal Obry / Magny Les Hameaux (78) The best way to travel is by means of imagination http://www.obry.net gpg --keyserver keys.gnupg.net --recv-key F949BD3B ^ permalink raw reply [flat|nested] 12+ messages in thread
* Microsoft UWP/WinRT - Update 2017-06-08 15:31 ` Pascal Obry @ 2017-06-14 5:43 ` alby.gamper 2017-06-18 1:15 ` Ivan Levashev 2017-06-18 2:03 ` JEDI, Win32Ada and GNAT-COM Ivan Levashev 1 sibling, 1 reply; 12+ messages in thread From: alby.gamper @ 2017-06-14 5:43 UTC (permalink / raw) On Friday, June 9, 2017 at 1:31:37 AM UTC+10, Pascal Obry wrote: > Le vendredi 02 juin 2017 à 05:27 -0700, Lucretia a écrit : > > Never heard of Win32Ada, where's this then? > > Here: > https://github.com/AdaCore/win32ada > > Since some hours! > > -- > Pascal Obry / Magny Les Hameaux (78) > > The best way to travel is by means of imagination > > http://www.obry.net > > gpg --keyserver keys.gnupg.net --recv-key F949BD3B Dear Ada Community I have managed to get the WinRt bindings into a usable state and have managed to create a "Windows Store" application. But the Windows App certification Fails, since the underlying Ada runtime, ie libgnat uses api's that are restricted, Thus preventing the application from being distributed via the "Windows Store". However it can be installed and run on a local PC) Shown below is the application code which loads up some XAML Over the coming weeks I will try and put together a demo/video clip demonstrating the technology in its entirety. -------------------------------------------------------------------------------- with Windows.UI.Xaml.Markup; use Windows.UI.Xaml.Markup; with Common; use Common; -------------------------------------------------------------------------------- package body AppOverrides is ---------------------------------------------------------------------------- overriding function OnLaunched ( This : access MyAppOverrides_Interface; args : Windows.ApplicationModel.Activation.ILaunchActivatedEventArgs ) return Windows.HRESULT is Hr : HResult := S_OK; m_IWindow : IWindow; m_Window : Window; m_XamlReader : XamlReader; m_XamlContent : Wide_String := "<TextBlock xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" " & " Name=""Text"" TextAlignment=""Center"" HorizontalAlignment=""Center"" " & " VerticalAlignment=""Center"" FontSize=""32""> " & " <Run Text=""Hello World application - written in Ada""/> " & " <LineBreak/> " & " <Run Text=""Target - Windows Store Application (Xaml)""/> " & "</TextBlock>"; m_Object : Windows.Object; m_IUIElement : aliased IUIElement := null; begin m_IWindow := m_Window.get_Current; m_Object := m_XamlReader.Load(To_String(m_XamlContent)); Hr := m_Object.QueryInterface(IID_IUIElement'access, m_IUIElement'address); Hr := m_IWindow.put_Content(m_IUIElement); Hr := m_IWindow.Activate; return Hr; end; end; Alex ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Microsoft UWP/WinRT - Update 2017-06-14 5:43 ` Microsoft UWP/WinRT - Update alby.gamper @ 2017-06-18 1:15 ` Ivan Levashev 0 siblings, 0 replies; 12+ messages in thread From: Ivan Levashev @ 2017-06-18 1:15 UTC (permalink / raw) 14.06.2017 12:43, alby.gamper@gmail.com пишет: > Dear Ada Community > > I have managed to get the WinRt bindings into a usable state > and have managed to create a "Windows Store" application. But > the Windows App certification Fails, since the underlying > Ada runtime, ie libgnat uses api's that are restricted, Thus > preventing the application from being distributed via the "Windows > Store". > > However it can be installed and run on a local PC) > Shown below is the application code which loads up some XAML > Over the coming weeks I will try and put together a demo/video clip > demonstrating the technology in its entirety. Hi! That's great news. If you tracked Delphi WinRT support attempts, you must have been familiar with yells that Microsoft tried to substitute all the great diversity of native programming languages including Delphi and Ada with only those ones supported by Microsoft's retarded compilers. http://www.deltics.co.nz/blog/posts/1080 This history has a good end. Starting from Windows 10 Anniversary Update (summer 2016) Windows has got Project Centennial support, and this is a hole through which everybody can get into Windows Store and not sacrifice quality by picking worse programming language. Say screw you to Microsoft Visual C++ and say hi to GNAT. https://channel9.msdn.com/Events/Build/2015/2-692 https://developer.microsoft.com/en-us/windows/bridges/desktop It took half a year for Embarcadero to adapt Delphi, and in the Delphi 10.1 Berlin Anniversary Update 2 they have introduced Windows Store support via Project Centennial. https://community.embarcadero.com/blogs/entry/windows-10-from-winrt-to-centennial-with-marco-cantu The current version of Delphi is 10.2, and Starter edition can be obtained for free here: https://www.embarcadero.com/ru/products/delphi/starter/promotional-download You'll get serial on e-mail. If you want to save installer for future, you can find offline installers here: http://cc.embarcadero.com/myreg You can install both Delphi Starter and C++ Builder Starter, but you'll need to get another serial key from Embarcadero website. You'll get an opportunity to research how it works and repeat the same for Ada. No need to learn these lessons from the beginning. Best Regards, Ivan Levashev, Barnaul -- If you want to get to the top, you have to start at the bottom ^ permalink raw reply [flat|nested] 12+ messages in thread
* JEDI, Win32Ada and GNAT-COM 2017-06-08 15:31 ` Pascal Obry 2017-06-14 5:43 ` Microsoft UWP/WinRT - Update alby.gamper @ 2017-06-18 2:03 ` Ivan Levashev 2017-07-03 10:14 ` Luke A. Guest 1 sibling, 1 reply; 12+ messages in thread From: Ivan Levashev @ 2017-06-18 2:03 UTC (permalink / raw) 08.06.2017 22:31, Pascal Obry пишет: > > Here: > https://github.com/AdaCore/win32ada > If anybody is interested (in terms of funding), I can think about reviving JEDI to Ada converter. https://bitbucket.org/OCTAGRAM/winapi-delphi-to-ada/src/4e966fc13369c6b5d482df9983be97415aaee6dd/Icon-Win32API/Win32API_out/Jwa.Win_Con.ads?at=default&fileviewer=file-view-default JEDI has WinAPI bindings for Delphi, and Delphi is similar to Ada in some sense. I.e. in C we have int* parameter, and it can mean "in out Integer", "out Integer", "anonymous access to array of Integer" or "library-wide access all Integer", that is, the pointer going to be stored for future. Delphi also has out and "in out" ("var") arguments support, so this can be translated freely. When Delphi developers write WinAPI bindings for Delphi, they interpret what they deal with, and thus bindings become more rich, more convenient to work with compared to bindings produced from Platform SDK C headers. They sometimes make overloaded versions of the same functions because some API have different ways of use, e.g. some parameter can be null or non-null determining meaning of other parameters, and JEDI bindings has one version where null pointer can be passed, and another one has "in out" ("var") parameter in the same place. JEDI is being actively used, so these interpretations proved to be useful for some real developers already. Win32Ada seems to have been produced with neither accounting Delphi developers' work nor repeating the same work independently and is comparably less soulful, less convenient. The same goes to GNAT-COM. In Delphi interface references were using ARC long before it appeared in Objective-C. It's very unlikely to do something wrong while working with them. Wherever exception is raised, there won't be COM objects leaked due to missed IUnknown.Release call. Ada is better than Delphi, so I expected GNAT-COM to naturally provide at least the same level of confidence, but instead I was very surprised to meet unsafe naked references crying from every corner to be leaked on any unpredicted exception, and recall, Ada doesn't have try-finally, so there is no convenient way to handle them other than by using Controlled. Delphi and Ada developers being apart is a curse haunting both languages for so many years. Both ecosystems lost from unawareness of each other. WinRT stands on top of WinAPI and COM, so implementing WinRT support in Ada brings us back to old unsolved problems. Best Regards, Ivan Levashev, Barnaul -- If you want to get to the top, you have to start at the bottom ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: JEDI, Win32Ada and GNAT-COM 2017-06-18 2:03 ` JEDI, Win32Ada and GNAT-COM Ivan Levashev @ 2017-07-03 10:14 ` Luke A. Guest 0 siblings, 0 replies; 12+ messages in thread From: Luke A. Guest @ 2017-07-03 10:14 UTC (permalink / raw) I'm not sure Delphi and Ada being apart is that hurtful, Ada is very different to Pascal. Ada defines types, Pascal really doesn't. Ask David Botton about GNATCOM as he wrote it before giving it to AdaCore. Also check if there are license requirements on the generated source. ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2017-07-03 10:14 UTC | newest] Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-06-02 1:23 Microsoft UWP/WinRt alby.gamper 2017-06-02 7:24 ` Dmitry A. Kazakov 2017-06-02 12:27 ` Lucretia 2017-06-02 13:28 ` Dmitry A. Kazakov 2017-06-02 14:53 ` gautier_niouzes 2017-06-02 14:56 ` Dmitry A. Kazakov 2017-06-02 21:11 ` Randy Brukardt 2017-06-08 15:31 ` Pascal Obry 2017-06-14 5:43 ` Microsoft UWP/WinRT - Update alby.gamper 2017-06-18 1:15 ` Ivan Levashev 2017-06-18 2:03 ` JEDI, Win32Ada and GNAT-COM Ivan Levashev 2017-07-03 10:14 ` Luke A. Guest
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox