Here is my suggestion. Do not design a program that works with gtk.
I say this not because I have a problem with gtk. In fact, I have learning to use the toolkit on my "to do" list for both Perl and C. Obviously for unixish systems it's an important library and with good reason.
I say this because your application should not depend on gtk. If you keep all of the user interface routines as separate and clean as possible (in their own module would be fairly tidy), this keeps you thinking of the interface as a view to your application's functionality and data.
For a larger, more complex application, I'd venture to say that keeping the view, the data, the functions, and the storage I/O separate both in your mind and in your application will make each element easier to construct, test, integrate, debug, upgrade, and replace. This hopefully increases the chance that your program will succeed and survive challenges it meets down the road.