milis-kur 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from PyQt5.QtWidgets import QDesktopWidget, QSizePolicy, QSpacerItem, QMainWindow, QApplication, QLabel, QWidget, QVBoxLayout, QHBoxLayout, QStackedWidget, QPushButton, QDialog, qApp
  4. from PyQt5.QtGui import QIcon, QPixmap, QFont
  5. from PyQt5.QtCore import Qt
  6. import sys,os, subprocess
  7. from kutuphane import asamacizimi,hosgeldiniz,klavye,konum,kullanici,disk,bilgi,kurulum,son
  8. class MerkezPencere(QMainWindow):
  9. def __init__(self, ebeveyn=None):
  10. super(MerkezPencere, self).__init__(ebeveyn)
  11. self.setStyleSheet("font: 11pt Dejavu Sans")
  12. ##################################
  13. #Yükleyici için temel değişkenler
  14. self.toplam_asama_sayisi = 8
  15. self.bulunulan_asama = 1
  16. self.s_d = "Türkçe"#secili_dil
  17. self.d = {}#diller
  18. self.milis_ayarlar = {}#Milis kurulumu için ayar kaydı
  19. self.disk = None#disk üzerindeki değişiklikleri uygulamak için sanal olarak kaydediyoruz
  20. ##################################
  21. #Yükleyici dilleri tespit ediyor
  22. self.dil_tespit()
  23. #Pencere iconumuzu ekledik
  24. self.setWindowIcon(QIcon("resimler/miliskurlogo.svg"))
  25. #Penceremize merkez widget tanımladık ve ekledik
  26. merkez_widget = QWidget()
  27. self.setCentralWidget(merkez_widget)
  28. merkez_layout = QVBoxLayout()
  29. merkez_layout.setContentsMargins(0,0,0,0)
  30. merkez_widget.setLayout(merkez_layout)
  31. #Hangi aşamada bulunduğumuzu gösteren bar yukarıya eklendi ve 1.aşama çizildi
  32. self.asama_label = QLabel()
  33. merkez_layout.addWidget(self.asama_label)
  34. self.asama_label.setPixmap(QPixmap(asamacizimi.asama_ciz(self.bulunulan_asama, self.toplam_asama_sayisi)))
  35. #Asamalarımızı oluşturalım
  36. self.asamalar = QStackedWidget()
  37. merkez_layout.addWidget(self.asamalar)
  38. #ileri ve geri düğmeleri
  39. dugmeler_kutu = QHBoxLayout()
  40. dugmeler_kutu.addSpacerItem(QSpacerItem(10, 40, QSizePolicy.Minimum, QSizePolicy.Minimum))
  41. merkez_layout.addLayout(dugmeler_kutu)
  42. self.geri_dugme = QPushButton()
  43. self.geri_dugme.setFont(QFont('SansSerif', 10))
  44. self.geri_dugme.clicked.connect(self.asama_geri)
  45. self.geri_dugme.setFixedWidth(150)
  46. dugmeler_kutu.addWidget(self.geri_dugme)
  47. dugmeler_kutu.addSpacerItem(QSpacerItem(20,40,QSizePolicy.Expanding,QSizePolicy.Minimum))
  48. self.ileri_dugme = QPushButton()
  49. self.ileri_dugme.setFont(QFont('SansSerif', 10))
  50. self.ileri_dugme.clicked.connect(self.asama_ileri)
  51. self.ileri_dugme.setFixedWidth(150)
  52. dugmeler_kutu.addWidget(self.ileri_dugme)
  53. dugmeler_kutu.addSpacerItem(QSpacerItem(10, 40, QSizePolicy.Minimum, QSizePolicy.Minimum))
  54. #Aşamalarımızı ekleyelim
  55. self.asamalar.addWidget(hosgeldiniz.Hosgeldiniz(self))
  56. self.asamalar.addWidget(klavye.Klavye(self))
  57. self.asamalar.addWidget(konum.Konum(self))
  58. self.asamalar.addWidget(kullanici.Kullanici(self))
  59. self.asamalar.addWidget(disk.Disk(self))
  60. self.asamalar.addWidget(bilgi.Bilgi(self))
  61. self.asamalar.addWidget(kurulum.Kurulum(self))
  62. self.son_asama = son.Son(self)
  63. self.asamalar.addWidget(self.son_asama)
  64. self.asama_degistir(self.bulunulan_asama)
  65. def asama_ileri(self):
  66. self.bulunulan_asama += 1
  67. if self.bulunulan_asama == 7:
  68. self.kurulum_baslat = KurulumBaslat(self)
  69. self.kurulum_baslat.show()
  70. else:
  71. self.asama_degistir(self.bulunulan_asama)
  72. def asama_geri(self):
  73. self.bulunulan_asama -= 1
  74. self.asama_degistir(self.bulunulan_asama)
  75. def asama_degistir(self,asama):
  76. self.bulunulan_asama = asama
  77. if asama == 1:
  78. self.geri_dugme.setDisabled(True)
  79. else:
  80. self.geri_dugme.setDisabled(False)
  81. if asama == 8:
  82. self.geri_dugme.setDisabled(True)
  83. self.ileri_dugme.setText(self.d[self.s_d]["Son"])
  84. self.ileri_dugme.setDisabled(False)
  85. if asama == 9:
  86. if self.son_asama.kapanacak_mi:
  87. os.system("shutdown -r now")
  88. else:
  89. qApp.closeAllWindows()
  90. else:
  91. self.asamalar.setCurrentIndex(asama-1)
  92. self.asama_label.setPixmap(QPixmap(asamacizimi.asama_ciz(self.bulunulan_asama,self.toplam_asama_sayisi)))
  93. def dil_tespit(self):
  94. _dil_uzanti="txt"
  95. diller = os.listdir("diller")
  96. for dil in diller:
  97. eklenecek_dil = {}
  98. if dil.endswith('.' + _dil_uzanti):
  99. dil_adi = os.path.splitext(dil)[0]
  100. dosya = open("diller/" + dil,"r")
  101. okunan = dosya.read()
  102. dosya.close()
  103. for satirlar in okunan.split("\n"):
  104. bol = satirlar.split("::")
  105. varmi = eklenecek_dil.get(bol[0], "yok")
  106. if varmi == "yok" and len(bol) == 2:
  107. eklenecek_dil[bol[0]] = bol[1]
  108. self.d[dil_adi] = eklenecek_dil
  109. def komutCalistirFonksiyon(self, komut):
  110. try:
  111. out = subprocess.check_output(komut, stderr=subprocess.STDOUT, shell=True, universal_newlines=True)
  112. return out.replace("\b", "")
  113. except subprocess.CalledProcessError as e:
  114. return e.output
  115. class KurulumBaslat(QDialog):
  116. def __init__(self, ebeveyn=None):
  117. super(KurulumBaslat, self).__init__(ebeveyn)
  118. self.e = ebeveyn
  119. self.setFixedWidth(400)
  120. kutu = QVBoxLayout()
  121. self.setLayout(kutu)
  122. dugme_kutu = QHBoxLayout()
  123. kutu.addLayout(dugme_kutu)
  124. label_icon = QLabel()
  125. label_icon.setPixmap(QPixmap("resimler/tehlike.svg"))
  126. label_icon.setFixedSize(50,50)
  127. dugme_kutu.addWidget(label_icon)
  128. label = QLabel()
  129. label.setWordWrap(True)
  130. label.setText(self.e.d[self.e.s_d]["Devam etmeniz halinde değişiklikler disklere uygulanacaktır. Devam etmek istiyormusunuz?"])
  131. dugme_kutu.addWidget(label)
  132. dugme_kutu = QHBoxLayout()
  133. dugme_kutu.setAlignment(Qt.AlignRight)
  134. kutu.addLayout(dugme_kutu)
  135. dugme_tamam = QPushButton()
  136. dugme_tamam.setFixedWidth(100)
  137. dugme_tamam.clicked.connect(self.kurulum_baslat)
  138. dugme_tamam.setText(self.e.d[self.e.s_d]["Devam Et"])
  139. dugme_kutu.addWidget(dugme_tamam)
  140. dugme_vazgec = QPushButton()
  141. dugme_vazgec.setFixedWidth(100)
  142. dugme_vazgec.clicked.connect(self.vazgec)
  143. dugme_vazgec.setText(self.e.d[self.e.s_d]["Vazgeç"])
  144. dugme_kutu.addWidget(dugme_vazgec)
  145. def kurulum_baslat(self):
  146. self.e.bulunulan_asama = 7
  147. self.e.asama_degistir(7)
  148. QDialog.accept(self)
  149. def vazgec(self):
  150. self.e.bulunulan_asama -= 1
  151. QDialog.accept(self)
  152. if __name__ == "__main__":
  153. uygulama = QApplication(sys.argv)
  154. uygulama.setOrganizationName('Milis Linux')
  155. uygulama.setApplicationName('Milis Yukleyici')
  156. merkezPencere = MerkezPencere()
  157. ekran_yuksekligi = QDesktopWidget().screenGeometry().height()
  158. if ekran_yuksekligi > 600:
  159. #Pencere boyutunu 950 ye 600 olarak ayarladık
  160. merkezPencere.setFixedWidth(950)
  161. merkezPencere.setFixedHeight(600)
  162. merkezPencere.show()
  163. else:
  164. merkezPencere.showFullScreen()
  165. sys.exit(uygulama.exec_())