mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-17 20:16:16 +00:00
Make icon file name OS helper function
This way we can load the correct icon on the Mac without ugly hacks in the OS independent code. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
a8676438a7
commit
565736a471
5 changed files with 34 additions and 10 deletions
|
@ -33,6 +33,7 @@ extern const void *subsurface_get_conf(char *name, pref_type_t type);
|
|||
extern void subsurface_close_conf(void);
|
||||
|
||||
extern const char *subsurface_USB_name(void);
|
||||
extern const char *subsurface_icon_name(void);
|
||||
|
||||
extern visible_cols_t visible_cols;
|
||||
|
||||
|
|
12
gtk-gui.c
12
gtk-gui.c
|
@ -523,11 +523,7 @@ static void about_dialog(GtkWidget *w, gpointer data)
|
|||
GdkPixbuf *logo = NULL;
|
||||
|
||||
if (need_icon) {
|
||||
#if defined __linux__ || defined __APPLE__
|
||||
GtkWidget *image = gtk_image_new_from_file("subsurface.svg");
|
||||
#elif defined WIN32
|
||||
GtkWidget *image = gtk_image_new_from_file("subsurface.ico");
|
||||
#endif
|
||||
GtkWidget *image = gtk_image_new_from_file(subsurface_icon_name());
|
||||
|
||||
if (image) {
|
||||
logo = gtk_image_get_pixbuf(GTK_IMAGE(image));
|
||||
|
@ -703,11 +699,7 @@ void init_ui(int *argcp, char ***argvp)
|
|||
}
|
||||
}
|
||||
if (need_icon)
|
||||
#if defined __linux__ || defined __APPLE__
|
||||
gtk_window_set_icon_from_file(GTK_WINDOW(win), "subsurface.svg", NULL);
|
||||
#elif defined WIN32
|
||||
gtk_window_set_icon_from_file(GTK_WINDOW(win), "subsurface.ico", NULL);
|
||||
#endif
|
||||
gtk_window_set_icon_from_file(GTK_WINDOW(win), subsurface_icon_name(), NULL);
|
||||
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);
|
||||
main_window = win;
|
||||
|
|
5
linux.c
5
linux.c
|
@ -51,3 +51,8 @@ const char *subsurface_USB_name()
|
|||
{
|
||||
return "/dev/ttyUSB0";
|
||||
}
|
||||
|
||||
const char *subsurface_icon_name()
|
||||
{
|
||||
return "subsurface.svg";
|
||||
}
|
||||
|
|
21
macos.c
21
macos.c
|
@ -2,6 +2,7 @@
|
|||
/* implements Mac OS X specific functions */
|
||||
#include "display-gtk.h"
|
||||
#include <CoreFoundation/CoreFoundation.h>
|
||||
#include <mach-o/dyld.h>
|
||||
|
||||
static CFURLRef fileURL;
|
||||
static CFPropertyListRef propertyList;
|
||||
|
@ -94,3 +95,23 @@ const char *subsurface_USB_name()
|
|||
{
|
||||
return "/dev/tty.SLAB_USBtoUART";
|
||||
}
|
||||
|
||||
#define REL_ICON_PATH "Resources/Subsurface.icns"
|
||||
const char *subsurface_icon_name()
|
||||
{
|
||||
static char path[1024];
|
||||
char *ptr1, *ptr2;
|
||||
uint32_t size = sizeof(path); /* need extra space to copy icon path */
|
||||
if (_NSGetExecutablePath(path, &size) == 0) {
|
||||
ptr1 = strcasestr(path,"MacOS/subsurface");
|
||||
ptr2 = strcasestr(path,"Contents");
|
||||
if (ptr1 && ptr2) {
|
||||
/* we are running as installed app from a bundle */
|
||||
if (ptr1 - path < size - strlen(REL_ICON_PATH)) {
|
||||
strcpy(ptr1,REL_ICON_PATH);
|
||||
return path;
|
||||
}
|
||||
}
|
||||
}
|
||||
return "packaging/macosx/Subsurface.icns";
|
||||
}
|
||||
|
|
|
@ -83,3 +83,8 @@ const char *subsurface_USB_name()
|
|||
{
|
||||
return "COM3";
|
||||
}
|
||||
|
||||
const char *subsurface_icon_name()
|
||||
{
|
||||
return "subsurface.ico";
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue