import glob
import os
import subprocess
import psutil
from IFikomObject import IFikoObject


class IFikoSistem: pass


class IFikoDosyaSistemi(IFikoObject):
    def __init__(self, sahip:IFikoSistem=None):
        super(IFikoDosyaSistemi, self).__init__(sahip)
        self.sahip = sahip
        self.anaProgram = sahip.anaProgram
        # --->

    def klasordekiDosyalar(self, Klasor:str, Uzantilar="*.*") -> list:
        """ Klasörde, Verilen Uzantidaki Dosyalari Listeler
         Örnek Olarak C:\\ Dizinindeki exe Dosyalarini Döndurmek İçin:

        KlasordekiDosyalar(r"C:\\","*.exe")
        """
        os.chdir(Klasor)
        List = []
        for files in glob.glob(Uzantilar):
            List.append(files)
        return List

    def programCalistirBekle(self, Parametreler, PencereGoster=0, bekle:bool=False):
        """ Herhangi Bir Programi Parametre İle Çalistirip Bitmesini Beklerdi """
        info = subprocess.STARTUPINFO()
        info.dwFlags = PencereGoster
        info.wShowWindow = 11
        asd = subprocess.Popen(Parametreler, startupinfo=info, creationflags=subprocess.SW_HIDE)

        proc = psutil.Process(asd.pid)
        # proc.set_nice(psutil.REALTIME_PRIORITY_CLASS)
        asd.communicate()
        return asd

    def programCalistir(self, Parametreler, PencereGoster=0):
        """ Herhangi Bir Programi Parametre İle Çalistirip Bitmesini BekleMEZ """
        info = subprocess.STARTUPINFO()
        info.dwFlags = 11
        info.wShowWindow = PencereGoster
        asd = subprocess.Popen(Parametreler, startupinfo=info, creationflags=subprocess.SW_HIDE)

        proc = psutil.Process(asd.pid)
        # proc.set_nice(psutil.REALTIME_PRIORITY_CLASS)
        return proc


import IFikoSistem