def export_as(self): doc_file = '' + self.current_doc.doc_file if not doc_file: doc_file = '' + self.current_doc.doc_name if os.path.splitext(doc_file)[1] == "." + \ uc2const.FORMAT_EXTENSION[uc2const.SK2][0]: doc_file = os.path.splitext(doc_file)[0] + "." + \ uc2const.FORMAT_EXTENSION[uc2const.PNG][0] doc_file = os.path.join(config.export_dir, os.path.basename(doc_file)) doc_file = dialogs.get_save_file_name(self.mw, self, doc_file, _('Export document As...'), file_types=data.SAVER_FORMATS[1:])[0] if doc_file: try: self.make_backup(doc_file, True) self.current_doc.export_as(doc_file) except: first = _('Cannot save document') msg = ("%s '%s'.") % (first, self.current_doc.doc_name) + '\n' msg += _('Please check file name and write permissions') dialogs.error_dialog(self.mw, self.appdata.app_name, msg) self.print_stacktrace() return config.export_dir = str(os.path.dirname(doc_file)) events.emit(events.APP_STATUS, _('Document is successfully exported'))
def save(self, doc=''): if not doc: doc = self.current_doc if not doc.doc_file: return self.save_as() ext = os.path.splitext(self.current_doc.doc_file)[1] if not ext == "." + uc2const.FORMAT_EXTENSION[uc2const.SK2][0]: return self.save_as() if not os.path.lexists(os.path.dirname(self.current_doc.doc_file)): return self.save_as() try: self.make_backup(self.current_doc.doc_file) doc.save() self.history.add_entry(self.current_doc.doc_file, appconst.SAVED) events.emit(events.DOC_SAVED, doc) except: msg = _('Cannot save file:') msg = "%s\n'%s'" % (msg, self.current_doc.doc_file) + '\n' msg += _('Please check file write permissions') dialogs.error_dialog(self.mw, self.appdata.app_name, msg) self.print_stacktrace() return False events.emit(events.APP_STATUS, _('Document saved')) return True
def goto_page(self, index): pages = self.get_pages() current_index = pages.index(self.active_page) if index >= 0 and index != current_index: self.api.set_active_page(index) self.eventloop.emit(self.eventloop.PAGE_CHANGED) events.emit(events.PAGE_CHANGED, self)
def save_history(self): fp = fsutils.get_fileptr(self.history_file, True) for item in self.history: state, path, timestamp = str(item[0]), item[1], str(item[2]) fp.write('%s\t%s\t%s\n' % (state, path, timestamp)) fp.close() events.emit(events.HISTORY_CHANGED)
def mouse_move(self, event): x, y = self.win_to_doc_coords(list(event.GetPositionTuple())) unit = self.presenter.model.doc_units tr_unit = uc2const.unit_short_names[unit] msg = ' %i x %i' % (x * point_dict[unit], y * point_dict[unit]) events.emit(events.MOUSE_STATUS, '%s %s' % (msg, tr_unit)) self.controller.mouse_move(CanvasEvent(event))
def save_as(self): doc_file = '' + self.current_doc.doc_file if not doc_file: doc_file = '' + self.current_doc.doc_name if not os.path.splitext(doc_file)[1] == "." + \ uc2const.FORMAT_EXTENSION[uc2const.SK2][0]: doc_file = os.path.splitext(doc_file)[0] + "." + \ uc2const.FORMAT_EXTENSION[uc2const.SK2][0] if not os.path.lexists(os.path.dirname(doc_file)): doc_file = os.path.join(config.save_dir, os.path.basename(doc_file)) doc_file = dialogs.get_save_file_name(self.mw, self, doc_file)[0] if doc_file: old_file = self.current_doc.doc_file old_name = self.current_doc.doc_name self.current_doc.set_doc_file(doc_file) try: self.make_backup(doc_file) self.current_doc.save() except: self.current_doc.set_doc_file(old_file, old_name) first = _('Cannot save document') msg = ("%s '%s'.") % (first, self.current_doc.doc_name) + '\n' msg += _('Please check file name and write permissions') dialogs.error_dialog(self.mw, self.appdata.app_name, msg) self.print_stacktrace() return False config.save_dir = str(os.path.dirname(doc_file)) self.history.add_entry(doc_file, appconst.SAVED) events.emit(events.DOC_SAVED, self.current_doc) events.emit(events.APP_STATUS, _('Document saved')) return True else: return False
def save_as(self): doc_file = '' + self.current_doc.doc_file if not doc_file: doc_file = '' + self.current_doc.doc_name if not os.path.splitext(doc_file)[1] == "." + \ uc2const.FORMAT_EXTENSION[uc2const.PDXF][0]: doc_file = os.path.splitext(doc_file)[0] + "." + \ uc2const.FORMAT_EXTENSION[uc2const.PDXF][0] if not os.path.lexists(os.path.dirname(doc_file)): doc_file = os.path.join(config.save_dir, os.path.basename(doc_file)) doc_file = get_save_file_name(self.mw, self, doc_file) if doc_file: old_file = self.current_doc.doc_file old_name = self.current_doc.doc_name self.current_doc.set_doc_file(doc_file) try: self.current_doc.save() except IOError: self.current_doc.set_doc_file(old_file, old_name) details = sys.exc_info()[1].__str__() + sys.exc_info()[2].__str__() first = _('Cannot save document') sec = _('Please check file name and write permissions') msg = ("%s '%s'.") % (first, self.current_doc.doc_name) wal.error_dialog(self.mw, self.appdata.app_name, msg, sec, details) return False config.save_dir = os.path.dirname(doc_file) events.emit(events.APP_STATUS, _('Document saved')) return True else: return False
def __setattr__(self, attr, value): if attr in ['filename', 'app']: self.__dict__[attr] = value return if not hasattr(self, attr) or getattr(self, attr) != value: self.__dict__[attr] = value events.emit(events.CONFIG_MODIFIED, attr, value)
def set_selected_nodes(self, points=None, add_flag=False): points = points or [] self.origin_nodes = None if points: self.new_node = None if not add_flag: for item in self.selected_nodes: item.selected = False self.selected_nodes = [] for item in points: if item.is_start() and item.path.is_closed(): continue if item.selected and item in self.selected_nodes: item.selected = False self.selected_nodes.remove(item) else: item.selected = True self.selected_nodes.append(item) if len(self.selected_nodes) == 1: self.create_control_points() else: self.clear_control_points() events.emit(events.SELECTION_CHANGED, self.presenter) self.update_status() self.canvas.selection_redraw()
def apply_action(self): if not self.picture: return doc_file = 'image' doc_file = os.path.join(self.config.save_dir, doc_file) doc_file = dialogs.get_save_file_name(self.app.mw, doc_file, _('Save image as...'), file_types=[uc2const.PNG], path_only=True) if doc_file: try: fileptr = fsutils.get_fileptr(doc_file, True) fileptr.write(self.picture.getvalue()) fileptr.close() except Exception: first = _('Cannot save image:') msg = "%s\n'%s'." % (first, doc_file) + '\n' msg += _('Please check file name and write permissions') dialogs.error_dialog(self.app.mw, self.app.appdata.app_name, msg) return self.config.save_dir = str(os.path.dirname(doc_file)) self.save_config() events.emit(events.APP_STATUS, _('Image is successfully saved'))
def open(self, doc_file='', silent=False): if not doc_file: doc_file = dialogs.get_open_file_name(self.mw, self, config.open_dir) if os.path.lexists(doc_file) and os.path.isfile(doc_file): try: doc = PD_Presenter(self, doc_file, silent) except RuntimeError: msg = _('Cannot open file:') msg = "%s\n'%s'" % (msg, doc_file) + '\n' msg += _('The file contains newer SK2 format.\n') msg += _('Try updating sK1 application from http://www.sk1project.net') dialogs.error_dialog(self.mw, self.appdata.app_name, msg) self.print_stacktrace() return except: msg = _('Cannot open file:') msg = "%s\n'%s'" % (msg, doc_file) + '\n' msg += _('The file may be corrupted or not supported format') dialogs.error_dialog(self.mw, self.appdata.app_name, msg) self.print_stacktrace() return self.docs.append(doc) config.open_dir = str(os.path.dirname(doc_file)) self.history.add_entry(doc_file) self.set_current_doc(doc) events.emit(events.APP_STATUS, _('Document opened'))
def set_tag(self, tag, settag=True): if not self.selected: return rng = self.selected if settag: if not self.markup or not self._check_intersect(rng): item = [deepcopy(tag), tuple(self.selected)] self._add_and_sort(self.markup, item) else: untouched, intersected = self._intersect_markup( self.markup, rng) intersected = self._fix_markup(intersected, rng) if tag == 'sub': self._unset_tag_to_markup(intersected, 'sup') elif tag == 'sup': self._unset_tag_to_markup(intersected, 'sub') self._set_tag_to_markup(intersected, tag) for item in intersected: self._add_and_sort(untouched, item) self.markup = untouched else: if not self.markup or not self._check_intersect(rng): return else: untouched, intersected = self._intersect_markup( self.markup, rng) intersected = self._fix_markup(intersected, rng) self._unset_tag_to_markup(intersected, tag) for item in intersected: if item[0]: self._add_and_sort(untouched, item) self.markup = untouched self.update_target() self.selected = rng self.canvas.selection_redraw() events.emit(events.SELECTION_CHANGED)
def update_points(self): self.corner_points = [] self.midpoints = [] coef1 = self.target.coef1 coef2 = self.target.coef2 angle1 = self.target.angle1 angle2 = self.target.angle2 corners_num = self.target.corners_num center = [0.5, 0.5] corner_angle = 2.0 * math.pi / float(corners_num) corners_start = [0.5, 0.5 + 0.5 * coef1] midpoint_start = [0.5, 0.5 + 0.5 * coef2 * math.cos(corner_angle / 2.0)] corner_angle_shift = angle1 midpoint_angle_shift = corner_angle / 2.0 + angle2 for i in range(0, corners_num): angle = float(i) * corner_angle + corner_angle_shift point = libgeom.rotate_point(center, corners_start, angle) self.corner_points.append(CornerPoint(self.canvas, self.target, point, i)) angle = float(i) * corner_angle + midpoint_angle_shift point = libgeom.rotate_point(center, midpoint_start, angle) self.midpoints.append(CornerPoint(self.canvas, self.target, point, i)) msg = _('Polygon in editing') events.emit(events.APP_STATUS, msg)
def set_selected_nodes(self, points=[], add_flag=False): if points: self.new_node = None if not add_flag: for item in self.selected_nodes: item.selected = False self.selected_nodes = [] for item in points: if item.is_start() and item.path.is_closed(): continue if item.selected and item in self.selected_nodes: item.selected = False self.selected_nodes.remove(item) else: item.selected = True self.selected_nodes.append(item) if len(self.selected_nodes) == 1: self.create_control_points() else: self.clear_control_points() events.emit(events.SELECTION_CHANGED, self.presenter) msg = _('No selected nodes') if self.selected_nodes: msg = _('Selected %d node(s)') % len(self.selected_nodes) events.emit(events.APP_STATUS, msg) self.canvas.selection_redraw()
def save_history(self): fp = open(self.history_file, 'wb') for item in self.history: fp.write( str(item[0]) + '\t' + item[1] + '\t' + str(item[2]) + '\n') fp.close() events.emit(events.HISTORY_CHANGED)
def export_as(self): doc_file = '' + self.current_doc.doc_file if not doc_file: doc_file = '' + self.current_doc.doc_name doc_file = os.path.splitext(doc_file)[0] doc_file = os.path.join(config.export_dir, os.path.basename(doc_file)) doc_file = dialogs.get_save_file_name(self.mw, self, doc_file, _('Export document As...'), file_types=SAVER_FORMATS[1:], path_only=True) if doc_file: try: self.make_backup(doc_file, True) self.current_doc.export_as(doc_file) except: first = _('Cannot save document:') msg = ("%s\n'%s'.") % (first, self.current_doc.doc_name) + '\n' msg += _('Please check file name and write permissions') dialogs.error_dialog(self.mw, self.appdata.app_name, msg) self.print_stacktrace() return config.export_dir = str(os.path.dirname(doc_file)) events.emit(events.APP_STATUS, _('Document is successfully exported'))
def mouse_move(self, event): x, y = self.win_to_doc_coords(list(event.GetPositionTuple())) unit = self.presenter.model.doc_units tr_unit = uc2const.unit_short_names[unit] msg = " %i x %i" % (x * point_dict[unit], y * point_dict[unit]) events.emit(events.MOUSE_STATUS, "%s %s" % (msg, tr_unit)) self.controller.mouse_move(CanvasEvent(event))
def open(self, doc_file='', silent=False): if not doc_file: doc_file = dialogs.get_open_file_name(self.mw, self, config.open_dir) if os.path.lexists(doc_file) and os.path.isfile(doc_file): try: doc = PD_Presenter(self, doc_file, silent) except RuntimeError: msg = _('Cannot open file:') msg = "%s\n'%s'" % (msg, doc_file) + '\n' msg += _('The file contains newer SK2 format.\n') msg += _( 'Try updating sK1 application from http://www.sk1project.net' ) dialogs.error_dialog(self.mw, self.appdata.app_name, msg) self.print_stacktrace() return except: msg = _('Cannot open file:') msg = "%s\n'%s'" % (msg, doc_file) + '\n' msg += _('The file may be corrupted or not supported format') dialogs.error_dialog(self.mw, self.appdata.app_name, msg) self.print_stacktrace() return self.docs.append(doc) config.open_dir = str(os.path.dirname(doc_file)) self.history.add_entry(doc_file) self.set_current_doc(doc) events.emit(events.APP_STATUS, _('Document opened'))
def goto_page(self, index): pages = self.get_pages() current_index = pages.index(self.active_page) if index >= 0 and index <> current_index: self.api.set_active_page(index) self.eventloop.emit(self.eventloop.PAGE_CHANGED) events.emit(events.PAGE_CHANGED, self)
def save(self, doc=''): if not doc: doc = self.current_doc if not doc.doc_file: return self.save_as() ext = os.path.splitext(self.current_doc.doc_file)[1] if not ext == "." + uc2const.FORMAT_EXTENSION[uc2const.SK2][0]: return self.save_as() if not os.path.lexists(os.path.dirname(self.current_doc.doc_file)): return self.save_as() try: self.make_backup(self.current_doc.doc_file) doc.save() self.history.add_entry(self.current_doc.doc_file, appconst.SAVED) events.emit(events.DOC_SAVED, doc) except: msg = _('Cannot save file') msg = "%s '%s'" % (msg, self.current_doc.doc_file) + '\n' msg += _('Please check file write permissions') dialogs.error_dialog(self.mw, self.appdata.app_name, msg) self.print_stacktrace() return False events.emit(events.APP_STATUS, _('Document saved')) return True
def update_points(self): self.corner_points = [] self.midpoints = [] coef1 = self.target.coef1 coef2 = self.target.coef2 angle1 = self.target.angle1 angle2 = self.target.angle2 corners_num = self.target.corners_num center = [0.5, 0.5] corner_angle = 2.0 * math.pi / float(corners_num) corners_start = [0.5, 0.5 + 0.5 * coef1] midpoint_start = [ 0.5, 0.5 + 0.5 * coef2 * math.cos(corner_angle / 2.0) ] corner_angle_shift = angle1 midpoint_angle_shift = corner_angle / 2.0 + angle2 for i in range(0, corners_num): angle = float(i) * corner_angle + corner_angle_shift point = libgeom.rotate_point(center, corners_start, angle) self.corner_points.append( CornerPoint(self.canvas, self.target, point, i)) angle = float(i) * corner_angle + midpoint_angle_shift point = libgeom.rotate_point(center, midpoint_start, angle) self.midpoints.append( CornerPoint(self.canvas, self.target, point, i)) msg = _('Polygon in editing') events.emit(events.APP_STATUS, msg)
def mouse_move(self, event): if self.start: self.end = self.snap.snap_point(event.get_point())[2] self._update_style() style = deepcopy(self.new_style) self.api.set_temp_style(self.target, style) events.emit(events.APP_STATUS, self.msg)
def save_as(self): doc_file = '' + self.current_doc.doc_file if not doc_file: doc_file = '' + self.current_doc.doc_name if not os.path.splitext(doc_file)[1] == "." + \ uc2const.FORMAT_EXTENSION[uc2const.PDXF][0]: doc_file = os.path.splitext(doc_file)[0] + "." + \ uc2const.FORMAT_EXTENSION[uc2const.PDXF][0] if not os.path.lexists(os.path.dirname(doc_file)): doc_file = os.path.join(config.save_dir, os.path.basename(doc_file)) doc_file = get_save_file_name(self.mw, self, doc_file) if doc_file: old_file = self.current_doc.doc_file old_name = self.current_doc.doc_name self.current_doc.set_doc_file(doc_file) try: self.current_doc.save() except IOError: self.current_doc.set_doc_file(old_file, old_name) details = sys.exc_info()[1].__str__() + sys.exc_info( )[2].__str__() first = _('Cannot save document') sec = _('Please check file name and write permissions') msg = ("%s '%s'.") % (first, self.current_doc.doc_name) wal.error_dialog(self.mw, self.appdata.app_name, msg, sec, details) return False config.save_dir = os.path.dirname(doc_file) events.emit(events.APP_STATUS, _('Document saved')) return True else: return False
def start_(self): self.snap = self.presenter.snap self.target = self.selection.objs[0] self.selection.clear() self.canvas.selection_redraw() self.orig_style = self.target.style self.new_style = deepcopy(self.orig_style) events.emit(events.APP_STATUS, self.msg)
def config_changed(self, attr, value): if attr[0:4] == 'cms_': self.update() self.update_mngrs() events.emit(events.CMS_CHANGED) for item in self.app.docs: item.model.clear_color_cache() self.app.current_doc.canvas.force_redraw()
def config_changed(self, *args): if args[0].startswith('cms_'): self.update() self.update_mngrs() events.emit(events.CMS_CHANGED) for item in self.app.docs: item.model.clear_color_cache() self.app.current_doc.canvas.force_redraw()
def set_text_cursor(self, pos, selection=False): if pos < 0: pos = 0 if pos > len(self.text): pos = len(self.text) if not selection: self.selected = [] self.text_cursor = pos self.set_line_pos() self.canvas.selection_redraw() events.emit(events.SELECTION_CHANGED)
def close(self): if not self.docarea is None: self.app.mw.remove_tab(self.docarea) for obj in self.traced_objects: obj.close() fields = self.__dict__ items = fields.keys() for item in items: fields[item] = None events.emit(events.DOC_CLOSED, self)
def start_(self): self.snap = self.presenter.snap self.target = self.selection.objs[0] self.selected_obj = None self.update_points() self.selection.clear() msg = _('Polygon in editing') events.emit(events.APP_STATUS, msg)
def start_(self): self.snap = self.presenter.snap self.target = self.selection.objs[0] self.selected_obj = None self.update_points() self.selection.clear() self.trafo_mode = modes.ET_MOVING_MODE msg = _('Text in shaping') events.emit(events.APP_STATUS, msg)
def mouse_move(self, event): if self.painter: event = CanvasEvent(event) x, y = self.painter.win_to_doc_coords(event.get_point()) unit = self.painter.presenter.model.doc_units tr_unit = uc2const.unit_short_names[unit] msg = ' %i x %i' % (x * point_dict[unit], y * point_dict[unit]) events.emit(events.MOUSE_STATUS, '%s %s' % (msg, tr_unit)) self.painter.controller.mouse_move(event)
def call_after(self, *args): if self.docs: return if config.new_doc_on_start: self.load_plugins() self.new() else: txt = _('To start, create new document or open existing') events.emit(events.APP_STATUS, txt) self.load_plugins()
def start_(self): self.snap = self.presenter.snap self.target = self.selection.objs[0] self.selected_obj = None self.update_points() self.api.set_mode() self.selection.clear() msg = _('Ellipse in editing') events.emit(events.APP_STATUS, msg)
def _set_target_vector(self, temp=True): itrafo = libgeom.invert_trafo(self.target.fill_trafo) vector = [self.vector[0].point, self.vector[1].point] self.new_style[0][2][1] = libgeom.apply_trafo_to_points(vector, itrafo) if temp: self.api.set_temp_style(self.target, self.new_style) else: self.api.set_fill_style(deepcopy(self.new_style[0])) events.emit(events.APP_STATUS, self.msg)
def update_points(self): self.points = [] self.midpoints = [] mps = self.target.get_midpoints() for item in mps: self.midpoints.append(MidPoint(self.canvas, self.target, item)) corner_points = self.target.get_corner_points() stops = self.target.get_stops() for index in range(4): if not self.target.corners[index]: start = corner_points[index] stop = stops[index][0] stop2 = stops[index - 1] if len(stop2) == 2: stop2 = stop2[1] else: stop2 = stop2[0] coef = self.target.corners[index] self.points.append(ControlPoint(self.canvas, self.target, start, stop, stop2=stop2, coef=coef, index=index)) elif self.target.corners[index] == 1.0: start = corner_points[index] stop = stops[index - 1] if len(stop) == 2: stop = stop[1] coef = self.target.corners[index] self.points.append(ControlPoint(self.canvas, self.target, start, stop, coef=coef, index=index)) elif not self.target.corners[index - 1] == 1.0: stop = stop[0] coef = self.target.corners[index] self.points.append(ControlPoint(self.canvas, self.target, start, stop, coef=coef, index=index)) stop = stops[index][0] start2 = [] if len(stops[index]) == 1 and \ self.target.corners[index - 3] == 1.0: start2 = corner_points[index - 3] coef = self.target.corners[index] self.points.append(ControlPoint(self.canvas, self.target, start, stop, start2=start2, coef=coef, index=index, subindex=1)) else: start = corner_points[index] stop = stops[index - 1] if len(stop) == 2: stop = stop[1] else: stop = stop[0] coef = self.target.corners[index] self.points.append(ControlPoint(self.canvas, self.target, start, stop, coef=coef, index=index)) stop = stops[index][0] self.points.append(ControlPoint(self.canvas, self.target, start, stop, coef=coef, index=index, subindex=1)) msg = _('Rectangle in editing') events.emit(events.APP_STATUS, msg)
def start_(self): self.snap = self.presenter.snap self.target = self.selection.objs[0] self.resizing = False self.rounding = False self.selected_obj = None self.update_points() self.selection.clear() msg = _('Rectangle in editing') events.emit(events.APP_STATUS, msg)
def set_mode(self, mode=modes.SELECT_MODE): if not mode == self.mode: if not self.controller is None: self.controller.stop_() self.mode = mode self.controller = self.ctrls[mode] self.controller.set_cursor() self.controller.start_() events.emit(events.MODE_CHANGED, mode) self.grab_focus()
def replace_selected(self, text, save_selection=False): rng = self.selected if self.selected: self._delete_text_range(self.selected) self.set_text_cursor(self.selected[0]) self.insert_text(text) if rng and save_selection: self.selected = rng self.canvas.selection_redraw() events.emit(events.SELECTION_CHANGED)
def call_after(self, *args): if self.docs: return if config.new_doc_on_start: self.load_plugins() self.new() else: txt = _('To start, create new document or open existing') events.emit(events.APP_STATUS, txt) self.load_plugins() if not wal.is_wx2(): events.emit(events.NO_DOCS) self.update_actions()
def start_(self): self.start = [] self.end = [] self.control_points = [] self.snap = self.presenter.snap self.target = self.selection.objs[0] self.update_paths() self.api.set_mode() self.selection.clear() msg = _('No selected nodes') events.emit(events.APP_STATUS, msg)
def restore_mode(self): if not self.previous_mode is None: if not self.controller is None: self.controller.stop_() self.mode = self.previous_mode self.controller = self.ctrls[self.mode] self.controller.set_cursor() self.controller.restore() events.emit(events.MODE_CHANGED, self.mode) self.previous_mode = None self.grab_focus()
def restore_mode(self): if not self.previous_mode is None: if not self.controller is None: self.controller.stop_() self.mode = self.previous_mode self.controller = self.get_controller(self.mode) self.controller.set_cursor() self.controller.restore() events.emit(events.MODE_CHANGED, self.mode) self.previous_mode = None else: self.set_mode()
def set_mode(self, mode=modes.SELECT_MODE): if not mode == self.mode: if not self.previous_mode is None: self.restore_mode() if not self.controller is None: self.controller.stop_() self.mode = mode self.controller = self.get_controller(mode) self.controller.set_cursor() self.controller.start_() events.emit(events.MODE_CHANGED, mode) if self.presenter.selection and self.presenter.selection.objs: self.presenter.selection.update()
def import_image(self, image_file=''): if not image_file: image_file = get_open_file_name(self.mw, self, config.import_dir, True) if os.path.lexists(image_file) and os.path.isfile(image_file): try: print image_file except: details = sys.exc_info()[1].__str__() + sys.exc_info()[2].__str__() msg = _('Cannot import image') msg = "%s '%s'" % (msg, image_file) sec = _('The file may be corrupted or not supported format') wal.error_dialog(self.mw, self.appdata.app_name, msg, sec, details) return config.import_dir = os.path.dirname(image_file) events.emit(events.APP_STATUS, _('Image is imported'))
def update(self): if not self.objs: self.center_offset = [0.0, 0.0] self.update_bbox() eventloop = self.presenter.eventloop eventloop.emit(eventloop.SELECTION_CHANGED) if len(self.objs) == 1: cid = self.objs[0].cid msg = model.CID_TO_NAME[cid] + _(' object in selection') else: msg = _('objects in selection') msg = '%i %s' % (len(self.objs), msg) events.emit(events.APP_STATUS, msg) events.emit(events.SELECTION_CHANGED, self.presenter) self.presenter.docarea.canvas.grab_focus()
def open(self, doc_file='', silent=False): if not doc_file: doc_file = get_open_file_name(self.mw, self, config.open_dir) if os.path.lexists(doc_file) and os.path.isfile(doc_file): try: doc = DocPresenter(self, doc_file, silent) except: details = sys.exc_info()[1].__str__() + sys.exc_info()[2].__str__() msg = _('Cannot open file') msg = "%s '%s'" % (msg, doc_file) sec = _('The file may be corrupted or not supported format') wal.error_dialog(self.mw, self.appdata.app_name, msg, sec, details) return self.docs.append(doc) self.set_current_doc(doc) config.open_dir = os.path.dirname(doc_file) events.emit(events.APP_STATUS, _('Document opened'))
def new_from_template(self): msg = _('Select Template') doc_file = dialogs.get_open_file_name(self.mw, self, config.template_dir, msg) if os.path.lexists(doc_file) and os.path.isfile(doc_file): try: doc = PD_Presenter(self, doc_file, template=True) except: msg = _('Cannot parse file') msg = "%s '%s'" % (msg, doc_file) + '\n' msg += _('The file may be corrupted or not supported format') dialogs.error_dialog(self.mw, self.appdata.app_name, msg) self.print_stacktrace() return self.docs.append(doc) config.template_dir = str(os.path.dirname(doc_file)) self.set_current_doc(doc) events.emit(events.APP_STATUS, _('New document from template'))
def export_palette(self, palette, parent=None): if not parent: parent = self.mw doc_file = '' + palette.model.name doc_file = os.path.splitext(doc_file)[0] + "." + \ uc2const.FORMAT_EXTENSION[uc2const.SKP][0] doc_file = os.path.join(config.export_dir, os.path.basename(doc_file)) doc_file, index = dialogs.get_save_file_name(parent, self, doc_file, _('Export palette as...'), file_types=data.PALETTE_SAVERS) saver_id = data.PALETTE_SAVERS[index] if doc_file: if not os.path.splitext(doc_file)[1] == "." + \ uc2const.FORMAT_EXTENSION[saver_id][0]: doc_file = os.path.splitext(doc_file)[0] + "." + \ uc2const.FORMAT_EXTENSION[saver_id][0] try: saver = get_saver_by_id(saver_id) if saver is None: raise IOError(_('Unknown file format is requested for export!'), doc_file) self.make_backup(doc_file, True) pd = dialogs.ProgressDialog(_('Exporting...'), parent) ret = pd.run(saver, [palette, doc_file, None, False, True], False) if ret: if not pd.error_info is None: pd.destroy() raise IOError(*pd.error_info) pd.destroy() else: pd.destroy() raise IOError(_('Error while exporting'), doc_file) except IOError: raise IOError(*sys.exc_info()) config.export_dir = str(os.path.dirname(doc_file)) events.emit(events.APP_STATUS, _('Palette is successfully exported'))
def extract_bitmap(self): doc_file = 'image.tiff' doc_file = os.path.join(config.save_dir, doc_file) doc_file = dialogs.get_save_file_name(self.mw, self, doc_file, _('Extract selected bitmap as...'), file_types=[data.TIF])[0] if doc_file: try: pixmap = self.current_doc.selection.objs[0] libimg.extract_bitmap(pixmap, doc_file) except: first = _('Cannot save document') msg = ("%s '%s'.") % (first, self.current_doc.doc_name) + '\n' msg += _('Please check file name and write permissions') dialogs.error_dialog(self.mw, self.appdata.app_name, msg) self.print_stacktrace() return config.save_dir = str(os.path.dirname(doc_file)) events.emit(events.APP_STATUS, _('Bitmap is successfully extracted'))