Author: cazfi
Date: Mon Nov  2 20:02:04 2015
New Revision: 30374

URL: http://svn.gna.org/viewcvs/freeciv?rev=30374&view=rev
Log:
When client options are saved when it exits, write message about it to a log 
instead of the
already closed or immediately closing output window.

Reported by Jacob Nevins <jtn>

See bug #23969

Modified:
    trunk/client/client_main.c
    trunk/client/clinet.c
    trunk/client/gui-gtk-2.0/menu.c
    trunk/client/gui-gtk-2.0/optiondlg.c
    trunk/client/gui-gtk-3.0/menu.c
    trunk/client/gui-gtk-3.0/optiondlg.c
    trunk/client/gui-qt/menu.cpp
    trunk/client/gui-qt/optiondlg.cpp
    trunk/client/gui-sdl2/optiondlg.c
    trunk/client/options.c
    trunk/client/options.h
    trunk/utility/log.h

Modified: trunk/client/client_main.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/client_main.c?rev=30374&r1=30373&r2=30374&view=diff
==============================================================================
--- trunk/client/client_main.c  (original)
+++ trunk/client/client_main.c  Mon Nov  2 20:02:04 2015
@@ -674,6 +674,18 @@
 }
 
 /**************************************************************************
+  Write messages from option saving to the log.
+**************************************************************************/
+static void log_option_save_msg(enum log_level lvl, const char *msg, ...)
+{
+  va_list args;
+
+  va_start(args, msg);
+  log_va_list(lvl, msg, args);
+  va_end(args);
+}
+
+/**************************************************************************
   Main client execution stop function. This calls ui_exit() and not the
   other way around.
 **************************************************************************/
@@ -685,7 +697,7 @@
   }
 
   if (gui_options.save_options_on_exit) {
-    options_save();
+    options_save(log_option_save_msg);
   }
 
   overview_free();

Modified: trunk/client/clinet.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/clinet.c?rev=30374&r1=30373&r2=30374&view=diff
==============================================================================
--- trunk/client/clinet.c       (original)
+++ trunk/client/clinet.c       Mon Nov  2 20:02:04 2015
@@ -325,7 +325,7 @@
   output_window_append(ftc_client, _("Disconnected from server."));
 
   if (gui_options.save_options_on_exit) {
-    options_save();
+    options_save(NULL);
   }
 }
 

Modified: trunk/client/gui-gtk-2.0/menu.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-gtk-2.0/menu.c?rev=30374&r1=30373&r2=30374&view=diff
==============================================================================
--- trunk/client/gui-gtk-2.0/menu.c     (original)
+++ trunk/client/gui-gtk-2.0/menu.c     Mon Nov  2 20:02:04 2015
@@ -137,7 +137,7 @@
 *****************************************************************/
 static void save_options_callback(GtkAction *action, gpointer data)
 {
-  options_save();
+  options_save(NULL);
 }
 
 /****************************************************************

Modified: trunk/client/gui-gtk-2.0/optiondlg.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-gtk-2.0/optiondlg.c?rev=30374&r1=30373&r2=30374&view=diff
==============================================================================
--- trunk/client/gui-gtk-2.0/optiondlg.c        (original)
+++ trunk/client/gui-gtk-2.0/optiondlg.c        Mon Nov  2 20:02:04 2015
@@ -118,7 +118,7 @@
     break;
   case RESPONSE_SAVE:
     desired_settable_options_update();
-    options_save();
+    options_save(NULL);
     break;
   }
 }

Modified: trunk/client/gui-gtk-3.0/menu.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-gtk-3.0/menu.c?rev=30374&r1=30373&r2=30374&view=diff
==============================================================================
--- trunk/client/gui-gtk-3.0/menu.c     (original)
+++ trunk/client/gui-gtk-3.0/menu.c     Mon Nov  2 20:02:04 2015
@@ -139,7 +139,7 @@
 *****************************************************************/
 static void save_options_callback(GtkAction *action, gpointer data)
 {
-  options_save();
+  options_save(NULL);
 }
 
 /****************************************************************

Modified: trunk/client/gui-gtk-3.0/optiondlg.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-gtk-3.0/optiondlg.c?rev=30374&r1=30373&r2=30374&view=diff
==============================================================================
--- trunk/client/gui-gtk-3.0/optiondlg.c        (original)
+++ trunk/client/gui-gtk-3.0/optiondlg.c        Mon Nov  2 20:02:04 2015
@@ -118,7 +118,7 @@
     break;
   case RESPONSE_SAVE:
     desired_settable_options_update();
-    options_save();
+    options_save(NULL);
     break;
   }
 }

Modified: trunk/client/gui-qt/menu.cpp
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/menu.cpp?rev=30374&r1=30373&r2=30374&view=diff
==============================================================================
--- trunk/client/gui-qt/menu.cpp        (original)
+++ trunk/client/gui-qt/menu.cpp        Mon Nov  2 20:02:04 2015
@@ -2238,7 +2238,7 @@
 *****************************************************************/
 void mr_menu::save_options_now()
 {
-  options_save();
+  options_save(NULL);
 }
 
 /***************************************************************************

Modified: trunk/client/gui-qt/optiondlg.cpp
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/optiondlg.cpp?rev=30374&r1=30373&r2=30374&view=diff
==============================================================================
--- trunk/client/gui-qt/optiondlg.cpp   (original)
+++ trunk/client/gui-qt/optiondlg.cpp   Mon Nov  2 20:02:04 2015
@@ -174,7 +174,7 @@
     break;
   case RESPONSE_SAVE:
     desired_settable_options_update();
-    options_save();
+    options_save(NULL);
     break;
   case RESPONSE_RESET:
     full_reset();

Modified: trunk/client/gui-sdl2/optiondlg.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-sdl2/optiondlg.c?rev=30374&r1=30373&r2=30374&view=diff
==============================================================================
--- trunk/client/gui-sdl2/optiondlg.c   (original)
+++ trunk/client/gui-sdl2/optiondlg.c   Mon Nov  2 20:02:04 2015
@@ -347,7 +347,7 @@
 static int save_client_options_callback(struct widget *pWidget)
 {
   if (Main.event.button.button == SDL_BUTTON_LEFT) {
-    options_save();
+    options_save(NULL);
   }
 
   return -1;

Modified: trunk/client/options.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/options.c?rev=30374&r1=30373&r2=30374&view=diff
==============================================================================
--- trunk/client/options.c      (original)
+++ trunk/client/options.c      Mon Nov  2 20:02:04 2015
@@ -5445,18 +5445,35 @@
 }
 
 /**************************************************************************
+  Write messages from option saving to the output window.
+**************************************************************************/
+static void option_save_output_window_callback(enum log_level lvl,
+                                               const char *msg, ...)
+{
+  va_list args;
+
+  va_start(args, msg);
+  output_window_vprintf(ftc_client, msg, args);
+  va_end(args);
+}
+
+/**************************************************************************
   Save all options.
 **************************************************************************/
