#!/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