From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: GtkAda question
Date: Wed, 14 Apr 2021 22:40:56 +0200 [thread overview]
Message-ID: <s57k0k$ba9$1@gioia.aioe.org> (raw)
In-Reply-To: 60774222$0$6471$426a74cc@news.free.fr
On 2021-04-14 21:27, DrPi wrote:
> Le 14/04/2021 à 00:00, Gautier write-only address a écrit :
>> If I search for "Glib.Key_File" on the Web, the first hit is:
>>
>> https://developer.gnome.org/glib/stable/glib-Key-value-file-parser.html
>> So perhaps you want to parse and write ".ini-like config files" as
>> mentioned there?
> That's it.
> To be more precise, I need to save and retrieve few data like window
> position and size.
I [mis]use Gtk_Recent_Manager for the purpose.
See the package Gtk.Recent_Manager_Keys. It has
function Restore
( Key : UTF8_String;
Default : UTF8_String;
Manager : Gtk_Recent_Manager := Get_Default
) return UTF8_String;
procedure Store
( Key : UTF8_String;
Value : UTF8_String;
Manager : Gtk_Recent_Manager := Get_Default
);
This is basically all what you need.
On top of that you set something like:
function Restore (Key : String; Default : GInt) return GInt is
begin
return GInt'Value (Restore (Key, GInt'Image (Default)));
exception
when others =>
return GInt (Default);
end Restore;
Then you restore the window geometry simply as:
Window.Resize (Restore ("width", 200), Restore ("height", 100));
Window.Move (Restore ("x", 0), Restore ("y", 0));
[You would add some sanity checks, of course]
The advantage is that the recent manager is sort of standard in GTK, it
is maintained by GTK on per user basis. All GTK applications share the
same *.xbel file.
The rest is disadvantages. The file is in XML, you can find your keys
there. E.g. stored x position of max_home_automation looks like this:
<bookmark href="x" added="2021-04-10T09:30:03Z"
modified="2021-04-10T11:10:10Z" visited="2021-04-10T09:30:05Z">
<title>1677</title>
<desc>stored value for x</desc>
<info>
<metadata owner="http://freedesktop.org">
<mime:mime-type type="application/octet-stream"/>
<bookmark:applications>
<bookmark:application name="max_home_automation.exe"
exec="' max_home_automation.exe%u'"
modified="2021-04-10T11:10:10Z" count="114"/>
</bookmark:applications>
</metadata>
</info>
</bookmark>
Quite a lot of junk to store one puny value. As all GTK it is kind of
buggy, you may experience data losses. But otherwise it is simple for
keeping geometry and other settings there.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2021-04-14 20:40 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-12 21:45 GtkAda question DrPi
2021-04-13 9:53 ` Blady
2021-04-13 11:07 ` DrPi
2021-04-13 11:55 ` Dmitry A. Kazakov
2021-04-13 21:36 ` DrPi
2021-04-14 6:11 ` Dmitry A. Kazakov
2021-04-14 10:21 ` Emmanuel Briot
2021-04-14 19:28 ` DrPi
2021-04-14 20:23 ` DrPi
2021-04-14 21:05 ` Dmitry A. Kazakov
2021-04-17 19:56 ` DrPi
2021-04-13 22:00 ` Gautier write-only address
2021-04-14 19:27 ` DrPi
2021-04-14 20:40 ` Dmitry A. Kazakov [this message]
2021-04-17 19:58 ` DrPi
2021-04-18 9:34 ` DrPi
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox