kursilpencere.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. from PyQt5.QtWidgets import (QWidget, QHBoxLayout, QGridLayout, QVBoxLayout, QLabel, QPushButton, QDialog, QTextEdit)
  2. from PyQt5.QtCore import Qt, QSize
  3. from PyQt5.QtGui import QIcon, QMovie
  4. from siniflar import surec
  5. class KurSilPencere(QWidget):
  6. def __init__(self, ebeveyn=None):
  7. super(KurSilPencere, self).__init__(ebeveyn)
  8. self.ebeveyn = ebeveyn
  9. merkez_kutu = QVBoxLayout()
  10. merkez_kutu.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
  11. self.setLayout(merkez_kutu)
  12. merkez_kutu.setContentsMargins(10,10,10,10)
  13. baslik_kutu = QHBoxLayout()
  14. baslik_kutu.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
  15. merkez_kutu.addLayout(baslik_kutu)
  16. self.icon_label = QLabel()
  17. baslik_kutu.addWidget(self.icon_label)
  18. self.paket_adi_label = QLabel()
  19. baslik_kutu.addWidget(self.paket_adi_label)
  20. self.gif_label = QLabel()
  21. self.gif_label.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
  22. merkez_kutu.addWidget(self.gif_label)
  23. animasyon = QMovie("iconlar/surec.gif")
  24. self.gif_label.setMovie(animasyon)
  25. animasyon.start()
  26. self.yapilan_islem = QLabel()
  27. merkez_kutu.addWidget(self.yapilan_islem)
  28. def sorgu_surec_baslat(self,paket,islem):
  29. self.paket_adi = paket
  30. self.islem = islem
  31. icon = self.ebeveyn.icon_getir(self.paket_adi)
  32. self.icon_label.setPixmap(icon.pixmap(icon.actualSize(QSize(64,64))))
  33. self.paket_adi_label.setText(self.paket_adi)
  34. self.yapilan_islem.setText("{} Paketinin bağımlılıkları sorgulanıyor".format(paket))
  35. if self.islem == "Kur":
  36. surec_pencere = SurecBaslatOnay(self)
  37. self.bagimliliklar = [paket]
  38. for gerek in self.ebeveyn.paketler_sozluk[paket]["Gerekler"].split():
  39. if gerek not in self.ebeveyn.kurulu_paketler:
  40. self.bagimliliklar.append(gerek)
  41. surec_pencere.kutu_guncelle("{} paketi için aşağıdaki paketler kurulacak".format(self.paket_adi),"\n".join(self.bagimliliklar))
  42. surec_pencere.exec_()
  43. elif self.islem == "Sil":
  44. self.yapilan_islem.setText("{} Paketi İle silinecek paketler sorgulanıyor".format(self.paket_adi))
  45. surec_pencere = SurecBaslatOnay(self)
  46. surec_pencere.kutu_guncelle("{} paketiyle beraber aşağıdaki paketler silinecek".format(self.paket_adi),self.paket_adi)
  47. surec_pencere.exec_()
  48. def islem_surec_baslat(self):
  49. if self.islem == "Kur":
  50. self.komut = "mps kur {} --normal".format(self.paket_adi)
  51. elif self.islem == "Sil":
  52. self.yapilan_islem.setText("{} Paketi siliniyor".format(self.paket_adi))
  53. self.komut = "mps sil {} evet --onayla".format(self.paket_adi)
  54. terminal_thread = surec.SurecThread(self)
  55. terminal_thread.update.connect(self.islem_surec_guncelle)
  56. terminal_thread.finished.connect(self.islem_surec_bitti)
  57. terminal_thread.start()
  58. def islem_surec_bitti(self):
  59. if self.islem == "Kur":
  60. for bagimlilik in self.bagimliliklar:
  61. self.ebeveyn.kurulu_paketler.append(bagimlilik)
  62. elif self.islem == "Sil":
  63. self.ebeveyn.kurulu_paketler.remove(self.paket_adi)
  64. self.ebeveyn.asamalar.setCurrentIndex(1)
  65. self.ebeveyn.paketgenelpencere.paket_liste_guncelle()
  66. def islem_surec_guncelle(self,cikti):
  67. self.yapilan_islem.setText(cikti.replace(".", ""))
  68. class SurecBaslatOnay(QDialog):
  69. def __init__(self, ebeveyn=None):
  70. super(SurecBaslatOnay, self).__init__(ebeveyn)
  71. self.ebeveyn = ebeveyn
  72. self.setWindowFlags(self.windowFlags() | Qt.CustomizeWindowHint)
  73. self.setWindowFlags(self.windowFlags() & ~Qt.WindowCloseButtonHint)
  74. merkez_kutu = QGridLayout()
  75. self.setLayout(merkez_kutu)
  76. self.bilgi_label = QLabel()
  77. merkez_kutu.addWidget(self.bilgi_label,0,0,1,2)
  78. self.olay_te = QTextEdit()
  79. self.olay_te.setReadOnly(True)
  80. merkez_kutu.addWidget(self.olay_te,1,0,1,2)
  81. self.onay_dugme = QPushButton("Onayla")
  82. self.onay_dugme.clicked.connect(self.onay_fonk)
  83. self.geri_dugme = QPushButton("Vazgeç")
  84. self.geri_dugme.clicked.connect(self.geri_fonk)
  85. merkez_kutu.addWidget(self.geri_dugme,2,0,1,1)
  86. merkez_kutu.addWidget(self.onay_dugme,2,1,1,1)
  87. def onay_fonk(self):
  88. self.ebeveyn.islem_surec_baslat()
  89. QDialog.accept(self)
  90. def geri_fonk(self):
  91. self.ebeveyn.ebeveyn.asamalar.setCurrentIndex(1)
  92. QDialog.accept(self)
  93. def kutu_guncelle(self,ust,alt):
  94. self.bilgi_label.setText(ust)
  95. self.olay_te.setText(alt)