diff options
author | Joe Sapp <nixphoeni@gentoo.org> | 2005-07-11 04:18:49 +0000 |
---|---|---|
committer | Joe Sapp <nixphoeni@gentoo.org> | 2005-07-11 04:18:49 +0000 |
commit | 217519e9542b7644de83f43641263383acc63043 (patch) | |
tree | 48c920019ea9f518d851550d41fe787e82d38d76 /gnome-extra/gdesklets-core/files | |
parent | Fixed echo lines and added more einfo (diff) | |
download | gentoo-2-217519e9542b7644de83f43641263383acc63043.tar.gz gentoo-2-217519e9542b7644de83f43641263383acc63043.tar.bz2 gentoo-2-217519e9542b7644de83f43641263383acc63043.zip |
Added the migration tool to the older versions
(Portage version: 2.0.51.22-r1)
Diffstat (limited to 'gnome-extra/gdesklets-core/files')
4 files changed, 212 insertions, 0 deletions
diff --git a/gnome-extra/gdesklets-core/files/digest-gdesklets-core-0.35-r1 b/gnome-extra/gdesklets-core/files/digest-gdesklets-core-0.35-r1 new file mode 100644 index 000000000000..3cfc57404dad --- /dev/null +++ b/gnome-extra/gdesklets-core/files/digest-gdesklets-core-0.35-r1 @@ -0,0 +1,2 @@ +MD5 1ba952f54d74c3b31732d0188b48512f gDesklets-0.35.tar.bz2 741056 +MD5 bba42e71aa3a0d310ad6ee763fcbac25 develbook.tar.bz2 445919 diff --git a/gnome-extra/gdesklets-core/files/digest-gdesklets-core-0.35.1-r1 b/gnome-extra/gdesklets-core/files/digest-gdesklets-core-0.35.1-r1 new file mode 100644 index 000000000000..9088a4229464 --- /dev/null +++ b/gnome-extra/gdesklets-core/files/digest-gdesklets-core-0.35.1-r1 @@ -0,0 +1,2 @@ +MD5 2017ece8b60cf2065cd2cc5ea10a6219 gDesklets-0.35.1.tar.bz2 733865 +MD5 bba42e71aa3a0d310ad6ee763fcbac25 develbook.tar.bz2 445919 diff --git a/gnome-extra/gdesklets-core/files/digest-gdesklets-core-0.35_rc1-r1 b/gnome-extra/gdesklets-core/files/digest-gdesklets-core-0.35_rc1-r1 new file mode 100644 index 000000000000..2f0d8fdb8ad7 --- /dev/null +++ b/gnome-extra/gdesklets-core/files/digest-gdesklets-core-0.35_rc1-r1 @@ -0,0 +1,2 @@ +MD5 422191b497018555432c5643f19e474a gDesklets-0.35rc1.tar.bz2 727148 +MD5 bba42e71aa3a0d310ad6ee763fcbac25 develbook.tar.bz2 445919 diff --git a/gnome-extra/gdesklets-core/files/gdesklets-migration-tool b/gnome-extra/gdesklets-core/files/gdesklets-migration-tool new file mode 100755 index 000000000000..7addea54de36 --- /dev/null +++ b/gnome-extra/gdesklets-core/files/gdesklets-migration-tool @@ -0,0 +1,206 @@ +#!/usr/bin/env python +# +# TODO: +# -Add selectors for previous and current gDesklets versions +# -Add command-line options for selecting the above +# -Add command-line options for verbose configuration migrations +# +# +import gtk, gconf +import os, re, sys +import fileinput +import __builtin__ + +if "/usr/lib/gdesklets" not in sys.path: + sys.path.append("/usr/lib/gdesklets") + +from utils import i18n +from utils.HIGDialog import HIGDialog + +from config.StateSaver import DefaultStateSaver, StateSaver + +__builtin__._ = i18n.Translator("gdesklets") + +class MigrationTool: + + # Display the main window + def __init__(self): + + m = "This tool will safely migrate your settings from old versions of " + m += "gDesklets (0.3x.x series), so that they will work with versions " + m += "0.35rc1 onwards.\n\n" + + # This message doesn't really apply, but I'm keeping it here + # in case I forget how to do bold text or if we decide to keep + # the old migration tool. + #m += "If you are migrating from an earlier version, please run\n" + #m += "<span weight=\"bold\">gdesklets-migration-tool</span> first." + + dialog = HIGDialog((gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,gtk.STOCK_OK, + gtk.RESPONSE_OK), gtk.STOCK_DIALOG_INFO, + "gDesklets Config Migration Tool", m) + + self.__config_path = "/apps/gdesklets" + self.__gdesklets_path = os.path.join(os.getenv("HOME"), ".gdesklets") + # Get the StateSaver structure for shell config (if any) + self.__new_shell_cfg = DefaultStateSaver() + self.__old_shell_cfg = self.__config_path + "/shell" + + dialog.connect("response", self.__response) + + # Check if ~/.gdesklets exists + if (not os.path.exists(self.__gdesklets_path)): + print ("You don't have a working version of gDesklets! (~/.gdesklets not found)\nExiting!") + sys.exit(1) + + try: + self.__displays_file = self.__gdesklets_path + "/displays" + except: + print "Can't find ~/.gdesklets/displays" + sys.exit(1) + + # Get IDs from each display in the ~/.gdesklets/displays file + self.__displays = [] + + # Probably a better way to do it than with fileinput + for i in fileinput.input(self.__displays_file): + if i.startswith("id"): + l = i.split(" ") + self.__displays.append(l[0] + "CONFIG") + + dialog.show() + + + def __response(self, dialog, response): + + if (response == gtk.RESPONSE_OK): + dialog.hide() + self.__show_warning(dialog) + elif (response == gtk.RESPONSE_YES): + dialog.hide() + self.__migrate(dialog) + else: gtk.main_quit() + + + def __show_warning(self, dialog): + + m = "This will overwrite any existing settings from 0.35rc1 on up!\n" + m += "Do you wish to continue?" + + dialog = HIGDialog((gtk.STOCK_NO, gtk.RESPONSE_NO, + gtk.STOCK_YES, gtk.RESPONSE_YES), + gtk.STOCK_DIALOG_QUESTION, "Warning!", m) + dialog.connect("response", self.__response) + dialog.show() + + + def __show_finished(self, dialog): + + dialog = HIGDialog((gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE), + gtk.STOCK_DIALOG_INFO, "Migration successful!", + "Settings have been migrated succesfully") + dialog.connect("response", self.__response) + dialog.show() + + # This is just a dummy function to see what's in + # the states file. It's not called except when testing :) + def __list(self, dialog): + + m = "" + + for d in self.__displays: + + s = StateSaver(d) + for l in s.list(): + m += str(s.get_key(l)) + m += "\n" + m += "\n\n" + + dialog = HIGDialog((gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE), + gtk.STOCK_DIALOG_INFO, "List", m) + + dialog.connect("response", self.__response) + dialog.show() + + def __migrate(self, dialog): + + # we assume they have a config to start with + noconfig = False; + + # set up gconf client + self.__client = gconf.client_get_default() + self.__client.add_dir(self.__config_path, gconf.CLIENT_PRELOAD_RECURSIVE) + + # open the new output files + #d_cfile = open(self.__displays_file, "w") + + for d in self.__displays: + + cur_id = d[0:len(d) - len("CONFIG")] # This display's id + s = StateSaver(d) # StateSaver for this display + + for entry in self.__client.all_entries(self.__config_path + "/" + cur_id): + + key = entry.get_key() + + # Each key had a corresponding key_TYPE variable + # that indicated the type of configuration stored. + # It seems tests like the following are necessary to + # get the right type from gconf. + if key.endswith("_TYPE"): + + typ = self.__client.get_string(key) # Type of variable stored + key_result = key[0:key.rfind("_TYPE")] # Actual key + + # Get the value from key_result + if typ == "bool": + value = self.__client.get_bool(key_result) + elif typ == "string": + value = self.__client.get_string(key_result) + elif typ == "int": + value = self.__client.get_int(key_result) + elif typ == "float": + value = self.__client.get_string(key_result) + + key_result = key_result[key_result.rfind("/")+1:] + #print key_result + " : " + str( (value,typ) ) + + s.set_key(key_result, (value,typ)) + + #print str(s.list()) + + # Done with the displays, now migrate the shell configuration + for entry in self.__client.all_entries(self.__old_shell_cfg): + + key = entry.get_key() + + # Find out which key it is + # Are all of these valid from < 0.35_rc1? + if key == "current_tip": + value = self.__client.get_int(key) + elif key == "show_tip_of_the_day": + value = self.__client.get_bool(key) + elif key == "editor": + value = self.__client.get_string(key) + elif key == "dpi": + value = self.__client.get_int(key) + elif key == "translucency": + value = self.__client.get_string(key) + elif key == "authorized_commands": + value = self.__client.get_string(key) + + # Transform the key to just it's value, not the + # entire gconf path + key = key[key.rfind("/")+1:] + + self.__new_shell_cfg.set_key(key, value) + + # we are done... + self.__show_finished(dialog) + + + +if __name__ == "__main__": + + MigrationTool() + gtk.main() |