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
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
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()
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
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
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
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
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)