Example #1
0
class CheckBoxDemo(SimplePanel):
    def __init__(self):
        SimplePanel.__init__(self)

        self.box = CheckBox("Print Results?")
        self.box.addClickListener(getattr(self, "onClick"))

        self.add(self.box)

    def onClick(self, sender=None):
        Window.alert("checkbox status: " + str(self.box.isChecked()))
Example #2
0
class CheckBoxDemo(SimplePanel):
    def __init__(self):
        SimplePanel.__init__(self)

        self.box = CheckBox("Print Results?")
        self.box.addClickListener(getattr(self, "onClick"))

        self.add(self.box)


    def onClick(self, sender=None):
        Window.alert("checkbox status: " + str(self.box.isChecked()))
Example #3
0
class FileUploadPanel(SimplePanel):
    def __init__(self):
        SimplePanel.__init__(self)

        self.form = FormPanel()
        self.form.setEncoding(FormPanel.ENCODING_MULTIPART)
        self.form.setMethod(FormPanel.METHOD_POST)
        self.url =  "http://localhost/pyjamas_upload_demo"
        self.form.setAction(self.url)
        self.form.setTarget("results")

        vPanel = VerticalPanel()

        hPanel = HorizontalPanel()
        hPanel.setSpacing(5)
        hPanel.add(Label("Upload file:"))

        self.field = FileUpload()
        self.field.setName("file")
        hPanel.add(self.field)

        hPanel.add(Button("Submit", getattr(self, "onBtnClick")))
        vPanel.add(hPanel)
        
        self.simple = CheckBox("Simple mode?  ")
        #self.simple.setChecked(True)
        vPanel.add(self.simple)
        self.progress = Label('0%')

        results = NamedFrame("results")
        vPanel.add(results)
        vPanel.add(self.progress)

        self.form.add(vPanel)
        self.add(self.form)

    def onBtnClick(self, event):
        self.progress.setText('0%')
        if self.simple.isChecked():
            self.form.submit()
        else:
            if AsyncUpload.is_old_browser():
                Window.alert("Hmmm, your browser doesn't support this.")
            else:
                el = self.field.getElement()
                files = getattr(el, 'files')
                #TODO implement loop for multiple file uploads 
                file = JS("@{{files}}[0]") #otherwise pyjs thinks it's a string?
                AsyncUpload.asyncUpload(self.url, file, self)

    def onload(self, status):
        self.progress.setText('100%')

    def onerror(self, status):
        Window.alert("oh noes we got an " + str(status))

    def onprogress(self, loaded, total):
        if self.progress.getText() == '100%': return
        progress = (loaded / total)
        p = int(progress * 100)
        self.progress.setText(str(p) + '%')
Example #4
0
class FileUploadPanel(SimplePanel):
    def __init__(self):
        SimplePanel.__init__(self)

        self.form = FormPanel()
        self.form.setEncoding(FormPanel.ENCODING_MULTIPART)
        self.form.setMethod(FormPanel.METHOD_POST)
        self.url = "http://localhost/pyjamas_upload_demo"
        self.form.setAction(self.url)
        self.form.setTarget("results")

        vPanel = VerticalPanel()

        hPanel = HorizontalPanel()
        hPanel.setSpacing(5)
        hPanel.add(Label("Upload file:"))

        self.field = FileUpload()
        self.field.setName("file")
        hPanel.add(self.field)

        hPanel.add(Button("Submit", getattr(self, "onBtnClick")))
        vPanel.add(hPanel)

        self.simple = CheckBox("Simple mode?  ")
        #self.simple.setChecked(True)
        vPanel.add(self.simple)
        self.progress = Label('0%')

        results = NamedFrame("results")
        vPanel.add(results)
        vPanel.add(self.progress)

        self.form.add(vPanel)
        self.add(self.form)

    def onBtnClick(self, event):
        self.progress.setText('0%')
        if self.simple.isChecked():
            self.form.submit()
        else:
            if AsyncUpload.is_old_browser():
                Window.alert("Hmmm, your browser doesn't support this.")
            else:
                el = self.field.getElement()
                files = getattr(el, 'files')
                #TODO implement loop for multiple file uploads
                file = JS(
                    "@{{files}}[0]")  #otherwise pyjs thinks it's a string?
                AsyncUpload.asyncUpload(self.url, file, self)

    def onload(self, status):
        self.progress.setText('100%')

    def onerror(self, status):
        Window.alert("oh noes we got an " + str(status))

    def onprogress(self, loaded, total):
        if self.progress.getText() == '100%': return
        progress = (loaded / total)
        p = int(progress * 100)
        self.progress.setText(str(p) + '%')
Example #5
0
class UserTab(EntityTab):
    def __init__(self,app, uid):
        global gw
        EntityTab.__init__(self, app)
        self.table = FlexTable()
        self.uid = uid
        self.load()

    def load(self):
        global gw
        if self.uid == -1: 
            self.setup(None)
        else:
            gw.getUserDetails(self.app.cookie, self.uid, self)

    def setup(self, x):
        edit = self.uid == self.app.uid or self.app.admin
        if not x:
            x = {'id': -1, 'handle': '', 'name': '' , 'admin': '', 'email': ''}
        self.uid = x['id']

        self.name = TextBox()
        self.name.setText(x['name'])
        self.email = TextBox()
        self.email.setText(x['email'])
        self.password = PasswordTextBox()
        self.passwordRepeat = PasswordTextBox()
        self.handle = TextBox()
        self.admin = CheckBox()
        self.admin.setChecked( x['admin'] )
        self.admin.setEnabled( self.app.admin )
        self.table.setText(0,0, "ID");
        self.table.setText(0,1, x['id'])
        self.table.setText(1,0, "Handle")
        if x['id'] == -1:
            self.table.setWidget(1,1, self.handle)
        else:
            self.table.setText(1,1, x['handle'])
        self.table.setText(2,0, "Name");
        if edit:
            self.table.setWidget(2,1, self.name)
        else:
            self.table.setText(2,1, x['name'])
        self.table.setText(3,0, "Email")
        if edit:
            self.table.setWidget(3,1, self.email)
        else:
            self.table.setText(3,1, x['email'])
        self.table.setText(4,0, "Admin");
        self.table.setWidget(4,1, self.admin)
        if edit:
            self.table.setText(5,0, "Password");
            self.table.setWidget(5,1, self.password)
            self.table.setText(6,0, "Password Repeat");
            self.table.setWidget(6,1, self.passwordRepeat)
                     
            self.saveBtn = Button("Save",self.save)
            self.table.setWidget(7,1, self.saveBtn)
        if self.app.admin:
            self.table.setWidget(8,1, Button("Remove", self.delete))

        if self.uid == -1:
            self.add('New user')
        else:
            self.add(x['handle'])

    def onUpdate(self, response, request_info):
        self.uid = response
        self.load()
        self.app.usersTab.reload()

    def save(self, _):
        global gw
        pwd=""
        if self.password.getText() != "" or self.passwordRepeat.getText() != "":
            if self.password.getText() != self.passwordRepeat.getText():
                Window.alert("Passwords differ");
                return
            pwd = pwhash(self.password.getText())
        gw.updateUser(self.app.cookie, self.uid, self.handle.getText(), self.name.getText(), pwd, self.admin.isChecked(), self.email.getText(), RPCCall(self.onUpdate))

    def onDelete(self, response, request_info):
        self.app.usersTab.reload()
        self.remove()

    def delete(self,_):
        global gw
        gw.deleteUser(self.app.cookie, self.uid, RPCCall(self.onDelete) )

    def onRemoteResponse(self, response, request_info):
        self.setup(response)