Example #1
0
    def get_graphics(self):
        graphics = Graphics()

        email_address = self._task_master.read_task_data(EMAIL_UID)
        url = os.path.join(self._task_master.get_bundle_path(), 'html-content',
                           self._uri[0])
        graphics.add_uri('file://' + url, height=self._height)
        graphics.set_zoom_level(self._zoom_level)
        if email_address is not None:
            self._entry[0] = graphics.add_entry(text=email_address)
        else:
            self._entry[0] = graphics.add_entry()

        self._entry[0].connect('activate', self._enter_entered)

        phone_number = self._task_master.read_task_data(PHONE_NUMBER_UID)
        url = os.path.join(self._task_master.get_bundle_path(), 'html-content',
                           self._uri[1])
        graphics.add_uri('file://' + url, height=self._height)
        graphics.set_zoom_level(self._zoom_level)

        if phone_number is not None:
            self._entry[1] = graphics.add_entry(text=phone_number)
        else:
            self._entry[1] = graphics.add_entry()

        return graphics, self._prompt
Example #2
0
    def get_graphics(self):
        self._in_progress = False

        graphics = Graphics()
        url = os.path.join(self._task_master.get_bundle_path(), 'html-content',
                           self._uri[0])
        graphics.add_uri('file://' + url, height=self._height)
        graphics.set_zoom_level(self._zoom_level)

        error_report = self._task_master.read_task_data(ERROR_REPORT)
        self._entry = graphics.add_text_view()
        if error_report is not None:
            text_buffer = self._entry.get_buffer()
            text_buffer.set_text(error_report)
        self._task_master.activity.set_copy_widget(text_entry=self._entry)
        self._task_master.activity.set_paste_widget(text_entry=self._entry)

        for i in range(3):
            button, label = graphics.add_button_and_label()
            button.connect('clicked', self._upload_cb, i)
            label.set_use_markup(True)
            self._buttons.append(button)
            self._labels.append(label)
            self._files.append(None)
            self._mimetypes.append(None)

        url = os.path.join(self._task_master.get_bundle_path(), 'html-content',
                           self._uri[1])
        graphics.add_uri('file://' + url, height=self._height)
        graphics.set_zoom_level(self._zoom_level)

        return graphics, self._prompt
Example #3
0
 def _load_intro_graphics(self, file_name='generic-problem.html',
                          message=None):
     center_in_panel = Gtk.Alignment.new(0.5, 0, 0, 0)
     url = os.path.join(self.bundle_path, 'html-content', file_name)
     graphics = Graphics()
     if message is None:
         graphics.add_uri('file://' + url)
     else:
         graphics.add_uri('file://' + url + '?MSG=' +
                          utils.get_safe_text(message))
     graphics.set_zoom_level(0.667)
     center_in_panel.add(graphics)
     graphics.show()
     self.set_canvas(center_in_panel)
     center_in_panel.show()
Example #4
0
 def _load_intro_graphics(self, file_name='generic-problem.html',
                          message=None):
     center_in_panel = Gtk.Alignment.new(0.5, 0, 0, 0)
     url = os.path.join(self.bundle_path, 'html-content', file_name)
     graphics = Graphics()
     if message is None:
         graphics.add_uri('file://' + url)
     else:
         graphics.add_uri('file://' + url + '?MSG=' +
                          utils.get_safe_text(message))
     graphics.set_zoom_level(0.667)
     center_in_panel.add(graphics)
     graphics.show()
     self.set_canvas(center_in_panel)
     center_in_panel.show()
Example #5
0
    def get_graphics(self):
        target = self._get_user_name()
        url = os.path.join(self._task_master.get_bundle_path(), 'html-content',
                           self._uri)

        graphics = Graphics()
        graphics.add_uri('file://' + url, height=self._height)
        graphics.set_zoom_level(self._zoom_level)

        if target is not None and len(target) > 0:
            first, last = target.split(',')
        else:
            first = ''
            last = ''
        self._first_entry, self._last_entry = graphics.add_two_entries(
            _('First name(s):'), first, _('Last name(s):'), last)

        self._first_entry.connect('activate', self._first_enter_entered)
        self._last_entry.connect('activate', self._last_enter_entered)

        return graphics, self._prompt
Example #6
0
    def get_graphics(self):
        url = os.path.join(self._task_master.get_bundle_path(), 'html-content',
                           self._uri)

        graphics = Graphics()
        webkit = graphics.add_uri('file://' + url, height=self._height)
        graphics.set_zoom_level(self._zoom_level)

        self._task_master.activity.set_copy_widget(webkit=webkit)
        self._task_master.activity.set_paste_widget()

        return graphics, self._prompt
