]> git.tdb.fi Git - ext/subsurface.git/commitdiff
Get icons working correctly under Windows
authorDirk Hohndel <dirk@hohndel.org>
Sat, 29 Oct 2011 16:14:15 +0000 (09:14 -0700)
committerDirk Hohndel <dirk@hohndel.org>
Sat, 29 Oct 2011 16:14:15 +0000 (09:14 -0700)
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 <dirk@hohndel.org>
Makefile
gtk-gui.c
packaging/windows/subsurface.ico [new file with mode: 0644]
packaging/windows/subsurface.rc [new file with mode: 0644]
packaging/windows/subsurface.res [new file with mode: 0644]

index cc353f7d2edc5b1ae076a7f029c49bfff06d5d4f..5b5adb044357477fd8fd0017c9e5fe7ac2b62a2b 100644 (file)
--- 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)
index ea3f646e72ba955f68f919851d625722e1aa0780..b1bc82a735c81743205a7be997f8d650a0e84fb2 100644 (file)
--- 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 (file)
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 (file)
index 0000000..af79f6d
--- /dev/null
@@ -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 (file)
index 0000000..616cf5e
Binary files /dev/null and b/packaging/windows/subsurface.res differ