#!/usr/bin/env python import pygtk pygtk.require("2.0") import gtk import ConfigParser #import xdg # missing on N900 #import xdg.BaseDirectory import os import errno import gobject config_home_name = os.environ.get("XDG_CONFIG_HOME") or os.path.join(os.environ["HOME"], ".config") config_name = os.path.join(config_home_name, "ipcheck", "config") try: os.makedirs(os.path.dirname(config_name)) except OSError as error: if error.errno == errno.EEXIST: pass else: raise size_group = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL) def add_entry(title, box): h = gtk.HBox(spacing = 7) label = gtk.Label(title) size_group.add_widget(label) h.pack_start(label, False) entry = gtk.Entry() h.pack_start(entry, True, True) h.show_all() box.pack_start(h, False) return entry dialog = gtk.Dialog() vbox = gtk.VBox(spacing = 7) vbox.show() dialog.vbox.pack_start(vbox, False, False) hostname_entry = add_entry("My Hostname (FQDN):", vbox) import socket hostname_entry.set_text(socket.gethostname()) username_entry = add_entry("My DynDNS username:", vbox) password_entry = add_entry("My DynDNS password:", vbox) password_entry.set_visibility(False) password_entry.set_activates_default(True) dialog.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) dialog.add_button("Set Up", gtk.RESPONSE_OK) dialog.set_default_response(gtk.RESPONSE_OK) # load config = ConfigParser.ConfigParser() def get_config(name, fallback): return config.get("DynDNS", name) if config.has_option("DynDNS", name) else fallback config.read(config_name) if not config.has_section("DynDNS"): config.add_section("DynDNS") hostname_entry.set_text(get_config("host", hostname_entry.get_text())) username_entry.set_text(get_config("user", "")) password_entry.set_text(get_config("password", "")) if dialog.run() == gtk.RESPONSE_OK: config.set("DynDNS", "host", hostname_entry.get_text()) config.set("DynDNS", "user", username_entry.get_text()) config.set("DynDNS", "password", password_entry.get_text()) output_name = "%s.new" % config_name output_file = open(output_name, "w") try: config.write(output_file) finally: output_file.close() os.rename(output_name, config_name)