I have a legacy application written in C, using the raw Win32 API. The general level of abstraction is low and raw dependency on <windows.h> is common.I would like to port this application to GTK+. There are any kind of guidelines or best practices on how to do this? I've previously ported a MFC application to Qt, but the application was very abstracted - it draw it's own set of widgets, for example - and initial porting was very straightforward.I've been thinking at first using Winelib to build a native Linux executable and then trying to slowly refactor it into a GTK+ app. Does some one have best practices or previous experiences to share about this?
Strategies for porting application from Win32 API to GTK+
windows;linux;porting
Do not mix the two things. You want to port your application to GTK+, and you want to port it to Linux. Leave the Linux part for later, it'll be easier in the end.Just sharing my personal experience on a C++ MFC application where iterative refactoring proved to be a nightmare due to entangled Win32 specific code and core application behaviour.First, we didn't try to build a Linux application. In our first refactor step we attempted to trim class declarations from their Win32 specific code. When not possible, we created abstraction classes. For instance, if a class was keeping a HWND handle to a window, we created a MyWindow class to encapsulate the HWND.Then we started redesigning all the interface parts using Glade (targeting GtkBuilder instead of libglade which I believe is deprecated) without writing a single line of code. Finally we rewrote the application itself, by copy-pasting class members and implementations whenever possible. In this step, MyWindow would contain a GtkWindow, and eventually become a GtkWindow whenever possible.It was painful but we could not think of a better way to do it at the time. Still can't.