Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Workshop.activity/dialogs.py
diff options
context:
space:
mode:
Diffstat (limited to 'Workshop.activity/dialogs.py')
-rw-r--r--Workshop.activity/dialogs.py237
1 files changed, 237 insertions, 0 deletions
diff --git a/Workshop.activity/dialogs.py b/Workshop.activity/dialogs.py
new file mode 100644
index 0000000..67b3fb6
--- /dev/null
+++ b/Workshop.activity/dialogs.py
@@ -0,0 +1,237 @@
+import gtk
+
+class ErrorDialog(gtk.Dialog):
+ def __init__(self,text):
+ gtk.Dialog.__init__(self,"Error",None,gtk.DIALOG_MODAL,(gtk.STOCK_OK,gtk.RESPONSE_ACCEPT))
+ self.label = gtk.Label(text)
+ self.vbox.pack_start(self.label,padding = 10)
+ self.vbox.show_all()
+
+class LoginDialog(gtk.Dialog):
+ def __init__(self):
+ gtk.Dialog.__init__(self,"Login",None,gtk.DIALOG_MODAL)
+ ok_button = gtk.Button("Login")
+ ok_button.connect("clicked",self.ok_clicked,None)
+ ok_button.show()
+ self.action_area.pack_start(ok_button)
+ self.add_button("Cancel",gtk.RESPONSE_REJECT)
+ self.set_resizable(False)
+ self.prepare_dialog()
+
+ def set_model(self,model):
+ self.model = model
+
+ def prepare_dialog(self):
+ self.user_line = gtk.HBox(False,10)
+ self.pass_line = gtk.HBox(False,10)
+ self.register_line = gtk.HBox(False)
+ self.remember_line = gtk.HBox(False)
+
+ self.username_lbl = gtk.Label("Email:")
+ self.username_entry = gtk.Entry()
+ self.username_entry.set_width_chars(40)
+
+ self.password_lbl = gtk.Label("Password:")
+ self.password_entry = gtk.Entry()
+ self.password_entry.set_visibility(False)
+ self.password_entry.set_width_chars(40)
+
+ self.register_me = gtk.LinkButton("","Register Now!")
+ self.not_registered = gtk.Label("Not Registered? ")
+
+ self.remember_user = gtk.CheckButton("Remember my username",False)
+
+ self.register_me.connect("clicked",self.click_link,None)
+
+ self.user_line.pack_start(self.username_lbl,False)
+ self.user_line.pack_end(self.username_entry,False)
+
+ self.pass_line.pack_start(self.password_lbl,False)
+ self.pass_line.pack_end(self.password_entry,False)
+
+ self.register_line.pack_end(self.register_me,False)
+ self.register_line.pack_end(self.not_registered,False)
+
+ self.remember_line.pack_start(self.remember_user,False,padding=80)
+
+ self.vbox.pack_start(self.register_line,False)
+ self.vbox.pack_start(self.user_line,False,padding=10)
+ self.vbox.pack_start(self.pass_line,False,padding=10)
+ self.vbox.pack_start(self.remember_line,False)
+
+ self.vbox.show()
+ self.user_line.show()
+ self.pass_line.show()
+ self.register_line.show()
+ self.remember_line.show()
+
+ self.username_lbl.show()
+ self.username_entry.show()
+
+ self.password_lbl.show()
+ self.password_entry.show()
+
+ self.register_me.show()
+ self.not_registered.show()
+
+ self.remember_user.show()
+
+ def ok_clicked(self,widget,data=None):
+ success = self.model.login(self.username_entry.get_text(), self.password_entry.get_text())
+ if success:
+ self.response(gtk.RESPONSE_ACCEPT)
+ else:
+ errorDialog = ErrorDialog("The password or the email address is wrong")
+ errorDialog.run()
+ errorDialog.destroy()
+
+
+ def click_link(self,widget,data=None):
+ self.register_dialog = RegisterDialog(self.model)
+ self.register_dialog.run()
+ self.register_dialog.destroy()
+
+class RegisterDialog(gtk.Dialog):
+ def __init__(self,model):
+ gtk.Dialog.__init__(self,"Register",None,gtk.DIALOG_MODAL)
+ self.model = model
+ ok_button = gtk.Button("Register")
+ ok_button.connect("clicked",self.ok_clicked,None)
+ ok_button.show()
+ self.action_area.pack_start(ok_button)
+ self.add_button("Cancel",gtk.RESPONSE_REJECT)
+ self.set_resizable(False)
+ self.create_content()
+
+ def ok_clicked(self,widget,data=None):
+ username = self.entries[2].get_text()
+ password = self.entries[3].get_text()
+ confirmation = self.entries[4].get_text()
+ email = self.entries[0].get_text()
+
+ if username.trim() == "":
+ self.show_error_dialog('You must choose a username')
+ return
+ if password.trim() == '':
+ self.show_error_dialog('You must provide a password')
+ return
+ if email.trim() == '':
+ self.show_error_dialog('You must provide a valid email address')
+ return
+ if password != confirmation:
+ self.show_error_dialog('The password and confirmation must be the same')
+ return
+
+ success = self.model.register(self.entries[2].get_text(),self.entries[3].get_text(),self.entries[0].get_text())
+ if success :
+ self.response(gtk.RESPONSE_ACCEPT)
+ else:
+ self.show_error_dialog("An error occured while registering the user")
+
+ def show_error_dialog(self,error_message):
+ errorDialog = ErrorDialog("An error occured while registering a user")
+ errorDialog.run()
+ errorDialog.destroy()
+
+ def create_content(self):
+ entry_length = 40
+ table = gtk.Table(10,4,False)
+ self.entries = []
+ labels = ["Email address","Name","Username","Password","Confirmation","Location","Web Site"]
+ required=[True,True,True,True,True,False,False]
+ hidden=[False,False,False,True,True,False,False]
+ for x in range(6):
+ lbl = gtk.Label(labels[x]+":")
+ entry = gtk.Entry()
+ self.entries.append(entry)
+ entry.set_width_chars(entry_length)
+ table.attach(lbl,0,1,x,x+1,xpadding=10)
+ table.attach(entry,1,2,x,x+1,ypadding=10)
+ if hidden[x]:
+ entry.set_visibility(False)
+ if required[x]:
+ required_lbl = gtk.Label("*")
+ table.attach(required_lbl,2,3,x,x+1)
+ required_lbl.show()
+ lbl.set_alignment(0.0,0.5)
+ lbl.show()
+ entry.show()
+
+
+ if_required = gtk.Label(" * Required Field")
+ table.attach(if_required,3,4,0,1)
+
+ under_13 = gtk.CheckButton("I am 13 years old or younger",False)
+ legal = gtk.CheckButton("I have read the",False)
+ legal_notices=gtk.LinkButton('',"legal notices")
+ and_lbl = gtk.Label("and")
+ privacy = gtk.LinkButton('',"privacy statement")
+ hbox = gtk.HBox(False,0)
+ hbox.pack_start(legal)
+ hbox.pack_start(legal_notices)
+ hbox.pack_start(and_lbl)
+ hbox.pack_start(privacy)
+
+ table.attach(under_13,1,2,7,8)
+ table.attach(hbox,1,2,8,9)
+ under_13.show()
+ legal.show()
+ legal_notices.show()
+ and_lbl.show()
+ privacy.show()
+ hbox.show()
+ if_required.show()
+ table.show()
+ self.vbox.pack_start(table)
+
+class InfoDialog(gtk.Dialog):
+ def __init__(self,tutorial,controller):
+ gtk.Dialog.__init__(self,"Tutorial Info",None,gtk.DIALOG_MODAL)
+ self.tutorial = tutorial
+ self.controller = controller
+ ok_button = gtk.Button("Save")
+ ok_button.connect("clicked",self.ok_clicked,None)
+ ok_button.show()
+ self.action_area.pack_start(ok_button)
+ self.add_button("Cancel",gtk.RESPONSE_REJECT)
+ self.set_resizable(False)
+ self.prepare_content()
+
+ def prepare_content(self):
+ table = gtk.Table(3,2,False)
+ labels = ["Tutorial Name","Author","Description"]
+ entry_length = [40,40,40]
+ self.entries = []
+
+ self.name_entry = gtk.Entry()
+ self.name_entry.set_width_chars(40)
+ self.name_entry.set_text(self.tutorial.name)
+ table.attach(self.name_entry,1,2,0,1,ypadding=10)
+
+
+ self.author_entry = gtk.Entry()
+ self.author_entry.set_width_chars(40)
+ self.author_entry.set_text(self.tutorial.author)
+ table.attach(self.author_entry,1,2,1,2,ypadding=10)
+
+ self.desc_entry = gtk.Entry()
+ self.desc_entry.set_width_chars(40)
+ self.desc_entry.set_text(self.tutorial.description)
+ table.attach(self.desc_entry,1,2,2,3,ypadding=10)
+
+
+
+ for x in range(0,3):
+ label = gtk.Label(labels[x])
+ table.attach(label,0,1,x,x+1,xpadding=10)
+ label.set_alignment(0.0,0.5)
+ table.show_all()
+ self.vbox.pack_start(table)
+
+ def ok_clicked(self,widget,data):
+ self.tutorial.author = self.author_entry.get_text()
+ self.tutorial.name = self.name_entry.get_text()
+ self.tutorial.description = self.desc_entry.get_text()
+ self.controller.save_tutorial_info(self.tutorial)
+ self.response(gtk.RESPONSE_ACCEPT)
+