From: Dirk Hohndel Date: Sat, 29 Oct 2011 16:14:15 +0000 (-0700) Subject: Get icons working correctly under Windows X-Git-Url: http://git.tdb.fi/?p=ext%2Fsubsurface.git;a=commitdiff_plain;h=7f0c866f486eab549e25853bedd2e96b1b211773 Get icons working correctly under Windows With this we are able to include both a separate .ico file that the program can load at runtime and a .res file (that is created from the .rc file, both in the packaging/windows directory) that is linked into the executable and makes the Windows Explorer show the correct icon for subsurface. Signed-off-by: Dirk Hohndel --- diff --git a/Makefile b/Makefile index cc353f7..5b5adb0 100644 --- a/Makefile +++ b/Makefile @@ -34,6 +34,7 @@ ifeq ($(CC), i686-w64-mingw32-gcc) LIBDIVECOMPUTERDIR = /usr/i686-w64-mingw32/sys-root/mingw/include/libdivecomputer LIBDIVECOMPUTERINCLUDES = `$(PKGCONFIG) --cflags libdivecomputer` LIBDIVECOMPUTERARCHIVE = `$(PKGCONFIG) --libs libdivecomputer` + RESFILE = packaging/windows/subsurface.res else libdc-local := $(wildcard /usr/local/lib/libdivecomputer.a) @@ -76,7 +77,7 @@ LIBS = $(LIBXML2) $(LIBGTK) $(LIBDIVECOMPUTER) -lpthread OBJS = main.o dive.o profile.o info.o equipment.o divelist.o \ parse-xml.o save-xml.o libdivecomputer.o print.o uemis.o \ - gtk-gui.o + gtk-gui.o $(RESFILE) $(NAME): $(OBJS) $(CC) $(LDFLAGS) -o $(NAME) $(OBJS) $(LIBS) diff --git a/gtk-gui.c b/gtk-gui.c index ea3f646..b1bc82a 100644 --- a/gtk-gui.c +++ b/gtk-gui.c @@ -552,7 +552,11 @@ static void about_dialog(GtkWidget *w, gpointer data) GdkPixbuf *logo = NULL; if (need_icon) { +#ifndef WIN32 GtkWidget *image = gtk_image_new_from_file("subsurface.svg"); +#else + GtkWidget *image = gtk_image_new_from_file("subsurface.ico"); +#endif if (image) { logo = gtk_image_get_pixbuf(GTK_IMAGE(image)); @@ -823,7 +827,7 @@ void init_ui(int argc, char **argv) #ifndef WIN32 gtk_window_set_icon_from_file(GTK_WINDOW(win), "subsurface.svg", NULL); #else - gtk_window_set_icon_from_file(GTK_WINDOW(win), "subsurface.bmp", NULL); + gtk_window_set_icon_from_file(GTK_WINDOW(win), "subsurface.ico", NULL); #endif g_signal_connect(G_OBJECT(win), "delete-event", G_CALLBACK(on_delete), NULL); g_signal_connect(G_OBJECT(win), "destroy", G_CALLBACK(on_destroy), NULL); diff --git a/packaging/windows/subsurface.ico b/packaging/windows/subsurface.ico new file mode 100644 index 0000000..fe7d109 Binary files /dev/null and b/packaging/windows/subsurface.ico differ diff --git a/packaging/windows/subsurface.rc b/packaging/windows/subsurface.rc new file mode 100644 index 0000000..af79f6d --- /dev/null +++ b/packaging/windows/subsurface.rc @@ -0,0 +1,25 @@ +1 VERSIONINFO +FILEVERSION 1,1,0,0 +PRODUCTVERSION 1,1,0,0 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "080904E4" + BEGIN + VALUE "CompanyName", "subsurface team" + VALUE "FileDescription", "subsurface dive log" + VALUE "FileVersion", "1.1" + VALUE "InternalName", "subsurface" + VALUE "LegalCopyright", "Linus Torvalds, Dirk Hohndel and others" + VALUE "OriginalFilename", "subsurface.exe" + VALUE "ProductName", "subsurface" + VALUE "ProductVersion", "1.1" + END + END + + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x809, 1252 + END +END +ID ICON "subsurface.ico" \ No newline at end of file diff --git a/packaging/windows/subsurface.res b/packaging/windows/subsurface.res new file mode 100644 index 0000000..616cf5e Binary files /dev/null and b/packaging/windows/subsurface.res differ