def execCreateGroup(conn):
	dlg = WidgetDialog()
	dlg.setCaption(qApp.translate("CreateGroupWdg","Create Group"))
	creategroup = CreateGroupWdg(conn)
	dlg.setWidget(creategroup,True,qApp.translate("CreateUserWdg","Group information"))
	glob_settings.widgetGeometry('skolesys-ui/CreateGroup',dlg)
	dlg.exec_loop()
	glob_settings.setWidgetGeometry('skolesys-ui/CreateGroup',dlg)
def execRemoveUser(conn,uids):
	dlg = WidgetDialog()
	dlg.setCaption(qApp.translate("RemoveUserWdg","Remove User(s)"))
	removeuser = RemoveUserWdg(conn,uids)
	dlg.setWidget(removeuser,True,qApp.translate("CreateUserWdg","User information"))
	glob_settings.widgetGeometry('skolesys-ui/RemoveUser',dlg)
	dlg.exec_loop()
	glob_settings.setWidgetGeometry('skolesys-ui/RemoveUser',dlg)
def execCreateUser(conn):
	dlg = WidgetDialog()
	dlg.setCaption(qApp.translate("CreateUserWdg","Create User"))
	createuser = CreateUserWdg(conn)
	dlg.setWidget(createuser,True,qApp.translate("CreateUserWdg","User information"))
	glob_settings.widgetGeometry('skolesys-ui/CreateUser',dlg)
	dlg.exec_loop()
	glob_settings.setWidgetGeometry('skolesys-ui/CreateUser',dlg)
def execAddRemoveGroupUsers(conn,groupnames):
	dlg = WidgetDialog()
	dlg.setCaption(qApp.translate("AddRemoveGroupUsersWdg","Alter Group Members"))
	wdg = AddRemoveGroupUsersWdg(conn,groupnames)
	dlg.setWidget(wdg,True,qApp.translate("AddRemoveGroupUsersWdg","Alter the members of the following group(s)"))
	glob_settings.widgetGeometry('skolesys-ui/AddRemoveGroupUsers',dlg)
	dlg.exec_loop()
	glob_settings.setWidgetGeometry('skolesys-ui/AddRemoveGroupUsers',dlg)
def execAddRemoveUserGroups(conn,uids):
	dlg = WidgetDialog()
	dlg.setCaption(qApp.translate("AddRemoveUserGroupsWdg","Alter Group Memberships"))
	wdg = AddRemoveUserGroupsWdg(conn,uids)
	dlg.setWidget(wdg,True,qApp.translate("AddRemoveUserGroupsWdg","Alter the group membership of the following user(s)"))
	glob_settings.widgetGeometry('skolesys-ui/AddRemoveUserGroups',dlg)
	dlg.exec_loop()
	glob_settings.setWidgetGeometry('skolesys-ui/AddRemoveUserGroups',dlg)
def execRemoveGroup(conn,groupnames):
	dlg = WidgetDialog()
	dlg.setCaption(qApp.translate("RemoveGroupWdg","Remove Group(s)"))
	removegroup = RemoveGroupWdg(conn,groupnames)
	dlg.setWidget(removegroup,True,qApp.translate("CreateGroupWdg","Group information"))
	glob_settings.widgetGeometry('skolesys-ui/RemoveGroup',dlg)
	dlg.exec_loop()
	glob_settings.setWidgetGeometry('skolesys-ui/RemoveGroup',dlg)
	def accept(self):
		answer = QMessageBox.question(self,
			self.tr('Alter group memberships'),
			self.tr('Are you sure you want to perform this operation?'),
			QMessageBox.Yes,QMessageBox.No)
		if answer==QMessageBox.No:
			return False
			
		progdlg = ProgressDlg(self.tr("Altering memberships..."),self,"progress",True)
		progdlg.setTotalSteps(len(self.uids)*(self.lb_add.count()+self.lb_remove.count())-1)
		
		glob_settings.widgetGeometry('skolesys-ui/AddRemoveUserGroups/ProgressDlg',progdlg)
		progdlg.show()
		show_details = glob_settings.intEntry('skolesys-ui/AddRemoveUserGroups/ProgressDlg/show_details',0)[0]
		progdlg.showDetails(show_details)

		progress = 0
		for uid in self.uids:
			# Add groups
			progdlg.setLabelText(self.tr("Altering memberships of %1").arg(uid))
			for idx in xrange(self.lb_add.count()):	
				addgroup = str(self.lb_add.text(idx).utf8())
				details = self.tr('Adding user "%1" to the group "%2" ... ').arg(uid).arg(QString.fromUtf8(addgroup))			
				res = self.soapproxy.groupadd(uid,addgroup)
				if res==1:
					details += self.tr('USER ADDED')
				if res==-3:
					details += self.tr('USER ALREADY MEMBER')
				progdlg.addDetails(details)
				
				progdlg.setProgress(progress)
				progress+=1
				qApp.processEvents()
				
			# Remove groups
			for idx in xrange(self.lb_remove.count()):
				rmgroup = str(self.lb_remove.text(idx).utf8())
				details = self.tr('Removing user "%1" from the group "%2" ... ').arg(uid).arg(QString.fromUtf8(rmgroup))			
				res = self.soapproxy.groupdel(uid,rmgroup)
				if res==1:			
					details += self.tr('USER REMOVED')
				if res==-3:
					details += self.tr('USER NOT MEMBER')	
				progdlg.addDetails(details)			
				progdlg.setProgress(progress)
				progress+=1
				qApp.processEvents()

		progdlg.setLabelText(self.tr("Done."))
		progdlg.setProgress(progdlg.steps)
		progdlg.exec_loop()
		glob_settings.setWidgetGeometry('skolesys-ui/AddRemoveUserGroups/ProgressDlg',progdlg)
		show_details = 0
		if progdlg.btn_details.isOn():
			show_details = 1
		glob_settings.setIntEntry('skolesys-ui/AddRemoveUserGroups/ProgressDlg/show_details',show_details)		
		return True
