import sys

sys.coinit_flags = 0

import sys, os, inspect

sys.path.append(
    os.path.dirname(
        os.path.abspath(inspect.getfile(inspect.currentframe()) + "\\..\\..\\..") # type: ignore
    )
)
sys.path.append(os.path.dirname(__file__))

import time

from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler
import flet
from flet import (
    AppBar,
    FLET_APP_HIDDEN,
    ElevatedButton,
    Page,
    Text,
    View,
    colors,
    TextAlign,
    Theme,
    TextTheme,TextStyle,FontWeight,TextOverflow
)
import win32com


# from core.MyEventHandler import MyEventHandler


from IFikatia import IFikatia

from sayfalar.ana_sayfa.ana_sayfa import FikoDilimleAnaSayfa
import pythoncom

import logging
from Projeler.Yalin.FikoPostTakipcisi.sayfalar.catia_secici.ana_sayfa import CatiaSeciciSayfa


# postTakipciLogger = logging.getLogger("FikoYT Post Takipçisi")
logging.basicConfig(
    level=logging.CRITICAL,
    format="%(asctime)s - %(message)s",
    datefmt="%Y-%m-%d %H:%M:%S",
)
# logging.getLogger("flet_core").disabled(logging.NOTSET)


def FikoYTPostcuv2023(catiaInstance: any):
    # path = sys.argv[1] if len(sys.argv) > 1 else "D:\\"
    # event_handler = MyEventHandler(page=page)
    # observer = Observer()
    # observer.schedule(event_handler, path, recursive=True)
    # observer.start()
    pythoncom.CoInitializeEx(pythoncom.COINIT_MULTITHREADED)
    fikatia = IFikatia(catiaInstance)#IFikatia(win32com.client.GetActiveObject("Catia.Application"))
    # fikatia.marshalHazirla()
    def flet_app(page:Page):
        page.window_width = 300  # window's width is 200 px
        page.window_height = 510  # window's height is 200 px
        page.window_resizable = True
        page.window_minimizable = False
        page.window_maximizable = False
        page.window_always_on_top = True
        page.window_progress_bar=0
        page.padding = 0
        page.fonts = {
            "Kanit": "https://raw.githubusercontent.com/google/fonts/master/ofl/kanit/Kanit-Bold.ttf",
            "Aleo Bold Italic": "https://raw.githubusercontent.com/google/fonts/master/ofl/aleo/Aleo-BoldItalic.ttf"
        }
        page.theme = Theme(use_material3=True,visual_density="adaptivePlatformDensity", font_family="Roboto Bold Italic", text_theme=TextTheme(body_medium=TextStyle(size=10,color=colors.BLACK54,weight=FontWeight.W_500,font_family="Roboto Bold Italic")))
        # page.window_skip_task_bar = True
        page.window_center()
        page.title = "FikoYT Post Takipçisi v0.0.1"
        page.update()
        page.window_visible=True
        pythoncom.CoInitializeEx(pythoncom.COINIT_MULTITHREADED)
        page.fikatia=fikatia

        def route_change(e):
            print("Route change:", e.route)
            page.views.clear()
            page.views.append(FikoDilimleAnaSayfa(mainPage=page))
            # page.views.append(CatiaSeciciSayfa(mainPage=page))
            if page.route == "/catia-secici":
                page.views.append(
                    View(
                        "/settings",
                        [
                            AppBar(title=Text("Settings"), bgcolor=colors.SURFACE_VARIANT),
                            Text(
                                "Settings!", style="bodyMedium",
                            ),
                            ElevatedButton("Go to mail settings"),
                        ],
                    )
                )
            if page.route == "/settings/mail":
                page.views.append(
                    View(
                        "/settings/mail",
                        [
                            AppBar(
                                title=Text("Mail Settings"), bgcolor=colors.SURFACE_VARIANT
                            ),
                            Text("Mail settings!"),
                        ],
                    )
                )
            page.update()
            return page

        def view_pop(e):
            print("View pop:", e.view)
            page.views.pop()
            top_view = page.views[-1]
            page.go(top_view.route)

        page.on_route_change = route_change
        page.on_view_pop = view_pop

        page.go(page.route)
    return flet_app

if __name__ == "__main__":    
    flet.app(target=FikoYTPostcuv2023(win32com.client.Dispatch("Catia.Application")), view=flet.FLET_APP_HIDDEN, assets_dir="dosyalar")
