Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ desktop.ini
# ────────────────────────────────────────────────

# Snapcraft
snap/.snapcraft/

parts/
prime/
stage/
Expand All @@ -59,6 +59,9 @@ build/
# ────────────────────────────────────────────────
tasks.json
*.log
*.json
*.bak
*.db

# ────────────────────────────────────────────────
# Ecosystem Standards
Expand Down
Binary file added assets/icons/icon-128.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/icons/icon-16.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/icons/icon-24.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/icons/icon-256.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/icons/icon-32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/icons/icon-48.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/icons/icon-512.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/icons/icon-64.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/icons/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 0 additions & 9 deletions config/README.md

This file was deleted.

20 changes: 0 additions & 20 deletions config/tasks.json

This file was deleted.

40 changes: 0 additions & 40 deletions docs/schema.md

This file was deleted.

25 changes: 25 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
from setuptools import setup, find_packages

setup(
name="schedplus",
version="0.7.3",
package_dir={"": "src"},
packages=find_packages(where="src"),

install_requires=[
"PyQt6>=6.11.0",
"babel>=2.18.0",
"PyQt6-Qt6>=6.11.1",
"PyQt6_sip>=13.11.1",
"tkcalendar>=1.6.1"
],

entry_points={
"console_scripts": [
"schedplus = schedplus.__main__:boot"
]
},

include_package_data=True,
python_requires=">=3.10",
)
Binary file added snap/gui/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
35 changes: 35 additions & 0 deletions snap/gui/icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 9 additions & 0 deletions snap/gui/schedplus.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[Desktop Entry]
Version=1.0
Type=Application
Name=SchedPlus
Comment=Scheduling Application
TryExec=schedplus
Exec=schedplus %F
Icon=${SNAP}/meta/gui/icon.png
Categories=Utility;
60 changes: 60 additions & 0 deletions snap/snapcraft.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: schedplus
title: SchedPlus
summary: Local-first scheduling engine with multiple UIs
base: core22
version: '0.7.4'
source-code:
- https://github.com/ZFordDev/SchedPlus
license: MIT
contact:
- zforddev@gmail.com
issues:
- zforddev@gmail.com
- https://github.com/ZFordDev/SchedPlus/issues
donation:
- zforddev@gmail.com
- https://ko-fi.com/zforddev
website:
- https://zford.dev/
icon: snap/gui/icon.png
type: app
compression: xz

description: |
SchedPlus is a modular, local-first scheduling engine with three interchangeable
interfaces: PyQt, Tkinter, and RAW CLI. It stores data in a simple, durable
SQLite schema and is designed to be UI-agnostic, extensible, and portable.

This snap packages the PyQt interface for development and testing. Future
variants may include Dev, SysAdmin, and Admin editions built on the same core.

grade: devel
confinement: devmode

parts:
schedplus:
plugin: python
source: .
python-packages: []
build-environment:
- PIP_USE_PEP517: "false"
build-packages:
- python3
- python3-venv
- python3-setuptools
stage-packages:
- python3
- python3-venv


apps:
schedplus:
command: bin/schedplus

platforms:
amd64:
build-on: [amd64]
build-for: [amd64]
arm64:
build-on: [amd64]
build-for: [arm64]
Empty file added src/cli/__init__.py
Empty file.
18 changes: 18 additions & 0 deletions src/cli/cli_main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
"""
cli_main.py
-----------
Main Entry point to CLI (RAW)
"""

import sys
from .raw_mode import run_raw_mode

def run_cli(scheduler):
# Entry point for RAW CLI mode.
args = sys.argv[1:]

# Remove the --raw flag itself
if "--raw" in args:
args.remove("--raw")

run_raw_mode(args, scheduler)
76 changes: 76 additions & 0 deletions src/cli/help.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
"""
help.py
-------
Centralized help system for SchedPlus.
NEW: colored CLI help output.
"""

# ANSI colors
C_RESET = "\033[0m"
C_HEADER = "\033[95m"
C_CMD = "\033[96m"
C_DESC = "\033[90m"
C_WARN = "\033[91m"

def _fmt(cmd, desc): # Format a command/description pair with alignment.
return f" {C_CMD}{cmd:<18}{C_RESET} {C_DESC}{desc}{C_RESET}"

# ---------------------------------------------------------
# STARTUP HELP
# ---------------------------------------------------------

def show_startup_help():
print(f"""
{C_HEADER}SchedPlus Startup Flags{C_RESET}

{_fmt('--tk', 'Launch Tkinter UI')}
{_fmt('--py', 'Launch PyQt UI')}
{_fmt('--dev', 'Developer mode')}
{_fmt('--raw', 'Use RAW CLI mode')}

(no flags) Show GUI startup selector
""".rstrip())

# ---------------------------------------------------------
# RAW CLI HELP
# ---------------------------------------------------------

def show_raw_help():
print(f"""
{C_HEADER}SchedPlus RAW CLI Commands{C_RESET}

{_fmt('schedplus --raw add', 'Add a task (interactive prompts)')}
{_fmt('schedplus --raw list', 'List all tasks')}
{_fmt('schedplus --raw --wipe', 'Wipe ALL tasks (3 confirmations)')}
{_fmt('schedplus --raw help', 'Show this help message')}

{C_DESC}Notes:{C_RESET}
- Type 'cancel' during add to abort
- RAW mode is one-shot: command → action → exit
""".rstrip())

# ---------------------------------------------------------
# GENERAL HELP
# ---------------------------------------------------------

def show_general_help():
print(f"""
{C_HEADER}SchedPlus Help{C_RESET}

{C_HEADER}Startup Modes:{C_RESET}
{_fmt('--tk', 'Launch Tkinter UI')}
{_fmt('--py', 'Launch PyQt UI')}
{_fmt('--dev', 'Developer mode')}
{_fmt('--raw', 'Use RAW CLI mode')}
(no flags) Show GUI startup selector

{C_HEADER}RAW CLI Commands:{C_RESET}
{_fmt('schedplus --raw add', 'Add a task')}
{_fmt('schedplus --raw list', 'List all tasks')}
{_fmt('schedplus --raw --wipe', 'Wipe all tasks')}
{_fmt('schedplus --raw help', 'Show RAW help')}

Tip:
Use {C_CMD}schedplus --raw help{C_RESET} for CLI-specific commands.
""".rstrip())
# we can expand this more later
Loading
Loading