def execGroupManager(conn):
	# Setup dialog
	dlg = WidgetDialog(buttons=3,cancel_btn=False)
	dlg.setCaption(qApp.translate("GroupManagerWdg","Group Manager"))
	dlg.btnCustom1.setText(qApp.translate("GroupManagerWdg","Create group..."))
	dlg.btnCustom2.setText(qApp.translate("GroupManagerWdg","Remove group(s)..."))
	dlg.btnOK.setText(qApp.translate("GroupManagerWdg","Close"))
	
	# Inner widget
	grpman = GroupManagerWdg(conn,None,"GroupManagerWdg")
	dlg.setWidget(grpman,True,qApp.translate("GroupManagerWdg","Groups"))
	QObject.connect(dlg.btnCustom1,SIGNAL("clicked()"),grpman.createGroup)
	QObject.connect(dlg.btnCustom2,SIGNAL("clicked()"),grpman.removeGroup)
	glob_settings.widgetGeometry('skolesys-ui/GroupManager',dlg)
	dlg.exec_loop()
	glob_settings.setWidgetGeometry('skolesys-ui/GroupManager',dlg)
def execUserManager(conn):
	# Setup dialog
	dlg = WidgetDialog(buttons=3,cancel_btn=False)
	dlg.setCaption(qApp.translate("UserManagerWdg","User Manager"))
	dlg.btnCustom1.setText(qApp.translate("UserManagerWdg","Create user..."))
	dlg.btnCustom2.setText(qApp.translate("UserManagerWdg","Remove user(s)..."))
	dlg.btnOK.setText(qApp.translate("UserManagerWdg","Close"))
	
	# Inner widget
	userman = UserManagerWdg(conn,None,"UserManagerWdg")
	dlg.setWidget(userman,True,qApp.translate("UserManagerWdg","Users"))
	QObject.connect(dlg.btnCustom1,SIGNAL("clicked()"),userman.createUser)
	QObject.connect(dlg.btnCustom2,SIGNAL("clicked()"),userman.removeUser)
	
	# Extension
	#a = QFileDialog()
	#dlg.setFoldedExtension(a)
	
	glob_settings.widgetGeometry('skolesys-ui/UserManager',dlg)
	dlg.exec_loop()
	glob_settings.setWidgetGeometry('skolesys-ui/UserManager',dlg)
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
'''
import sys
import os.path
from qt import *
from launchdlg import LaunchDlg
from connectionmanager import ConnectionManager
from settings import glob_settings
from imageloader import load_pixmap

a = QApplication(sys.argv)

# Try to load a translation file based on the last parameter
if len(sys.argv)>1:
	trans_ext = sys.argv[-1:][0]
	trans = QTranslator()
	trans.load('skolesys-ui_%s.qm' % trans_ext)
	a.installTranslator(trans)
	
QObject.connect(a,SIGNAL("lastWindowClosed()"),a,SLOT("quit()"))
conn = ConnectionManager('https://mainserver.localnet',10033)
w = LaunchDlg(conn)
w.setIcon(load_pixmap('app_logo.png'))
a.setMainWidget(w)
w.show()
glob_settings.widgetGeometry('skolesys-ui/MainWindow',w)
a.exec_loop()
glob_settings.setWidgetGeometry('skolesys-ui/MainWindow',w)
glob_settings.saveSettings()