diff --git a/FlatCAM.py b/FlatCAM.py index b1701a99..1fa50a24 100644 --- a/FlatCAM.py +++ b/FlatCAM.py @@ -1,15 +1,14 @@ import sys, os -from PyQt5 import sip -from PyQt5 import QtGui, QtCore, QtWidgets +from PyQt5 import QtWidgets from PyQt5.QtCore import QSettings, Qt from FlatCAMApp import App from multiprocessing import freeze_support -import VisPyPatches +from flatcamGUI import VisPyPatches if sys.platform == "win32": # cx_freeze 'module win32' workaround - import OpenGL.platform.win32 + pass def debug_trace(): """ diff --git a/FlatCAMApp.py b/FlatCAMApp.py index 465b47a1..6c84c3ee 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -6,33 +6,20 @@ # MIT Licence # ############################################################ -import sys -import traceback import urllib.request, urllib.parse, urllib.error import getopt -import os import random -import logging import simplejson as json import lzma -import re -import os from stat import S_IREAD, S_IRGRP, S_IROTH import subprocess import tkinter as tk -from PyQt5 import QtCore, QtGui, QtWidgets, QtPrintSupport -from PyQt5.QtCore import QSettings +from PyQt5 import QtPrintSupport -import time # Just used for debugging. Double check before removing. import urllib.request, urllib.parse, urllib.error -import webbrowser from contextlib import contextmanager -from xml.dom.minidom import parseString as parse_xml_string -from copy import copy,deepcopy -import numpy as np -from datetime import datetime import gc ######################################## @@ -40,15 +27,15 @@ import gc ######################################## from ObjectCollection import * from FlatCAMObj import * -from PlotCanvas import * -from FlatCAMGUI import * +from flatcamGUI.PlotCanvas import * +from flatcamGUI.FlatCAMGUI import * from FlatCAMCommon import LoudDict from FlatCAMPostProc import load_postprocessors from FlatCAMEditor import FlatCAMGeoEditor, FlatCAMExcEditor from FlatCAMProcess import * from FlatCAMWorkerStack import WorkerStack -from VisPyVisuals import Color +from flatcamGUI.VisPyVisuals import Color from vispy.gloo.util import _screenshot from vispy.io import write_png @@ -1866,6 +1853,10 @@ class App(QtCore.QObject): self.ui.popmenu_edit.setVisible(False) self.ui.popmenu_save.setVisible(True) + # adjust the status of the menu entries related to the editor + self.ui.menueditedit.setDisabled(True) + self.ui.menueditok.setDisabled(False) + edited_object = self.collection.get_active() if isinstance(edited_object, FlatCAMGeometry): @@ -1915,6 +1906,10 @@ class App(QtCore.QObject): """ self.report_usage("editor2object()") + # adjust the status of the menu entries related to the editor + self.ui.menueditedit.setDisabled(False) + self.ui.menueditok.setDisabled(True) + # do not update a geometry or excellon object unless it comes out of an editor if self.call_source != 'app': # adjust the visibility of some of the canvas context menu diff --git a/FlatCAMEditor.py b/FlatCAMEditor.py index 947ce681..3c23418f 100644 --- a/FlatCAMEditor.py +++ b/FlatCAMEditor.py @@ -13,30 +13,20 @@ from PyQt5 import QtGui, QtCore, QtWidgets from PyQt5.QtCore import Qt, QSettings -import FlatCAMApp from camlib import * from FlatCAMTool import FlatCAMTool -from ObjectUI import LengthEntry, RadioSet +from flatcamGUI.ObjectUI import LengthEntry, RadioSet -from shapely.geometry import Polygon, LineString, Point, LinearRing, MultiLineString -from shapely.geometry import MultiPoint, MultiPolygon -from shapely.geometry import box as shply_box -from shapely.ops import cascaded_union, unary_union +from shapely.geometry import LineString, LinearRing, MultiLineString +from shapely.ops import cascaded_union import shapely.affinity as affinity -from shapely.wkt import loads as sloads -from shapely.wkt import dumps as sdumps -from shapely.geometry.base import BaseGeometry -from numpy import arctan2, Inf, array, sqrt, pi, ceil, sin, cos, sign, dot -from numpy.linalg import solve +from numpy import arctan2, Inf, array, sqrt, sign, dot from rtree import index as rtindex -from GUIElements import OptionalInputSection, FCCheckBox, FCEntry, FCEntry2, FCComboBox, FCTextAreaRich, \ - VerticalScrollArea, FCTable, FCDoubleSpinner, FCButton, EvalEntry2, FCInputDialog +from flatcamGUI.GUIElements import OptionalInputSection, FCCheckBox, FCEntry, FCComboBox, FCTextAreaRich, \ + FCTable, FCDoubleSpinner, FCButton, EvalEntry2, FCInputDialog from ParseFont import * -from vispy.scene.visuals import Markers -from copy import copy -import freetype as ft import gettext import FlatCAMTranslation as fcTranslate diff --git a/FlatCAMObj.py b/FlatCAMObj.py index 4be4931c..aae3416e 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -6,20 +6,13 @@ # MIT Licence # ############################################################ -from io import StringIO -from PyQt5 import QtCore, QtGui -from PyQt5.QtCore import Qt import copy import inspect # TODO: For debugging only. -from shapely.geometry.base import JOIN_STYLE from datetime import datetime -import FlatCAMApp -from ObjectUI import * +from flatcamGUI.ObjectUI import * from FlatCAMCommon import LoudDict -from FlatCAMEditor import FlatCAMGeoEditor from camlib import * -from VisPyVisuals import ShapeCollectionVisual import itertools import gettext @@ -30,6 +23,7 @@ import builtins if '_' not in builtins.__dict__: _ = gettext.gettext + class ObjectDeleted(Exception): # Interrupts plotting process if FlatCAMObj has been deleted pass diff --git a/FlatCAMProcess.py b/FlatCAMProcess.py index 9e1e882f..d71e62d8 100644 --- a/FlatCAMProcess.py +++ b/FlatCAMProcess.py @@ -6,7 +6,7 @@ # MIT Licence # ############################################################ -from FlatCAMGUI import FlatCAMActivityView +from flatcamGUI.FlatCAMGUI import FlatCAMActivityView from PyQt5 import QtCore import weakref diff --git a/FlatCAMTranslation.py b/FlatCAMTranslation.py index 6c274214..7d11c531 100644 --- a/FlatCAMTranslation.py +++ b/FlatCAMTranslation.py @@ -12,8 +12,7 @@ import sys from PyQt5 import QtWidgets, QtGui from PyQt5.QtCore import QSettings -import FlatCAMApp -from GUIElements import log +from flatcamGUI.GUIElements import log import gettext # ISO639-1 codes from here: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes diff --git a/README.md b/README.md index 95b8de24..0b8e142c 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,8 @@ CAD program, and create G-Code for Isolation routing. - changed some icons here and there - fixed the Properties Project menu entry to work on the new way - in Properties tool now the Gerber apertures show the number of polygons in 'solid_geometry' instead of listing the objects +- added a visual cue in Menu -> Edit about the entries to enter the Editor and to Save & Exit Editor. When one is enabled the other is disabled. +- grouped all the UI files in flatcamGUI folder 10.03.2019 diff --git a/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py similarity index 99% rename from FlatCAMGUI.py rename to flatcamGUI/FlatCAMGUI.py index fa0c351b..ecc944e5 100644 --- a/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -11,9 +11,8 @@ # Date: 3/10/2019 # ############################################################ -from PyQt5 import QtGui, QtCore, QtWidgets -from PyQt5.QtCore import Qt, QSettings -from GUIElements import * +from PyQt5.QtCore import QSettings +from flatcamGUI.GUIElements import * import platform import webbrowser @@ -211,6 +210,11 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.menuedit.addSeparator() self.menueditedit = self.menuedit.addAction(QtGui.QIcon('share/edit16.png'), _('Edit Object\tE')) self.menueditok = self.menuedit.addAction(QtGui.QIcon('share/edit_ok16.png'), _('Save && Close Editor\tCTRL+S')) + + # adjust the initial state of the menu entries related to the editor + self.menueditedit.setDisabled(False) + self.menueditok.setDisabled(True) + # Separator self.menuedit.addSeparator() self.menuedit_convert = self.menuedit.addMenu(QtGui.QIcon('share/convert24.png'), _('Conversion')) diff --git a/GUIElements.py b/flatcamGUI/GUIElements.py similarity index 100% rename from GUIElements.py rename to flatcamGUI/GUIElements.py diff --git a/ObjectUI.py b/flatcamGUI/ObjectUI.py similarity index 99% rename from ObjectUI.py rename to flatcamGUI/ObjectUI.py index cc9b3952..37fad55b 100644 --- a/ObjectUI.py +++ b/flatcamGUI/ObjectUI.py @@ -11,12 +11,9 @@ # Date: 3/10/2019 # ############################################################ -import sys from PyQt5 import QtGui, QtCore, QtWidgets from PyQt5.QtCore import Qt -from GUIElements import FCEntry, FloatEntry, EvalEntry, FCCheckBox, FCTable, \ - LengthEntry, FCTextArea, IntEntry, RadioSet, OptionalInputSection, FCComboBox, FloatEntry2, EvalEntry2, FCButton -from camlib import Excellon +from flatcamGUI.GUIElements import * import gettext import FlatCAMTranslation as fcTranslate diff --git a/PlotCanvas.py b/flatcamGUI/PlotCanvas.py similarity index 98% rename from PlotCanvas.py rename to flatcamGUI/PlotCanvas.py index 67305a43..374a1d65 100644 --- a/PlotCanvas.py +++ b/flatcamGUI/PlotCanvas.py @@ -9,12 +9,11 @@ from PyQt5 import QtCore import logging -from VisPyCanvas import VisPyCanvas -from VisPyVisuals import ShapeGroup, ShapeCollection, TextCollection, TextGroup, Cursor +from flatcamGUI.VisPyCanvas import VisPyCanvas, time +from flatcamGUI.VisPyVisuals import ShapeGroup, ShapeCollection, TextCollection, TextGroup, Cursor from vispy.scene.visuals import InfiniteLine, Line import numpy as np from vispy.geometry import Rect -import time log = logging.getLogger('base') diff --git a/VisPyCanvas.py b/flatcamGUI/VisPyCanvas.py similarity index 100% rename from VisPyCanvas.py rename to flatcamGUI/VisPyCanvas.py diff --git a/VisPyPatches.py b/flatcamGUI/VisPyPatches.py similarity index 100% rename from VisPyPatches.py rename to flatcamGUI/VisPyPatches.py diff --git a/VisPyTesselators.py b/flatcamGUI/VisPyTesselators.py similarity index 100% rename from VisPyTesselators.py rename to flatcamGUI/VisPyTesselators.py diff --git a/VisPyVisuals.py b/flatcamGUI/VisPyVisuals.py similarity index 99% rename from VisPyVisuals.py rename to flatcamGUI/VisPyVisuals.py index 8191c4e5..63f436bb 100644 --- a/VisPyVisuals.py +++ b/flatcamGUI/VisPyVisuals.py @@ -13,7 +13,7 @@ from vispy.color import Color from shapely.geometry import Polygon, LineString, LinearRing import threading import numpy as np -from VisPyTesselators import GLUTess +from flatcamGUI.VisPyTesselators import GLUTess class FlatCAMLineVisual(LineVisual): diff --git a/flatcamGUI/__init__.py b/flatcamGUI/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/flatcamTools/ToolCalculators.py b/flatcamTools/ToolCalculators.py index f491aeaf..a3b62be7 100644 --- a/flatcamTools/ToolCalculators.py +++ b/flatcamTools/ToolCalculators.py @@ -6,8 +6,6 @@ # MIT Licence # ############################################################ -from PyQt5 import QtGui -from GUIElements import FCEntry from FlatCAMTool import FlatCAMTool from FlatCAMObj import * import math diff --git a/flatcamTools/ToolDblSided.py b/flatcamTools/ToolDblSided.py index 3ee3fb83..18c557b9 100644 --- a/flatcamTools/ToolDblSided.py +++ b/flatcamTools/ToolDblSided.py @@ -1,5 +1,3 @@ -from PyQt5 import QtGui -from GUIElements import RadioSet, EvalEntry, LengthEntry from FlatCAMTool import FlatCAMTool from FlatCAMObj import * from shapely.geometry import Point diff --git a/flatcamTools/ToolFilm.py b/flatcamTools/ToolFilm.py index 5bef1616..d95cdebe 100644 --- a/flatcamTools/ToolFilm.py +++ b/flatcamTools/ToolFilm.py @@ -8,7 +8,7 @@ from FlatCAMTool import FlatCAMTool -from GUIElements import RadioSet, FCEntry +from flatcamGUI.GUIElements import RadioSet, FCEntry from PyQt5 import QtGui, QtCore, QtWidgets import gettext diff --git a/flatcamTools/ToolImage.py b/flatcamTools/ToolImage.py index a81252e8..5375a1c3 100644 --- a/flatcamTools/ToolImage.py +++ b/flatcamTools/ToolImage.py @@ -8,8 +8,8 @@ from FlatCAMTool import FlatCAMTool -from GUIElements import RadioSet, FloatEntry, FCComboBox, IntEntry -from PyQt5 import QtGui, QtCore, QtWidgets +from flatcamGUI.GUIElements import RadioSet, FCComboBox, IntEntry +from PyQt5 import QtGui, QtWidgets import gettext import FlatCAMTranslation as fcTranslate diff --git a/flatcamTools/ToolMeasurement.py b/flatcamTools/ToolMeasurement.py index a66d817c..fa2e8112 100644 --- a/flatcamTools/ToolMeasurement.py +++ b/flatcamTools/ToolMeasurement.py @@ -8,10 +8,8 @@ from FlatCAMTool import FlatCAMTool from FlatCAMObj import * -from VisPyVisuals import * -from PyQt5.QtCore import QSettings +from flatcamGUI.VisPyVisuals import * -from copy import copy from math import sqrt import gettext diff --git a/flatcamTools/ToolMove.py b/flatcamTools/ToolMove.py index 7400cdf0..f2b112ce 100644 --- a/flatcamTools/ToolMove.py +++ b/flatcamTools/ToolMove.py @@ -8,9 +8,8 @@ from FlatCAMTool import FlatCAMTool from FlatCAMObj import * -from VisPyVisuals import * +from flatcamGUI.VisPyVisuals import * -from io import StringIO from copy import copy import gettext diff --git a/flatcamTools/ToolShell.py b/flatcamTools/ToolShell.py index 4be7a14e..c0b1f4d7 100644 --- a/flatcamTools/ToolShell.py +++ b/flatcamTools/ToolShell.py @@ -10,7 +10,7 @@ from PyQt5.QtCore import Qt from PyQt5.QtGui import QTextCursor from PyQt5.QtWidgets import QVBoxLayout, QWidget -from GUIElements import _BrowserTextEdit, _ExpandableTextEdit +from flatcamGUI.GUIElements import _BrowserTextEdit, _ExpandableTextEdit import html import gettext diff --git a/flatcamTools/ToolSolderPaste.py b/flatcamTools/ToolSolderPaste.py index dc4cefe6..a8722675 100644 --- a/flatcamTools/ToolSolderPaste.py +++ b/flatcamTools/ToolSolderPaste.py @@ -8,9 +8,9 @@ from FlatCAMTool import FlatCAMTool from FlatCAMCommon import LoudDict -from GUIElements import FCComboBox, FCEntry, FCTable +from flatcamGUI.GUIElements import FCComboBox, FCEntry, FCTable from FlatCAMApp import log -from camlib import distance, CNCjob +from camlib import distance from FlatCAMObj import FlatCAMCNCjob from PyQt5 import QtGui, QtCore, QtWidgets @@ -18,8 +18,7 @@ from PyQt5.QtCore import Qt from copy import deepcopy from datetime import datetime -from shapely.geometry import MultiPolygon, Polygon, LineString -from shapely.geometry.base import BaseGeometry +from shapely.geometry import Polygon, LineString from shapely.ops import cascaded_union import traceback diff --git a/flatcamTools/ToolTransform.py b/flatcamTools/ToolTransform.py index 1698eec1..624491f0 100644 --- a/flatcamTools/ToolTransform.py +++ b/flatcamTools/ToolTransform.py @@ -6,9 +6,6 @@ # MIT Licence # ############################################################ -from PyQt5 import QtGui, QtCore, QtWidgets -from PyQt5.QtCore import Qt -from GUIElements import FCEntry, FCButton, OptionalInputSection from FlatCAMTool import FlatCAMTool from FlatCAMObj import *