Git Product home page Git Product logo

ayab-desktop's Introduction

AYAB - All Yarns Are Beautiful

This is the GUI interface for AYAB.

For information on how to install the release version of the software, see http://manual.ayab-knitting.com

Running from Source & Development

The AYAB desktop software runs using Python 3.11.
The Python module dependencies are split across runtime dependencies, which are in requirements.build.txt and development dependencies, found in requirements.txt.

This repository uses pre-commit hooks. After cloning the repo and installing the development dependencies, you should run pre-commit install to set up the git hook scripts.

Platform-Specific Setup

Linux

For flashing the firmware, avrdude has to be available on your system. To build or run the application, you will also need the system libraries required by Qt 6; installing the Qt 6 development tools is a concise (if heavy-handed) way of bringing in these dependencies.

Debian/Ubuntu

    sudo apt install python3.11 python3.11-dev python3.11-venv
    sudo apt install libasound2-dev avrdude qt6-tools-dev-tools build-essential

openSUSE

    sudo zypper install python311 python311-pip python311-virtualenv python311-devel
    sudo zypper install libasound2 alsa-devel avrdude qt6-tools-dev-tools build-essential

All Distributions

To be able to communicate with your Arduino, it might be necessary to add the rights for USB communication by adding your user to some groups.

    sudo usermod -aG tty [userName]
    sudo usermod -aG dialout [userName]
Windows

AYAB requires Windows version 10 or later.

Run Anaconda Powershell as administrator and install git.

    conda install git

Now you can download the git repository with:

    git clone https://github.com/AllYarnsAreBeautiful/ayab-desktop
    cd ayab-desktop

Next, create a virtual environment for AYAB:

    conda create --name ayab -c conda-forge python=3.11 pip

Activate the virtual environment. The command prompt should now display (ayab) at the beginning of each line.

    conda activate ayab

(You may skip the virtual environment setup below.)

You will also need to download and install Perl from https://www.perl.org/get.html.

macOS

You can install Git using Homebrew:

    brew install git

You will also need the Xcode command line tools:

    xcode-select --install

Install python from the official universal2 installer. (Conda does not produce universal binaries)

If you encounter the pip SSL:TLSV1_ALERT_PROTOCOL_VERSION problem:

    curl https://bootstrap.pypa.io/get-pip.py | python

Universal Setup Steps

Once platform-specific setup is complete, download the git repository:

    git clone https://github.com/AllYarnsAreBeautiful/ayab-desktop
    cd ayab-desktop

Create a virtual environment for AYAB:

    python3.11 -m venv .venv 

Now activate the virtual environment. The command prompt should now display (.venv) at the beginning of each line.

    source .venv/bin/activate

Install the remaining prerequisites with:

    python -m pip install --upgrade pip
    pip install --upgrade setuptools
    pip install -r requirements.txt

Next, convert the PySide6 .ui files and generate the translation files:

    bash ./setup-environment.ps1

Finally, you can start AYAB with

    fbs run

CI/CD on GitHub

Triggering a new build

A new build is triggered when a new tag is created, either starting with

  • v (i.e. v1.0.0), or
  • test (i.e. test230517)

Convention for the test-tag is to suffix the current date in the YYMMdd format. If there is already an existing test build for a single day, attach a letter. The test tags and releases will be manually removed from time for a better overview.

The tag can be pushed from your local environment, or via the "Draft a new Release" button on the GitHub website.

Choosing the firmware release to be bundled with the build

The CI automatically downloads a given firmware release from the ayab-firmware repo and packs it into the Desktop release. The name of the firmware release is chosen in this manifest file in the ayab-desktop repo.

Whenever building from source, you should ensure that the firmware is available as a compiled hex file is available at main/resources/base/ayab/firmware/firmware.hex. You can either compile the firmware and upload it through other means (e.g. VSCode with PlatformIO), or compile and then drop it into the right path in the desktop directory, making it available for the flash through AYAB desktop.

ayab-desktop's People

Contributors

andz82 avatar clholgat avatar derchrisuk avatar dl1com avatar duncan-d avatar jonathanperret avatar mathpi avatar oskay avatar sturla22 avatar t0mpr1c3 avatar tian2992 avatar tuuleh avatar vipqualitypost avatar x-sam avatar zelatyna avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ayab-desktop's Issues

Specify subset of instructions for KH-910

The KH-910 is not able to do all instructions.
The subset of the instructions should be listed and matched.

We have instructions that are equivalent. These should be know as generally equivalent and not handled by the KH-910. (i.e. if you knit from left to right, there will be different, inverted instructions) When coming across them they should be put somewhere else.

test default instructions

the default insrtcutions of the library should be tested for

  • mesh consumption
  • mesh production
  • description text

Style of documentation

This is just to find a common understanding and expectations of documentation.
Currently, the python code of the AYAB GUI is documented with documentation strings, which enables code documentation being generated e.g. with doxygen (https://www.stack.nl/~dimitri/doxygen/manual/docblocks.html#pythonblocks).
Concepts, API and Dev/Build instructions are documented with Sphinx (https://all-yarns-are-beautiful.readthedocs.io from https://bitbucket.org/tian2992/ayab-apparat/src/355e9612c141/software/python/docs/?at=develop).

@niccokunzmann , @kirstin what is your preferred way to do documentation, would you like to change something of this?
At least, we could move to allyarnsarebeautiful.readthedocs.io to keep the naming consistent.

Choose License

Licenses are extremely important. They determine how a community collaborates.
We should choose a free OSS license.

What are your preferences?
Examples:

  • MIT - if everything should be possible
  • LGPL - if proprietary software is allows to be built with it but our work is still free and modifyable
  • GPL if only free software should be built with it.
  • more

I would vote for something like LGPL in order to allow last-century knitting-software producers to support our format, ...

@kirstin @mariobehling @andz82 @chris007de please choose a license (does not need to be mentioned above)

handknit: output English text

Part of #9.

  • create English text for each instruction
  • convert knittingpattern to english text
  • be aware of internationalization

Document specification of .knit format

Which data will be stored in a .knit instruction? (Instructions, Motif Data, ...)
How is it stored? (xml, json, ..., human readable, ...)
How to handle machine model specific parameters and instructions (special carriages types, ...)

create a readme file

the readme file should contain RST

  • how to install code from pypi
  • how to check out and install manually
  • a link for the developers md file

Find out more about knitting

After #1 we should make sure that we have a representative set of instructions. We should check back with people from the facebook group if that already matches their mental model.

update readme file on pypi

seems like uploading a new version does not automatically update the reamde on pypi
investigate this. and propose an automatic update mechanistm in develop.md

Show knitting instruction files in GUI

There should be a possibility to show the knitting instructions in graphical way.
I.E. an SVG file which can be used as overview.
This would also allow for a generalized way of instructions on how to draw .knit instructions as lines.

save knitting patterns as file

it should be possible to save, not only load the knitting patterns

  • create JSONDumper
  • convert knittingpattern to primitive structure
  • do not add information that is in instructions by default

handknit: show repetitions

some things are done in represition, e.g. simple patterns they should be displayed in an understandable way

add default instructions

add the default instructions form the wiki to the knittingpattern library
also add bindoff and knitstart

Convert DROPs knitting instructions to .knit instructions

The instructions from #1 should be specified in a format that allows parsing them.

Ideas: each mesh has a ordered list of meshes that it goes through and an ordered list of meshes that go through it as well es a direction (right, left) for each of the listed meshes.

For the border we need a different approach to know how to embed the instructions.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.