{ "info": { "author": "Radek Je\u017eek, Dominika Kr\u00e1likov\u00e1, R\u00f3bert Selvek, Jakub Topi\u010d", "author_email": "topicjak@fit.cvut.cz", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Utilities" ], "description": "Caddy\n--------------------\n> Semester project for OOP course\n\n\nThe goal of this project is to create a simple version of a CAD application inspired by the early versions of Autocad.\n\n## Installation\n\nTo install Caddy, simply use pip:\n\n```\n$ pip install caddy\n```\n\nand run with following command:\n```\n$ caddy\n```\n\n### Requirements\n\nThe following software and libraries are required to run Caddy:\n\n- Tkinter\n\n## Project assignment\n\nThe application allows one to draw the following shapes:\n\n- polylines (a line containing multiple segments)\n- rectangles\n- circles\n- _optional_ any other objects you might want to add\n\nNext to drawing shapes, the application provide additional actions:\n\n- save shapes into a file\n- load shapes from a file\n- remove a shape\n- move a shape \n- remove all shapes upon getting a confirmation from a user\n- list drawn shapes \n- quit the application asking to save any changes\n- _optional_ undo the last action\n- _optional_ redo the last action\n- _optional_ export as SVG file\n- _optional_ zoom in / out the canvas\n- _optional_ pan the canvas\n\nThe drawing can be done by either typing commands into the command panel or by using mouse.\n\n### Command-line interface\n\nAt the bottom of the application, there is a command panel.\nIt contains a command input area where a user can type commands corresponding to the above actions.\nAbove the input, it shows a history of executed commands with any additional command output or error messages in case there was a problem. \n\n### Mouse interface\n\nAll the actions are also to be invoked using mouse by selecting an appropriate menu item or a toolbar icon.\nSome actions need additional parameters:\n\n- points are selected by clicking in the canvas (_optional_ changing the mouse cursor to `crosshair`).\n- shapes are selected by clicking in the canvas (_optional_ changing the mouse cursor to `select`).\n- filenames are represented by appropriate file selection dialogs\n\n### Actions\n\nThe following is the grammar of the command language in BNF format with regex definition for `STRING`, `NAT` and `INT`:\n\n```\nSTRING ::= \"\\w+\"\nNAT ::= \\d+\nINT ::= [+-]\\d+ \nPOINT ::= | \nPOINTS ::= | \nABSOLUTE_POINT ::= ,\nRELATIVE_POINT ::= ,\n\nACTION ::= \n | \n | \n | \n | \n | \n | \n | \n | \n | \n\nLINE ::= line \n\nRECT ::= rect \n | rect \n\nCIRCLE ::= circle \n | circle \n\nSAVE ::= save \n\nLOAD ::= load \n\nREMOVE ::= remove \n\nMOVE ::= move \n\nCLEAR ::= clear\n\nLS ::= ls\n | ls \n\nQUIT ::= quit\n```\n\n#### Datatypes\n\nThe language contains 5 data types: a stringm a natural number, an integer, a point and a relative point.\nThe difference between a point (eg. `10,20`) and a relative point (e.g. `+10,-20`) is that relative point is always calculated from the coordinates of its predecessor or from `0,0` if it does not have any preceding point.\n\n#### Line\n\nDraw a line connecting all given points.\n\n#### Rectangle\n\nDraw a rectangle.\nIt accepts two forms:\n\n- `rect ` where the first point is top-left corner and the second is bottom-right corner.\n- `rect ` where point is the top-left corner and the two natural numbers indicate width and height.\n\n#### Circle\n\nDraw a circle.\nIt accepts two forms:\n\n- `circle ` where point is the center and the natural number indicates radius.\n- `circle ` where the first point is left-most point of the circle and the second is the right-most point.\n\n#### Save, Load\n\nSave or load shapes to or from a given filename.\nThe representation is simply a sequence of commands the shapes.\n\n#### Remove\n\nRemove all the shapes that intersects with the given point.\n\n#### Move\n\nMove all the shapes that intersects with the given point to a new point.\n\n#### Clear\n\nAsk for a conformation and if accepted, removes all the shapes.\n\n#### List\n\nList all the shapes or the shapes intersecting the given point in the form of an action that could be used to draw them. \n\n#### Quit\n\nAsk for a confirmation and if accepted, quits the application.\n\n### Implementation Details\n\n- Most GUI frameworks define `0,0` origin in the top left corner and the `width,height` in the bottom right corner.\n- In technical drawing, however, it it usually the bottom left corner that defines origin `0,0` going to top right corner for `width,height`.\n- This application will honor the technical drawing. The conversion is done using affine transformation.\n- For simplicity make the window non-resizeable and only use the available canvas size. For the ones who want to challenge themselves, feel free to implement panning (scrolling the canvas) and different zoom levels.\n- You need Java 11. If you see any problems with running maven, make use maven uses the right Java.\n\n### Implementation Rules\n\n- The requirements marked as _optional_ will earn you extra points. They are also fun to implement.\n- Feel free to use the provided skeleton and change whatever needs to be changed.\n- You will be judged by the quality of the final application and proper use of object-oriented design.\n- Do not copy from other teams, plagiarism is illegal and all concerning teams will be punished.\n- Do not use any additional library except for testing. The point is that you, yourself try to implement some of the basic concepts. \n- We provide a few basic icons, feel free to replace them with a better alternatives.\n- **If something is not clear, just raise an [issue](https://gitlab.fit.cvut.cz/BI-OOP/cad-java-skeleton/issues/new) in the repo so everyone can see it.**\n- If you get stack, contact one of the [teaching assistant](https://moodle.fit.cvut.cz/enrol/index.php?id=38).\n- Good luck!", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.fit.cvut.cz/jezekra1/oop-semester-project", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "caddy", "package_url": "https://pypi.org/project/caddy/", "platform": "", "project_url": "https://pypi.org/project/caddy/", "project_urls": { "Homepage": "https://gitlab.fit.cvut.cz/jezekra1/oop-semester-project" }, "release_url": "https://pypi.org/project/caddy/1.3.2/", "requires_dist": null, "requires_python": "", "summary": "Semester project for OOP course", "version": "1.3.2" }, "last_serial": 4670568, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "e91c0a548a60152bd2ab0e851e45c1cc", "sha256": "cea5c80550688bc2f446a74ad41328de048e29795ae2f253aa33eaa33764e705" }, "downloads": -1, "filename": "caddy-0.1.0.tar.gz", "has_sig": false, "md5_digest": "e91c0a548a60152bd2ab0e851e45c1cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23002, "upload_time": "2018-12-18T13:08:10", "url": "https://files.pythonhosted.org/packages/b5/77/067a3ff561f62cf9ee683e4b13e0036d8250aba05a630cd4e9ef02339877/caddy-0.1.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "da3694d0119a22b9a0ace64691c3100f", "sha256": "7176689ca3ad8d2eadc74fcf550600f0c7166affd514cc3f97baff3f0708c64d" }, "downloads": -1, "filename": "caddy-1.0.0.tar.gz", "has_sig": false, "md5_digest": "da3694d0119a22b9a0ace64691c3100f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27509, "upload_time": "2018-12-25T16:15:59", "url": "https://files.pythonhosted.org/packages/7a/50/e24295ed9e1aa79a3571902feab97ff162939c4083aa196538794986f64c/caddy-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "2dc06fd7b043d1f7475a11f5b7cd9e36", "sha256": "d14ff6399df2b227c92702d976e7f65b2182ac2fe494504e811839de95c320c0" }, "downloads": -1, "filename": "caddy-1.1.0.tar.gz", "has_sig": false, "md5_digest": "2dc06fd7b043d1f7475a11f5b7cd9e36", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37687, "upload_time": "2019-01-02T14:46:48", "url": "https://files.pythonhosted.org/packages/0b/26/731729f69327a9679aa54fc3aaeb7afb6bf3ad1cd0a0c67a7e13162454b2/caddy-1.1.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "68b02833b028f257a08ccf9043a1f4d0", "sha256": "66b6d0419a70a94379fdf7f12e000e819ff8411006df02d8ac64f3a05423b825" }, "downloads": -1, "filename": "caddy-1.3.0.tar.gz", "has_sig": false, "md5_digest": "68b02833b028f257a08ccf9043a1f4d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37691, "upload_time": "2019-01-03T20:03:49", "url": "https://files.pythonhosted.org/packages/da/84/9c85581c650e9ad892de6b89c9b726208072edb9f60a686a57aca449ae64/caddy-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "1e64f1d38a7f22c9841644984f443f2a", "sha256": "f2dd392f97a20d6f73c55bbbfc7d5637da3ed99d3f3ccb4985ed0bbcfb3f1477" }, "downloads": -1, "filename": "caddy-1.3.1.tar.gz", "has_sig": false, "md5_digest": "1e64f1d38a7f22c9841644984f443f2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37684, "upload_time": "2019-01-03T20:23:38", "url": "https://files.pythonhosted.org/packages/8c/70/c3dfe1ef759f369b6722354eddf422454ff13fd0d13328d98becbc41c602/caddy-1.3.1.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "6d8daf230fabf24dc4fdbc5e8f476c8b", "sha256": "7a479d54b101fed2af6ac9fafe83d3e9578f4b08cdd649c911fe6087f230c715" }, "downloads": -1, "filename": "caddy-1.3.2.tar.gz", "has_sig": false, "md5_digest": "6d8daf230fabf24dc4fdbc5e8f476c8b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37604, "upload_time": "2019-01-07T22:56:42", "url": "https://files.pythonhosted.org/packages/2e/5f/702c9f94ed1a5599d9d545ed5fe59d4bab999a7fd33137b1211640708431/caddy-1.3.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6d8daf230fabf24dc4fdbc5e8f476c8b", "sha256": "7a479d54b101fed2af6ac9fafe83d3e9578f4b08cdd649c911fe6087f230c715" }, "downloads": -1, "filename": "caddy-1.3.2.tar.gz", "has_sig": false, "md5_digest": "6d8daf230fabf24dc4fdbc5e8f476c8b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37604, "upload_time": "2019-01-07T22:56:42", "url": "https://files.pythonhosted.org/packages/2e/5f/702c9f94ed1a5599d9d545ed5fe59d4bab999a7fd33137b1211640708431/caddy-1.3.2.tar.gz" } ] }