Exemplo n.º 1
0
 def on_submit__clicked(self, but, *args):
     filename = self._get_filename_from_user()
     if filename is None:
         return
     # save directory for future use
     self.selection_directory = os.path.split(filename)[0]
     language = self._get_language(filename)
     # On invalid extension, show msg and return
     if language is None:
         ext_info = '\n'.join(
             [x+': '+str(y) for x,y in self.info['languages'].items()]
         )
         util.msg_dialog('Invalid file extension' + \
                         '\n\n' + \
                         'File extensions allowed are:\n' + \
                         ext_info, gtk.MESSAGE_ERROR)
         return
     def done(result):
         #if result:
         #    util.msg_dialog('Ok')
         #else:
         #    util.msg_dialog('Something Wrong!!')
         pass
     self.gui.call_remote('Submitting %s' % filename, done, 
                         'submitProblem',
                      self.pr_no, file(filename).read(), language)
Exemplo n.º 2
0
 def showSubmissionResult(self, problem , lang, ts, result):
     "Called from mind, when server sends submission result"
     text = 'Result for %s\n\n%s\n\nLang: %s\nTime: %d'
     text = text % (self.info['problems'][problem],  
                    self.info['results'][result],
                    self.info['languages'][lang],
                    ts)
     self._update_submissions()
     util.msg_dialog(text)
Exemplo n.º 3
0
 def _cb_done(self, result, next_success_callback):
     reason = util.getReason(result)
     if reason:
         # Error raised by server
         util.msg_dialog(reason, gtk.MESSAGE_ERROR)
     else:
         # Normal return
         if next_success_callback:
             next_success_callback(result)
     self.unfreeze()
     self.setStatus(READY)
Exemplo n.º 4
0
 def on_but_edit__clicked(self, but, *args):
     tids = self._tv_get()
     # Editting operation can be done only if exactly 1 row is selected
     if len(tids) != 1:
         util.msg_dialog('Select exactly one row')
         return
     tid = tids.values()[0]
     # Readonly row cannot be edited
     if self.is_readonly_tid(tid):
         util.msg_dialog('Readonly entries cannot be edited')
         return
     self._fields_visible(True, self.LBL_EDIT)
     self._fields_put(tid)
Exemplo n.º 5
0
    def on_but_start_contest__clicked(self, but, *args):
        duration = self["ent_duration"].get_text()
        try:
            duration = int(duration)
            if duration < 0:
                raise ValueError
        except ValueError:
            util.msg_dialog("Enter duration in seconds", gtk.MESSAGE_ERROR)
            self["ent_duration"].set_text("")
            return

        def done(result):
            # Start time
            self._update_contest_ui(result["name"], result["duration"], result["age"])

        self.call_remote("Starting contest", done, "startContest", duration)
Exemplo n.º 6
0
 def on_but_delete__clicked(self, but, *args):
     tids = self._tv_get()
     if len(tids) == 0:
         util.msg_dialog('Select atleat one row to delete')
         return
     # Readonly row cannot be edited
     if True in map(self.is_readonly_tid, tids.values()):
         util.msg_dialog('You selected atleast one readonly entry. Deselect it')
         return
     def cb_done(result):
         self.ui_list_remove(tids.keys())
     self.call_remote(
         'Removing %d %s' % (len(tids), self.table),
         cb_done,
         self._rmfunc('remove'),
         tids.keys()
     )
Exemplo n.º 7
0
 def on_but_login__clicked(self, button, *args):
     identity = self['ent_identity'].get_text()
     password = self['ent_password'].get_text()
     self.identity = identity
     # TODO: Get host, port from user
     #host = 'localhost'
     host = self['ent_hostname'].get_text().strip()
     port = self['ent_port'].get_text().strip()
     try:
         port = int(port)
         if port < 1024:
             raise ValueError, 'port must be positive number > 1024'
     except ValueError:
         util.msg_dialog('Enter valid port greater than 1024',
                         gtk.MESSAGE_ERROR)
         self['ent_port'].set_text('')
         return
     #host = 'cs.annauniv.edu'
     #port = 8800
     self.mind_proxy = MindProxy()
     if not identity or not password:
         self.setStatus('Please fill both the fields')
         return
     self.setStatus('Logging in ...')
     button.set_sensitive(False)
     # Login using pb
     f = pb.PBClientFactory()
     self.factory = f
     from twisted.internet import reactor
     reactor.connectTCP(host, port, f)
     creds = credentials.UsernamePassword(identity, password)
     f.login(creds, self.mind_proxy
         ).addCallbacks(self._cbGotPerspective, self._ebFailedLogin
         ).setTimeout(TIMEOUT
         )
     self.setStatus("Contacting server...")
Exemplo n.º 8
0
 def _disconnected(self, *args):
     util.msg_dialog('You are disconnected from server', 
             gtk.MESSAGE_ERROR)
     gtk.main_quit()
Exemplo n.º 9
0
 def _cb_oops(self, reason):
     msg = reason.getErrorMessage()
     util.msg_dialog('CRITICAL: ' + msg, gtk.MESSAGE_ERROR)
     self.setStatus(READY)
     self.unfreeze()
Exemplo n.º 10
0
 def _ebFailedLogin(self, reason):
     self.setStatus('Login failed')
     reason = str(reason)
     util.msg_dialog(reason)
     self['but_login'].set_sensitive(True)