]> git.tdb.fi Git - ext/subsurface.git/blobdiff - windows.c
Fix profile and average depth for freedives
[ext/subsurface.git] / windows.c
index df04aa0f2a198ffaa88731dac85a3b72b5d4b415..29ef6122e50044a160640d22da81df053ebe22d9 100644 (file)
--- a/windows.c
+++ b/windows.c
@@ -2,6 +2,7 @@
 /* implements Windows specific functions */
 #include "display-gtk.h"
 #include <windows.h>
+#define DIVELIST_DEFAULT_FONT "Sans 8"
 
 static HKEY hkey;
 
@@ -11,8 +12,8 @@ static int get_from_registry(HKEY hkey, const char *key)
        DWORD len = 4;
        LONG success;
 
-       success = RegQueryValueEx(hkey, TEXT(key), NULL, NULL,
-                               (LPBYTE) &value, &len );
+       success = RegQueryValueEx(hkey, (LPCTSTR)TEXT(key), NULL, NULL,
+                               (LPBYTE) &value, (LPDWORD)&len );
        if (success != ERROR_SUCCESS)
                return FALSE; /* that's what happens the first time we start */
        return value;
@@ -22,31 +23,34 @@ void subsurface_open_conf(void)
 {
        LONG success;
 
-       success = RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Software\\subsurface"), 0,
-                       KEY_QUERY_VALUE, &hkey);
-       if (success != ERROR_SUCCESS) {
-               success = RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("Software\\subsurface"),
-                                       0L, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
-                                       NULL, &hkey, NULL);
-               if (success != ERROR_SUCCESS)
-                       printf("CreateKey Software\\subsurface failed %ld\n", success);
-       }
+       success = RegCreateKeyEx(HKEY_CURRENT_USER, (LPCTSTR)TEXT("Software\\subsurface"),
+                               0L, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
+                               NULL, &hkey, NULL);
+       if (success != ERROR_SUCCESS)
+               printf("CreateKey Software\\subsurface failed %ld\n", success);
 }
 
 void subsurface_set_conf(char *name, pref_type_t type, const void *value)
 {
+       /* since we are using the pointer 'value' as both an actual
+        * pointer to the string setting and as a way to pass the
+        * numbers 0 and 1 to this function for booleans, one of the
+        * calls to RegSetValueEx needs to pass &value (when we want
+        * to pass the boolean value), the other one passes value (the
+        * address of the string. */
        switch (type) {
        case PREF_BOOL:
                /* we simply store the value as DWORD */
-               RegSetValueEx(hkey, TEXT(name), 0, REG_DWORD, (DWORD)value, 4);
+               RegSetValueEx(hkey, (LPCTSTR)TEXT(name), 0, REG_DWORD, (const BYTE *)&value, 4);
                break;
        case PREF_STRING:
-               RegSetValueEx(hkey, TEXT(name), 0, REG_SZ, value, strlen(value));
+               RegSetValueEx(hkey, (LPCTSTR)TEXT(name), 0, REG_SZ, (const BYTE *)value, strlen(value));
        }
 }
 
 const void *subsurface_get_conf(char *name, pref_type_t type)
 {
+       LONG success;
        char *string;
        int len;
 
@@ -56,8 +60,8 @@ const void *subsurface_get_conf(char *name, pref_type_t type)
        case PREF_STRING:
                string = malloc(80);
                len = 80;
-               success = RegQueryValueEx(hkey, TEXT(name), NULL, NULL,
-                                       (LPBYTE) string, &len );
+               success = RegQueryValueEx(hkey, (LPCTSTR)TEXT(name), NULL, NULL,
+                                       (LPBYTE) string, (LPDWORD)&len );
                if (success != ERROR_SUCCESS) {
                        /* that's what happens the first time we start - just return NULL */
                        free(string);
@@ -69,9 +73,30 @@ const void *subsurface_get_conf(char *name, pref_type_t type)
        return NULL;
 }
 
+void subsurface_flush_conf(void)
+{
+       /* this is a no-op */
+}
+
 void subsurface_close_conf(void)
 {
-       if (RegFlushKey(hkey) != ERROR_SUCCESS)
-               printf("RegFlushKey failed %ld\n");
        RegCloseKey(hkey);
 }
+
+const char *subsurface_USB_name()
+{
+       return "COM3";
+}
+
+const char *subsurface_icon_name()
+{
+       return "subsurface.ico";
+}
+
+void subsurface_ui_setup(GtkSettings *settings, GtkWidget *menubar,
+               GtkWidget *vbox, GtkUIManager *ui_manager)
+{
+       if (!divelist_font)
+               divelist_font = DIVELIST_DEFAULT_FONT;
+       gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 0);
+}