import sys

sys.coinit_flags = 0


from time import sleep
import asyncio
from math import pi
from random import shuffle
from typing import Any, List, Optional
from win32com.client import CDispatch, Dispatch
import flet as ft
from flet import (
    AppBar,
    ElevatedButton,
    Page,
    Text,
    View,
    colors,
    Row,
    MainAxisAlignment,
    CrossAxisAlignment,
    Image,
    ImageFit,
    TextAlign,
    Column,
    TextField,
    KeyboardType,
    icons,
    Slider,
    ProgressBar,
    OutlinedButton,
    IconButton,
    BottomSheet,
    Container,
    AlertDialog,
    ButtonStyle,
    TextButton,
    Icon,
    ListView,
    ListTile,
    PopupMenuButton,
    PopupMenuItem,
    Padding,
    Checkbox,
    alignment,
    BlendMode,
    LinearGradient,
    ShaderMask,
    Rotate,
    Divider,
    Alignment,
    border,
    border_radius,
    Offset,
    TextStyle,
    UserControl,
    BoxShadow,
    TextOverflow,
    FontWeight,
    VerticalDivider,
    SafeArea,
)
from flet_core import Control
from flet_core.bottom_app_bar import BottomAppBar
from flet_core.control import OptionalNumber
from flet_core.floating_action_button import (
    FloatingActionButton,
)
from flet_core.navigation_bar import NavigationBar
from flet_core.navigation_drawer import NavigationDrawer
from flet_core.types import (
    CrossAxisAlignment,
    MainAxisAlignment,
    PaddingValue,
    ScrollMode,
)
from IEksen import IEksen
from IHibridBody import IHibridBody
from IHibridBodyler import IHibridBodyler
from IPart import IPart
from IPartDokuman import IPartDokuman
from Projeler.Yalin.FikoPostTakipcisi.sayfalar.ana_sayfa.item_program import ProgramItem
from resimler import fikoyt_logo, eksen_simge, mdf_kutuk_resim, hiper_gif
import pythoncom
import win32com
from IFikatia import IFikatia
from IProgram import IProgram
from Projeler.Yalin.FikoPostTakipcisi.globals import catia, get_catia_instances
from Projeler.Yalin.FikoPostTakipcisi.sayfalar.catia_secici.item_fikatia import (
    FikatiaItem,
)


class CatiaSeciciSayfa(View):
    def __init__(
        self,
        mainPage: Page,
    ):
        super().__init__(route="/")
        self.mainPage = mainPage
        self.spacing = 0
        self.padding = 2
        # --->
        self.catialar = []
        self.catialar = get_catia_instances().copy()
        self.hazirla()

    def hazirla(self):
        self.vertical_alignment = MainAxisAlignment.START
        self.horizontal_alignment = CrossAxisAlignment.CENTER
        self.spacing = 0

        self.logo = Container(
            width=36,
            height=36,
            border_radius=5,
            padding=0,
            alignment=alignment.center,
            image_src_base64=hiper_gif,
        )

        # --->
        self.dosyaListesi = ListView(
            expand=1,
            spacing=5,
            padding=0,
            auto_scroll=False,
            divider_thickness=1,
        )

        self.ust_uyari = Text(
            "💠 Lütfen Catia'yı Seçiniz",
            text_align=TextAlign.CENTER,
            overflow=TextOverflow.FADE,
        )
        # ---->
        self.controls = [
            Row(
                [
                    self.logo,
                    Column(
                        controls=[
                            Text(
                                "FikoYT Post Takipçisi v0.0.1",
                                text_align=TextAlign.CENTER,
                            ),
                            Text(
                                f"💠 Listedeki Catia'lardan Birini Seçiniz",
                                text_align=TextAlign.CENTER,
                                overflow=TextOverflow.ELLIPSIS,
                                no_wrap=False,
                                max_lines=2,
                            ),
                        ],
                        spacing=0,
                    ),
                ],
                spacing=0,
                alignment=MainAxisAlignment.START,
                vertical_alignment=CrossAxisAlignment.START,
            ),
            Container(
                self.ust_uyari,
                shadow=ft.BoxShadow(
                    spread_radius=0,
                    blur_radius=3,
                    color=colors.BLUE_GREY_300,
                    offset=Offset(0, 0),
                    blur_style=ft.ShadowBlurStyle.OUTER,
                ),
                # width=24,
                padding=0,
                height=18,
                margin=2,
                alignment=alignment.center,
                bgcolor=colors.BLUE_100,
                border=border.all(1, colors.BLUE_400),
                border_radius=border_radius.all(0),
                ink=True,
            ),
            self.dosyaListesi,
        ]

        # --->
        # self.catialariAl()
        # self.catialariListele()

    def catialariAl(self):
        pass
        # for cat in range(0, len(self.catialar)):
        #     self.catialar.append(IFikatia(catialar[cat], catialar[cat]))

    def catialariListele(self):
        # prg = self.tumProgramlar[i]
        fkt=IFikatia()
        # fkt.acikCatialar()
        # sayac=0
        # for value in range(len(fkt.fikatialar)):
        #     fkt.fikatialar[value].baslik=f"asaaaadddad {sayac}"
        #     sayac+=1
        # self.fikatia = IFikatia(win32com.client.GetActiveObject("Catia.Application"))
        # self.fikatia.marshalHazirla()
        # self.tumProgramlar = []
        # po = self.fikatia.aktifDokuman.asProcessDokuman.partOperasyonlari.item(0)
        # po.marshalHazirla()
        # for catindex in range(0, po.programlar.sayisi):
        #     s = po.programlar[catindex]
        #     s.marshalHazirla()
        #     self.tumProgramlar.append(po.programlar[catindex])

    def uyari_goster(self, uyari, renk=colors.BLUE_400, sure_sn=2.5):
        self.ust_uyari.value = uyari
        self.ust_uyari.color = renk
        self.update()
        sleep(sure_sn)
        self.ust_uyari.value = "Sizin İçin Burdayız"
        self.ust_uyari.color = colors.BLUE_400
        self.update()

    def bosInk(self):
        pass
