Commit 1f296515df5e567143fdc991984c7e704b455b53

Authored by Perry Werneck
1 parent b2833efd
Exists in master and in 1 other branch develop

Loading default font-family from windows registry

src/terminal/font/properties.c
@@ -47,11 +47,65 @@ static const gchar * invalid_font_messages[] = { @@ -47,11 +47,65 @@ static const gchar * invalid_font_messages[] = {
47 const gchar * v3270_get_default_font_name() 47 const gchar * v3270_get_default_font_name()
48 { 48 {
49 #if defined(_WIN32) 49 #if defined(_WIN32)
50 - return "Lucida Console"; 50 + {
  51 + HKEY hKey;
  52 + DWORD disp = 0;
  53 + LSTATUS rc = RegCreateKeyEx(
  54 + HKEY_LOCAL_MACHINE,
  55 + "Software\\" LIB3270_STRINGIZE_VALUE_OF(PRODUCT_NAME),
  56 + 0,
  57 + NULL,
  58 + REG_OPTION_NON_VOLATILE,
  59 + KEY_QUERY_VALUE|KEY_READ,
  60 + NULL,
  61 + &hKey,
  62 + &disp);
  63 +
  64 + debug("%s=%d","Software\\" LIB3270_STRINGIZE_VALUE_OF(PRODUCT_NAME),rc);
  65 +
  66 + if(rc == ERROR_SUCCESS)
  67 + {
  68 + static char * default_font_name = NULL;
  69 + DWORD cbData = 4096;
  70 +
  71 + if(!default_font_name)
  72 + {
  73 + default_font_name = (char *) malloc(cbData+1);
  74 + }
  75 + else
  76 + {
  77 + default_font_name = (char *) realloc(default_font_name,cbData+1);
  78 + }
  79 +
  80 + DWORD dwRet = RegQueryValueEx(hKey,"font-family",NULL,NULL,(LPBYTE) default_font_name, &cbData);
  81 +
  82 + debug("dwRet=%d",dwRet);
  83 +
  84 + RegCloseKey(hKey);
  85 +
  86 + if(dwRet == ERROR_SUCCESS)
  87 + {
  88 + default_font_name = (char *) realloc(default_font_name,cbData+1);
  89 + default_font_name[cbData] = 0;
  90 + return default_font_name;
  91 + }
  92 +
  93 + free(default_font_name);
  94 + default_font_name = NULL;
  95 + }
  96 + }
  97 +
  98 + // TODO: Search for a valid font-family
  99 + return "Courier New";
  100 +
51 #elif defined(__APPLE__) 101 #elif defined(__APPLE__)
  102 +
52 return "Courier New"; 103 return "Courier New";
  104 +
53 #else 105 #else
  106 +
54 return "monospace"; 107 return "monospace";
  108 +
55 #endif // _WIN32 109 #endif // _WIN32
56 } 110 }
57 111
src/testprogram/testprogram.c
@@ -71,35 +71,6 @@ @@ -71,35 +71,6 @@
71 } 71 }
72 */ 72 */
73 73
74 -#ifdef _WIN32  
75 -  
76 - static int get_registry(HKEY *hKey,REGSAM samDesired)  
77 - {  
78 - DWORD disp;  
79 -  
80 - if(RegCreateKeyEx(HKEY_CURRENT_USER,"software\\v3270",0,NULL,REG_OPTION_NON_VOLATILE,samDesired,NULL,hKey,&disp) != ERROR_SUCCESS)  
81 - {  
82 - g_warning("Can't open registry");  
83 - return -1;  
84 - }  
85 -  
86 - return 0;  
87 -  
88 - }  
89 -  
90 - static void save_settings(GtkWidget *terminal, GtkWidget *window)  
91 - {  
92 - HKEY hKey = 0;  
93 -  
94 - if(get_registry(&hKey,KEY_SET_VALUE))  
95 - return;  
96 -  
97 - v3270_to_registry(terminal,hKey,"terminal");  
98 - RegCloseKey(hKey);  
99 - }  
100 -  
101 -#else  
102 -  
103 static GKeyFile * get_key_file() 74 static GKeyFile * get_key_file()
104 { 75 {
105 GKeyFile * key_file = g_key_file_new(); 76 GKeyFile * key_file = g_key_file_new();
@@ -109,7 +80,7 @@ @@ -109,7 +80,7 @@
109 80
110 static void save_settings(GtkWidget *terminal, GtkWidget *window) 81 static void save_settings(GtkWidget *terminal, GtkWidget *window)
111 { 82 {
112 - debug("%s: Saving settings for windows %p",__FUNCTION__,window); 83 + debug("%s: Saving settings for window %p",__FUNCTION__,window);
113 84
114 GKeyFile * key_file = get_key_file(); 85 GKeyFile * key_file = get_key_file();
115 86
@@ -122,8 +93,6 @@ @@ -122,8 +93,6 @@
122 93
123 } 94 }
124 95
125 -#endif // _WIN32  
126 -  
127 static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) { 96 static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) {
128 97
129 GtkWidget * window = gtk_application_window_new(app); 98 GtkWidget * window = gtk_application_window_new(app);
@@ -147,32 +116,12 @@ @@ -147,32 +116,12 @@
147 116
148 gtk_notebook_append_page(GTK_NOTEBOOK(notebook),terminal,gtk_label_new("Terminal")); 117 gtk_notebook_append_page(GTK_NOTEBOOK(notebook),terminal,gtk_label_new("Terminal"));
149 118
150 -#ifdef _WIN32  
151 - v3270_set_font_family(terminal,"Lucida Console");  
152 -#endif // _WIN32  
153 -  
154 - v3270_selection_set_font_family(terminal,"monospace");  
155 -  
156 // Load settings before connecting the signals. 119 // Load settings before connecting the signals.
157 -#ifdef _WIN32  
158 - {  
159 - HKEY hKey = 0;  
160 -  
161 - if(!get_registry(&hKey,KEY_SET_VALUE))  
162 - {  
163 - v3270_load_registry(terminal,hKey,"terminal");  
164 - RegCloseKey(hKey);  
165 - }  
166 -  
167 - }  
168 -#else  
169 debug("%s: Loading settings...",__FUNCTION__); 120 debug("%s: Loading settings...",__FUNCTION__);
170 GKeyFile * key_file = get_key_file(); 121 GKeyFile * key_file = get_key_file();
171 v3270_load_key_file(terminal,key_file,NULL); 122 v3270_load_key_file(terminal,key_file,NULL);
172 v3270_accelerator_map_load_key_file(terminal,key_file,NULL); 123 v3270_accelerator_map_load_key_file(terminal,key_file,NULL);
173 -  
174 g_key_file_free(key_file); 124 g_key_file_free(key_file);
175 -#endif // _WIN32  
176 125
177 } 126 }
178 127