123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- #!/usr/bin/python3
- from PyQt5.QtWidgets import (QMessageBox, QMainWindow, QApplication, QWidget, QVBoxLayout, QStackedWidget)
- from PyQt5.QtGui import QIcon
- from siniflar import desitlepencere, paketgenelpencere, paketbilgipencere, kursilpencere, guncelle, surec
- import os, sys
- class MerkezPencere(QMainWindow):
- def __init__(self, ebeveyn=None):
- super(MerkezPencere, self).__init__(ebeveyn)
- self.setMinimumSize(800,600)
- self.icon_adresi = "/usr/share/icons/Numix-Circle-Light/scalable/apps/"
- self.talimatname_dizini = "/root/talimatname/genel/"
- merkez_widget = QWidget()
- self.setCentralWidget(merkez_widget)
- merkez_kutu = QVBoxLayout()
- merkez_kutu.setContentsMargins(0,0,0,0)
- merkez_widget.setLayout(merkez_kutu)
- self.asamalar = QStackedWidget()
- merkez_kutu.addWidget(self.asamalar)
- self.desitlepencere = desitlepencere.DEsitlePencere()
- self.asamalar.addWidget(self.desitlepencere)
- self.paketgenelpencere = paketgenelpencere.PaketGenelPencere(self)
- self.asamalar.addWidget(self.paketgenelpencere)
- self.paketbilgipencere = paketbilgipencere.PaketBilgiPencere(self)
- self.asamalar.addWidget(self.paketbilgipencere)
- self.kursilpencere = kursilpencere.KurSilPencere(self)
- self.asamalar.addWidget(self.kursilpencere)
- self.guncelle = guncelle.GuncellePencere(self)
-
- self.asamalar.addWidget(self.guncelle)
- self.setWindowIcon(QIcon("simgeler/paket.svg"))
- self.asamalar.setCurrentIndex(0)
- self.depo_esitle()
- def closeEvent(self, event):
- os.system("killall mps")
-
- def icon_getir(self,icon_adi):
- if os.path.exists(self.icon_adresi+icon_adi+".svg"):
- icon = QIcon(self.icon_adresi+icon_adi+".svg")
- elif os.path.exists(self.icon_adresi+"package-manager-icon.svg"):
- icon = QIcon(self.icon_adresi+"package-manager-icon.svg")
- else:
- icon = QIcon.fromTheme(icon_adi, QIcon.fromTheme("package-manager-icon"))
- return icon
- def paketleri_guncelle(self):
- self.asamalar.setCurrentIndex(4)
- self.guncelle.islem = "guncelle"
- self.guncelle.guncelle_surec_baslat()
- def paket_kur_sil(self,paket_adi,islem):
- self.asamalar.setCurrentIndex(3)
- self.kursilpencere.sorgu_surec_baslat(paket_adi,islem)
- def paket_secildi(self,paket_adi):
- self.paketbilgipencere.surec_baslat(paket_adi)
- self.asamalar.setCurrentIndex(2)
- def tum_paketler_kontrol(self):
- self.tum_paketler = []
- self.komut = "mps paketler"
- self.islem = "tum_paketler_kontrol"
- self.surec_baslat()
- def kurulu_paketler_tespit(self):
- self.kurulu_paketler = []
- self.komut = "mps liste --normal"
- self.islem = "kurulu_paketler_tespit"
- self.surec_baslat()
- def depo_esitle(self):
- self.komut = "mps -GG && mps guncelle --normal"
- self.islem = "depo_esitle"
- self.surec_baslat()
- def son_kontroller(self):
- self.paketler_sozluk = {}
- self.gruplar_sozluk = {}
- for i in os.listdir(self.talimatname_dizini):
- dizin = self.talimatname_dizini + i
- for a in os.listdir(dizin):
- self.bilgi_getir(dizin,a)
- for i in os.listdir(self.talimatname_dizini):
- dizin = self.talimatname_dizini
- self.bilgi_getir(dizin,i)
- def bilgi_getir(self,dizin,isim):
- if os.path.exists(dizin+"/"+isim+"/"+"talimat"):
- f = open(dizin+"/"+isim+"/"+"talimat","r")
- okunan = f.readlines()
- f.close()
- varmi = self.paketler_sozluk.get(isim,"yok")
- if varmi == "yok":
- self.paketler_sozluk[isim] = {"Tanim":"","URL":"","Paketci":"","Gerekler":"","Grup":"","Isim":"","Surum":"","Devir":"","Kaynak":""}
- for satir in okunan:
- if "# Tanım: " in satir:
- self.paketler_sozluk[isim]["Tanim"] = satir.split("# Tanım: ")[1][:-1]
- elif "# URL: " in satir:
- self.paketler_sozluk[isim]["URL"] = satir.split("# URL: ")[1][:-1]
- elif "# Paketçi: " in satir:
- self.paketler_sozluk[isim]["Paketci"] = satir.split("# Paketçi: ")[1][:-1]
- elif "# Gerekler: " in satir:
- self.paketler_sozluk[isim]["Gerekler"] = satir.split("# Gerekler: ")[1][:-1]
- elif "# Grup: " in satir:
- gruplar = satir.split("# Grup: ")[1][:-1]
- self.paketler_sozluk[isim]["Grup"] = gruplar
- for grup in gruplar.split():
- varmi = self.gruplar_sozluk.get(grup.capitalize(),"yok")
- if varmi == "yok":
- self.gruplar_sozluk[grup.capitalize()]=[isim]
- else:
- varmi.append(isim)
- elif "isim=" in satir:
- self.paketler_sozluk[isim]["Isim"] = satir.split("isim=")[1][:-1]
- elif "surum=" in satir:
- self.paketler_sozluk[isim]["Surum"] = satir.split("surum=")[1][:-1]
- elif "devir=" in satir:
- self.paketler_sozluk[isim]["Devir"] = satir.split("devir=")[1][:-1]
- elif "kaynak=" in satir:
- kaynak = satir.split("kaynak=")[1].split(")")[0][1:]
- kaynak = kaynak.replace("$isim",self.paketler_sozluk[isim]["Isim"])
- s_ = self.paketler_sozluk[isim]["Surum"].split(".")
- if len(s_) >= 2:
- kaynak = kaynak.replace("${surum%.*}",s_[0]+"."+s_[1])
- kaynak = kaynak.replace("$surum",self.paketler_sozluk[isim]["Surum"])
- kaynak = kaynak.replace("$devir",self.paketler_sozluk[isim]["Devir"])
- self.paketler_sozluk[isim]["Kaynak"] = kaynak
- def surec_baslat(self):
- terminal_thread = surec.SurecThread(self)
- terminal_thread.update.connect(self.surec_guncelle)
- terminal_thread.finished.connect(self.surec_bitti)
- terminal_thread.start()
- def surec_bitti(self):
- if self.islem == "depo_esitle":
- self.desitlepencere.donut_label.setText("Depolar Güncellendi")
- self.kurulu_paketler_tespit()
- elif self.islem == "kurulu_paketler_tespit":
- self.desitlepencere.donut_label.setText("Kurulu Paketler Tespit Edildi")
- self.tum_paketler_kontrol()
- elif self.islem == "tum_paketler_kontrol":
- self.desitlepencere.donut_label.setText("MPS-GUI Paket Veri Tabanı Eşitleniyor")
- self.son_kontroller()
- self.paketgenelpencere.grup_liste_guncelle()
- self.paketgenelpencere.paket_liste_guncelle()
- self.asamalar.setCurrentIndex(1)
- def surec_guncelle(self,cikti):
- if self.islem == "depo_esitle":
- self.desitlepencere.donut_label.setText(cikti[7:-7])
- elif self.islem == "kurulu_paketler_tespit":
- self.kurulu_paketler.append(cikti)
- self.desitlepencere.donut_label.setText("Kurulu Paketler Tespit Ediliyor : "+cikti)
- elif self.islem == "tum_paketler_kontrol":
- self.tum_paketler.append(cikti)
-
- def cikis(self):
- os.system("killall mps")
- sys.exit()
- if __name__ == "__main__":
- uygulama = QApplication(sys.argv)
- uygulama.setOrganizationName('Milis Paket Yöneticisi')
- uygulama.setApplicationName('Milis Paket Yöneticisi')
- if os.getuid() != 0:
- QMessageBox.warning(QWidget(),"Hata","MPS-GUI çalışabilmek için root yetkilerine ihtiyaç duymaktadır.\nLütfen root yetkileriyle tekrar çalıştırın.")
- else:
- merkezPencere = MerkezPencere()
- merkezPencere.show()
- sys.exit(uygulama.exec_())
|