mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-20 23:51:29 -07:00
Support preferences in the GTK frontend.
Finally, some user-visible behaviour changes as a payoff for all that preparation work! In this commit, the GTK puzzles get a 'Preferences' option in the menu, which presents a dialog box to configure the preference settings. On closing that dialog box, the puzzle preferences are enacted immediately, and also saved to a configuration file where the next run of the same puzzle will reload them. The default file location is ~/.config/sgt-puzzles/<puzzlename>.conf, although you can override the .config dir via $XDG_CONFIG_HOME or override the Puzzles-specific subdir with $SGT_PUZZLES_DIR. This is the first commit that actually exposes all the new preferences work to the user, and therefore, I've also added documentation of all the current preference options.
This commit is contained in:
31
misc.c
31
misc.c
@ -3,6 +3,7 @@
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
#ifdef NO_TGMATH_H
|
||||
# include <math.h>
|
||||
#else
|
||||
@ -500,4 +501,34 @@ char *button2label(int button)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
char *make_prefs_path(const char *dir, const char *sep,
|
||||
const game *game, const char *suffix)
|
||||
{
|
||||
size_t dirlen = strlen(dir);
|
||||
size_t seplen = strlen(sep);
|
||||
size_t gamelen = strlen(game->name);
|
||||
size_t suffixlen = strlen(suffix);
|
||||
char *path, *p;
|
||||
const char *q;
|
||||
|
||||
path = snewn(dirlen + seplen + gamelen + suffixlen + 1, char);
|
||||
p = path;
|
||||
|
||||
memcpy(p, dir, dirlen);
|
||||
p += dirlen;
|
||||
|
||||
memcpy(p, sep, seplen);
|
||||
p += seplen;
|
||||
|
||||
for (q = game->name; *q; q++)
|
||||
if (*q != ' ')
|
||||
*p++ = tolower((unsigned char)*q);
|
||||
|
||||
memcpy(p, suffix, suffixlen);
|
||||
p += suffixlen;
|
||||
|
||||
*p = '\0';
|
||||
return path;
|
||||
}
|
||||
|
||||
/* vim: set shiftwidth=4 tabstop=8: */
|
||||
|
Reference in New Issue
Block a user