diff options
| author | Matthias Melcher <github@matthiasm.com> | 2023-02-25 22:44:39 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-02-25 22:44:39 +0100 |
| commit | 13cd927ab43c2ac27d4c5491366ae9d28da23710 (patch) | |
| tree | 74512edfddd03209abb620caa3bc79aaad479341 /src/Fl_Preferences.cxx | |
| parent | 314ad2310e677b0826b21677afbbf2dfac675f37 (diff) | |
Add Fl_String to Fl_Preferences (#687)
Diffstat (limited to 'src/Fl_Preferences.cxx')
| -rw-r--r-- | src/Fl_Preferences.cxx | 48 |
1 files changed, 45 insertions, 3 deletions
diff --git a/src/Fl_Preferences.cxx b/src/Fl_Preferences.cxx index ddb521102..6e59537de 100644 --- a/src/Fl_Preferences.cxx +++ b/src/Fl_Preferences.cxx @@ -19,6 +19,7 @@ #include "Fl_System_Driver.H" #include <FL/Fl_Preferences.H> #include <FL/Fl_Plugin.H> +#include <FL/Fl_String.H> #include <FL/filename.H> #include <stdio.h> @@ -799,6 +800,33 @@ char Fl_Preferences::get( const char *key, char *&text, const char *defaultValue } /** + Reads an entry from the group. A default value must be + supplied. The return value indicates if the value was available + (non-zero) or the default was used (0). + + \param[in] key name of entry + \param[out] value returned from preferences or default value if none was set + \param[in] defaultValue default value to be used if no preference was set + \return 0 if the default value was used + */ +char Fl_Preferences::get( const char *key, Fl_String &value, const Fl_String &defaultValue ) { + const char *v = node->get( key ); + if (v) { + if ( strchr( v, '\\' ) ) { + char *text = decodeText( v ); + value = text; + ::free(text); + } else { + value = v; + } + return 1; + } else { + value = defaultValue; + return 0; + } +} + +/** Sets an entry (name/value pair). The return value indicates if there was a problem storing the data in memory. However it does not reflect if the value was actually stored in the preference file. @@ -969,6 +997,20 @@ char Fl_Preferences::set( const char *key, const void *data, int dsize ) { } /** + Sets an entry (name/value pair). The return value indicates if there + was a problem storing the data in memory. However it does not + reflect if the value was actually stored in the preference file. + + \param[in] key name of entry + \param[in] value set this entry to value (stops at the first nul character). + \return 0 if setting the value failed + */ +char Fl_Preferences::set( const char *entry, const Fl_String &value ) { + return set(entry, value.c_str()); +} + + +/** Returns the size of the value part of an entry. \param[in] key name of entry @@ -1211,9 +1253,9 @@ int Fl_Preferences::RootNode::read() { FILE *f = fl_fopen( filename_, "rb" ); if ( !f ) return -1; - if (fgets( buf, 1024, f )==0) { /* ignore */ } - if (fgets( buf, 1024, f )==0) { /* ignore */ } - if (fgets( buf, 1024, f )==0) { /* ignore */ } + if (fgets( buf, 1024, f )==0) { /* ignore: "; FLTK preferences file format 1.0" */ } + if (fgets( buf, 1024, f )==0) { /* ignore: "; vendor: ..." */ } + if (fgets( buf, 1024, f )==0) { /* ignore: "; application: ..." */ } Node *nd = prefs_->node; for (;;) { if ( !fgets( buf, 1024, f ) ) break; // EOF or Error |
