flatcam/flatcamTools/ToolQRCode.py

118 lines
3.8 KiB
Python
Raw Normal View History

# ##########################################################
# FlatCAM: 2D Post-processing for Manufacturing #
# File Author: Marius Adrian Stanciu (c) #
# Date: 3/10/2019 #
# MIT Licence #
# ##########################################################
from PyQt5 import QtWidgets, QtCore
from FlatCAMTool import FlatCAMTool
from flatcamGUI.GUIElements import FCDoubleSpinner, EvalEntry, FCCheckBox
from camlib import *
from shapely.geometry import Point
from shapely.geometry.base import *
import math
import io
from datetime import datetime
import logging
import qrcode
import qrcode.image.svg
from lxml import etree as ET
import gettext
import FlatCAMTranslation as fcTranslate
import builtins
fcTranslate.apply_language('strings')
if '_' not in builtins.__dict__:
_ = gettext.gettext
log = logging.getLogger('base')
class QRCode(FlatCAMTool):
toolName = _("QRCode Tool")
def __init__(self, app):
FlatCAMTool.__init__(self, app)
self.app = app
self.canvas = self.app.plotcanvas
self.decimals = 4
self.units = ''
# ## Title
title_label = QtWidgets.QLabel("%s" % self.toolName)
title_label.setStyleSheet("""
QLabel
{
font-size: 16px;
font-weight: bold;
}
""")
self.layout.addWidget(title_label)
def run(self, toggle=True):
self.app.report_usage("QRCode()")
if toggle:
# if the splitter is hidden, display it, else hide it but only if the current widget is the same
if self.app.ui.splitter.sizes()[0] == 0:
self.app.ui.splitter.setSizes([1, 1])
else:
try:
if self.app.ui.tool_scroll_area.widget().objectName() == self.toolName:
# if tab is populated with the tool but it does not have the focus, focus on it
if not self.app.ui.notebook.currentWidget() is self.app.ui.tool_tab:
# focus on Tool Tab
self.app.ui.notebook.setCurrentWidget(self.app.ui.tool_tab)
else:
self.app.ui.splitter.setSizes([0, 1])
except AttributeError:
pass
else:
if self.app.ui.splitter.sizes()[0] == 0:
self.app.ui.splitter.setSizes([1, 1])
FlatCAMTool.run(self)
self.set_tool_ui()
self.app.ui.notebook.setTabText(2, _("QRCode Tool"))
self.execute()
def install(self, icon=None, separator=None, **kwargs):
FlatCAMTool.install(self, icon, separator, shortcut='ALT+Q', **kwargs)
def set_tool_ui(self):
self.units = self.app.ui.general_defaults_form.general_app_group.units_radio.get_value().upper()
def execute(self):
svg_file = io.BytesIO()
svg_file = qrcode.make("FlatCAM - 2D - Computer aided PCB Manufacturing Tool",
image_factory=qrcode.image.svg.SvgFragmentImage)
def obj_init(geo_obj, app_obj):
units = self.app.ui.general_defaults_form.general_app_group.units_radio.get_value()
try:
geo_obj.import_svg(svg_file)
except Exception as e:
print(str(e))
with self.app.proc_container.new("Import SVG"):
# Object creation
self.app.new_object('geometry', 'generated_qrcode', obj_init, plot=False)
# # Register recent file
# self.app.file_opened.emit("svg", img)
#
# # GUI feedback
# self.app.inform.emit("Opened: " + img)