klavye.py 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. #
  2. #
  3. # Copyright 2017 Metehan Özbek <mthnzbk@gmail.com>
  4. #
  5. # This program is free software; you can redistribute it and/or modify
  6. # it under the terms of the GNU General Public License as published by
  7. # the Free Software Foundation; either version 3 of the License, or
  8. # (at your option) any later version.
  9. #
  10. # This program is distributed in the hope that it will be useful,
  11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. # GNU General Public License for more details.
  14. #
  15. # You should have received a copy of the GNU General Public License
  16. # along with this program; if not, write to the Free Software
  17. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  18. # MA 02110-1301, USA.
  19. #
  20. #
  21. from PyQt5.QtWidgets import QWidget, QHBoxLayout, QVBoxLayout, QComboBox, QLabel, QLineEdit, QSpacerItem, QSizePolicy
  22. from PyQt5.QtCore import Qt
  23. from .klavye_label import KlavyeLabel
  24. import os
  25. from .veriler.klavye_veri import duzenler,modeller,varyantlar
  26. class Klavye(QWidget):
  27. def __init__(self, ebeveyn=None):
  28. super(Klavye,self).__init__(ebeveyn)
  29. self.e = ebeveyn
  30. self.setLayout(QVBoxLayout())
  31. self.layout().setAlignment(Qt.AlignCenter)
  32. merkez_layout = QHBoxLayout()
  33. self.layout().addLayout(merkez_layout)
  34. self.klavye_resim = KlavyeLabel(self)
  35. merkez_layout.addWidget(self.klavye_resim)
  36. self.layout().addSpacerItem(QSpacerItem(20, 40, QSizePolicy.Expanding, QSizePolicy.MinimumExpanding))
  37. hlayoutx = QHBoxLayout()
  38. self.layout().addLayout(hlayoutx)
  39. self.model_label = QLabel()
  40. #self.model_label.setFixedWidth(150)
  41. hlayoutx.addWidget(self.model_label)
  42. self.model_combo = QComboBox()
  43. hlayoutx.addWidget(self.model_combo)
  44. hlayout = QHBoxLayout()
  45. self.layout().addLayout(hlayout)
  46. self.ulke_label = QLabel()
  47. hlayout.addWidget(self.ulke_label)
  48. self.ulke_combo = QComboBox()
  49. #self.ulke_combo.setFixedWidth(325)
  50. hlayout.addWidget(self.ulke_combo)
  51. hlayout.addSpacerItem(QSpacerItem(40, 20, QSizePolicy.Preferred, QSizePolicy.Expanding))
  52. self.klavye_label = QLabel()
  53. hlayout.addWidget(self.klavye_label)
  54. self.keyboardVList = QComboBox()
  55. #self.keyboardVList.setFixedWidth(325)
  56. hlayout.addWidget(self.keyboardVList)
  57. self.text_le = QLineEdit()
  58. #self.text_le.setFixedWidth(800)
  59. self.layout().addWidget(self.text_le)
  60. self.layout().addSpacerItem(QSpacerItem(20, 40, QSizePolicy.Expanding, QSizePolicy.MinimumExpanding))
  61. self.klavye_listesi = modeller
  62. self.layout_list = duzenler
  63. self.variant_list = varyantlar
  64. model = list(self.klavye_listesi.keys())
  65. model.sort()
  66. for i in model:
  67. self.model_combo.addItem(self.klavye_listesi[i])
  68. if i == "pc105":
  69. self.model_combo.setCurrentText(self.klavye_listesi[i])
  70. self.e.milis_ayarlar["klavye_model"] = i, self.klavye_listesi[i]
  71. keys = list(self.layout_list.keys())
  72. keys.sort()
  73. for i in keys:
  74. self.ulke_combo.addItem(self.layout_list[i])
  75. default = self.layout_list.get(self.e.milis_ayarlar["dil"][:2], "us")
  76. if default == "us":
  77. self.ulke_combo.setCurrentText(self.layout_list[default])
  78. self.e.milis_ayarlar["klavye_duzeni"] = default, self.layout_list[default]
  79. else:
  80. self.ulke_combo.setCurrentText(default)
  81. self.e.milis_ayarlar["klavye_duzeni"] = self.e.milis_ayarlar["dil"][:2], default
  82. self.keyboardVList.addItem("Default")
  83. for k, v in self.variant_list.items():
  84. if k == self.e.milis_ayarlar["klavye_duzeni"][0]:
  85. for i in v:
  86. self.keyboardVList.addItems(i.values())
  87. self.e.milis_ayarlar["klavye_varyantı"] = None
  88. self.model_combo.currentTextChanged.connect(self.klaye_modeli_secildi)
  89. self.ulke_combo.currentTextChanged.connect(self.ulke_secildi)
  90. self.keyboardVList.currentTextChanged.connect(self.klavye_tipi_secildi)
  91. self.klavye_resim.klavye_bilgi.emit(self.e.milis_ayarlar["klavye_model"][0],
  92. self.e.milis_ayarlar["klavye_duzeni"][0],
  93. self.e.milis_ayarlar["klavye_varyantı"])
  94. def showEvent(self, event):
  95. self.e.setWindowTitle(self.e.d[self.e.s_d]["Klavye Ayarları"])
  96. self.model_label.setText(self.e.d[self.e.s_d]["Klavye Modeli"])
  97. self.ulke_label.setText(self.e.d[self.e.s_d]["Ülke"])
  98. self.klavye_label.setText(self.e.d[self.e.s_d]["Klavye Türü"])
  99. self.text_le.setPlaceholderText(self.e.d[self.e.s_d]["Klavyenizi test edin"])
  100. def klaye_modeli_secildi(self, value):
  101. for model in self.klavye_listesi.keys():
  102. if self.klavye_listesi[model] == value:
  103. self.e.milis_ayarlar["klavye_model"] = model, value
  104. self.klavye_resim.klavye_bilgi.emit(self.e.milis_ayarlar["klavye_model"][0],
  105. self.e.milis_ayarlar["klavye_duzeni"][0],
  106. self.e.milis_ayarlar["klavye_varyantı"])
  107. def ulke_secildi(self, value):
  108. for layout in self.layout_list.keys():
  109. if self.layout_list[layout] == value:
  110. self.e.milis_ayarlar["klavye_duzeni"] = layout, value
  111. self.keyboardVList.clear()
  112. self.e.milis_ayarlar["klavye_varyantı"] = None
  113. self.keyboardVList.addItem("Default")
  114. for k, v in self.variant_list.items():
  115. if k == self.e.milis_ayarlar["klavye_duzeni"][0]:
  116. for i in v:
  117. self.keyboardVList.addItems(i.values())
  118. os.system("setxkbmap -layout {} -variant \"\"".format(self.e.milis_ayarlar["klavye_duzeni"][0]))
  119. self.klavye_resim.klavye_bilgi.emit(self.e.milis_ayarlar["klavye_model"][0],
  120. self.e.milis_ayarlar["klavye_duzeni"][0],
  121. self.e.milis_ayarlar["klavye_varyantı"])
  122. def klavye_tipi_secildi(self, value):
  123. if value == "Default":
  124. os.system("setxkbmap -variant \"\"")
  125. self.e.milis_ayarlar["klavye_varyantı"] = None
  126. self.klavye_resim.klavye_bilgi.emit(self.e.milis_ayarlar["klavye_model"][0],
  127. self.e.milis_ayarlar["klavye_duzeni"][0],
  128. self.e.milis_ayarlar["klavye_varyantı"])
  129. else:
  130. for variant in self.variant_list.keys():
  131. if variant in self.e.milis_ayarlar["klavye_duzeni"]:
  132. for key in self.variant_list[variant]:
  133. if key[list(key.keys())[0]] == value:
  134. self.e.milis_ayarlar["klavye_varyantı"] = list(key.keys())[0], list(key.values())[0]
  135. print("setxkbmap -variant {}".format(self.e.milis_ayarlar["klavye_varyantı"][0]))
  136. os.system("setxkbmap -layout {} -variant {}".format(self.e.milis_ayarlar["klavye_duzeni"][0],self.e.milis_ayarlar["klavye_varyantı"][0]))
  137. varyant = self.e.milis_ayarlar["klavye_varyantı"]
  138. if varyant == None:
  139. varyant = [""]
  140. self.klavye_resim.klavye_bilgi.emit(self.e.milis_ayarlar["klavye_model"][0],
  141. self.e.milis_ayarlar["klavye_duzeni"][0],
  142. varyant[0])