# pyne personalities :-)

import utils
from ptk.big_edit_box import *

class PersonalityEditBox:
	def __init__(self, user, personality, parent_personalitybox):
		self.user = user
		self.parent_personalitybox = parent_personalitybox
		self.personality = personality
		self.win = gtk.Dialog()
		self.win.set_transient_for (parent_personalitybox.parent_win)
		self.win.set_title(_("Editing personality"))
		
		self.win.vbox.set_border_width(5)
		self.win.activate_focus ()
		
		self.settings_box = big_edit_box( self.personality,
		      ( ("pname", _("Personality name:"), VAR_TYPE_STRING, 0, 0),
			("realname", _("Real name:"), VAR_TYPE_STRING, 0, 0),
			("emailaddr", _("Email address:"), VAR_TYPE_STRING, 0, 0),
			("replyto", _("Reply-to address:"), VAR_TYPE_STRING, 0, 0),
			("org", _("Organisation:"), VAR_TYPE_STRING, 0, 0),
			("sigfile", _("Signature file:"), VAR_TYPE_STRING, 0, 0,
				(utils.modal_file_sel_box, (_("Select Signature File"),))) )
		)
		self.win.vbox.pack_start(self.settings_box, expand=False)

		self.win.action_area.set_spacing (5)

		def _save_changes_close (_button):
			self.settings_box.apply_changes ()
			self.parent_personalitybox.update_personlist ()
			self.win.destroy ()
		
		button = gtk.Button(stock="gtk-ok")
		button.connect("clicked", _save_changes_close)
		self.win.action_area.pack_end(button, expand=False)
		button.show()
		
		def _cancel (_button):
			self.win.destroy ()

		button = gtk.Button(stock="gtk-cancel")
		button.connect("clicked", _cancel)
		self.win.action_area.pack_end(button, expand=False)
		button.show()
		
		self.win.show_all()

class personality:
	"""
	A user personality.
	"""
	def __init__(self, pname):
		# Name of personality. Id of sorts.
		self.pname = pname
		# Key in user.personalities dict. Set when added
		self.uid = None
		self.realname = ""
		self.emailaddr = ""
		self.replyto = ""
		self.sigfile = "~/.signature"
		self.org = ""

	def edit_box(self, user, parent_personalitybox):
		PersonalityEditBox (user, self, parent_personalitybox)


syntax highlighted by Code2HTML, v. 0.9.1