diff --git a/.gitignore b/.gitignore index 9185a69a..a8f0377a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,7 @@ +*.DS_Store *.pyc +*.bak *.ini *ENV -log.txt \ No newline at end of file +groundcontrol.egg-info +log.txt diff --git a/README.md b/README.md index 580d68ef..2973fecd 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,119 @@ For Windows and OS X binaries, see the [releases](https://github.com/MaslowCNC/G For help installing binaries, see the [installation guides](https://github.com/MaslowCNC/GroundControl/wiki#gc-installation-guides). + +### MacOS + +Install homebrew and poetry. + +Install python 3.7 + +```bash +brew install python@3.7 +``` + +Install Kivy dependencies following "Using Homebrew with pip" [instructions](https://kivy.org/doc/stable/installation/installation-osx.html). + +```bash +brew install pkg-config sdl2 sdl2_image sdl2_ttf sdl2_mixer gstreamer +``` + +Depending on your poetry installation, you might want to set which python you want to use + +```bash +poetry env use /path/to/python@3.7/bin/python3.7 +``` + +Install GroundControl using poetry + +```bash +poetry install +``` + +Run GroundControl + +```bash +poetry run groundcontrol +``` + +## Raspberry Pi 3B+ (Version 4 currently has problems with kivy) + +Flash an SD card with Raspberry Pi OS Lite + +Do updata/upgrade + +```bash +sudo apt-get update +sudo apt-get upgrade +``` + +Install Kivy dependencies + +```bash +sudo apt install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev \ + pkg-config libgl1-mesa-dev libgles2-mesa-dev \ + python-setuptools libgstreamer1.0-dev git-core \ + gstreamer1.0-plugins-{bad,base,good,ugly} \ + gstreamer1.0-{omx,alsa} python-dev libmtdev-dev \ + xclip xsel libjpeg-dev +``` + +Make sure you have python3.7 and installed and python is pointing to 3.7 + +```bash +sudo apt-get install python3.7 python3-distutils python3-venv python3-pip +sudo rm /usr/bin/python +sudo ln -s /usr/bin/python3.7 /usr/bin/python +``` + +Install poetry + +```bash +curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python - +``` + +Downgrade poetry to 1.0.0 (later versions might not work well on Raspberry) + +```bash +source $HOME/.poetry/env +poetry self update 1.0.0 +``` + +Install git and clone repository + +```bash +sudo apt-get install git +git clone https://github.com/mdelmans/GroundControl.git -b feature/cleanup +``` + +Install GroundControl + +```bash +cd GroundControll +poetry install +``` + +Run GroundControl + +```bash +poetry run groundcontrol +``` + +If you are using Official Raspberry Pi Screen, add the following to `~/.kivy/config.ini` [input] section + +```bash +mouse = mouse +mtdev_%(name)s = probesysfs,provider=mtdev +hid_%(name)s = probesysfs,provider=hidinput +``` +And increase gpu memory to 128MB in raspi-config [Perfomance] -> [GPU Memory] + +```bash +sudo raspi-config +``` + + + ## Documentation Ground control documentation is available on the [project wiki](https://github.com/MaslowCNC/GroundControl/wiki). diff --git a/CalibrationWidgets/__init__.py b/groundcontrol/__init__.py similarity index 100% rename from CalibrationWidgets/__init__.py rename to groundcontrol/__init__.py diff --git a/_config.yml b/groundcontrol/_config.yml similarity index 100% rename from _config.yml rename to groundcontrol/_config.yml diff --git a/Documentation/Actions.jpg b/groundcontrol/assets/documentation/Actions.jpg similarity index 100% rename from Documentation/Actions.jpg rename to groundcontrol/assets/documentation/Actions.jpg diff --git a/Documentation/Calibrate Machine Dimensions/Chain Between Sled Mounts.jpg b/groundcontrol/assets/documentation/Calibrate Machine Dimensions/Chain Between Sled Mounts.jpg similarity index 100% rename from Documentation/Calibrate Machine Dimensions/Chain Between Sled Mounts.jpg rename to groundcontrol/assets/documentation/Calibrate Machine Dimensions/Chain Between Sled Mounts.jpg diff --git a/Documentation/Calibrate Machine Dimensions/Chain Between Sprockets.jpg b/groundcontrol/assets/documentation/Calibrate Machine Dimensions/Chain Between Sprockets.jpg similarity index 100% rename from Documentation/Calibrate Machine Dimensions/Chain Between Sprockets.jpg rename to groundcontrol/assets/documentation/Calibrate Machine Dimensions/Chain Between Sprockets.jpg diff --git a/Documentation/Calibrate Machine Dimensions/Chain On Left Sprocket.jpg b/groundcontrol/assets/documentation/Calibrate Machine Dimensions/Chain On Left Sprocket.jpg similarity index 100% rename from Documentation/Calibrate Machine Dimensions/Chain On Left Sprocket.jpg rename to groundcontrol/assets/documentation/Calibrate Machine Dimensions/Chain On Left Sprocket.jpg diff --git a/Documentation/Calibrate Machine Dimensions/Chain On Right Sprocket.jpg b/groundcontrol/assets/documentation/Calibrate Machine Dimensions/Chain On Right Sprocket.jpg similarity index 100% rename from Documentation/Calibrate Machine Dimensions/Chain On Right Sprocket.jpg rename to groundcontrol/assets/documentation/Calibrate Machine Dimensions/Chain On Right Sprocket.jpg diff --git a/Documentation/Calibrate Machine Dimensions/Chain off bottom.jpg b/groundcontrol/assets/documentation/Calibrate Machine Dimensions/Chain off bottom.jpg similarity index 100% rename from Documentation/Calibrate Machine Dimensions/Chain off bottom.jpg rename to groundcontrol/assets/documentation/Calibrate Machine Dimensions/Chain off bottom.jpg diff --git a/Documentation/Calibrate Machine Dimensions/Chain off top.jpg b/groundcontrol/assets/documentation/Calibrate Machine Dimensions/Chain off top.jpg similarity index 100% rename from Documentation/Calibrate Machine Dimensions/Chain off top.jpg rename to groundcontrol/assets/documentation/Calibrate Machine Dimensions/Chain off top.jpg diff --git a/Documentation/Calibrate Machine Dimensions/Measure Motor Height.jpg b/groundcontrol/assets/documentation/Calibrate Machine Dimensions/Measure Motor Height.jpg similarity index 100% rename from Documentation/Calibrate Machine Dimensions/Measure Motor Height.jpg rename to groundcontrol/assets/documentation/Calibrate Machine Dimensions/Measure Motor Height.jpg diff --git a/Documentation/Calibrate Machine Dimensions/Measure Test Shape Horizontal.jpg b/groundcontrol/assets/documentation/Calibrate Machine Dimensions/Measure Test Shape Horizontal.jpg similarity index 100% rename from Documentation/Calibrate Machine Dimensions/Measure Test Shape Horizontal.jpg rename to groundcontrol/assets/documentation/Calibrate Machine Dimensions/Measure Test Shape Horizontal.jpg diff --git a/Documentation/Calibrate Machine Dimensions/Measure Test Shape Vertical.jpg b/groundcontrol/assets/documentation/Calibrate Machine Dimensions/Measure Test Shape Vertical.jpg similarity index 100% rename from Documentation/Calibrate Machine Dimensions/Measure Test Shape Vertical.jpg rename to groundcontrol/assets/documentation/Calibrate Machine Dimensions/Measure Test Shape Vertical.jpg diff --git a/Documentation/Calibrate Machine Dimensions/Quadrilateral Kinematics.jpg b/groundcontrol/assets/documentation/Calibrate Machine Dimensions/Quadrilateral Kinematics.jpg similarity index 100% rename from Documentation/Calibrate Machine Dimensions/Quadrilateral Kinematics.jpg rename to groundcontrol/assets/documentation/Calibrate Machine Dimensions/Quadrilateral Kinematics.jpg diff --git a/Documentation/Calibrate Machine Dimensions/Set Z Height.jpg b/groundcontrol/assets/documentation/Calibrate Machine Dimensions/Set Z Height.jpg similarity index 100% rename from Documentation/Calibrate Machine Dimensions/Set Z Height.jpg rename to groundcontrol/assets/documentation/Calibrate Machine Dimensions/Set Z Height.jpg diff --git a/Documentation/Calibrate Machine Dimensions/Sled Attached.jpg b/groundcontrol/assets/documentation/Calibrate Machine Dimensions/Sled Attached.jpg similarity index 100% rename from Documentation/Calibrate Machine Dimensions/Sled Attached.jpg rename to groundcontrol/assets/documentation/Calibrate Machine Dimensions/Sled Attached.jpg diff --git a/Documentation/Calibrate Machine Dimensions/Sprocket at 12-00.jpg b/groundcontrol/assets/documentation/Calibrate Machine Dimensions/Sprocket at 12-00.jpg similarity index 100% rename from Documentation/Calibrate Machine Dimensions/Sprocket at 12-00.jpg rename to groundcontrol/assets/documentation/Calibrate Machine Dimensions/Sprocket at 12-00.jpg diff --git a/Documentation/Calibrate Machine Dimensions/Test Shape Preview Triangular.jpg b/groundcontrol/assets/documentation/Calibrate Machine Dimensions/Test Shape Preview Triangular.jpg similarity index 100% rename from Documentation/Calibrate Machine Dimensions/Test Shape Preview Triangular.jpg rename to groundcontrol/assets/documentation/Calibrate Machine Dimensions/Test Shape Preview Triangular.jpg diff --git a/Documentation/Calibrate Machine Dimensions/Test Shape Preview.jpg b/groundcontrol/assets/documentation/Calibrate Machine Dimensions/Test Shape Preview.jpg similarity index 100% rename from Documentation/Calibrate Machine Dimensions/Test Shape Preview.jpg rename to groundcontrol/assets/documentation/Calibrate Machine Dimensions/Test Shape Preview.jpg diff --git a/Documentation/Calibrate Machine Dimensions/Triangular Kinematics.jpg b/groundcontrol/assets/documentation/Calibrate Machine Dimensions/Triangular Kinematics.jpg similarity index 100% rename from Documentation/Calibrate Machine Dimensions/Triangular Kinematics.jpg rename to groundcontrol/assets/documentation/Calibrate Machine Dimensions/Triangular Kinematics.jpg diff --git a/Documentation/Calibrate Machine Dimensions/bottomfeeding/Ready To Calibrate.jpg b/groundcontrol/assets/documentation/Calibrate Machine Dimensions/bottomfeeding/Ready To Calibrate.jpg similarity index 100% rename from Documentation/Calibrate Machine Dimensions/bottomfeeding/Ready To Calibrate.jpg rename to groundcontrol/assets/documentation/Calibrate Machine Dimensions/bottomfeeding/Ready To Calibrate.jpg diff --git a/Documentation/Calibrate Machine Dimensions/topfeeding/Ready To Calibrate.jpg b/groundcontrol/assets/documentation/Calibrate Machine Dimensions/topfeeding/Ready To Calibrate.jpg similarity index 100% rename from Documentation/Calibrate Machine Dimensions/topfeeding/Ready To Calibrate.jpg rename to groundcontrol/assets/documentation/Calibrate Machine Dimensions/topfeeding/Ready To Calibrate.jpg diff --git a/Documentation/Choose Port.png b/groundcontrol/assets/documentation/Choose Port.png similarity index 100% rename from Documentation/Choose Port.png rename to groundcontrol/assets/documentation/Choose Port.png diff --git a/Documentation/Crosshairs.jpg b/groundcontrol/assets/documentation/Crosshairs.jpg similarity index 100% rename from Documentation/Crosshairs.jpg rename to groundcontrol/assets/documentation/Crosshairs.jpg diff --git a/Documentation/Download Mac.png b/groundcontrol/assets/documentation/Download Mac.png similarity index 100% rename from Documentation/Download Mac.png rename to groundcontrol/assets/documentation/Download Mac.png diff --git a/Documentation/Download Source.jpg b/groundcontrol/assets/documentation/Download Source.jpg similarity index 100% rename from Documentation/Download Source.jpg rename to groundcontrol/assets/documentation/Download Source.jpg diff --git a/Documentation/Download Windows.jpg b/groundcontrol/assets/documentation/Download Windows.jpg similarity index 100% rename from Documentation/Download Windows.jpg rename to groundcontrol/assets/documentation/Download Windows.jpg diff --git a/Documentation/Gcode.jpg b/groundcontrol/assets/documentation/Gcode.jpg similarity index 100% rename from Documentation/Gcode.jpg rename to groundcontrol/assets/documentation/Gcode.jpg diff --git a/Documentation/GroundControl.jpg b/groundcontrol/assets/documentation/GroundControl.jpg similarity index 100% rename from Documentation/GroundControl.jpg rename to groundcontrol/assets/documentation/GroundControl.jpg diff --git a/Documentation/GroundControlDataFlow.png b/groundcontrol/assets/documentation/GroundControlDataFlow.png similarity index 100% rename from Documentation/GroundControlDataFlow.png rename to groundcontrol/assets/documentation/GroundControlDataFlow.png diff --git a/Documentation/Launch Ground Control.png b/groundcontrol/assets/documentation/Launch Ground Control.png similarity index 100% rename from Documentation/Launch Ground Control.png rename to groundcontrol/assets/documentation/Launch Ground Control.png diff --git a/Documentation/Launch Windows.jpg b/groundcontrol/assets/documentation/Launch Windows.jpg similarity index 100% rename from Documentation/Launch Windows.jpg rename to groundcontrol/assets/documentation/Launch Windows.jpg diff --git a/Documentation/Machine Feedback Area.jpg b/groundcontrol/assets/documentation/Machine Feedback Area.jpg similarity index 100% rename from Documentation/Machine Feedback Area.jpg rename to groundcontrol/assets/documentation/Machine Feedback Area.jpg diff --git a/Documentation/MachineControls.jpg b/groundcontrol/assets/documentation/MachineControls.jpg similarity index 100% rename from Documentation/MachineControls.jpg rename to groundcontrol/assets/documentation/MachineControls.jpg diff --git a/Documentation/MainInterface.jpg b/groundcontrol/assets/documentation/MainInterface.jpg similarity index 100% rename from Documentation/MainInterface.jpg rename to groundcontrol/assets/documentation/MainInterface.jpg diff --git a/Documentation/MakerCAM/AngleBrace3Open.jpg b/groundcontrol/assets/documentation/MakerCAM/AngleBrace3Open.jpg similarity index 100% rename from Documentation/MakerCAM/AngleBrace3Open.jpg rename to groundcontrol/assets/documentation/MakerCAM/AngleBrace3Open.jpg diff --git a/Documentation/MakerCAM/Generate Gcode.jpg b/groundcontrol/assets/documentation/MakerCAM/Generate Gcode.jpg similarity index 100% rename from Documentation/MakerCAM/Generate Gcode.jpg rename to groundcontrol/assets/documentation/MakerCAM/Generate Gcode.jpg diff --git a/Documentation/MakerCAM/Move and Rotate.jpg b/groundcontrol/assets/documentation/MakerCAM/Move and Rotate.jpg similarity index 100% rename from Documentation/MakerCAM/Move and Rotate.jpg rename to groundcontrol/assets/documentation/MakerCAM/Move and Rotate.jpg diff --git a/Documentation/MakerCAM/Navigate to MakerCAM.jpg b/groundcontrol/assets/documentation/MakerCAM/Navigate to MakerCAM.jpg similarity index 100% rename from Documentation/MakerCAM/Navigate to MakerCAM.jpg rename to groundcontrol/assets/documentation/MakerCAM/Navigate to MakerCAM.jpg diff --git a/Documentation/MakerCAM/OpenSVG.jpg b/groundcontrol/assets/documentation/MakerCAM/OpenSVG.jpg similarity index 100% rename from Documentation/MakerCAM/OpenSVG.jpg rename to groundcontrol/assets/documentation/MakerCAM/OpenSVG.jpg diff --git a/Documentation/MakerCAM/Save Gcode.jpg b/groundcontrol/assets/documentation/MakerCAM/Save Gcode.jpg similarity index 100% rename from Documentation/MakerCAM/Save Gcode.jpg rename to groundcontrol/assets/documentation/MakerCAM/Save Gcode.jpg diff --git a/Documentation/MakerCAM/Set Up Cut.jpg b/groundcontrol/assets/documentation/MakerCAM/Set Up Cut.jpg similarity index 100% rename from Documentation/MakerCAM/Set Up Cut.jpg rename to groundcontrol/assets/documentation/MakerCAM/Set Up Cut.jpg diff --git a/Documentation/Move Into Applications.png b/groundcontrol/assets/documentation/Move Into Applications.png similarity index 100% rename from Documentation/Move Into Applications.png rename to groundcontrol/assets/documentation/Move Into Applications.png diff --git a/Documentation/Open Downloads.png b/groundcontrol/assets/documentation/Open Downloads.png similarity index 100% rename from Documentation/Open Downloads.png rename to groundcontrol/assets/documentation/Open Downloads.png diff --git a/Documentation/PreviewOverview.jpg b/groundcontrol/assets/documentation/PreviewOverview.jpg similarity index 100% rename from Documentation/PreviewOverview.jpg rename to groundcontrol/assets/documentation/PreviewOverview.jpg diff --git a/Documentation/Settings.jpg b/groundcontrol/assets/documentation/Settings.jpg similarity index 100% rename from Documentation/Settings.jpg rename to groundcontrol/assets/documentation/Settings.jpg diff --git a/Documentation/Unzip.jpg b/groundcontrol/assets/documentation/Unzip.jpg similarity index 100% rename from Documentation/Unzip.jpg rename to groundcontrol/assets/documentation/Unzip.jpg diff --git a/Documentation/Z-Axis Controls.jpg b/groundcontrol/assets/documentation/Z-Axis Controls.jpg similarity index 100% rename from Documentation/Z-Axis Controls.jpg rename to groundcontrol/assets/documentation/Z-Axis Controls.jpg diff --git a/Images/ArrowTheme.png b/groundcontrol/assets/images/ArrowTheme.png similarity index 100% rename from Images/ArrowTheme.png rename to groundcontrol/assets/images/ArrowTheme.png diff --git a/Images/Icons/darkgreyblue/ActionsSettings.png b/groundcontrol/assets/images/Icons/darkgreyblue/ActionsSettings.png similarity index 100% rename from Images/Icons/darkgreyblue/ActionsSettings.png rename to groundcontrol/assets/images/Icons/darkgreyblue/ActionsSettings.png diff --git a/Images/Icons/darkgreyblue/DownArrow.png b/groundcontrol/assets/images/Icons/darkgreyblue/DownArrow.png similarity index 100% rename from Images/Icons/darkgreyblue/DownArrow.png rename to groundcontrol/assets/images/Icons/darkgreyblue/DownArrow.png diff --git a/Images/Icons/darkgreyblue/DownLeftArrow.png b/groundcontrol/assets/images/Icons/darkgreyblue/DownLeftArrow.png similarity index 100% rename from Images/Icons/darkgreyblue/DownLeftArrow.png rename to groundcontrol/assets/images/Icons/darkgreyblue/DownLeftArrow.png diff --git a/Images/Icons/darkgreyblue/DownRightArrow.png b/groundcontrol/assets/images/Icons/darkgreyblue/DownRightArrow.png similarity index 100% rename from Images/Icons/darkgreyblue/DownRightArrow.png rename to groundcontrol/assets/images/Icons/darkgreyblue/DownRightArrow.png diff --git a/Images/Icons/darkgreyblue/Generic.png b/groundcontrol/assets/images/Icons/darkgreyblue/Generic.png similarity index 100% rename from Images/Icons/darkgreyblue/Generic.png rename to groundcontrol/assets/images/Icons/darkgreyblue/Generic.png diff --git a/Images/Icons/darkgreyblue/GenericMine.png b/groundcontrol/assets/images/Icons/darkgreyblue/GenericMine.png similarity index 100% rename from Images/Icons/darkgreyblue/GenericMine.png rename to groundcontrol/assets/images/Icons/darkgreyblue/GenericMine.png diff --git a/Images/Icons/darkgreyblue/GoTo.png b/groundcontrol/assets/images/Icons/darkgreyblue/GoTo.png similarity index 100% rename from Images/Icons/darkgreyblue/GoTo.png rename to groundcontrol/assets/images/Icons/darkgreyblue/GoTo.png diff --git a/Images/Icons/darkgreyblue/HoldYellow.png b/groundcontrol/assets/images/Icons/darkgreyblue/HoldYellow.png similarity index 100% rename from Images/Icons/darkgreyblue/HoldYellow.png rename to groundcontrol/assets/images/Icons/darkgreyblue/HoldYellow.png diff --git a/Images/Icons/darkgreyblue/Home.png b/groundcontrol/assets/images/Icons/darkgreyblue/Home.png similarity index 100% rename from Images/Icons/darkgreyblue/Home.png rename to groundcontrol/assets/images/Icons/darkgreyblue/Home.png diff --git a/Images/Icons/darkgreyblue/LeftArrow.png b/groundcontrol/assets/images/Icons/darkgreyblue/LeftArrow.png similarity index 100% rename from Images/Icons/darkgreyblue/LeftArrow.png rename to groundcontrol/assets/images/Icons/darkgreyblue/LeftArrow.png diff --git a/Images/Icons/darkgreyblue/RightArrow.png b/groundcontrol/assets/images/Icons/darkgreyblue/RightArrow.png similarity index 100% rename from Images/Icons/darkgreyblue/RightArrow.png rename to groundcontrol/assets/images/Icons/darkgreyblue/RightArrow.png diff --git a/Images/Icons/darkgreyblue/RunGreen.png b/groundcontrol/assets/images/Icons/darkgreyblue/RunGreen.png similarity index 100% rename from Images/Icons/darkgreyblue/RunGreen.png rename to groundcontrol/assets/images/Icons/darkgreyblue/RunGreen.png diff --git a/Images/Icons/darkgreyblue/StopRed.png b/groundcontrol/assets/images/Icons/darkgreyblue/StopRed.png similarity index 100% rename from Images/Icons/darkgreyblue/StopRed.png rename to groundcontrol/assets/images/Icons/darkgreyblue/StopRed.png diff --git a/Images/Icons/darkgreyblue/UpArrow.png b/groundcontrol/assets/images/Icons/darkgreyblue/UpArrow.png similarity index 100% rename from Images/Icons/darkgreyblue/UpArrow.png rename to groundcontrol/assets/images/Icons/darkgreyblue/UpArrow.png diff --git a/Images/Icons/darkgreyblue/UpLeftArrow.png b/groundcontrol/assets/images/Icons/darkgreyblue/UpLeftArrow.png similarity index 100% rename from Images/Icons/darkgreyblue/UpLeftArrow.png rename to groundcontrol/assets/images/Icons/darkgreyblue/UpLeftArrow.png diff --git a/Images/Icons/darkgreyblue/UpRightArrow.png b/groundcontrol/assets/images/Icons/darkgreyblue/UpRightArrow.png similarity index 100% rename from Images/Icons/darkgreyblue/UpRightArrow.png rename to groundcontrol/assets/images/Icons/darkgreyblue/UpRightArrow.png diff --git a/Images/Icons/darkgreyblue/VariousSmall.png b/groundcontrol/assets/images/Icons/darkgreyblue/VariousSmall.png similarity index 100% rename from Images/Icons/darkgreyblue/VariousSmall.png rename to groundcontrol/assets/images/Icons/darkgreyblue/VariousSmall.png diff --git a/Images/Icons/highvis/ActionsSettings.png b/groundcontrol/assets/images/Icons/highvis/ActionsSettings.png similarity index 100% rename from Images/Icons/highvis/ActionsSettings.png rename to groundcontrol/assets/images/Icons/highvis/ActionsSettings.png diff --git a/Images/Icons/highvis/ContinueYellow.png b/groundcontrol/assets/images/Icons/highvis/ContinueYellow.png similarity index 100% rename from Images/Icons/highvis/ContinueYellow.png rename to groundcontrol/assets/images/Icons/highvis/ContinueYellow.png diff --git a/Images/Icons/highvis/DownArrow.png b/groundcontrol/assets/images/Icons/highvis/DownArrow.png similarity index 100% rename from Images/Icons/highvis/DownArrow.png rename to groundcontrol/assets/images/Icons/highvis/DownArrow.png diff --git a/Images/Icons/highvis/DownLeftArrow.png b/groundcontrol/assets/images/Icons/highvis/DownLeftArrow.png similarity index 100% rename from Images/Icons/highvis/DownLeftArrow.png rename to groundcontrol/assets/images/Icons/highvis/DownLeftArrow.png diff --git a/Images/Icons/highvis/DownRightArrow.png b/groundcontrol/assets/images/Icons/highvis/DownRightArrow.png similarity index 100% rename from Images/Icons/highvis/DownRightArrow.png rename to groundcontrol/assets/images/Icons/highvis/DownRightArrow.png diff --git a/Images/Icons/highvis/Generic.png b/groundcontrol/assets/images/Icons/highvis/Generic.png similarity index 100% rename from Images/Icons/highvis/Generic.png rename to groundcontrol/assets/images/Icons/highvis/Generic.png diff --git a/Images/Icons/highvis/GenericMine.png b/groundcontrol/assets/images/Icons/highvis/GenericMine.png similarity index 100% rename from Images/Icons/highvis/GenericMine.png rename to groundcontrol/assets/images/Icons/highvis/GenericMine.png diff --git a/Images/Icons/highvis/GenericOld.png b/groundcontrol/assets/images/Icons/highvis/GenericOld.png similarity index 100% rename from Images/Icons/highvis/GenericOld.png rename to groundcontrol/assets/images/Icons/highvis/GenericOld.png diff --git a/Images/Icons/highvis/GoTo.png b/groundcontrol/assets/images/Icons/highvis/GoTo.png similarity index 100% rename from Images/Icons/highvis/GoTo.png rename to groundcontrol/assets/images/Icons/highvis/GoTo.png diff --git a/Images/Icons/highvis/HoldYellow.png b/groundcontrol/assets/images/Icons/highvis/HoldYellow.png similarity index 100% rename from Images/Icons/highvis/HoldYellow.png rename to groundcontrol/assets/images/Icons/highvis/HoldYellow.png diff --git a/Images/Icons/highvis/Home.png b/groundcontrol/assets/images/Icons/highvis/Home.png similarity index 100% rename from Images/Icons/highvis/Home.png rename to groundcontrol/assets/images/Icons/highvis/Home.png diff --git a/Images/Icons/highvis/LeftArrow.png b/groundcontrol/assets/images/Icons/highvis/LeftArrow.png similarity index 100% rename from Images/Icons/highvis/LeftArrow.png rename to groundcontrol/assets/images/Icons/highvis/LeftArrow.png diff --git a/Images/Icons/highvis/RightArrow.png b/groundcontrol/assets/images/Icons/highvis/RightArrow.png similarity index 100% rename from Images/Icons/highvis/RightArrow.png rename to groundcontrol/assets/images/Icons/highvis/RightArrow.png diff --git a/Images/Icons/highvis/RunGreen.png b/groundcontrol/assets/images/Icons/highvis/RunGreen.png similarity index 100% rename from Images/Icons/highvis/RunGreen.png rename to groundcontrol/assets/images/Icons/highvis/RunGreen.png diff --git a/Images/Icons/highvis/StopRed.png b/groundcontrol/assets/images/Icons/highvis/StopRed.png similarity index 100% rename from Images/Icons/highvis/StopRed.png rename to groundcontrol/assets/images/Icons/highvis/StopRed.png diff --git a/Images/Icons/highvis/UpArrow.png b/groundcontrol/assets/images/Icons/highvis/UpArrow.png similarity index 100% rename from Images/Icons/highvis/UpArrow.png rename to groundcontrol/assets/images/Icons/highvis/UpArrow.png diff --git a/Images/Icons/highvis/UpLeftArrow.png b/groundcontrol/assets/images/Icons/highvis/UpLeftArrow.png similarity index 100% rename from Images/Icons/highvis/UpLeftArrow.png rename to groundcontrol/assets/images/Icons/highvis/UpLeftArrow.png diff --git a/Images/Icons/highvis/UpRightArrow.png b/groundcontrol/assets/images/Icons/highvis/UpRightArrow.png similarity index 100% rename from Images/Icons/highvis/UpRightArrow.png rename to groundcontrol/assets/images/Icons/highvis/UpRightArrow.png diff --git a/Images/Icons/normal/(1.png b/groundcontrol/assets/images/Icons/normal/(1.png similarity index 100% rename from Images/Icons/normal/(1.png rename to groundcontrol/assets/images/Icons/normal/(1.png diff --git a/Images/Icons/normal/(Z.png b/groundcontrol/assets/images/Icons/normal/(Z.png similarity index 100% rename from Images/Icons/normal/(Z.png rename to groundcontrol/assets/images/Icons/normal/(Z.png diff --git a/Images/Icons/normal/1).png b/groundcontrol/assets/images/Icons/normal/1).png similarity index 100% rename from Images/Icons/normal/1).png rename to groundcontrol/assets/images/Icons/normal/1).png diff --git a/Images/Icons/normal/ContinueYellow.png b/groundcontrol/assets/images/Icons/normal/ContinueYellow.png similarity index 100% rename from Images/Icons/normal/ContinueYellow.png rename to groundcontrol/assets/images/Icons/normal/ContinueYellow.png diff --git a/Images/Icons/normal/DefineHome.png b/groundcontrol/assets/images/Icons/normal/DefineHome.png similarity index 100% rename from Images/Icons/normal/DefineHome.png rename to groundcontrol/assets/images/Icons/normal/DefineHome.png diff --git a/Images/Icons/normal/DownArrow.png b/groundcontrol/assets/images/Icons/normal/DownArrow.png similarity index 100% rename from Images/Icons/normal/DownArrow.png rename to groundcontrol/assets/images/Icons/normal/DownArrow.png diff --git a/Images/Icons/normal/DownLeftArrow-1.png b/groundcontrol/assets/images/Icons/normal/DownLeftArrow-1.png similarity index 100% rename from Images/Icons/normal/DownLeftArrow-1.png rename to groundcontrol/assets/images/Icons/normal/DownLeftArrow-1.png diff --git a/Images/Icons/normal/DownLeftArrow.png b/groundcontrol/assets/images/Icons/normal/DownLeftArrow.png similarity index 100% rename from Images/Icons/normal/DownLeftArrow.png rename to groundcontrol/assets/images/Icons/normal/DownLeftArrow.png diff --git a/Images/Icons/normal/DownRightArrow.png b/groundcontrol/assets/images/Icons/normal/DownRightArrow.png similarity index 100% rename from Images/Icons/normal/DownRightArrow.png rename to groundcontrol/assets/images/Icons/normal/DownRightArrow.png diff --git a/Images/Icons/normal/Generic.png b/groundcontrol/assets/images/Icons/normal/Generic.png similarity index 100% rename from Images/Icons/normal/Generic.png rename to groundcontrol/assets/images/Icons/normal/Generic.png diff --git a/Images/Icons/normal/GoTo.png b/groundcontrol/assets/images/Icons/normal/GoTo.png similarity index 100% rename from Images/Icons/normal/GoTo.png rename to groundcontrol/assets/images/Icons/normal/GoTo.png diff --git a/Images/Icons/normal/HoldYellow.png b/groundcontrol/assets/images/Icons/normal/HoldYellow.png similarity index 100% rename from Images/Icons/normal/HoldYellow.png rename to groundcontrol/assets/images/Icons/normal/HoldYellow.png diff --git a/Images/Icons/normal/Home.png b/groundcontrol/assets/images/Icons/normal/Home.png similarity index 100% rename from Images/Icons/normal/Home.png rename to groundcontrol/assets/images/Icons/normal/Home.png diff --git a/Images/Icons/normal/HomeArrow.png b/groundcontrol/assets/images/Icons/normal/HomeArrow.png similarity index 100% rename from Images/Icons/normal/HomeArrow.png rename to groundcontrol/assets/images/Icons/normal/HomeArrow.png diff --git a/Images/Icons/normal/LeftArrow.png b/groundcontrol/assets/images/Icons/normal/LeftArrow.png similarity index 100% rename from Images/Icons/normal/LeftArrow.png rename to groundcontrol/assets/images/Icons/normal/LeftArrow.png diff --git a/Images/Icons/normal/RightArrow.png b/groundcontrol/assets/images/Icons/normal/RightArrow.png similarity index 100% rename from Images/Icons/normal/RightArrow.png rename to groundcontrol/assets/images/Icons/normal/RightArrow.png diff --git a/Images/Icons/normal/RunGreen.png b/groundcontrol/assets/images/Icons/normal/RunGreen.png similarity index 100% rename from Images/Icons/normal/RunGreen.png rename to groundcontrol/assets/images/Icons/normal/RunGreen.png diff --git a/Images/Icons/normal/StopRed.png b/groundcontrol/assets/images/Icons/normal/StopRed.png similarity index 100% rename from Images/Icons/normal/StopRed.png rename to groundcontrol/assets/images/Icons/normal/StopRed.png diff --git a/Images/Icons/normal/UpArrow.png b/groundcontrol/assets/images/Icons/normal/UpArrow.png similarity index 100% rename from Images/Icons/normal/UpArrow.png rename to groundcontrol/assets/images/Icons/normal/UpArrow.png diff --git a/Images/Icons/normal/UpLeftArrow.png b/groundcontrol/assets/images/Icons/normal/UpLeftArrow.png similarity index 100% rename from Images/Icons/normal/UpLeftArrow.png rename to groundcontrol/assets/images/Icons/normal/UpLeftArrow.png diff --git a/Images/Icons/normal/UpRightArrow.png b/groundcontrol/assets/images/Icons/normal/UpRightArrow.png similarity index 100% rename from Images/Icons/normal/UpRightArrow.png rename to groundcontrol/assets/images/Icons/normal/UpRightArrow.png diff --git a/Images/Icons/normal/VariousSmall.png b/groundcontrol/assets/images/Icons/normal/VariousSmall.png similarity index 100% rename from Images/Icons/normal/VariousSmall.png rename to groundcontrol/assets/images/Icons/normal/VariousSmall.png diff --git a/Images/Icons/normal/Z).png b/groundcontrol/assets/images/Icons/normal/Z).png similarity index 100% rename from Images/Icons/normal/Z).png rename to groundcontrol/assets/images/Icons/normal/Z).png diff --git a/Images/MaslowTheme.png b/groundcontrol/assets/images/MaslowTheme.png similarity index 100% rename from Images/MaslowTheme.png rename to groundcontrol/assets/images/MaslowTheme.png diff --git a/Images/maslowIcon.png b/groundcontrol/assets/images/maslowIcon.png similarity index 100% rename from Images/maslowIcon.png rename to groundcontrol/assets/images/maslowIcon.png diff --git a/Images/readme.txt b/groundcontrol/assets/images/readme.txt similarity index 100% rename from Images/readme.txt rename to groundcontrol/assets/images/readme.txt diff --git a/Connection/__init__.py b/groundcontrol/calibration_widgets/__init__.py similarity index 100% rename from Connection/__init__.py rename to groundcontrol/calibration_widgets/__init__.py diff --git a/CalibrationWidgets/adjustZCalibrationDepth.py b/groundcontrol/calibration_widgets/adjustZCalibrationDepth.py similarity index 84% rename from CalibrationWidgets/adjustZCalibrationDepth.py rename to groundcontrol/calibration_widgets/adjustZCalibrationDepth.py index 96160ca9..fd1e3429 100644 --- a/CalibrationWidgets/adjustZCalibrationDepth.py +++ b/groundcontrol/calibration_widgets/adjustZCalibrationDepth.py @@ -1,13 +1,11 @@ -from kivy.uix.gridlayout import GridLayout -from kivy.properties import ObjectProperty -from UIElements.touchNumberInput import TouchNumberInput -from kivy.uix.popup import Popup -from UIElements.zAxisPopupContent import ZAxisPopupContent -from kivy.app import App +from kivy.uix.gridlayout import GridLayout +from kivy.properties import ObjectProperty +from kivy.uix.popup import Popup +from groundcontrol.ui_elements.zAxisPopupContent import ZAxisPopupContent +from kivy.app import App class AdjustZCalibrationDepth(GridLayout): ''' - Provides a standard interface for setting up the Z axis ''' diff --git a/CalibrationWidgets/calibrateLengthsPopup.py b/groundcontrol/calibration_widgets/calibrateLengthsPopup.py similarity index 84% rename from CalibrationWidgets/calibrateLengthsPopup.py rename to groundcontrol/calibration_widgets/calibrateLengthsPopup.py index 88a6b2d0..13cc519a 100644 --- a/CalibrationWidgets/calibrateLengthsPopup.py +++ b/groundcontrol/calibration_widgets/calibrateLengthsPopup.py @@ -5,10 +5,6 @@ ''' from kivy.uix.gridlayout import GridLayout from kivy.properties import ObjectProperty -from kivy.properties import StringProperty -from kivy.uix.popup import Popup -from CalibrationWidgets.setSprocketsVertical import SetSprocketsVertical -from CalibrationWidgets.measureOutChains import MeasureOutChains class CalibrateLengthsPopup(GridLayout): done = ObjectProperty(None) diff --git a/CalibrationWidgets/calibrationFrameWidget.py b/groundcontrol/calibration_widgets/calibrationFrameWidget.py similarity index 81% rename from CalibrationWidgets/calibrationFrameWidget.py rename to groundcontrol/calibration_widgets/calibrationFrameWidget.py index 1ca90630..c2b6ce2e 100644 --- a/CalibrationWidgets/calibrationFrameWidget.py +++ b/groundcontrol/calibration_widgets/calibrationFrameWidget.py @@ -6,31 +6,31 @@ state regardless of the machine's state when the widget begins. ''' -from kivy.uix.gridlayout import GridLayout -from kivy.properties import ObjectProperty -from CalibrationWidgets.intro import Intro -from CalibrationWidgets.chooseKinematicsType import ChooseKinematicsType -from CalibrationWidgets.chooseChainOverSprocketDirection import ChooseChainOverSprocketDirection -from CalibrationWidgets.computeCalibrationSteps import ComputeCalibrationSteps -from CalibrationWidgets.setSprocketsVertical import SetSprocketsVertical -from CalibrationWidgets.measureDistBetweenMotors import MeasureDistBetweenMotors -from CalibrationWidgets.vertDistToMotorsGuess import VertDistToMotorsGuess -from CalibrationWidgets.measureOutChains import MeasureOutChains -from CalibrationWidgets.removeChains import RemoveChains -from CalibrationWidgets.adjustZCalibrationDepth import AdjustZCalibrationDepth -from CalibrationWidgets.rotationRadiusGuess import RotationRadiusGuess -from CalibrationWidgets.triangularCalibration import TriangularCalibration -from CalibrationWidgets.distBetweenChainBrackets import DistBetweenChainBrackets -from CalibrationWidgets.reviewMeasurements import ReviewMeasurements -from CalibrationWidgets.quadTestCut import QuadTestCut -from CalibrationWidgets.finish import Finish -from CalibrationWidgets.finishSetChainLengths import FinishSetChainLengths -from CalibrationWidgets.manualCalibration import ManualCalibration -from CalibrationWidgets.enterDistanceBetweenMotors import EnterDistanceBetweenMotors -from CalibrationWidgets.measureOneChain import MeasureOneChain -from CalibrationWidgets.computeChainCorrectionFactors import ComputeChainCorrectionFactors -from CalibrationWidgets.wipeOldCorrectionValues import WipeOldCorrectionValues -from kivy.app import App +from kivy.uix.gridlayout import GridLayout +from kivy.properties import ObjectProperty +from groundcontrol.calibration_widgets.intro import Intro +from groundcontrol.calibration_widgets.chooseKinematicsType import ChooseKinematicsType +from groundcontrol.calibration_widgets.chooseChainOverSprocketDirection import ChooseChainOverSprocketDirection +from groundcontrol.calibration_widgets.computeCalibrationSteps import ComputeCalibrationSteps +from groundcontrol.calibration_widgets.setSprocketsVertical import SetSprocketsVertical +from groundcontrol.calibration_widgets.measureDistBetweenMotors import MeasureDistBetweenMotors +from groundcontrol.calibration_widgets.vertDistToMotorsGuess import VertDistToMotorsGuess +from groundcontrol.calibration_widgets.measureOutChains import MeasureOutChains +from groundcontrol.calibration_widgets.removeChains import RemoveChains +from groundcontrol.calibration_widgets.adjustZCalibrationDepth import AdjustZCalibrationDepth +from groundcontrol.calibration_widgets.rotationRadiusGuess import RotationRadiusGuess +from groundcontrol.calibration_widgets.triangularCalibration import TriangularCalibration +from groundcontrol.calibration_widgets.distBetweenChainBrackets import DistBetweenChainBrackets +from groundcontrol.calibration_widgets.reviewMeasurements import ReviewMeasurements +from groundcontrol.calibration_widgets.quadTestCut import QuadTestCut +from groundcontrol.calibration_widgets.finish import Finish +from groundcontrol.calibration_widgets.finishSetChainLengths import FinishSetChainLengths +from groundcontrol.calibration_widgets.manualCalibration import ManualCalibration +from groundcontrol.calibration_widgets.enterDistanceBetweenMotors import EnterDistanceBetweenMotors +from groundcontrol.calibration_widgets.measureOneChain import MeasureOneChain +from groundcontrol.calibration_widgets.computeChainCorrectionFactors import ComputeChainCorrectionFactors +from groundcontrol.calibration_widgets.wipeOldCorrectionValues import WipeOldCorrectionValues +from kivy.app import App class CalibrationFrameWidget(GridLayout): diff --git a/CalibrationWidgets/calibrationStepTemplate.py b/groundcontrol/calibration_widgets/calibrationStepTemplate.py similarity index 100% rename from CalibrationWidgets/calibrationStepTemplate.py rename to groundcontrol/calibration_widgets/calibrationStepTemplate.py diff --git a/CalibrationWidgets/chooseChainOverSprocketDirection.py b/groundcontrol/calibration_widgets/chooseChainOverSprocketDirection.py similarity index 95% rename from CalibrationWidgets/chooseChainOverSprocketDirection.py rename to groundcontrol/calibration_widgets/chooseChainOverSprocketDirection.py index d539fa81..2bb393e8 100644 --- a/CalibrationWidgets/chooseChainOverSprocketDirection.py +++ b/groundcontrol/calibration_widgets/chooseChainOverSprocketDirection.py @@ -17,7 +17,7 @@ def on_Enter(self): This function runs when the step is entered ''' - print "choose sprocket direction on enter ran" + print("choose sprocket direction on enter ran") def setChainToTop(self): ''' diff --git a/CalibrationWidgets/chooseKinematicsType.py b/groundcontrol/calibration_widgets/chooseKinematicsType.py similarity index 100% rename from CalibrationWidgets/chooseKinematicsType.py rename to groundcontrol/calibration_widgets/chooseKinematicsType.py diff --git a/CalibrationWidgets/computeCalibrationSteps.py b/groundcontrol/calibration_widgets/computeCalibrationSteps.py similarity index 93% rename from CalibrationWidgets/computeCalibrationSteps.py rename to groundcontrol/calibration_widgets/computeCalibrationSteps.py index 99002440..9121f2f9 100644 --- a/CalibrationWidgets/computeCalibrationSteps.py +++ b/groundcontrol/calibration_widgets/computeCalibrationSteps.py @@ -5,7 +5,6 @@ ''' from kivy.uix.gridlayout import GridLayout from kivy.properties import ObjectProperty -from kivy.app import App from kivy.clock import Clock class ComputeCalibrationSteps(GridLayout): diff --git a/CalibrationWidgets/computeChainCorrectionFactors.py b/groundcontrol/calibration_widgets/computeChainCorrectionFactors.py similarity index 90% rename from CalibrationWidgets/computeChainCorrectionFactors.py rename to groundcontrol/calibration_widgets/computeChainCorrectionFactors.py index edc2eb01..a5465713 100644 --- a/CalibrationWidgets/computeChainCorrectionFactors.py +++ b/groundcontrol/calibration_widgets/computeChainCorrectionFactors.py @@ -1,10 +1,6 @@ from kivy.uix.gridlayout import GridLayout from kivy.properties import ObjectProperty -from kivy.properties import StringProperty -from UIElements.touchNumberInput import TouchNumberInput -from kivy.uix.popup import Popup from kivy.app import App -import global_variables class ComputeChainCorrectionFactors(GridLayout): ''' diff --git a/CalibrationWidgets/distBetweenChainBrackets.py b/groundcontrol/calibration_widgets/distBetweenChainBrackets.py similarity index 96% rename from CalibrationWidgets/distBetweenChainBrackets.py rename to groundcontrol/calibration_widgets/distBetweenChainBrackets.py index 47e5927a..e1a73c5f 100644 --- a/CalibrationWidgets/distBetweenChainBrackets.py +++ b/groundcontrol/calibration_widgets/distBetweenChainBrackets.py @@ -5,10 +5,10 @@ ''' from kivy.uix.gridlayout import GridLayout from kivy.properties import ObjectProperty -from UIElements.touchNumberInput import TouchNumberInput +from groundcontrol.ui_elements.touchNumberInput import TouchNumberInput from kivy.uix.popup import Popup from kivy.app import App -import global_variables +import groundcontrol.global_variables as global_variables class DistBetweenChainBrackets(GridLayout): readyToMoveOn = ObjectProperty(None) diff --git a/CalibrationWidgets/enterDistanceBetweenMotors.py b/groundcontrol/calibration_widgets/enterDistanceBetweenMotors.py similarity index 87% rename from CalibrationWidgets/enterDistanceBetweenMotors.py rename to groundcontrol/calibration_widgets/enterDistanceBetweenMotors.py index 5471e81a..c56b83b7 100644 --- a/CalibrationWidgets/enterDistanceBetweenMotors.py +++ b/groundcontrol/calibration_widgets/enterDistanceBetweenMotors.py @@ -1,10 +1,6 @@ from kivy.uix.gridlayout import GridLayout from kivy.properties import ObjectProperty -from kivy.properties import StringProperty -from UIElements.touchNumberInput import TouchNumberInput -from kivy.uix.popup import Popup from kivy.app import App -import global_variables class EnterDistanceBetweenMotors(GridLayout): ''' @@ -51,7 +47,7 @@ def enterValues(self): self.loadNextStep() except Exception as e: - print e + print(e) def loadNextStep(self): self.readyToMoveOn() diff --git a/CalibrationWidgets/finish.py b/groundcontrol/calibration_widgets/finish.py similarity index 100% rename from CalibrationWidgets/finish.py rename to groundcontrol/calibration_widgets/finish.py diff --git a/CalibrationWidgets/finishSetChainLengths.py b/groundcontrol/calibration_widgets/finishSetChainLengths.py similarity index 100% rename from CalibrationWidgets/finishSetChainLengths.py rename to groundcontrol/calibration_widgets/finishSetChainLengths.py diff --git a/CalibrationWidgets/intro.py b/groundcontrol/calibration_widgets/intro.py similarity index 100% rename from CalibrationWidgets/intro.py rename to groundcontrol/calibration_widgets/intro.py diff --git a/CalibrationWidgets/manualCalibration.py b/groundcontrol/calibration_widgets/manualCalibration.py similarity index 91% rename from CalibrationWidgets/manualCalibration.py rename to groundcontrol/calibration_widgets/manualCalibration.py index 3934ec0d..da7a16ea 100644 --- a/CalibrationWidgets/manualCalibration.py +++ b/groundcontrol/calibration_widgets/manualCalibration.py @@ -1,10 +1,6 @@ from kivy.uix.gridlayout import GridLayout from kivy.properties import ObjectProperty -from kivy.properties import StringProperty -from UIElements.touchNumberInput import TouchNumberInput -from kivy.uix.popup import Popup from kivy.app import App -import global_variables class ManualCalibration(GridLayout): ''' @@ -62,7 +58,7 @@ def enterValues(self): self.loadNextStep() except Exception as e: - print e + print(e) def loadNextStep(self): self.readyToMoveOn() diff --git a/CalibrationWidgets/measureDistBetweenMotors.py b/groundcontrol/calibration_widgets/measureDistBetweenMotors.py similarity index 96% rename from CalibrationWidgets/measureDistBetweenMotors.py rename to groundcontrol/calibration_widgets/measureDistBetweenMotors.py index 09f34e5a..f1147e10 100644 --- a/CalibrationWidgets/measureDistBetweenMotors.py +++ b/groundcontrol/calibration_widgets/measureDistBetweenMotors.py @@ -1,9 +1,9 @@ from kivy.uix.gridlayout import GridLayout from kivy.properties import ObjectProperty -from UIElements.touchNumberInput import TouchNumberInput +from groundcontrol.ui_elements.touchNumberInput import TouchNumberInput from kivy.uix.popup import Popup from kivy.app import App -import global_variables +import groundcontrol.global_variables as global_variables class MeasureDistBetweenMotors(GridLayout): ''' @@ -93,7 +93,7 @@ def measureLeft(self): def readMotorSpacing(self, dist): dist = dist - 2*6.35 #subtract off the extra two links - print "Read motor spacing: " + str(dist) + print("Read motor spacing: " + str(dist)) self.data.config.set('Maslow Settings', 'motorSpacingX', str(dist)) #put some slack in the chain diff --git a/CalibrationWidgets/measureOneChain.py b/groundcontrol/calibration_widgets/measureOneChain.py similarity index 94% rename from CalibrationWidgets/measureOneChain.py rename to groundcontrol/calibration_widgets/measureOneChain.py index f3a80d2a..b167af3c 100644 --- a/CalibrationWidgets/measureOneChain.py +++ b/groundcontrol/calibration_widgets/measureOneChain.py @@ -1,9 +1,6 @@ from kivy.uix.gridlayout import GridLayout from kivy.properties import ObjectProperty -from UIElements.touchNumberInput import TouchNumberInput -from kivy.uix.popup import Popup from kivy.app import App -import global_variables class MeasureOneChain(GridLayout): ''' @@ -44,7 +41,7 @@ def measure(self): def readMotorSpacing(self, dist): dist = dist - 2*6.35 #subtract off the extra two links - print "Read motor spacing: " + str(dist) + print("Read motor spacing: " + str(dist)) #put some slack in the chain self.data.gcode_queue.put("G91 ") diff --git a/CalibrationWidgets/measureOutChains.py b/groundcontrol/calibration_widgets/measureOutChains.py similarity index 88% rename from CalibrationWidgets/measureOutChains.py rename to groundcontrol/calibration_widgets/measureOutChains.py index a3161ce4..0a2ad031 100644 --- a/CalibrationWidgets/measureOutChains.py +++ b/groundcontrol/calibration_widgets/measureOutChains.py @@ -3,6 +3,8 @@ from kivy.clock import Clock from kivy.app import App +from groundcontrol.util import get_asset + class MeasureOutChains(GridLayout): ''' @@ -23,13 +25,13 @@ def on_Enter(self): self.text = "If your chains are already in place they may retract to the target length.\n\nIf your left chain is still attached to the right motor from the length measurement motor-to-motor, remove it from the RIGHT motor without changing the position it has on the left motor.\nFor chains that are not attached to a motor (typical calibration = right chain) place the first link of the chain on the vertical sprocket tooth.\n\nThe correct length of first the left and then the right chain will be measured out\n\nOnce both chains are finished attach the sled, then press Next\n\nThe Move to Center button will move the sled to the center.\n\nBe sure to keep an eye on the chains during this process to ensure that they do not become tangled\naround the sprocket. The motors are very powerful and the machine can damage itself this way" #select the right image for a given setup - print "measure out chains on enter" + print("measure out chains on enter") if App.get_running_app().data.config.get('Advanced Settings', 'chainOverSprocket') == 'Top': - print "top feeding detected" - self.leftImg.source = "./Documentation/Calibrate Machine Dimensions/topfeeding/Ready To Calibrate.jpg" + print("top feeding detected") + self.leftImg.source = get_asset("documentation/Calibrate Machine Dimensions/topfeeding/Ready To Calibrate.jpg") else : - print "bottom feeding detected" - self.leftImg.source = "./Documentation/Calibrate Machine Dimensions/bottomfeeding/Ready To Calibrate.jpg" + print("bottom feeding detected") + self.leftImg.source = get_asset("documentation/Calibrate Machine Dimensions/bottomfeeding/Ready To Calibrate.jpg") def stop(self): self.data.quick_queue.put("!") @@ -44,7 +46,7 @@ def moveToCenter(self): ''' self.data.gcode_queue.put("B15 ") - def next(self): + def __next__(self): self.readyToMoveOn() diff --git a/CalibrationWidgets/quadTestCut.py b/groundcontrol/calibration_widgets/quadTestCut.py similarity index 98% rename from CalibrationWidgets/quadTestCut.py rename to groundcontrol/calibration_widgets/quadTestCut.py index 8f78e011..e8b09287 100644 --- a/CalibrationWidgets/quadTestCut.py +++ b/groundcontrol/calibration_widgets/quadTestCut.py @@ -86,7 +86,7 @@ def enterTestPaternValues(self): else: amtToChange = .9*dif newSledSpacing = float(self.data.config.get('Maslow Settings', 'sledWidth')) + amtToChange - print "Now trying spacing: " + str(newSledSpacing) + print("Now trying spacing: " + str(newSledSpacing)) self.data.config.set('Maslow Settings', 'sledWidth', str(newSledSpacing)) self.cutBtn.disabled = False diff --git a/CalibrationWidgets/removeChains.py b/groundcontrol/calibration_widgets/removeChains.py similarity index 100% rename from CalibrationWidgets/removeChains.py rename to groundcontrol/calibration_widgets/removeChains.py diff --git a/CalibrationWidgets/reviewMeasurements.py b/groundcontrol/calibration_widgets/reviewMeasurements.py similarity index 100% rename from CalibrationWidgets/reviewMeasurements.py rename to groundcontrol/calibration_widgets/reviewMeasurements.py diff --git a/CalibrationWidgets/rotationRadiusGuess.py b/groundcontrol/calibration_widgets/rotationRadiusGuess.py similarity index 93% rename from CalibrationWidgets/rotationRadiusGuess.py rename to groundcontrol/calibration_widgets/rotationRadiusGuess.py index 473b68ea..953f3bdf 100644 --- a/CalibrationWidgets/rotationRadiusGuess.py +++ b/groundcontrol/calibration_widgets/rotationRadiusGuess.py @@ -5,10 +5,10 @@ ''' from kivy.uix.gridlayout import GridLayout from kivy.properties import ObjectProperty -from UIElements.touchNumberInput import TouchNumberInput +from groundcontrol.ui_elements.touchNumberInput import TouchNumberInput from kivy.uix.popup import Popup from kivy.app import App -import global_variables +import groundcontrol.global_variables as global_variables class RotationRadiusGuess(GridLayout): readyToMoveOn = ObjectProperty(None) @@ -83,8 +83,8 @@ def enterValues(self): try: dist = float(self.enterMeasurement.text) self.data.config.set('Advanced Settings', 'rotationRadius', str(dist)) - print "setting rotation radius to: " + str(dist) - print self.data.config.get('Advanced Settings', 'rotationRadius') + print("setting rotation radius to: " + str(dist)) + print(self.data.config.get('Advanced Settings', 'rotationRadius')) self.readyToMoveOn() except: self.data.message_queue.put("Message: Couldn't convert that to a number...") diff --git a/CalibrationWidgets/setSprocketsVertical.py b/groundcontrol/calibration_widgets/setSprocketsVertical.py similarity index 98% rename from CalibrationWidgets/setSprocketsVertical.py rename to groundcontrol/calibration_widgets/setSprocketsVertical.py index dea77c4a..18c8702d 100644 --- a/CalibrationWidgets/setSprocketsVertical.py +++ b/groundcontrol/calibration_widgets/setSprocketsVertical.py @@ -198,21 +198,21 @@ def moveToVertical(self): ''' - print "Current chain lengths:" - print self.leftChainLength - print self.rightChainLength + print("Current chain lengths:") + print(self.leftChainLength) + print(self.rightChainLength) chainPitch = float(self.data.config.get('Advanced Settings', 'chainPitch')) gearTeeth = float(self.data.config.get('Advanced Settings', 'gearTeeth')) distPerRotation = chainPitch*gearTeeth - print "Rotations remainder:" + print("Rotations remainder:") distL = (-1*(self.leftChainLength%distPerRotation)) distR = (-1*(self.rightChainLength%distPerRotation)) - print distL - print distR + print(distL) + print(distR) self.data.gcode_queue.put("G91 ") self.data.gcode_queue.put("B09 L"+str(distL)+" ") diff --git a/CalibrationWidgets/triangularCalibration.py b/groundcontrol/calibration_widgets/triangularCalibration.py similarity index 96% rename from CalibrationWidgets/triangularCalibration.py rename to groundcontrol/calibration_widgets/triangularCalibration.py index e20a9aae..149d8847 100644 --- a/CalibrationWidgets/triangularCalibration.py +++ b/groundcontrol/calibration_widgets/triangularCalibration.py @@ -1,10 +1,7 @@ from kivy.uix.gridlayout import GridLayout from kivy.properties import ObjectProperty from kivy.properties import StringProperty -from UIElements.touchNumberInput import TouchNumberInput -from kivy.uix.popup import Popup from kivy.app import App -import global_variables import math class TriangularCalibration(GridLayout): @@ -219,8 +216,8 @@ def enterTestPaternValuesTriangular(self): # Set up the iterative algorithm - print "Previous machine parameters:" - print "Motor Spacing: " + str(motorSpacing) + ", Motor Y Offset: " + str(motorYoffsetEst) + ", Rotation Disk Radius: " + str(rotationRadiusEst) + ", Chain Sag Correction Value: " + str(chainSagCorrectionEst) + print("Previous machine parameters:") + print("Motor Spacing: " + str(motorSpacing) + ", Motor Y Offset: " + str(motorYoffsetEst) + ", Rotation Disk Radius: " + str(rotationRadiusEst) + ", Chain Sag Correction Value: " + str(chainSagCorrectionEst)) motorYcoordEst = distWorkareaTopToCut5 + (bitDiameter / 2) + 12.7 rotationRadiusEst = 0 @@ -232,7 +229,7 @@ def enterTestPaternValuesTriangular(self): ChainErrorCut4 = acceptableTolerance n = 0 - print "Iterating for new machine parameters" + print("Iterating for new machine parameters") # Iterate until error tolerance is achieved or maximum number of iterations occurs @@ -303,8 +300,8 @@ def enterTestPaternValuesTriangular(self): motorYoffsetEstPrint = motorYcoordEst - distWorkareaTopToCut5 - (bitDiameter / 2) - 12.7 - print "N: " + str(n) + ", Motor Spacing: " + str(round(motorSpacing, 3)) + ", Motor Y Offset: " + str(round(motorYoffsetEstPrint, 3)) + ", Rotation Disk Radius: " + str(round(rotationRadiusEst, 3)) + ", Chain Sag Correction Value: " + str(round(chainSagCorrectionEst, 6)) - print " Chain Error Cut 1: " + str(round(ChainErrorCut1,4)) + ", Chain Error Cut 2: " + str(round(ChainErrorCut2,4)) + ", Chain Error Cut 3: " + str(round(ChainErrorCut3,4)) + ", Chain Error Cut 4: " + str(round(ChainErrorCut4,4)) + ", Sled Drift Compensation: " + str(round(cut34YoffsetEst, 4)) + print("N: " + str(n) + ", Motor Spacing: " + str(round(motorSpacing, 3)) + ", Motor Y Offset: " + str(round(motorYoffsetEstPrint, 3)) + ", Rotation Disk Radius: " + str(round(rotationRadiusEst, 3)) + ", Chain Sag Correction Value: " + str(round(chainSagCorrectionEst, 6))) + print(" Chain Error Cut 1: " + str(round(ChainErrorCut1,4)) + ", Chain Error Cut 2: " + str(round(ChainErrorCut2,4)) + ", Chain Error Cut 3: " + str(round(ChainErrorCut3,4)) + ", Chain Error Cut 4: " + str(round(ChainErrorCut4,4)) + ", Sled Drift Compensation: " + str(round(cut34YoffsetEst, 4))) # Update the motorYcoord and rotationRadius parameters based on the current chain length errors @@ -332,11 +329,11 @@ def enterTestPaternValuesTriangular(self): rotationRadiusCorrectionScale = float(rotationRadiusCorrectionScale/2) chainSagCorrectionCorrectionScale = float(chainSagCorrectionCorrectionScale/2) cutYoffsetCorrectionScale = float(cutYoffsetCorrectionScale/2) - print "Estimated values out of range, trying again with smaller steps" + print("Estimated values out of range, trying again with smaller steps") if n == numberOfIterations: self.data.message_queue.put('Message: The machine was not able to be calibrated. Please ensure the work area dimensions are correct and try again.') - print "Machine parameters could not be determined" + print("Machine parameters could not be determined") return @@ -345,7 +342,7 @@ def enterTestPaternValuesTriangular(self): self.vertMeasureT1.disabled = True self.enterValuesT.disabled = True - print "Machine parameters found:" + print("Machine parameters found:") motorYoffsetEst = motorYcoordEst - distWorkareaTopToCut5 - (bitDiameter / 2) - 12.7 @@ -353,7 +350,7 @@ def enterTestPaternValuesTriangular(self): rotationRadiusEst = round(rotationRadiusEst, 1) chainSagCorrectionEst = round(chainSagCorrectionEst, 6) - print "Motor Spacing: " + str(motorSpacing) + ", Motor Y Offset: " + str(motorYoffsetEst) + ", Rotation Disk Radius: " + str(rotationRadiusEst) + ", Chain Sag Correction Value: " + str(chainSagCorrectionEst) + print("Motor Spacing: " + str(motorSpacing) + ", Motor Y Offset: " + str(motorYoffsetEst) + ", Rotation Disk Radius: " + str(rotationRadiusEst) + ", Chain Sag Correction Value: " + str(chainSagCorrectionEst)) # Update machine parameters diff --git a/CalibrationWidgets/vertDistToMotorsGuess.py b/groundcontrol/calibration_widgets/vertDistToMotorsGuess.py similarity index 96% rename from CalibrationWidgets/vertDistToMotorsGuess.py rename to groundcontrol/calibration_widgets/vertDistToMotorsGuess.py index c79d40f1..64b7c984 100644 --- a/CalibrationWidgets/vertDistToMotorsGuess.py +++ b/groundcontrol/calibration_widgets/vertDistToMotorsGuess.py @@ -5,10 +5,10 @@ ''' from kivy.uix.gridlayout import GridLayout from kivy.properties import ObjectProperty -from UIElements.touchNumberInput import TouchNumberInput +from groundcontrol.ui_elements.touchNumberInput import TouchNumberInput from kivy.uix.popup import Popup from kivy.app import App -import global_variables +import groundcontrol.global_variables as global_variables class VertDistToMotorsGuess(GridLayout): readyToMoveOn = ObjectProperty(None) diff --git a/CalibrationWidgets/wipeOldCorrectionValues.py b/groundcontrol/calibration_widgets/wipeOldCorrectionValues.py similarity index 92% rename from CalibrationWidgets/wipeOldCorrectionValues.py rename to groundcontrol/calibration_widgets/wipeOldCorrectionValues.py index 611ac84d..5d589f14 100644 --- a/CalibrationWidgets/wipeOldCorrectionValues.py +++ b/groundcontrol/calibration_widgets/wipeOldCorrectionValues.py @@ -1,8 +1,6 @@ from kivy.uix.gridlayout import GridLayout from kivy.properties import ObjectProperty -from kivy.properties import StringProperty from kivy.app import App -import global_variables class WipeOldCorrectionValues(GridLayout): ''' diff --git a/DataStructures/__init__.py b/groundcontrol/connection/__init__.py similarity index 100% rename from DataStructures/__init__.py rename to groundcontrol/connection/__init__.py diff --git a/Connection/nonVisibleWidgets.py b/groundcontrol/connection/nonVisibleWidgets.py similarity index 82% rename from Connection/nonVisibleWidgets.py rename to groundcontrol/connection/nonVisibleWidgets.py index 6594c52b..f775f130 100644 --- a/Connection/nonVisibleWidgets.py +++ b/groundcontrol/connection/nonVisibleWidgets.py @@ -1,5 +1,5 @@ -from DataStructures.makesmithInitFuncs import MakesmithInitFuncs -from Connection.serialPort import SerialPort +from groundcontrol.data_structures.makesmithInitFuncs import MakesmithInitFuncs +from groundcontrol.connection.serialPort import SerialPort class NonVisibleWidgets(MakesmithInitFuncs): ''' diff --git a/Connection/serialPort.py b/groundcontrol/connection/serialPort.py similarity index 89% rename from Connection/serialPort.py rename to groundcontrol/connection/serialPort.py index 81931114..099fd773 100755 --- a/Connection/serialPort.py +++ b/groundcontrol/connection/serialPort.py @@ -1,7 +1,7 @@ from kivy.properties import ListProperty from kivy.clock import Clock -from DataStructures.makesmithInitFuncs import MakesmithInitFuncs -from Connection.serialPortThread import SerialPortThread +from groundcontrol.data_structures.makesmithInitFuncs import MakesmithInitFuncs +from groundcontrol.connection.serialPortThread import SerialPortThread import sys import serial @@ -34,8 +34,8 @@ def setPort(self, port): Defines which port the machine is attached to ''' - print "update ports" - print port + print("update ports") + print(port) self.data.comport = port def connect(self, *args): diff --git a/Connection/serialPortThread.py b/groundcontrol/connection/serialPortThread.py similarity index 94% rename from Connection/serialPortThread.py rename to groundcontrol/connection/serialPortThread.py index e566008c..f36bcf8c 100644 --- a/Connection/serialPortThread.py +++ b/groundcontrol/connection/serialPortThread.py @@ -1,5 +1,5 @@ -from DataStructures.makesmithInitFuncs import MakesmithInitFuncs -from DataStructures.data import Data +from groundcontrol.data_structures.makesmithInitFuncs import MakesmithInitFuncs +from groundcontrol.data_structures.data import Data import serial import time from collections import deque @@ -34,7 +34,7 @@ def _write (self, message, isQuickCommand = False): time.sleep (self.MINTimePerLine) # could use (taken - MINTimePerLine) message = message.encode() - print "Sending: " + str(message) + print("Sending: " + str(message)) message = message + '\n' @@ -89,7 +89,7 @@ def sendNextLine(self): else: self.data.uploadFlag = 0 self.data.gcodeIndex = 0 - print "Gcode Ended" + print("Gcode Ended") def getmessage (self): #opens a serial connection called self.serialInstance @@ -109,7 +109,7 @@ def getmessage (self): pass else: self.data.message_queue.put("\r\nConnected on port " + self.data.comport + "\r\n") - print("\r\nConnected on port " + self.data.comport + "\r\n") + print(("\r\nConnected on port " + self.data.comport + "\r\n")) gcode = "" msg = "" subReadyFlag = True @@ -179,7 +179,7 @@ def getmessage (self): if self.bufferSpace > len(self.data.gcode[self.data.gcodeIndex]): #if there is space in the buffer keep sending lines self.sendNextLine() except IndexError: - print "index error when reading gcode" #we don't want the whole serial thread to close if the gcode can't be sent because of an index error (file deleted...etc) + print("index error when reading gcode") #we don't want the whole serial thread to close if the gcode can't be sent because of an index error (file deleted...etc) else: if self.bufferSpace == self.bufferSize and self.machineIsReadyForData: #if the receive buffer is empty and the machine has acked the last line complete self.sendNextLine() @@ -188,7 +188,7 @@ def getmessage (self): #Check for serial connection loss #------------------------------------------------------------------------------------- if time.time() - self.lastMessageTime > 2: - print "Connection Timed Out" + print("Connection Timed Out") self.data.message_queue.put("Connection Timed Out\n") if self.data.uploadFlag: self.data.message_queue.put("Message: USB connection lost. This has likely caused the machine to loose it's calibration, which can cause erratic behavior. It is recommended to stop the program, remove the sled, and perform the chain calibration process. Press Continue to override and proceed with the cut.") diff --git a/Settings/__init__.py b/groundcontrol/data_structures/__init__.py similarity index 100% rename from Settings/__init__.py rename to groundcontrol/data_structures/__init__.py diff --git a/DataStructures/data.py b/groundcontrol/data_structures/data.py similarity index 91% rename from DataStructures/data.py rename to groundcontrol/data_structures/data.py index 815374cf..cbc16562 100644 --- a/DataStructures/data.py +++ b/groundcontrol/data_structures/data.py @@ -5,9 +5,10 @@ from kivy.properties import OptionProperty from kivy.properties import NumericProperty from kivy.event import EventDispatcher -from DataStructures.logger import Logger -from DataStructures.loggingQueue import LoggingQueue -import Queue +from groundcontrol.data_structures.logger import Logger +from groundcontrol.data_structures.loggingQueue import LoggingQueue +from groundcontrol.util import get_asset +import queue class Data(EventDispatcher): ''' @@ -78,7 +79,7 @@ class Data(EventDispatcher): ''' fontColor = StringProperty('[color=7a7a7a]') drawingColor = ObjectProperty([.47,.47,.47]) - iconPath = StringProperty('./Images/Icons/normal/') + iconPath = StringProperty(get_asset('images/Icons/normal/')) posIndicatorColor = ObjectProperty([0,0,0]) targetInicatorColor = ObjectProperty([1,0,0]) @@ -95,8 +96,8 @@ class Data(EventDispatcher): Queues ''' message_queue = LoggingQueue(logger) - gcode_queue = Queue.Queue() - quick_queue = Queue.Queue() + gcode_queue = queue.Queue() + quick_queue = queue.Queue() def __init__(self): ''' diff --git a/DataStructures/logger.py b/groundcontrol/data_structures/logger.py similarity index 95% rename from DataStructures/logger.py rename to groundcontrol/data_structures/logger.py index c7bf4034..e1b99f19 100644 --- a/DataStructures/logger.py +++ b/groundcontrol/data_structures/logger.py @@ -5,7 +5,7 @@ ''' -from DataStructures.makesmithInitFuncs import MakesmithInitFuncs +from groundcontrol.data_structures.makesmithInitFuncs import MakesmithInitFuncs import threading @@ -83,7 +83,7 @@ def endRecordingAvgError(self): Stops recording error values. ''' - print "stopping to record" + print("stopping to record") self.recordingPositionalErrors = False def reportAvgError(self): diff --git a/DataStructures/loggingQueue.py b/groundcontrol/data_structures/loggingQueue.py similarity index 94% rename from DataStructures/loggingQueue.py rename to groundcontrol/data_structures/loggingQueue.py index d9edabdb..9b5a1c1e 100644 --- a/DataStructures/loggingQueue.py +++ b/groundcontrol/data_structures/loggingQueue.py @@ -5,7 +5,7 @@ ''' -from Queue import Queue +from queue import Queue class LoggingQueue(Queue, object): diff --git a/DataStructures/makesmithInitFuncs.py b/groundcontrol/data_structures/makesmithInitFuncs.py similarity index 100% rename from DataStructures/makesmithInitFuncs.py rename to groundcontrol/data_structures/makesmithInitFuncs.py diff --git a/global_variables.py b/groundcontrol/global_variables.py similarity index 100% rename from global_variables.py rename to groundcontrol/global_variables.py diff --git a/groundcontrol.kv b/groundcontrol/groundcontrol.kv similarity index 96% rename from groundcontrol.kv rename to groundcontrol/groundcontrol.kv index e3c31613..cb47f249 100755 --- a/groundcontrol.kv +++ b/groundcontrol/groundcontrol.kv @@ -1,4 +1,5 @@ #:kivy 1.9.1 +#:import get_asset groundcontrol.util.get_asset #: #This can be used to create boxes around each widget to clarify positioning issues. It is only for debug @@ -686,7 +687,7 @@ GridLayout: cols: 2 Image: - source: "./Documentation/Calibrate Machine Dimensions/Set Z Height.jpg" + source: get_asset("documentation/Calibrate Machine Dimensions/Set Z Height.jpg") GridLayout: cols: 1 size_hint_x: rightCol @@ -781,9 +782,9 @@ GridLayout: cols: 2 Image: - source: "./Documentation/Calibrate Machine Dimensions/Quadrilateral Kinematics.jpg" + source: get_asset("documentation/Calibrate Machine Dimensions/Quadrilateral Kinematics.jpg") Image: - source: "./Documentation/Calibrate Machine Dimensions/Triangular Kinematics.jpg" + source: get_asset("documentation/Calibrate Machine Dimensions/Triangular Kinematics.jpg") GridLayout: cols: 1 size_hint_x: rightCol @@ -811,9 +812,9 @@ GridLayout: cols: 2 Image: - source: "./Documentation/Calibrate Machine Dimensions/Chain off top.jpg" + source: get_asset("documentation/Calibrate Machine Dimensions/Chain off top.jpg") Image: - source: "./Documentation/Calibrate Machine Dimensions/Chain off bottom.jpg" + source: get_asset("documentation/Calibrate Machine Dimensions/Chain off bottom.jpg") GridLayout: cols: 1 size_hint_x: rightCol @@ -906,7 +907,7 @@ GridLayout: cols: 2 Image: - source: "./Documentation/Calibrate Machine Dimensions/Test Shape Preview Triangular.jpg" + source: get_asset("documentation/Calibrate Machine Dimensions/Test Shape Preview Triangular.jpg") size_hint_x: 0.5 Label: text: root.triangularCalText @@ -1125,11 +1126,11 @@ GridLayout: cols: 3 Image: - source: "./Documentation/Calibrate Machine Dimensions/Test Shape Preview.jpg" + source: get_asset("documentation/Calibrate Machine Dimensions/Test Shape Preview.jpg") Image: - source: "./Documentation/Calibrate Machine Dimensions/Measure Test Shape Horizontal.jpg" + source: get_asset("documentation/Calibrate Machine Dimensions/Measure Test Shape Horizontal.jpg") Image: - source: "./Documentation/Calibrate Machine Dimensions/Measure Test Shape Vertical.jpg" + source: get_asset("documentation/Calibrate Machine Dimensions/Measure Test Shape Vertical.jpg") GridLayout: cols: 1 size_hint_x: rightCol @@ -1180,11 +1181,11 @@ GridLayout: cols: 3 Image: - source: "./Documentation/Calibrate Machine Dimensions/Chain On Left Sprocket.jpg" + source: get_asset("documentation/Calibrate Machine Dimensions/Chain On Left Sprocket.jpg") Image: - source: "./Documentation/Calibrate Machine Dimensions/Chain Between Sprockets.jpg" + source: get_asset("documentation/Calibrate Machine Dimensions/Chain Between Sprockets.jpg") Image: - source: "./Documentation/Calibrate Machine Dimensions/Chain On Right Sprocket.jpg" + source: get_asset("documentation/Calibrate Machine Dimensions/Chain On Right Sprocket.jpg") GridLayout: cols: 1 size_hint_x: rightCol @@ -1227,11 +1228,11 @@ GridLayout: cols: 3 Image: - source: "./Documentation/Calibrate Machine Dimensions/Chain On Left Sprocket.jpg" + source: get_asset("documentation/Calibrate Machine Dimensions/Chain On Left Sprocket.jpg") Image: - source: "./Documentation/Calibrate Machine Dimensions/Chain Between Sprockets.jpg" + source: get_asset("documentation/Calibrate Machine Dimensions/Chain Between Sprockets.jpg") Image: - source: "./Documentation/Calibrate Machine Dimensions/Chain On Right Sprocket.jpg" + source: get_asset("documentation/Calibrate Machine Dimensions/Chain On Right Sprocket.jpg") GridLayout: cols: 1 size_hint_x: rightCol @@ -1264,7 +1265,7 @@ GridLayout: cols: 2 Image: - source: "./Documentation/Calibrate Machine Dimensions/Measure Motor Height.jpg" + source: get_asset("documentation/Calibrate Machine Dimensions/Measure Motor Height.jpg") GridLayout: cols: 1 size_hint_x: rightCol @@ -1295,7 +1296,7 @@ GridLayout: cols: 2 Image: - source: "./Documentation/Calibrate Machine Dimensions/Set Z Height.jpg" + source: get_asset("documentation/Calibrate Machine Dimensions/Set Z Height.jpg") GridLayout: cols: 1 size_hint_x: rightCol @@ -1382,7 +1383,7 @@ text_size: self.size valign: 'middle' Image: - source: "./Documentation/Calibrate Machine Dimensions/Sprocket at 12-00.jpg" + source: get_asset("documentation/Calibrate Machine Dimensions/Sprocket at 12-00.jpg") GridLayout: cols:1 size_hint_x: .4 @@ -1553,7 +1554,7 @@ Image: id: leftImg Image: - source: "./Documentation/Calibrate Machine Dimensions/Sled Attached.jpg" + source: get_asset("documentation/Calibrate Machine Dimensions/Sled Attached.jpg") GridLayout: cols: 1 size_hint_x: rightCol diff --git a/main.py b/groundcontrol/main.py similarity index 92% rename from main.py rename to groundcontrol/main.py index faf4046d..e3bc58e3 100755 --- a/main.py +++ b/groundcontrol/main.py @@ -3,6 +3,8 @@ Kivy Imports ''' +from groundcontrol.util import get_asset + from kivy.config import Config Config.set('input', 'mouse', 'mouse,disable_multitouch') Config.set('graphics', 'minimum_width', '620') @@ -18,32 +20,31 @@ from kivy.clock import Clock from kivy.uix.popup import Popup import math -import global_variables +import groundcontrol.global_variables as global_variables import sys import re import json - ''' Internal Module Imports ''' -from UIElements.frontPage import FrontPage -from UIElements.screenControls import ScreenControls -from UIElements.gcodeCanvas import GcodeCanvas -from UIElements.otherFeatures import OtherFeatures -from UIElements.softwareSettings import SoftwareSettings -from UIElements.viewMenu import ViewMenu -from UIElements.runMenu import RunMenu -from UIElements.connectMenu import ConnectMenu -from UIElements.diagnosticsMenu import Diagnostics -from UIElements.manualControls import ManualControl -from DataStructures.data import Data -from Connection.nonVisibleWidgets import NonVisibleWidgets -from UIElements.notificationPopup import NotificationPopup -from Settings import maslowSettings -from UIElements.backgroundMenu import BackgroundMenu +from groundcontrol.ui_elements.frontPage import FrontPage +from groundcontrol.ui_elements.screenControls import ScreenControls +from groundcontrol.ui_elements.gcodeCanvas import GcodeCanvas +from groundcontrol.ui_elements.otherFeatures import OtherFeatures +from groundcontrol.ui_elements.softwareSettings import SoftwareSettings +from groundcontrol.ui_elements.viewMenu import ViewMenu +from groundcontrol.ui_elements.runMenu import RunMenu +from groundcontrol.ui_elements.connectMenu import ConnectMenu +from groundcontrol.ui_elements.diagnosticsMenu import Diagnostics +from groundcontrol.ui_elements.manualControls import ManualControl +from groundcontrol.data_structures.data import Data +from groundcontrol.connection.nonVisibleWidgets import NonVisibleWidgets +from groundcontrol.ui_elements.notificationPopup import NotificationPopup +from groundcontrol.settings import maslowSettings +from groundcontrol.ui_elements.backgroundMenu import BackgroundMenu ''' Main UI Program @@ -62,21 +63,21 @@ def build(self): self.data = Data() if self.config.get('Maslow Settings', 'colorScheme') == 'Light': - self.data.iconPath = './Images/Icons/normal/' + self.data.iconPath = get_asset('images/Icons/normal/') self.data.fontColor = '[color=7a7a7a]' self.data.drawingColor = [.47,.47,.47] Window.clearcolor = (1, 1, 1, 1) self.data.posIndicatorColor = [0,0,0] self.data.targetInicatorColor = [1,0,0] elif self.config.get('Maslow Settings', 'colorScheme') == 'Dark': - self.data.iconPath = './Images/Icons/highvis/' + self.data.iconPath = get_asset('images/Icons/highvis/') self.data.fontColor = '[color=000000]' self.data.drawingColor = [1,1,1] Window.clearcolor = (0, 0, 0, 1) self.data.posIndicatorColor = [1,1,1] self.data.targetInicatorColor = [1,0,0] elif self.config.get('Maslow Settings', 'colorScheme') == 'DarkGreyBlue': - self.data.iconPath = './Images/Icons/darkgreyblue/' + self.data.iconPath = get_asset('images/Icons/darkgreyblue/') self.data.fontColor = '[color=000000]' self.data.drawingColor = [1,1,1] Window.clearcolor = (0.06, 0.10, 0.2, 1) @@ -165,7 +166,6 @@ def build_settings(self, settings): """ Add custom section to the default configuration object. """ - settings.add_json_panel('Maslow Settings', self.config, data=maslowSettings.getJSONSettingSection('Maslow Settings')) settings.add_json_panel('Advanced Settings', self.config, data=maslowSettings.getJSONSettingSection('Advanced Settings')) settings.add_json_panel('Ground Control Settings', self.config, data=maslowSettings.getJSONSettingSection("Ground Control Settings")) @@ -342,7 +342,7 @@ def runPeriodically(self, *args): try: self.data.measureRequest(measuredDist) except: - print "No function has requested a measurement" + print("No function has requested a measurement") elif message[0:13] == "Maslow Paused": self.data.uploadFlag = 0 self.writeToTextConsole(message) @@ -458,7 +458,7 @@ def setPosOnScreen(self, message): self.writeToTextConsole("Unable to resolve z Kinematics.") self.zval = 0 except: - print "One Machine Position Report Command Misread" + print("One Machine Position Report Command Misread") return self.frontpage.setPosReadout(self.xval, self.yval, self.zval) @@ -491,7 +491,10 @@ def setErrorOnScreen(self, message): except: - print "Machine Position Report Command Misread Happened Once" + print("Machine Position Report Command Misread Happened Once") -if __name__ == '__main__': +def main(): GroundControlApp().run() + +if __name__ == '__main__': + main() diff --git a/RefineCalibrationParameters/.gitignore b/groundcontrol/refine_calibration_parameters/.gitignore similarity index 100% rename from RefineCalibrationParameters/.gitignore rename to groundcontrol/refine_calibration_parameters/.gitignore diff --git a/RefineCalibrationParameters/3x3GridMarks.nc b/groundcontrol/refine_calibration_parameters/3x3GridMarks.nc similarity index 100% rename from RefineCalibrationParameters/3x3GridMarks.nc rename to groundcontrol/refine_calibration_parameters/3x3GridMarks.nc diff --git a/RefineCalibrationParameters/calibration_helpers.py b/groundcontrol/refine_calibration_parameters/calibration_helpers.py similarity index 99% rename from RefineCalibrationParameters/calibration_helpers.py rename to groundcontrol/refine_calibration_parameters/calibration_helpers.py index 55351b1e..306b150a 100644 --- a/RefineCalibrationParameters/calibration_helpers.py +++ b/groundcontrol/refine_calibration_parameters/calibration_helpers.py @@ -1,11 +1,10 @@ #!/usr/bin/env python3 import math -import logging import numpy -from kinematics import Kinematics, Calibration +from groundcontrol.refine_calibration_parameters.kinematics import Kinematics, Calibration #################################################################################################################### # globals diff --git a/RefineCalibrationParameters/kinematics.py b/groundcontrol/refine_calibration_parameters/kinematics.py similarity index 99% rename from RefineCalibrationParameters/kinematics.py rename to groundcontrol/refine_calibration_parameters/kinematics.py index 13736c31..16a37ff2 100644 --- a/RefineCalibrationParameters/kinematics.py +++ b/groundcontrol/refine_calibration_parameters/kinematics.py @@ -430,7 +430,7 @@ def forward(self, chainALength, chainBLength): #if we've converged on the point...or it's time to give up, exit the loop if((abs(aChainError) < .01 and abs(bChainError) < .01) or guessCount > 5000): if(guessCount > 5000): - print ("Message: Unable to find valid machine position. Please calibrate chain lengths.",aChainError,bChainError,xGuess,yGuess) + print(("Message: Unable to find valid machine position. Please calibrate chain lengths.",aChainError,bChainError,xGuess,yGuess)) return 0, 0 else: return xGuess, yGuess diff --git a/RefineCalibrationParameters/refine_calibration_parameters.py b/groundcontrol/refine_calibration_parameters/refine_calibration_parameters.py similarity index 81% rename from RefineCalibrationParameters/refine_calibration_parameters.py rename to groundcontrol/refine_calibration_parameters/refine_calibration_parameters.py index 51ddf5c5..adc7e825 100755 --- a/RefineCalibrationParameters/refine_calibration_parameters.py +++ b/groundcontrol/refine_calibration_parameters/refine_calibration_parameters.py @@ -8,7 +8,7 @@ import math -import calibration_helpers +import groundcontrol.refine_calibration_parameters.calibration_helpers as calibration_helpers ################################## # globals @@ -63,13 +63,13 @@ calibration = calibration_helpers.constructKinematicsCalibrationObject( settings ) # print initial calibration values -print( 'Initial D = {:.03f}'.format( calibration.D ) ) -print( 'Initial R = {:.03f}'.format( calibration.R ) ) -print( 'Initial motorOffsetY = {:.03f}'.format( calibration.motorOffsetY ) ) -print( 'Initial rotationDiskRadius = {:.03f}'.format( calibration.rotationDiskRadius ) ) -print( 'Initial chainSagCorrection = {:.03f}'.format( calibration.chainSagCorrection ) ) -print( 'Initial motorOffsetX = {:.03f}'.format( calibration.motorOffsetX ) ) -print( 'Initial rightMotorDeltaY = {:.03f}'.format( calibration.rightMotorDeltaY ) ) +print(( 'Initial D = {:.03f}'.format( calibration.D ) )) +print(( 'Initial R = {:.03f}'.format( calibration.R ) )) +print(( 'Initial motorOffsetY = {:.03f}'.format( calibration.motorOffsetY ) )) +print(( 'Initial rotationDiskRadius = {:.03f}'.format( calibration.rotationDiskRadius ) )) +print(( 'Initial chainSagCorrection = {:.03f}'.format( calibration.chainSagCorrection ) )) +print(( 'Initial motorOffsetX = {:.03f}'.format( calibration.motorOffsetX ) )) +print(( 'Initial rightMotorDeltaY = {:.03f}'.format( calibration.rightMotorDeltaY ) )) print( '\n\n\n' ) # read the measurements .ini file @@ -133,7 +133,7 @@ def computeNegLogConvergence( newError, oldError ): parameters = newParameters cost = oldCost - print( 'Iteration count = {!r}'.format( iterationCount ) ) + print(( 'Iteration count = {!r}'.format( iterationCount ) )) # increment iteration count iterationCount += 1 @@ -142,13 +142,13 @@ def computeNegLogConvergence( newError, oldError ): costFunction.setCalibrationFromParameters( parameters, calibration ) # print out the final calibration -print( 'Final D = {:.03f}'.format( calibration.D ) ) -print( 'Final R = {:.03f}'.format( calibration.R ) ) -print( 'Final motorOffsetY = {:.03f}'.format( calibration.motorOffsetY ) ) -print( 'Final rotationDiskRadius = {:.03f}'.format( calibration.rotationDiskRadius ) ) -print( 'Final chainSagCorrection = {:.03f}'.format( calibration.chainSagCorrection ) ) -print( 'Final motorOffsetX = {:.03f}'.format( calibration.motorOffsetX ) ) -print( 'Final rightMotorDeltaY = {:.03f}'.format( calibration.rightMotorDeltaY ) ) +print(( 'Final D = {:.03f}'.format( calibration.D ) )) +print(( 'Final R = {:.03f}'.format( calibration.R ) )) +print(( 'Final motorOffsetY = {:.03f}'.format( calibration.motorOffsetY ) )) +print(( 'Final rotationDiskRadius = {:.03f}'.format( calibration.rotationDiskRadius ) )) +print(( 'Final chainSagCorrection = {:.03f}'.format( calibration.chainSagCorrection ) )) +print(( 'Final motorOffsetX = {:.03f}'.format( calibration.motorOffsetX ) )) +print(( 'Final rightMotorDeltaY = {:.03f}'.format( calibration.rightMotorDeltaY ) )) # log final residuals kinematics = costFunction.constructKinematics( calibration ) diff --git a/Simulation/__init__.py b/groundcontrol/settings/__init__.py similarity index 100% rename from Simulation/__init__.py rename to groundcontrol/settings/__init__.py diff --git a/Settings/maslowSettings.py b/groundcontrol/settings/maslowSettings.py similarity index 97% rename from Settings/maslowSettings.py rename to groundcontrol/settings/maslowSettings.py index fc8fc96e..a2574301 100644 --- a/Settings/maslowSettings.py +++ b/groundcontrol/settings/maslowSettings.py @@ -179,7 +179,7 @@ "desc": "Max depth the z axis should plunge in order to find the touch probe", "key": "maxTouchProbePlungeDistance", "default": 0.0, - }, + }, { "type": "string", "title": "Encoder Steps per Revolution", @@ -255,7 +255,7 @@ "title": "Spindle Automation", "desc": "How should the spindle start and stop automatically based on gcode? Leave off for none, or set external servo control, or external relay control, active high or low.", "key": "spindleAutomate", - "options": ["None", "Servo", "Relay_High", "Relay_Low"], + "options": ["None", "Servo", "Relay_High", "Relay_Low"], "default": "None", "firmwareKey": 17 }, @@ -642,12 +642,17 @@ def getJSONSettingSection(section): options = [] if section in settings: options = settings[section] + + valid_options = [] for option in options: option['section'] = section if 'desc' in option and 'default' in option: if not "default setting:" in option['desc']: #check to see if the default text has already been added option['desc'] += "\ndefault setting: " + str(option['default']) - return json.dumps(options) + valid_options.append( + {key: option[key] for key in ['type', 'title', 'desc', 'section', 'key']} + ) + return json.dumps(valid_options) def getDefaultValueSection(section): ''' @@ -686,20 +691,20 @@ def syncFirmwareKey(firmwareKey, value, data): if 'firmwareKey' in option and option['firmwareKey'] == firmwareKey: storedValue = data.config.get(section, option['key']) - if (option['key'] == "spindleAutomate"): - if (storedValue == "Servo"): - storedValue = 1 - elif (storedValue == "Relay_High"): - storedValue = 2 - elif (storedValue == "Relay_Low"): - storedValue = 3 - else: - storedValue = 0 + if (option['key'] == "spindleAutomate"): + if (storedValue == "Servo"): + storedValue = 1 + elif (storedValue == "Relay_High"): + storedValue = 2 + elif (storedValue == "Relay_Low"): + storedValue = 3 + else: + storedValue = 0 - if not isClose(float(storedValue), value): - data.gcode_queue.put("$" + str(firmwareKey) + "=" + str(storedValue)) - else: - break + if not isClose(float(storedValue), value): + data.gcode_queue.put("$" + str(firmwareKey) + "=" + str(storedValue)) + else: + break return def isClose(a, b, rel_tol=1e-06): diff --git a/UIElements/__init__.py b/groundcontrol/simulation/__init__.py similarity index 100% rename from UIElements/__init__.py rename to groundcontrol/simulation/__init__.py diff --git a/Simulation/kinematics.py b/groundcontrol/simulation/kinematics.py similarity index 99% rename from Simulation/kinematics.py rename to groundcontrol/simulation/kinematics.py index 83030c53..5d18d086 100644 --- a/Simulation/kinematics.py +++ b/groundcontrol/simulation/kinematics.py @@ -278,7 +278,7 @@ def quadrilateralInverse(self, xTarget, yTarget): if (Tries > self.MaxTries): - print "unable to calculate chain lengths" + print("unable to calculate chain lengths") #Variables are within accuracy limits # perform output computation @@ -346,7 +346,7 @@ def forward(self, chainALength, chainBLength): #if we've converged on the point...or it's time to give up, exit the loop if((abs(aChainError) < .01 and abs(bChainError) < .01) or guessCount > 5000): if(guessCount > 5000): - print "Message: Unable to find valid machine position. Please calibrate chain lengths.",aChainError,bChainError,xGuess,yGuess + print("Message: Unable to find valid machine position. Please calibrate chain lengths.",aChainError,bChainError,xGuess,yGuess) return 0, 0 else: return xGuess, yGuess diff --git a/Simulation/simulationCanvas.py b/groundcontrol/simulation/simulationCanvas.py similarity index 97% rename from Simulation/simulationCanvas.py rename to groundcontrol/simulation/simulationCanvas.py index aedf1c9a..fcd3a6e0 100644 --- a/Simulation/simulationCanvas.py +++ b/groundcontrol/simulation/simulationCanvas.py @@ -3,8 +3,8 @@ from kivy.graphics import Color, Ellipse, Line from kivy.graphics.transformation import Matrix from kivy.core.window import Window -from kinematics import Kinematics -from testPoint import TestPoint +from groundcontrol.simulation.kinematics import Kinematics +from groundcontrol.simulation.testPoint import TestPoint from kivy.graphics.transformation import Matrix from kivy.clock import Clock from functools import partial @@ -104,8 +104,8 @@ def recompute(self): self.listOfPointsPlotted = [] self.listOfDistortedPoints = [] self.pointIndex = 0 - self.verticalPoints = range(int(int(topBottomBound/self.gridSize.value)*self.gridSize.value), -topBottomBound, -1 * int(self.gridSize.value)) - self.horizontalPoints = range(int(int(leftRigthBound/self.gridSize.value)*self.gridSize.value), -leftRigthBound, -1 * int(self.gridSize.value)) + self.verticalPoints = list(range(int(int(topBottomBound/self.gridSize.value)*self.gridSize.value), -topBottomBound, -1 * int(self.gridSize.value))) + self.horizontalPoints = list(range(int(int(leftRigthBound/self.gridSize.value)*self.gridSize.value), -leftRigthBound, -1 * int(self.gridSize.value))) self.doSpecificCalculation() self.scatterInstance.canvas.clear() diff --git a/Simulation/testPoint.py b/groundcontrol/simulation/testPoint.py similarity index 96% rename from Simulation/testPoint.py rename to groundcontrol/simulation/testPoint.py index 00b45126..f7ea743e 100644 --- a/Simulation/testPoint.py +++ b/groundcontrol/simulation/testPoint.py @@ -1,6 +1,6 @@ from kivy.uix.gridlayout import GridLayout from kivy.properties import NumericProperty, ObjectProperty -from kinematics import Kinematics +from groundcontrol.simulation.kinematics import Kinematics from kivy.graphics import Color, Ellipse, Line import math diff --git a/groundcontrol/ui_elements/__init__.py b/groundcontrol/ui_elements/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/UIElements/backgroundMenu.py b/groundcontrol/ui_elements/backgroundMenu.py similarity index 95% rename from UIElements/backgroundMenu.py rename to groundcontrol/ui_elements/backgroundMenu.py index 96d8389f..ee21137b 100644 --- a/UIElements/backgroundMenu.py +++ b/groundcontrol/ui_elements/backgroundMenu.py @@ -1,13 +1,12 @@ import os from kivy.uix.gridlayout import GridLayout -from UIElements.fileBrowser import FileBrowser +from groundcontrol.ui_elements.fileBrowser import FileBrowser from kivy.uix.popup import Popup -from DataStructures.makesmithInitFuncs import MakesmithInitFuncs -from UIElements.backgroundPickDlg import BackgroundPickDlg +from groundcontrol.data_structures.makesmithInitFuncs import MakesmithInitFuncs +from groundcontrol.ui_elements.backgroundPickDlg import BackgroundPickDlg from kivy.core.image import Image as CoreImage from PIL import Image as PILImage from io import BytesIO -import json graphicsExtensions = (".jpg", ".png", ".jp2",".webp",".pbm",".ppm",".pgm") diff --git a/UIElements/backgroundPickDlg.py b/groundcontrol/ui_elements/backgroundPickDlg.py similarity index 97% rename from UIElements/backgroundPickDlg.py rename to groundcontrol/ui_elements/backgroundPickDlg.py index 41a86c71..9245d1d1 100644 --- a/UIElements/backgroundPickDlg.py +++ b/groundcontrol/ui_elements/backgroundPickDlg.py @@ -1,6 +1,6 @@ from kivy.uix.gridlayout import GridLayout from kivy.properties import StringProperty, ListProperty, ObjectProperty -from DataStructures.makesmithInitFuncs import MakesmithInitFuncs +from groundcontrol.data_structures.makesmithInitFuncs import MakesmithInitFuncs from kivy.vector import Vector diff --git a/UIElements/buttonTemplate.py b/groundcontrol/ui_elements/buttonTemplate.py similarity index 100% rename from UIElements/buttonTemplate.py rename to groundcontrol/ui_elements/buttonTemplate.py diff --git a/UIElements/connectMenu.py b/groundcontrol/ui_elements/connectMenu.py similarity index 94% rename from UIElements/connectMenu.py rename to groundcontrol/ui_elements/connectMenu.py index fb11b327..b3d4fedd 100644 --- a/UIElements/connectMenu.py +++ b/groundcontrol/ui_elements/connectMenu.py @@ -1,11 +1,10 @@ from kivy.uix.floatlayout import FloatLayout from kivy.properties import ListProperty -from DataStructures.makesmithInitFuncs import MakesmithInitFuncs +from groundcontrol.data_structures.makesmithInitFuncs import MakesmithInitFuncs import sys import glob import serial -import threading import serial.tools.list_ports class ConnectMenu(FloatLayout, MakesmithInitFuncs): @@ -13,8 +12,8 @@ class ConnectMenu(FloatLayout, MakesmithInitFuncs): COMports = ListProperty(("Available Ports:", "None")) def setPort(self, port): - print "update ports" - print port + print("update ports") + print(port) self.data.comport = port def connect(self, *args): diff --git a/UIElements/diagnosticsMenu.py b/groundcontrol/ui_elements/diagnosticsMenu.py similarity index 94% rename from UIElements/diagnosticsMenu.py rename to groundcontrol/ui_elements/diagnosticsMenu.py index f41af13a..cabd4c99 100644 --- a/UIElements/diagnosticsMenu.py +++ b/groundcontrol/ui_elements/diagnosticsMenu.py @@ -1,9 +1,9 @@ from kivy.uix.floatlayout import FloatLayout -from DataStructures.makesmithInitFuncs import MakesmithInitFuncs -from UIElements.scrollableTextPopup import ScrollableTextPopup +from groundcontrol.data_structures.makesmithInitFuncs import MakesmithInitFuncs +from groundcontrol.ui_elements.scrollableTextPopup import ScrollableTextPopup from kivy.uix.popup import Popup -from CalibrationWidgets.calibrationFrameWidget import CalibrationFrameWidget -from Simulation.simulationCanvas import SimulationCanvas +from groundcontrol.calibration_widgets.calibrationFrameWidget import CalibrationFrameWidget +from groundcontrol.simulation.simulationCanvas import SimulationCanvas from kivy.clock import Clock from kivy.app import App import sys @@ -128,7 +128,7 @@ def dismissCalibrationPopup(self): self._popup.dismiss() def launchSimulation(self): - print "launch simulation" + print("launch simulation") self.popupContent = SimulationCanvas() self.popupContent.data = self.data self.popupContent.initialize() diff --git a/UIElements/fileBrowser.py b/groundcontrol/ui_elements/fileBrowser.py similarity index 97% rename from UIElements/fileBrowser.py rename to groundcontrol/ui_elements/fileBrowser.py index 0f3c2179..a09c9cd3 100644 --- a/UIElements/fileBrowser.py +++ b/groundcontrol/ui_elements/fileBrowser.py @@ -108,22 +108,22 @@ def get_drives(): if bitmask & 1: name = create_unicode_buffer(64) # get name of the drive - drive = letter + u':' + drive = letter + ':' res = GetVolumeInformationW(drive + sep, name, 64, None, None, None, None, 0) drives.append((drive, name.value)) bitmask >>= 1 elif platform == 'linux': drives.append((sep, sep)) - drives.append((expanduser(u'~'), '~/')) - places = (sep + u'mnt', sep + u'media') + drives.append((expanduser('~'), '~/')) + places = (sep + 'mnt', sep + 'media') for place in places: if isdir(place): for directory in next(walk(place))[1]: drives.append((place + sep + directory, directory)) elif platform == 'macosx' or platform == 'ios': - drives.append((expanduser(u'~'), '~/')) - vol = sep + u'Volume' + drives.append((expanduser('~'), '~/')) + vol = sep + 'Volume' if isdir(vol): for drive in next(walk(vol))[1]: drives.append((vol + sep + drive, drive)) @@ -285,7 +285,7 @@ def reload_drives(self): sig_new = [] for path, name in get_drives(): if platform == 'win': - text = u'{}({})'.format((name + ' ') if name else '', path) + text = '{}({})'.format((name + ' ') if name else '', path) else: text = name nodes_new.append((text, path)) @@ -382,7 +382,7 @@ class FileBrowser(BoxLayout): .. versionchanged:: 1.1 ''' - path = StringProperty(u'/') + path = StringProperty('/') ''' :class:`~kivy.properties.StringProperty`, defaults to the current working directory as a unicode string. It specifies the path on the filesystem that @@ -528,9 +528,9 @@ def _fbrowser_canceled(self, instance): print('cancelled, Close self.') def _fbrowser_success(self, instance): - print(instance.selection) + print((instance.selection)) def _fbrowser_submit(self, instance): - print(instance.selection) + print((instance.selection)) TestApp().run() diff --git a/UIElements/frontPage.py b/groundcontrol/ui_elements/frontPage.py similarity index 94% rename from UIElements/frontPage.py rename to groundcontrol/ui_elements/frontPage.py index 1abe503f..4565d30b 100644 --- a/UIElements/frontPage.py +++ b/groundcontrol/ui_elements/frontPage.py @@ -8,15 +8,22 @@ from kivy.uix.screenmanager import Screen from kivy.properties import ObjectProperty, StringProperty -from DataStructures.makesmithInitFuncs import MakesmithInitFuncs +from groundcontrol.data_structures.makesmithInitFuncs import MakesmithInitFuncs from kivy.uix.popup import Popup -from UIElements.touchNumberInput import TouchNumberInput -from UIElements.zAxisPopupContent import ZAxisPopupContent -from DataStructures.data import Data +from groundcontrol.ui_elements.touchNumberInput import TouchNumberInput +from groundcontrol.ui_elements.zAxisPopupContent import ZAxisPopupContent +from groundcontrol.data_structures.data import Data from math import sqrt from time import time import re -import global_variables +import groundcontrol.global_variables as global_variables + +from groundcontrol.ui_elements.gcodeCanvas import GcodeCanvas +from groundcontrol.ui_elements.modernMenu import MenuSpawner +from groundcontrol.ui_elements.buttonTemplate import ButtonTemplate +from groundcontrol.ui_elements.scrollableLabel import ScrollableLabel +from groundcontrol.ui_elements.screenControls import ScreenControls + class FrontPage(Screen, MakesmithInitFuncs): textconsole = ObjectProperty(None) @@ -123,12 +130,12 @@ def setPosReadout(self, xPos, yPos, zPos): self.tick+=1 if self.tick>=4: #Can't do this every time... it's too noisy, so we do it every 5rd time (0.1s). self.tick=0 - if self.lasttime <> 0.0: + if self.lasttime != 0.0: try: delta = sqrt( (xPos-self.lastpos[0])*(xPos-self.lastpos[0]) + (yPos-self.lastpos[1])*(yPos-self.lastpos[1]) + (zPos-self.lastpos[2]) * (zPos-self.lastpos[2])) Vel = delta / (time()-self.lasttime) * 60.0 #In XXXX/minute except: - print "unable to compute velocity" + print("unable to compute velocity") Vel = 0 else: Vel=0 @@ -254,7 +261,7 @@ def moveGcodeIndex(self, dist): self.gcodecanvas.positionIndicator.setPos(xTarget,yTarget,self.data.units) except: - print "Unable to update position for new gcode line" + print("Unable to update position for new gcode line") def pause(self): if self.holdBtn.secretText == "HOLD": @@ -272,7 +279,7 @@ def jmpsize(self): pass def test(self): - print "test has no current function" + print("test has no current function") def upLeft(self): self.jmpsize() @@ -372,7 +379,7 @@ def sendLine(self): self.data.gcode_queue.put(self.data.gcode[self.data.gcodeIndex]) self.data.gcodeIndex = self.data.gcodeIndex + 1 except: - print "gcode run complete" + print("gcode run complete") self.gcodecanvas.uploadFlag = 0 self.data.gcodeIndex = 0 @@ -446,8 +453,7 @@ def dismiss_popup(self): pass #If what was entered cannot be converted to a number, leave the value the same self._popup.dismiss() - def gotoLinePopup(self): - + def gotoLinePopup(self): self.popupContent = TouchNumberInput(done=self.dismiss_gotoLinePopup, data=self.data) self._popup = Popup(title="Go to gcode line", content=self.popupContent, size_hint=(0.9, 0.9)) diff --git a/UIElements/gcodeCanvas.py b/groundcontrol/ui_elements/gcodeCanvas.py similarity index 96% rename from UIElements/gcodeCanvas.py rename to groundcontrol/ui_elements/gcodeCanvas.py index 4a994d5a..cd318b32 100644 --- a/UIElements/gcodeCanvas.py +++ b/groundcontrol/ui_elements/gcodeCanvas.py @@ -6,23 +6,18 @@ ''' from kivy.uix.floatlayout import FloatLayout -from kivy.properties import NumericProperty, ObjectProperty -from kivy.graphics import Color, Ellipse, Line, Point +from kivy.graphics import Color, Line from kivy.clock import Clock -from DataStructures.makesmithInitFuncs import MakesmithInitFuncs -from UIElements.positionIndicator import PositionIndicator -from UIElements.viewMenu import ViewMenu +from groundcontrol.data_structures.makesmithInitFuncs import MakesmithInitFuncs +from groundcontrol.ui_elements.positionIndicator import PositionIndicator from kivy.graphics.transformation import Matrix from kivy.core.window import Window -from UIElements.modernMenu import ModernMenu from kivy.metrics import dp -from kivy.graphics.texture import Texture from kivy.graphics import Rectangle import re import math -import global_variables -import sys +import groundcontrol.global_variables as global_variables class GcodeCanvas(FloatLayout, MakesmithInitFuncs): @@ -314,7 +309,7 @@ def drawLine(self,gCodeLine,command): self.yPosition = yTarget self.zPosition = zTarget except: - print "Unable to draw line on screen: " + gCodeLine + print("Unable to draw line on screen: " + gCodeLine) def drawArc(self,gCodeLine,command): ''' @@ -385,7 +380,7 @@ def drawArc(self,gCodeLine,command): self.xPosition = xTarget self.yPosition = yTarget except: - print "Unable to draw arc on screen: " + gCodeLine + print("Unable to draw arc on screen: " + gCodeLine) def clearGcode(self): ''' @@ -491,8 +486,8 @@ def moveLine(self, gCodeLine): return gCodeLine except ValueError: - print "line could not be moved:" - print originalLine + print("line could not be moved:") + print(originalLine) return originalLine def loadNextLine(self): @@ -557,7 +552,7 @@ def updateOneLine(self, fullString): pass if gString == 'G18': - print "G18 not supported" + print("G18 not supported") if gString == 'G20': self.canvasScaleFactor = self.INCHES @@ -615,7 +610,7 @@ def updateGcode(self, *args): #Check to see if file is too large to load if len(self.data.gcode) > self.maxNumberOfLinesToRead: errorText = "The current file contains " + str(len(self.data.gcode)) + " lines of gcode.\nrendering all " + str(len(self.data.gcode)) + " lines simultaneously may crash the\n program, only the first " + self.maxNumberOfLinesToRead + "lines are shown here.\nThe complete program will cut if you choose to do so unless the home position is moved from (0,0)." - print errorText + print(errorText) self.data.message_queue.put("Message: " + errorText) self.callBackMechanism(self.updateGcode) diff --git a/UIElements/manualControls.py b/groundcontrol/ui_elements/manualControls.py similarity index 100% rename from UIElements/manualControls.py rename to groundcontrol/ui_elements/manualControls.py diff --git a/UIElements/modernMenu.py b/groundcontrol/ui_elements/modernMenu.py similarity index 96% rename from UIElements/modernMenu.py rename to groundcontrol/ui_elements/modernMenu.py index d940445d..defd1819 100644 --- a/UIElements/modernMenu.py +++ b/groundcontrol/ui_elements/modernMenu.py @@ -3,19 +3,19 @@ from kivy.uix.widget import Widget from kivy.uix.label import Label from kivy.uix.behaviors import ButtonBehavior -from kivy.lang import Builder from kivy.clock import Clock from kivy.animation import Animation from kivy.properties import ( NumericProperty, ListProperty, ObjectProperty, DictProperty) -from kivy.app import App from functools import partial from copy import copy -def dist((x1, y1), (x2, y2)): +def dist(xxx_todo_changeme, xxx_todo_changeme1): + (x1, y1) = xxx_todo_changeme + (x2, y2) = xxx_todo_changeme1 return ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 5 @@ -80,7 +80,7 @@ def open_menu(self, *args): if ml.text == '[color=3333ff]Set Home[/color]': ml.callback = partial(self.parent.parent.parent.setHome, self.xPosition, self.yPosition) except: - print "unable to link circular menu functions" + print("unable to link circular menu functions") self.animation.start(ml) self.add_widget(ml) diff --git a/UIElements/notificationPopup.py b/groundcontrol/ui_elements/notificationPopup.py similarity index 87% rename from UIElements/notificationPopup.py rename to groundcontrol/ui_elements/notificationPopup.py index a56f2808..49b66776 100644 --- a/UIElements/notificationPopup.py +++ b/groundcontrol/ui_elements/notificationPopup.py @@ -1,7 +1,6 @@ from kivy.uix.floatlayout import FloatLayout from kivy.properties import ObjectProperty from kivy.properties import StringProperty -from UIElements.scrollableLabel import ScrollableLabel class NotificationPopup(FloatLayout): diff --git a/UIElements/otherFeatures.py b/groundcontrol/ui_elements/otherFeatures.py similarity index 90% rename from UIElements/otherFeatures.py rename to groundcontrol/ui_elements/otherFeatures.py index b677790b..6d4b362c 100644 --- a/UIElements/otherFeatures.py +++ b/groundcontrol/ui_elements/otherFeatures.py @@ -1,6 +1,6 @@ from kivy.uix.screenmanager import Screen from kivy.properties import ObjectProperty -from DataStructures.makesmithInitFuncs import MakesmithInitFuncs +from groundcontrol.data_structures.makesmithInitFuncs import MakesmithInitFuncs class OtherFeatures(Screen, MakesmithInitFuncs): diff --git a/UIElements/pageableTextPopup.py b/groundcontrol/ui_elements/pageableTextPopup.py similarity index 88% rename from UIElements/pageableTextPopup.py rename to groundcontrol/ui_elements/pageableTextPopup.py index 9cc582ef..a389fb44 100644 --- a/UIElements/pageableTextPopup.py +++ b/groundcontrol/ui_elements/pageableTextPopup.py @@ -1,7 +1,6 @@ from kivy.uix.floatlayout import FloatLayout from kivy.properties import ObjectProperty from kivy.properties import StringProperty -from UIElements.scrollableLabel import ScrollableLabel class PageableTextPopup(FloatLayout): diff --git a/UIElements/positionIndicator.py b/groundcontrol/ui_elements/positionIndicator.py similarity index 91% rename from UIElements/positionIndicator.py rename to groundcontrol/ui_elements/positionIndicator.py index dd4338a6..c4b69e4e 100644 --- a/UIElements/positionIndicator.py +++ b/groundcontrol/ui_elements/positionIndicator.py @@ -1,6 +1,4 @@ -from DataStructures.makesmithInitFuncs import MakesmithInitFuncs from kivy.uix.widget import Widget -from kivy.graphics import Color from kivy.properties import ObjectProperty from kivy.properties import NumericProperty diff --git a/UIElements/runMenu.py b/groundcontrol/ui_elements/runMenu.py similarity index 100% rename from UIElements/runMenu.py rename to groundcontrol/ui_elements/runMenu.py diff --git a/UIElements/saveDialog.py b/groundcontrol/ui_elements/saveDialog.py similarity index 100% rename from UIElements/saveDialog.py rename to groundcontrol/ui_elements/saveDialog.py diff --git a/UIElements/screenControls.py b/groundcontrol/ui_elements/screenControls.py similarity index 86% rename from UIElements/screenControls.py rename to groundcontrol/ui_elements/screenControls.py index 109e8175..051c36d5 100644 --- a/UIElements/screenControls.py +++ b/groundcontrol/ui_elements/screenControls.py @@ -1,11 +1,10 @@ from kivy.uix.floatlayout import FloatLayout from kivy.uix.popup import Popup -from UIElements.otherFeatures import OtherFeatures -from DataStructures.makesmithInitFuncs import MakesmithInitFuncs -from UIElements.buttonTemplate import ButtonTemplate +from groundcontrol.ui_elements.otherFeatures import OtherFeatures +from groundcontrol.data_structures.makesmithInitFuncs import MakesmithInitFuncs from kivy.app import App -from UIElements.backgroundMenu import BackgroundMenu - +from groundcontrol.ui_elements.backgroundMenu import BackgroundMenu +from groundcontrol.ui_elements.viewMenu import ViewMenu class ScreenControls(FloatLayout, MakesmithInitFuncs): diff --git a/UIElements/scrollableLabel.py b/groundcontrol/ui_elements/scrollableLabel.py similarity index 92% rename from UIElements/scrollableLabel.py rename to groundcontrol/ui_elements/scrollableLabel.py index bf4acae4..6a9a8697 100644 --- a/UIElements/scrollableLabel.py +++ b/groundcontrol/ui_elements/scrollableLabel.py @@ -1,4 +1,3 @@ -from kivy.uix.label import Label from kivy.uix.scrollview import ScrollView from kivy.properties import StringProperty diff --git a/UIElements/scrollableTextPopup.py b/groundcontrol/ui_elements/scrollableTextPopup.py similarity index 87% rename from UIElements/scrollableTextPopup.py rename to groundcontrol/ui_elements/scrollableTextPopup.py index f323d1d1..06f935a2 100644 --- a/UIElements/scrollableTextPopup.py +++ b/groundcontrol/ui_elements/scrollableTextPopup.py @@ -1,7 +1,6 @@ from kivy.uix.floatlayout import FloatLayout from kivy.properties import ObjectProperty from kivy.properties import StringProperty -from UIElements.scrollableLabel import ScrollableLabel class ScrollableTextPopup(FloatLayout): diff --git a/UIElements/softwareSettings.py b/groundcontrol/ui_elements/softwareSettings.py similarity index 100% rename from UIElements/softwareSettings.py rename to groundcontrol/ui_elements/softwareSettings.py diff --git a/UIElements/touchNumberInput.py b/groundcontrol/ui_elements/touchNumberInput.py similarity index 94% rename from UIElements/touchNumberInput.py rename to groundcontrol/ui_elements/touchNumberInput.py index ef3ac01b..e343be75 100644 --- a/UIElements/touchNumberInput.py +++ b/groundcontrol/ui_elements/touchNumberInput.py @@ -5,15 +5,15 @@ ''' from kivy.uix.gridlayout import GridLayout from kivy.properties import ObjectProperty -from kivy.properties import StringProperty -import global_variables +import groundcontrol.global_variables as global_variables class TouchNumberInput(GridLayout): done = ObjectProperty(None) - def __init__(self,**kwargs): + def __init__(self, **kwargs): self.data = kwargs.get('data') - super(TouchNumberInput,self).__init__(**kwargs) + self.done = kwargs.get('done') + super().__init__() self.unitsBtn.text = self.data.units diff --git a/UIElements/viewMenu.py b/groundcontrol/ui_elements/viewMenu.py similarity index 95% rename from UIElements/viewMenu.py rename to groundcontrol/ui_elements/viewMenu.py index 72235f88..efaa7de2 100644 --- a/UIElements/viewMenu.py +++ b/groundcontrol/ui_elements/viewMenu.py @@ -1,9 +1,8 @@ from kivy.uix.gridlayout import GridLayout -from UIElements.fileBrowser import FileBrowser -from UIElements.pageableTextPopup import PageableTextPopup +from groundcontrol.ui_elements.fileBrowser import FileBrowser +from groundcontrol.ui_elements.pageableTextPopup import PageableTextPopup from kivy.uix.popup import Popup -import re -from DataStructures.makesmithInitFuncs import MakesmithInitFuncs +from groundcontrol.data_structures.makesmithInitFuncs import MakesmithInitFuncs from os import path diff --git a/UIElements/zAxisPopupContent.py b/groundcontrol/ui_elements/zAxisPopupContent.py similarity index 96% rename from UIElements/zAxisPopupContent.py rename to groundcontrol/ui_elements/zAxisPopupContent.py index 12384382..2d2928f1 100644 --- a/UIElements/zAxisPopupContent.py +++ b/groundcontrol/ui_elements/zAxisPopupContent.py @@ -6,7 +6,7 @@ from kivy.uix.gridlayout import GridLayout from kivy.properties import ObjectProperty from kivy.properties import StringProperty -from UIElements.touchNumberInput import TouchNumberInput +from groundcontrol.ui_elements.touchNumberInput import TouchNumberInput from kivy.uix.popup import Popup class ZAxisPopupContent(GridLayout): @@ -139,7 +139,7 @@ def touchZero(self): Probe for Zero Z ''' self.setMachineUnits() - plungeDepth = self.data.config.get('Advanced Settings', 'maxTouchProbePlungeDistance') + plungeDepth = self.data.config.get('Advanced Settings', 'maxTouchProbePlungeDistance') if self.data.units == "INCHES": self.data.gcode_queue.put("G20 G90 G38.2 Z-" + plungeDepth + " F1 G20 G90 M02") diff --git a/groundcontrol/util.py b/groundcontrol/util.py new file mode 100644 index 00000000..9bd82dd4 --- /dev/null +++ b/groundcontrol/util.py @@ -0,0 +1,5 @@ +import os +import pkg_resources + +def get_asset(path): + return pkg_resources.resource_filename(__name__, os.path.join("assets", path) ) \ No newline at end of file diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 00000000..369448b0 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,300 @@ +[[package]] +category = "main" +description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +name = "appdirs" +optional = false +python-versions = "*" +version = "1.4.4" + +[[package]] +category = "main" +description = "Python package for providing Mozilla's CA Bundle." +name = "certifi" +optional = false +python-versions = "*" +version = "2020.6.20" + +[[package]] +category = "main" +description = "Universal encoding detector for Python 2 and 3" +name = "chardet" +optional = false +python-versions = "*" +version = "3.0.4" + +[[package]] +category = "main" +description = "The Cython compiler for writing C extensions for the Python language." +name = "cython" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +version = "0.29.21" + +[[package]] +category = "main" +description = "Docutils -- Python Documentation Utilities" +name = "docutils" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "0.16" + +[[package]] +category = "main" +description = "Internationalized Domain Names in Applications (IDNA)" +name = "idna" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.10" + +[[package]] +category = "main" +description = "A software library for rapid development of hardware-accelerated multitouch applications." +name = "kivy" +optional = false +python-versions = "*" +version = "1.11.1" + +[package.dependencies] +Kivy-Garden = ">=0.1.4" +docutils = "*" +pygments = "*" + +[package.extras] +tuio = ["oscpy"] + +[[package]] +category = "main" +description = "Garden tool for kivy flowers." +name = "kivy-garden" +optional = false +python-versions = "*" +version = "0.1.4" + +[package.dependencies] +requests = "*" + +[[package]] +category = "main" +description = "Core utilities for Python packages" +name = "packaging" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "20.4" + +[package.dependencies] +pyparsing = ">=2.0.2" +six = "*" + +[[package]] +category = "main" +description = "Python Imaging Library (Fork)" +name = "pillow" +optional = false +python-versions = ">=3.6" +version = "8.0.1" + +[[package]] +category = "main" +description = "Pygments is a syntax highlighting package written in Python." +name = "pygments" +optional = false +python-versions = ">=3.5" +version = "2.7.2" + +[[package]] +category = "main" +description = "Python parsing module" +name = "pyparsing" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +version = "2.4.7" + +[[package]] +category = "main" +description = "Python Serial Port Extension" +name = "pyserial" +optional = false +python-versions = "*" +version = "3.4" + +[[package]] +category = "main" +description = "Python HTTP for Humans." +name = "requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "2.24.0" + +[package.dependencies] +certifi = ">=2017.4.17" +chardet = ">=3.0.2,<4" +idna = ">=2.5,<3" +urllib3 = ">=1.21.1,<1.25.0 || >1.25.0,<1.25.1 || >1.25.1,<1.26" + +[package.extras] +security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"] +socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7)", "win-inet-pton"] + +[[package]] +category = "main" +description = "Python 2 and 3 compatibility utilities" +name = "six" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +version = "1.15.0" + +[[package]] +category = "main" +description = "HTTP library with thread-safe connection pooling, file post, and more." +name = "urllib3" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" +version = "1.25.11" + +[package.extras] +brotli = ["brotlipy (>=0.6.0)"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] +socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2.0)"] + +[metadata] +content-hash = "25f5a4e5d57b97edfdac961e46400eff206f63f62625b409fefe3889d21d2970" +python-versions = "^3.7" + +[metadata.files] +appdirs = [ + {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, + {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, +] +certifi = [ + {file = "certifi-2020.6.20-py2.py3-none-any.whl", hash = "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"}, + {file = "certifi-2020.6.20.tar.gz", hash = "sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3"}, +] +chardet = [ + {file = "chardet-3.0.4-py2.py3-none-any.whl", hash = "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"}, + {file = "chardet-3.0.4.tar.gz", hash = "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"}, +] +cython = [ + {file = "Cython-0.29.21-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c541b2b49c6638f2b5beb9316726db84a8d1c132bf31b942dae1f9c7f6ad3b92"}, + {file = "Cython-0.29.21-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:b8d8497091c1dc8705d1575c71e908a93b1f127a174b2d472020f3d84263ac28"}, + {file = "Cython-0.29.21-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:695a6bcaf9e12b1e471dfce96bbecf22a1487adc2ac6106b15960a2b51b97f5d"}, + {file = "Cython-0.29.21-cp27-cp27m-win32.whl", hash = "sha256:171b9f70ceafcec5852089d0f9c1e75b0d554f46c882cd4e2e4acaba9bd7d148"}, + {file = "Cython-0.29.21-cp27-cp27m-win_amd64.whl", hash = "sha256:539e59949aab4955c143a468810123bf22d3e8556421e1ce2531ed4893914ca0"}, + {file = "Cython-0.29.21-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:e93acd1f603a0c1786e0841f066ae7cef014cf4750e3cd06fd03cfdf46361419"}, + {file = "Cython-0.29.21-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:2922e3031ba9ebbe7cb9200b585cc33b71d66023d78450dcb883f824f4969371"}, + {file = "Cython-0.29.21-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:497841897942f734b0abc2dead2d4009795ee992267a70a23485fd0e937edc0b"}, + {file = "Cython-0.29.21-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:0ac10bf476476a9f7ef61ec6e44c280ef434473124ad31d3132b720f7b0e8d2a"}, + {file = "Cython-0.29.21-cp34-cp34m-win32.whl", hash = "sha256:31c71a615f38401b0dc1f2a5a9a6c421ffd8908c4cd5bbedc4014c1b876488e8"}, + {file = "Cython-0.29.21-cp34-cp34m-win_amd64.whl", hash = "sha256:c4b78356074fcaac04ecb4de289f11d506e438859877670992ece11f9c90f37b"}, + {file = "Cython-0.29.21-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:b2f9172e4d6358f33ecce6a4339b5960f9f83eab67ea244baa812737793826b7"}, + {file = "Cython-0.29.21-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:856c7fb31d247ce713d60116375e1f8153d0291ab5e92cca7d8833a524ba9991"}, + {file = "Cython-0.29.21-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:715294cd2246b39a8edca464a8366eb635f17213e4a6b9e74e52d8b877a8cb63"}, + {file = "Cython-0.29.21-cp35-cp35m-win32.whl", hash = "sha256:23f3a00b843a19de8bb4468b087db5b413a903213f67188729782488d67040e0"}, + {file = "Cython-0.29.21-cp35-cp35m-win_amd64.whl", hash = "sha256:ccb77faeaad99e99c6c444d04862c6cf604204fe0a07d4c8f9cbf2c9012d7d5a"}, + {file = "Cython-0.29.21-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e272ed97d20b026f4f25a012b25d7d7672a60e4f72b9ca385239d693cd91b2d5"}, + {file = "Cython-0.29.21-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:8c6e25e9cc4961bb2abb1777c6fa9d0fa2d9b014beb3276cebe69996ff162b78"}, + {file = "Cython-0.29.21-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:57ead89128dee9609119c93d3926c7a2add451453063147900408a50144598c6"}, + {file = "Cython-0.29.21-cp36-cp36m-win32.whl", hash = "sha256:0e25c209c75df8785480dcef85db3d36c165dbc0f4c503168e8763eb735704f2"}, + {file = "Cython-0.29.21-cp36-cp36m-win_amd64.whl", hash = "sha256:a0674f246ad5e1571ef29d4c5ec1d6ecabe9e6c424ad0d6fee46b914d5d24d69"}, + {file = "Cython-0.29.21-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5da187bebe38030325e1c0b5b8a804d489410be2d384c0ef3ba39493c67eb51e"}, + {file = "Cython-0.29.21-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:9ce5e5209f8406ffc2b058b1293cce7a954911bb7991e623564d489197c9ba30"}, + {file = "Cython-0.29.21-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5e545a48f919e40079b0efe7b0e081c74b96f9ef25b9c1ff4cdbd95764426b58"}, + {file = "Cython-0.29.21-cp37-cp37m-win32.whl", hash = "sha256:c8435959321cf8aec867bbad54b83b7fb8343204b530d85d9ea7a1f5329d5ac2"}, + {file = "Cython-0.29.21-cp37-cp37m-win_amd64.whl", hash = "sha256:540b3bee0711aac2e99bda4fa0a46dbcd8c74941666bfc1ef9236b1a64eeffd9"}, + {file = "Cython-0.29.21-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:93f5fed1c9445fb7afe20450cdaf94b0e0356d47cc75008105be89c6a2e417b1"}, + {file = "Cython-0.29.21-cp38-cp38-manylinux1_i686.whl", hash = "sha256:9207fdedc7e789a3dcaca628176b80c82fbed9ae0997210738cbb12536a56699"}, + {file = "Cython-0.29.21-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:603b9f1b8e93e8b494d3e89320c410679e21018e48b6cbc77280f5db71f17dc0"}, + {file = "Cython-0.29.21-cp38-cp38-win32.whl", hash = "sha256:473df5d5e400444a36ed81c6596f56a5b52a3481312d0a48d68b777790f730ae"}, + {file = "Cython-0.29.21-cp38-cp38-win_amd64.whl", hash = "sha256:b8a8a31b9e8860634adbca30fea1d0c7f08e208b3d7611f3e580e5f20992e5d7"}, + {file = "Cython-0.29.21-cp39-cp39-manylinux1_i686.whl", hash = "sha256:7ebaa8800c376bcdae596fb1372cb4232a5ef957619d35839520d2786f2debb9"}, + {file = "Cython-0.29.21-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:c111ac9abdf715762e4fb87395e59d61c0fbb6ce79eb2e24167700b6cfa8ba79"}, + {file = "Cython-0.29.21-py2.py3-none-any.whl", hash = "sha256:5c4276fdcbccdf1e3c1756c7aeb8395e9a36874fa4d30860e7694f43d325ae13"}, + {file = "Cython-0.29.21.tar.gz", hash = "sha256:e57acb89bd55943c8d8bf813763d20b9099cc7165c0f16b707631a7654be9cad"}, +] +docutils = [ + {file = "docutils-0.16-py2.py3-none-any.whl", hash = "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af"}, + {file = "docutils-0.16.tar.gz", hash = "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc"}, +] +idna = [ + {file = "idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"}, + {file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"}, +] +kivy = [ + {file = "Kivy-1.11.1-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:11e85eaf6efbfa2362a3334ffdad179a1b0ca8d255cca79eaa6a2765560d4982"}, + {file = "Kivy-1.11.1-cp27-cp27m-win32.whl", hash = "sha256:5c3d0f2749522d62e9cce09cd54b2d823bf1b6b644ff1f627be49de6f3e3cba0"}, + {file = "Kivy-1.11.1-cp27-cp27m-win_amd64.whl", hash = "sha256:f835462dd9aa491272552ef079b948a088598e2e95d68bb1d885d2c3f3d4e2c3"}, + {file = "Kivy-1.11.1-cp35-cp35m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:090d3ded9835a17477cd93fbdaf0a7c42ff2218981cf198ded5ad8795bc74391"}, + {file = "Kivy-1.11.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:b85ccf165050cbf2ee8447671eebbc222b369b40f0e0038dd9547d49a5e37373"}, + {file = "Kivy-1.11.1-cp35-cp35m-win32.whl", hash = "sha256:4a5480cbf837d3780c77a4f61b32b56d22ae9f03845e7a89dd3eaef1ae5fd037"}, + {file = "Kivy-1.11.1-cp35-cp35m-win_amd64.whl", hash = "sha256:a687602d90c4629dd036f577ca39acb76ba581370f9d915f3cab99be818ba8ad"}, + {file = "Kivy-1.11.1-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:c36652caa7f6c327dee834cfc699d5962d346b7a53e54bd81abc17c314226d89"}, + {file = "Kivy-1.11.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:b7ef6aad43a86d8df3fb865db864e354f2155a748019f8517f69f65c1a29cb64"}, + {file = "Kivy-1.11.1-cp36-cp36m-win32.whl", hash = "sha256:f3bea6e4a21991827885d04127fc6d09a0e974ecfa12da7bf5faae93562ea102"}, + {file = "Kivy-1.11.1-cp36-cp36m-win_amd64.whl", hash = "sha256:ece170514db3f49844a41e4c910ad9ce9bc46da6f47a49158e11266bdcc6e479"}, + {file = "Kivy-1.11.1-cp37-cp37m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:8819a27a09871af451760cb69486ced52e830c8a0a37480f22ef5e692f12c05b"}, + {file = "Kivy-1.11.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:1a1ff32f8a95f1e175198cbab81fcd2596783b180d4eafe63e87d171aa7fdb5e"}, + {file = "Kivy-1.11.1-cp37-cp37m-win32.whl", hash = "sha256:815a5c0b3b72fcd81ca7b2aa0744087163ed03e4cf9ab4e7c9733cea99fc1571"}, + {file = "Kivy-1.11.1-cp37-cp37m-win_amd64.whl", hash = "sha256:1d28b198a64c30db8d94a0488e85f3037af60d514ab0d7ad5ab45add3ab77090"}, + {file = "Kivy-1.11.1.tar.gz", hash = "sha256:4d0e596f74271e901b551f77661dde238df4765484fce9f5d1c72e8022984e84"}, +] +kivy-garden = [ + {file = "Kivy Garden-0.1.4.tar.gz", hash = "sha256:9b7d9de5efacbcd0c4b3dd873b30622a86093c9965aa47b523c7a32f3eb34610"}, + {file = "kivy-garden-0.1.4.tar.gz", hash = "sha256:c256f42788421273a08fbb0a228f0fb0e80dd86b629fb8c0920507f645be6c72"}, +] +packaging = [ + {file = "packaging-20.4-py2.py3-none-any.whl", hash = "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181"}, + {file = "packaging-20.4.tar.gz", hash = "sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8"}, +] +pillow = [ + {file = "Pillow-8.0.1-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:b63d4ff734263ae4ce6593798bcfee6dbfb00523c82753a3a03cbc05555a9cc3"}, + {file = "Pillow-8.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:5f9403af9c790cc18411ea398a6950ee2def2a830ad0cfe6dc9122e6d528b302"}, + {file = "Pillow-8.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:6b4a8fd632b4ebee28282a9fef4c341835a1aa8671e2770b6f89adc8e8c2703c"}, + {file = "Pillow-8.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:cc3ea6b23954da84dbee8025c616040d9aa5eaf34ea6895a0a762ee9d3e12e11"}, + {file = "Pillow-8.0.1-cp36-cp36m-win32.whl", hash = "sha256:d8a96747df78cda35980905bf26e72960cba6d355ace4780d4bdde3b217cdf1e"}, + {file = "Pillow-8.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:7ba0ba61252ab23052e642abdb17fd08fdcfdbbf3b74c969a30c58ac1ade7cd3"}, + {file = "Pillow-8.0.1-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:795e91a60f291e75de2e20e6bdd67770f793c8605b553cb6e4387ce0cb302e09"}, + {file = "Pillow-8.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:0a2e8d03787ec7ad71dc18aec9367c946ef8ef50e1e78c71f743bc3a770f9fae"}, + {file = "Pillow-8.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:006de60d7580d81f4a1a7e9f0173dc90a932e3905cc4d47ea909bc946302311a"}, + {file = "Pillow-8.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:bd7bf289e05470b1bc74889d1466d9ad4a56d201f24397557b6f65c24a6844b8"}, + {file = "Pillow-8.0.1-cp37-cp37m-win32.whl", hash = "sha256:95edb1ed513e68bddc2aee3de66ceaf743590bf16c023fb9977adc4be15bd3f0"}, + {file = "Pillow-8.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:e38d58d9138ef972fceb7aeec4be02e3f01d383723965bfcef14d174c8ccd039"}, + {file = "Pillow-8.0.1-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:d3d07c86d4efa1facdf32aa878bd508c0dc4f87c48125cc16b937baa4e5b5e11"}, + {file = "Pillow-8.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:fbd922f702582cb0d71ef94442bfca57624352622d75e3be7a1e7e9360b07e72"}, + {file = "Pillow-8.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:92c882b70a40c79de9f5294dc99390671e07fc0b0113d472cbea3fde15db1792"}, + {file = "Pillow-8.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:7c9401e68730d6c4245b8e361d3d13e1035cbc94db86b49dc7da8bec235d0015"}, + {file = "Pillow-8.0.1-cp38-cp38-win32.whl", hash = "sha256:6c1aca8231625115104a06e4389fcd9ec88f0c9befbabd80dc206c35561be271"}, + {file = "Pillow-8.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:cc9ec588c6ef3a1325fa032ec14d97b7309db493782ea8c304666fb10c3bd9a7"}, + {file = "Pillow-8.0.1-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:eb472586374dc66b31e36e14720747595c2b265ae962987261f044e5cce644b5"}, + {file = "Pillow-8.0.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:0eeeae397e5a79dc088d8297a4c2c6f901f8fb30db47795113a4a605d0f1e5ce"}, + {file = "Pillow-8.0.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:81f812d8f5e8a09b246515fac141e9d10113229bc33ea073fec11403b016bcf3"}, + {file = "Pillow-8.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:895d54c0ddc78a478c80f9c438579ac15f3e27bf442c2a9aa74d41d0e4d12544"}, + {file = "Pillow-8.0.1-cp39-cp39-win32.whl", hash = "sha256:2fb113757a369a6cdb189f8df3226e995acfed0a8919a72416626af1a0a71140"}, + {file = "Pillow-8.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:59e903ca800c8cfd1ebe482349ec7c35687b95e98cefae213e271c8c7fffa021"}, + {file = "Pillow-8.0.1-pp36-pypy36_pp73-macosx_10_10_x86_64.whl", hash = "sha256:5abd653a23c35d980b332bc0431d39663b1709d64142e3652890df4c9b6970f6"}, + {file = "Pillow-8.0.1-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:4b0ef2470c4979e345e4e0cc1bbac65fda11d0d7b789dbac035e4c6ce3f98adb"}, + {file = "Pillow-8.0.1-pp37-pypy37_pp73-win32.whl", hash = "sha256:8de332053707c80963b589b22f8e0229f1be1f3ca862a932c1bcd48dafb18dd8"}, + {file = "Pillow-8.0.1.tar.gz", hash = "sha256:11c5c6e9b02c9dac08af04f093eb5a2f84857df70a7d4a6a6ad461aca803fb9e"}, +] +pygments = [ + {file = "Pygments-2.7.2-py3-none-any.whl", hash = "sha256:88a0bbcd659fcb9573703957c6b9cff9fab7295e6e76db54c9d00ae42df32773"}, + {file = "Pygments-2.7.2.tar.gz", hash = "sha256:381985fcc551eb9d37c52088a32914e00517e57f4a21609f48141ba08e193fa0"}, +] +pyparsing = [ + {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, + {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"}, +] +pyserial = [ + {file = "pyserial-3.4-py2.py3-none-any.whl", hash = "sha256:e0770fadba80c31013896c7e6ef703f72e7834965954a78e71a3049488d4d7d8"}, + {file = "pyserial-3.4.tar.gz", hash = "sha256:6e2d401fdee0eab996cf734e67773a0143b932772ca8b42451440cfed942c627"}, +] +requests = [ + {file = "requests-2.24.0-py2.py3-none-any.whl", hash = "sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898"}, + {file = "requests-2.24.0.tar.gz", hash = "sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b"}, +] +six = [ + {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, + {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"}, +] +urllib3 = [ + {file = "urllib3-1.25.11-py2.py3-none-any.whl", hash = "sha256:f5321fbe4bf3fefa0efd0bfe7fb14e90909eb62a48ccda331726b4319897dd5e"}, + {file = "urllib3-1.25.11.tar.gz", hash = "sha256:8d7eaa5a82a1cac232164990f04874c594c9453ec55eef02eab885aa02fc17a2"}, +] diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..c82da41d --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,27 @@ +[tool.poetry] +name = "groundcontrol" +version = "0.1.0" +description = "" +authors = ["Your Name "] + +[tool.poetry.scripts] +groundcontrol = "groundcontrol.main:main" + +[tool.poetry.dependencies] +python = "^3.7" +cython = "^0.29.21" +appdirs = "^1.4.4" +kivy-garden = "^0.1.4" +packaging = "^20.4" +Pillow = "^8.0.1" +kivy = "^1.11.1" +pyparsing = "^2.4.7" +pyserial = "^3.4" +requests = "^2.24.0" +six = "^1.15.0" + +[tool.poetry.dev-dependencies] + +[build-system] +requires = ["poetry>=0.12", "cython", "wheel"] +build-backend = "poetry.masonry.api" diff --git a/requirements_linux.txt b/requirements_linux.txt deleted file mode 100644 index 53c110ea..00000000 --- a/requirements_linux.txt +++ /dev/null @@ -1,11 +0,0 @@ -appdirs==1.4.3 -Cython==0.25.2 -Kivy==1.9.1 -Kivy-Garden==0.1.4 -packaging==16.8 -Pillow==6.2.0 -pygame==1.9.3 -pyparsing==2.2.0 -pyserial==3.3 -requests==2.20.0 -six==1.10.0 diff --git a/requirements_osx.txt b/requirements_osx.txt deleted file mode 100644 index 601a097d..00000000 --- a/requirements_osx.txt +++ /dev/null @@ -1,11 +0,0 @@ -appdirs==1.4.3 -Cython==0.23 -Kivy==1.9.1 -Kivy-Garden==0.1.4 -packaging==16.8 -Pillow==6.2.0 -pygame==1.9.3 -pyparsing==2.2.0 -pyserial==3.3 -requests==2.20.0 -six==1.10.0