aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--LICENSE.md131
-rw-r--r--README.md11
-rw-r--r--ctec/__init__.py1
-rw-r--r--ctec/__main__.py47
5 files changed, 192 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4633780
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+/venv
+/.idea
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 0000000..1a71cb6
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,131 @@
+# PolyForm Noncommercial License 1.0.0
+
+<https://polyformproject.org/licenses/noncommercial/1.0.0>
+
+## Acceptance
+
+In order to get any license under these terms, you must agree
+to them as both strict obligations and conditions to all
+your licenses.
+
+## Copyright License
+
+The licensor grants you a copyright license for the
+software to do everything you might do with the software
+that would otherwise infringe the licensor's copyright
+in it for any permitted purpose. However, you may
+only distribute the software according to [Distribution
+License](#distribution-license) and make changes or new works
+based on the software according to [Changes and New Works
+License](#changes-and-new-works-license).
+
+## Distribution License
+
+The licensor grants you an additional copyright license
+to distribute copies of the software. Your license
+to distribute covers distributing the software with
+changes and new works permitted by [Changes and New Works
+License](#changes-and-new-works-license).
+
+## Notices
+
+You must ensure that anyone who gets a copy of any part of
+the software from you also gets a copy of these terms or the
+URL for them above, as well as copies of any plain-text lines
+beginning with `Required Notice:` that the licensor provided
+with the software. For example:
+
+> Required Notice: Copyright Yoyodyne, Inc. (http://example.com)
+
+## Changes and New Works License
+
+The licensor grants you an additional copyright license to
+make changes and new works based on the software for any
+permitted purpose.
+
+## Patent License
+
+The licensor grants you a patent license for the software that
+covers patent claims the licensor can license, or becomes able
+to license, that you would infringe by using the software.
+
+## Noncommercial Purposes
+
+Any noncommercial purpose is a permitted purpose.
+
+## Personal Uses
+
+Personal use for research, experiment, and testing for
+the benefit of public knowledge, personal study, private
+entertainment, hobby projects, amateur pursuits, or religious
+observance, without any anticipated commercial application,
+is use for a permitted purpose.
+
+## Noncommercial Organizations
+
+Use by any charitable organization, educational institution,
+public research organization, public safety or health
+organization, environmental protection organization,
+or government institution is use for a permitted purpose
+regardless of the source of funding or obligations resulting
+from the funding.
+
+## Fair Use
+
+You may have "fair use" rights for the software under the
+law. These terms do not limit them.
+
+## No Other Rights
+
+These terms do not allow you to sublicense or transfer any of
+your licenses to anyone else, or prevent the licensor from
+granting licenses to anyone else. These terms do not imply
+any other licenses.
+
+## Patent Defense
+
+If you make any written claim that the software infringes or
+contributes to infringement of any patent, your patent license
+for the software granted under these terms ends immediately. If
+your company makes such a claim, your patent license ends
+immediately for work on behalf of your company.
+
+## Violations
+
+The first time you are notified in writing that you have
+violated any of these terms, or done anything with the software
+not covered by your licenses, your licenses can nonetheless
+continue if you come into full compliance with these terms,
+and take practical steps to correct past violations, within
+32 days of receiving notice. Otherwise, all your licenses
+end immediately.
+
+## No Liability
+
+***As far as the law allows, the software comes as is, without
+any warranty or condition, and the licensor will not be liable
+to you for any damages arising out of these terms or the use
+or nature of the software, under any kind of legal claim.***
+
+## Definitions
+
+The **licensor** is the individual or entity offering these
+terms, and the **software** is the software the licensor makes
+available under these terms.
+
+**You** refers to the individual or entity agreeing to these
+terms.
+
+**Your company** is any legal entity, sole proprietorship,
+or other kind of organization that you work for, plus all
+organizations that have control over, are under the control of,
+or are under common control with that organization. **Control**
+means ownership of substantially all the assets of an entity,
+or the power to direct its management and policies by vote,
+contract, or otherwise. Control can be direct or indirect.
+
+**Your licenses** are all the licenses granted to you for the
+software under these terms.
+
+**Use** means anything you do with the software requiring one
+of your licenses.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..8fd3c6c
--- /dev/null
+++ b/README.md
@@ -0,0 +1,11 @@
+# ctec
+
+cactus's tiny email client
+
+## license
+
+Released under the [PolyForm Noncommercial License 1.0.0](https://polyformproject.org/licenses/noncommercial/1.0.0/).
+
+```text
+Required Notice: Incorporates ctec, by boringcactus (https://www.boringcactus.com).
+```
diff --git a/ctec/__init__.py b/ctec/__init__.py
new file mode 100644
index 0000000..9f109cb
--- /dev/null
+++ b/ctec/__init__.py
@@ -0,0 +1 @@
+VERSION = (1,0,0)
diff --git a/ctec/__main__.py b/ctec/__main__.py
new file mode 100644
index 0000000..eff6138
--- /dev/null
+++ b/ctec/__main__.py
@@ -0,0 +1,47 @@
+from tkinter import *
+from tkinter import messagebox
+from tkinter import ttk
+
+from . import VERSION
+
+class CtecFrame:
+ def __init__(self, root: Tk):
+ self.root = root
+ root.title('ctec')
+
+ mainframe = ttk.Frame(root, padding="3 3 12 12")
+ mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
+ root.columnconfigure(0, weight=1)
+ root.rowconfigure(0, weight=1)
+
+ # create a menu bar
+ self.make_menu_bar(root)
+
+ def make_menu_bar(self, root):
+ root.option_add('*tearOff', FALSE)
+
+ menubar = Menu(root)
+ root['menu'] = menubar
+
+ file_menu = Menu(menubar)
+ menubar.add_cascade(menu=file_menu, label='File', underline=0)
+ file_menu.add_command(label='Exit', command=self.on_exit, underline=1)
+
+ help_menu = Menu(menubar)
+ menubar.add_cascade(menu=help_menu, label='Help', underline=0)
+ help_menu.add_command(label='About', command=self.on_about, underline=0)
+
+ def on_exit(self, *args):
+ self.root.destroy()
+
+ def on_about(self, *args):
+ messagebox.showinfo(message=f"ctec {'.'.join(str(x) for x in VERSION)}")
+
+
+def main():
+ root = Tk()
+ frame = CtecFrame(root)
+ root.mainloop()
+
+
+main()