# -*- coding: utf8 -*-

"""
Copyright (C) 2007 Adolfo González Blázquez <code@infinicode.org>

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version. 

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. 

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

If you find any bugs or have any suggestions email: code@infinicode.org
"""

import pygtk
pygtk.require("2.0")
import gtk
import gtk.glade
import gobject

import user
import os.path

class Preferences:

        def __init__(self, gui):

                self.gui = gui

                self.prefs_dir = user.home + '/.mldonkeystats'
                self.prefs_file = 'preferences'

                self.file = 'mldstatsicon.glade'

                self.__HOST = 'localhost'
                self.__PORT = '4001'
                self.__LOGIN = 'admin'
                self.__PASSWORD = ''

                self.read()

        def get_host(self): return self.__HOST
        def get_port(self): return self.__PORT
        def get_login(self): return self.__LOGIN
        def get_password(self): return self.__PASSWORD

        def show(self):

                prefs_tree = gtk.glade.XML(self.file)

                self.host_entry = prefs_tree.get_widget('host_entry')
                self.port_entry = prefs_tree.get_widget('port_entry')
                self.login_entry = prefs_tree.get_widget('login_entry')
                self.password_entry = prefs_tree.get_widget('password_entry')
                self.prefs_window = prefs_tree.get_widget('prefs_window')

                self.host_entry.set_text(self.get_host())
                self.port_entry.set_text(self.get_port())
                self.login_entry.set_text(self.get_login())
                self.password_entry.set_text(self.get_password())

                signals = {
                        'on_host_entry_changed': self.on_host_entry_changed,
                        'on_port_entry_changed': self.on_port_entry_changed,
                        'on_login_entry_changed': self.on_login_entry_changed,
                        'on_password_entry_changed': self.on_password_entry_changed,
                        'on_close_button_clicked': self.on_close_button_clicked,
                        'on_prefs_window_destroy': self.on_prefs_window_destroy,
                }
                prefs_tree.signal_autoconnect(signals)

        def on_host_entry_changed(self, widget):
                self.__HOST = widget.get_text()

        def on_port_entry_changed(self, widget):
                self.__PORT = widget.get_text()

        def on_login_entry_changed(self, widget):
                self.__LOGIN = widget.get_text()

        def on_password_entry_changed(self, widget):
                self.__PASSWORD = widget.get_text()

        def on_close_button_clicked(self, widget):
                self.prefs_window.destroy()

        def on_prefs_window_destroy(self, widget):
                self.save()
                self.gui.start_reconnect(widget)

        def save(self):
                self.__HOST = self.host_entry.get_text()
                self.__PORT = self.port_entry.get_text()
                self.__LOGIN = self.login_entry.get_text()
                self.__PASSWORD = self.password_entry.get_text()

                if not os.path.isdir(self.prefs_dir):
                        os.mkdir(self.prefs_dir)

                f = file(os.path.join(self.prefs_dir, self.prefs_file), 'w')
                f.write(self.get_host()+'\n')
                f.write(self.get_port()+'\n')
                f.write(self.get_login()+'\n')
                f.write(self.get_password()+'\n')
                f.close()

        def read(self):
                if os.path.isdir(self.prefs_dir) and os.path.isfile(os.path.join(self.prefs_dir, self.prefs_file)):
                        f = file(os.path.join(self.prefs_dir, self.prefs_file), 'r')
                        self.__HOST = f.readline().rstrip()
                        self.__PORT = f.readline().rstrip()
                        self.__LOGIN = f.readline().rstrip()
                        self.__PASSWORD = f.readline().rstrip()