コード例 #1
0
ファイル: application.py プロジェクト: Scrik/sk1-wx
	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'))
コード例 #2
0
    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
コード例 #3
0
ファイル: presenter.py プロジェクト: Acidburn0zzz/sk1-wx
 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)
コード例 #4
0
 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)
コード例 #5
0
ファイル: canvas.py プロジェクト: slyfrs/sk1-wx
 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))
コード例 #6
0
ファイル: application.py プロジェクト: Scrik/sk1-wx
 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
コード例 #7
0
ファイル: application.py プロジェクト: Scrik/sk1-wx
	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
コード例 #8
0
ファイル: application.py プロジェクト: tisn05/sk1
	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
コード例 #9
0
 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)
コード例 #10
0
 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()
コード例 #11
0
 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'))
コード例 #12
0
ファイル: application.py プロジェクト: sk1project/sk1-wx
	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'))
コード例 #13
0
ファイル: text_ctrl.py プロジェクト: wenlibin02/sk1-wx
 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)
コード例 #14
0
ファイル: editor_polygon.py プロジェクト: Scrik/sk1-wx
	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)
コード例 #15
0
ファイル: editor_bezier.py プロジェクト: Scrik/sk1-wx
	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()
コード例 #16
0
ファイル: app_history.py プロジェクト: wenlibin02/sk1-wx
 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)
コード例 #17
0
 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'))
コード例 #18
0
 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()
コード例 #19
0
ファイル: canvas.py プロジェクト: sk1project/sk1-wx
 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))
コード例 #20
0
    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'))
コード例 #21
0
ファイル: presenter.py プロジェクト: Scrik/sk1-wx
	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)
コード例 #22
0
ファイル: application.py プロジェクト: Scrik/sk1-wx
	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
コード例 #23
0
    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)
コード例 #24
0
ファイル: grad_ctrl.py プロジェクト: Acidburn0zzz/sk1-wx
 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)
コード例 #25
0
    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
コード例 #26
0
ファイル: app_conf.py プロジェクト: sk1project/sk1-wx
	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)
コード例 #27
0
ファイル: grad_ctrl.py プロジェクト: sk1project/sk1-wx
	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)
コード例 #28
0
ファイル: grad_ctrl.py プロジェクト: Acidburn0zzz/sk1-wx
 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)
コード例 #29
0
 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()
コード例 #30
0
 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()
コード例 #31
0
ファイル: app_cms.py プロジェクト: sk1project/sk1-wx
	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()
コード例 #32
0
ファイル: text_ctrl.py プロジェクト: wenlibin02/sk1-wx
 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)
コード例 #33
0
ファイル: grad_ctrl.py プロジェクト: sk1project/sk1-wx
	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)
コード例 #34
0
ファイル: presenter.py プロジェクト: sk1project/sk1-gtk2
	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)
コード例 #35
0
 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)
コード例 #36
0
 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)
コード例 #37
0
 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)
コード例 #38
0
ファイル: application.py プロジェクト: Scrik/sk1-wx
 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()
コード例 #39
0
ファイル: application.py プロジェクト: Scrik/sk1-wx
	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()
コード例 #40
0
ファイル: editor_ellipse.py プロジェクト: Scrik/sk1-wx
	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)
コード例 #41
0
ファイル: grad_ctrl.py プロジェクト: sk1project/sk1-wx
	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)
コード例 #42
0
ファイル: grad_ctrl.py プロジェクト: Acidburn0zzz/sk1-wx
 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)
コード例 #43
0
ファイル: editor_rect.py プロジェクト: Scrik/sk1-wx
	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)
コード例 #44
0
 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)
コード例 #45
0
ファイル: canvas.py プロジェクト: sk1project/sk1-gtk2
	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()
コード例 #46
0
 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()
コード例 #47
0
ファイル: text_ctrl.py プロジェクト: wenlibin02/sk1-wx
 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)
コード例 #48
0
 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)
コード例 #49
0
ファイル: application.py プロジェクト: sk1project/sk1-wx
	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()
コード例 #50
0
 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)
コード例 #51
0
ファイル: editor_bezier.py プロジェクト: Scrik/sk1-wx
	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)
コード例 #52
0
ファイル: canvas.py プロジェクト: sk1project/sk1-gtk2
	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()
コード例 #53
0
ファイル: canvas.py プロジェクト: sk1project/sk1-wx
 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()
コード例 #54
0
ファイル: canvas.py プロジェクト: sk1project/sk1-wx
 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()
コード例 #55
0
ファイル: application.py プロジェクト: tisn05/sk1
	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'))
コード例 #56
0
ファイル: selection.py プロジェクト: tisn05/sk1
	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()
コード例 #57
0
ファイル: application.py プロジェクト: tisn05/sk1
	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'))
コード例 #58
0
ファイル: application.py プロジェクト: Scrik/sk1-wx
	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'))
コード例 #59
0
ファイル: application.py プロジェクト: Scrik/sk1-wx
	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'))
コード例 #60
0
ファイル: application.py プロジェクト: Scrik/sk1-wx
	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'))