-void options_save(void)
+void options_save(option_save_log_callback log_cb)
 {
   struct section_file *sf;
   const char *name = get_current_option_file_name();
   char dir_name[2048];
   int i;
 
+  if (log_cb == NULL) {
+    /* Default callback */
+    log_cb = option_save_output_window_callback;
+  }
+
   if (!name) {
-    output_window_append(ftc_client,
-                         _("Save failed, cannot find a filename."));
+    log_cb(LOG_ERROR, _("Save failed, cannot find a filename."));
     return;
   }
 
@@ -5506,10 +5523,9 @@
 
   /* save to disk */
   if (!secfile_save(sf, name, 0, FZ_PLAIN)) {
-    output_window_printf(ftc_client,
-                         _("Save failed, cannot write to file %s"), name);
+    log_cb(LOG_ERROR, _("Save failed, cannot write to file %s"), name);
   } else {
-    output_window_printf(ftc_client, _("Saved settings to file %s"), name);
+    log_cb(LOG_VERBOSE, _("Saved settings to file %s"), name);
   }
   secfile_destroy(sf);
 }

Modified: trunk/client/options.h
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/options.h?rev=30374&r1=30373&r2=30374&view=diff
==============================================================================
--- trunk/client/options.h      (original)
+++ trunk/client/options.h      Mon Nov  2 20:02:04 2015
@@ -318,6 +318,7 @@
 struct option;                  /* Opaque type. */
 struct option_set;              /* Opaque type. */
 
+typedef void (*option_save_log_callback)(enum log_level lvl, const char *msg, 
...);
 
 /* Main functions. */
 void options_init(void);
@@ -325,7 +326,7 @@
 void server_options_init(void);
 void server_options_free(void);
 void options_load(void);
-void options_save(void);
+void options_save(option_save_log_callback log_cb);
 
 
 /* Option sets. */

Modified: trunk/utility/log.h
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/utility/log.h?rev=30374&r1=30373&r2=30374&view=diff
==============================================================================
--- trunk/utility/log.h (original)
+++ trunk/utility/log.h Mon Nov  2 20:02:04 2015
@@ -118,6 +118,12 @@
   log_base(altlvl, message, ## __VA_ARGS__)
 #endif /* TESTMATIC_ENABLED */
 
+#define log_va_list(level, msg, args)                                       \
+  if (log_do_output_for_level(level)) {                                     \
+    vdo_log(__FILE__, __FUNCTION__, __FC_LINE__, FALSE,                     \
+            level, msg, args);                                              \
+  }
+
 /* Used by game debug command */
 #define log_test log_normal
 #define log_packet log_verbose


_______________________________________________
Freeciv-commits mailing list
Freeciv-commits@gna.org
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to