Example #7
0
    def get_graphics(self):
        name = self._get_user_name().split(',')[0]
        url = os.path.join(self._task_master.get_bundle_path(), 'html-content',
                           '%s?NAME=%s' %
                           (self._uri, utils.get_safe_text(name)))
        graphics = Graphics()
        webkit = graphics.add_uri('file://' + url, height=self._height)
        graphics.set_zoom_level(self._zoom_level)

        self._task_master.activity.set_copy_widget(webkit=webkit)
        self._task_master.activity.set_paste_widget()

        return graphics, self._prompt
Example #8
0
    def get_graphics(self):
        self._entries = []
        name = self._task_master.read_task_data(NAME_UID)
        if name is None:  # Should never happen
            name = ''
        email_address = self._task_master.read_task_data(EMAIL_UID)
        if email_address is None:  # Should never happen
            email_address = ''
        phone_number = self._task_master.read_task_data(PHONE_NUMBER_UID)
        if phone_number is None:  # Should never happen
            phone_number = ''
        school = self._task_master.read_task_data(SCHOOL_NAME)
        if school is None:  # Should never happen
            school = ''
        if self._task_master.returning_user:
            i = 1
            self._task_master.returning_user = False
        else:
            i = 0
        url = os.path.join(
            self._task_master.get_bundle_path(), 'html-content',
            '%s?NAME=%s&EMAIL=%s&PHONE=%s&SCHOOL=%s' %
            (self._uri[i],
             utils.get_safe_text(name),
             utils.get_safe_text(email_address),
             utils.get_safe_text(phone_number),
             utils.get_safe_text(school)))

        graphics = Graphics()
        webkit = graphics.add_uri('file://' + url, height=400)
        graphics.set_zoom_level(self._zoom_level)

        self._task_master.activity.set_copy_widget(webkit=webkit)
        self._task_master.activity.set_paste_widget()

        return graphics, self._prompt
