Loading...
No commits yet
Not committed History
Blame
gui.py • 1.9 KB
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# File: src/scitex_writer/_cli/gui.py

"""GUI editor CLI command."""

import argparse
import sys
from pathlib import Path


def cmd_gui(args: argparse.Namespace) -> int:
    """Launch the GUI editor."""
    project = Path(args.project).resolve()
    if not project.exists():
        print(f"Error: Project not found: {project}", file=sys.stderr)
        return 1

    try:
        from .._editor import gui

        gui(
            project_dir=str(project),
            port=args.port,
            host=args.host,
            open_browser=not args.no_browser,
            desktop=args.desktop,
        )
    except ImportError as e:
        print(
            f"Error: {e}\nInstall with: pip install scitex-writer[editor]",
            file=sys.stderr,
        )
        return 1

    return 0


def register_parser(subparsers) -> argparse.ArgumentParser:
    """Register gui subcommand parser."""
    parser = subparsers.add_parser(
        "gui",
        help="Launch browser-based editor",
        description=(
            "Launch a standalone GUI editor with file tree, "
            "LaTeX editor, PDF preview, and compilation controls."
        ),
    )
    parser.add_argument(
        "project",
        nargs="?",
        default=".",
        help="Project directory (default: current directory)",
    )
    parser.add_argument(
        "--port",
        type=int,
        default=5050,
        help="Server port (default: 5050)",
    )
    parser.add_argument(
        "--host",
        default="127.0.0.1",
        help="Host to bind (default: 127.0.0.1)",
    )
    parser.add_argument(
        "--no-browser",
        action="store_true",
        help="Don't open browser automatically",
    )
    parser.add_argument(
        "--desktop",
        action="store_true",
        help="Launch as desktop window (requires pywebview)",
    )
    parser.set_defaults(func=cmd_gui)

    return parser


# EOF