Example #9
0
class Support5Task(HTMLTask):

    def __init__(self, task_master):
        HTMLTask.__init__(self, task_master)
        self._name = _('Enter School Name')
        self.uid = _ENTER_SCHOOL_TASK
        self._uri = ['support5a.html',
                     'support5b.html']
        self._height = 60
        self._graphics = None
        self._school_entry = None
        self._postal_code_entry = None
        self._postal_code_changed = True
        self._postal_code = -1
        self._buttons = []
        self._schools = []
        self._sf_ids = []
        self._results = []
        self._default_sf_id = '0019000000pETbT'
        self._completer = None

    def _postal_code_enter_entered(self, widget):
        # Force new list
        self._postal_code_changed = True
        if self._is_valid_postal_code_entry():
            self._school_entry.grab_focus()
            self._is_valid_school_entry()

    def _postal_code_entry_cb(self, widget, event):
        if self._is_valid_postal_code_entry():
            self._is_valid_school_entry()

    def _is_valid_postal_code_entry(self, target=None):
        if target is None:
            target = self._postal_code_entry.get_text()
        if len(target) < 3:
            return False
        try:
            i = int(target)
        except:
            return False
        if i >= 0 and i < 9999:
            self._postal_code_changed = True
            self._postal_code = i
            self._task_master.write_task_data(POST_CODE, target)
            return True
        else:
            return False

    def _school_enter_entered(self, widget):
        if self._is_valid_school_entry():
            self._task_master.enter_entered()

    def test(self):
        return self._is_valid_school_entry()

    def _is_valid_school_entry(self):
        # build a completer for this postal code
        if self._postal_code < 0:
            return False

        if self._postal_code_changed:
            # get rid of any old buttons
            for button in self._buttons:
                button.destroy()

            f = open(os.path.join(self._task_master.activity.bundle_path,
                                  'schools.txt'), 'r')
            schools = f.read().split('\n')
            f.close()
            self._schools = []
            self._sf_ids = []
            for school in schools:
                if len(school) == 0:
                    continue
                try:
                    sf_id, name, campus, address, city, state, postal_code = \
                        school.split(',')
                except:
                    _logger.debug('bad school data? (%s)' % school)
                # save the SF_ID from One Education in case we need it
                if name == 'One Education School':
                    self._default_sf_id = sf_id
                try:
                    if int(postal_code) != self._postal_code:
                        continue
                except:
                    _logger.error('bad postal code? (%s: %s)' %
                                  (name, postal_code))
                    continue
                if len(campus) > 0:
                    self._schools.append('%s %s, %s, %s' %
                                         (name, campus, city, state))
                else:
                    self._schools.append('%s, %s, %s' % (name, city, state))
                self._sf_ids.append(sf_id)
            # _logger.debug('%d schools in the list' %  (len(self._schools)))
            self._completer = utils.Completer(self._schools)
            if len(self._schools) < 10:
                self._make_buttons(self._schools)

        self._postal_code_changed = False
        if len(self._school_entry.get_text()) == 0:
            return False
        else:
            return True

    def _make_buttons(self, school_list):
        for button in self._buttons:
            button.destroy()
        self._buttons = []
        for i, school in enumerate(school_list):
            self._buttons.append(
                self._graphics.add_button(school, self._button_cb, arg=school))
            self._buttons[-1].show()

    def _button_cb(self, widget, text):
        self._school_entry.set_text(text)
        for button in self._buttons:
            button.destroy()

    def _school_entry_focus_cb(self, widget, event):
        if not self._is_valid_postal_code_entry():
            return
        elif len(widget.get_text()) == 0 and len(self._schools) > 0:
            self._make_buttons(self._schools)

    def _school_entry_release_cb(self, widget, event):
        if len(self._results) == 1:
            widget.set_text(self._results[0])
            for button in self._buttons:
                button.destroy()
        elif len(self._results) < 10:
            for button in self._buttons:
                button.destroy()
            self._make_buttons(self._results)

    def _school_entry_press_cb(self, widget, event):
        if not self._is_valid_postal_code_entry():
            return
        self._results = self._completer.complete(
            widget.get_text() + Gdk.keyval_name(event.keyval), 0)

    def _yes_no_cb(self, widget, arg):
        if arg == 'yes':
            self._task_master.write_task_data(SCHOOL_UID, None)
            school = self._school_entry.get_text()
            postal_code = self._postal_code_entry.get_text()
            self._task_master.write_task_data(self.uid, self._task_data)
            self._task_master.write_task_data(SCHOOL_NAME, school)
            self._task_master.write_task_data(POST_CODE, postal_code)
            self._task_master.write_task_data(SCHOOL_UID, self._default_sf_id)
            self._task_master.current_task += 1
            self._task_master.write_task_data('current_task',
                                              self._task_master.current_task)
        self._task_master.task_master()

    def after_button_press(self):
        school = self._school_entry.get_text()
        if school in self._schools:
            i = self._schools.index(school)
            self._task_master.write_task_data(SCHOOL_UID, self._sf_ids[i])
            self._task_master.write_task_data(SCHOOL_NAME, school)
            return True
        else:
            # Confirm that it is OK to use a school not in the list.
            self._task_master.task_button.hide()
            self._graphics.add_text(_('Your school does not appear in our '
                                      'list of schools in Australia. '
                                      'OK to continue?'))
            self._graphics.add_yes_no_buttons(self._yes_no_cb)
            return False

    def get_graphics(self):
        self._graphics = Graphics()

        url = os.path.join(self._task_master.get_bundle_path(), 'html-content',
                           self._uri[0])
        self._graphics.add_uri('file://' + url, height=self._height)
        self._graphics.set_zoom_level(self._zoom_level)

        target = self._task_master.read_task_data(POST_CODE)
        if target is not None and \
           self._is_valid_postal_code_entry(target=target):
            self._postal_code_entry = self._graphics.add_entry(text=target)
        else:
            self._postal_code_entry = self._graphics.add_entry()

        self._postal_code_entry.connect('key-release-event',
                                        self._postal_code_entry_cb)
        self._postal_code_entry.connect('key-press-event',
                                        self._postal_code_entry_cb)
        self._postal_code_entry.connect('activate',
                                        self._postal_code_enter_entered)

        url = os.path.join(self._task_master.get_bundle_path(), 'html-content',
                           self._uri[1])
        self._graphics.add_uri('file://' + url, height=self._height)
        self._graphics.set_zoom_level(self._zoom_level)

        target = self._task_master.read_task_data(SCHOOL_NAME)
        if target is not None:
            self._school_entry = self._graphics.add_entry(text=target)
        else:
            self._school_entry = self._graphics.add_entry()

        self._school_entry.connect('key-release-event',
                                   self._school_entry_release_cb)
        self._school_entry.connect('key-press-event',
                                   self._school_entry_press_cb)
        self._school_entry.connect('focus-in-event',
                                   self._school_entry_focus_cb)
        self._school_entry.connect('activate', self._school_enter_entered)

        self._postal_code_entry.grab_focus()

        return self._graphics, self._prompt

    def grab_focus(self):
        self._postal_code_entry.set_can_focus(True)
        self._school_entry.set_can_focus(True)
        if len(self._postal_code_entry.get_text()) < 3:
            self._task_master.activity.set_copy_widget(
                text_entry=self._postal_code_entry)
            self._task_master.activity.set_paste_widget(
                text_entry=self._postal_code_entry)
        else:
            self._task_master.activity.set_copy_widget(
                text_entry=self._school_entry)
            self._task_master.activity.set_paste_widget(
                text_entry=self._school_entry)