class BlogWin(QMainWindow): def __init__(self): QMainWindow.__init__(self) global server self.server = server self.filename = "" self.inEdit = False self.inPreview = False self.w = BlogWidget(self) self.setCentralWidget(self.w) self.connect(self.w.publish_b, SIGNAL("clicked()"), self.slotPublish) self.connect(self.w.entryList, SIGNAL("selected(int)"), self.slotEdit) if not password: self.slotGetPassword() self._setupMenus() self._fillEntryList() self.resize(550, 400) self.show() def _setupMenus(self): self._setupActions() self.fileMenu = QPopupMenu(self) self.menuBar().insertItem("&Dosya", self.fileMenu) self.newAction.addTo(self.fileMenu) self.deleteAction.addTo(self.fileMenu) self.quitAction.addTo(self.fileMenu) self.editMenu = QPopupMenu(self) self.menuBar().insertItem(u"&Düzenle", self.editMenu) self.imgAction.addTo(self.editMenu) self.previewAction.addTo(self.editMenu) def _setupActions(self): self.imgAction = QAction(self) self.imgAction.setAccel(QAccel.stringToKey("CTRL+ALT+R")) self.imgAction.setMenuText(u"Resim Ekle") self.connect(self.imgAction, SIGNAL("activated()"), self.slotInsertImage) self.passAction = QAction(self) self.passAction.setAccel(QAccel.stringToKey("CTRL+ALT+P")) self.connect(self.passAction, SIGNAL("activated()"), self.slotGetPassword) self.previewAction = QAction(self) self.previewAction.setAccel(QAccel.stringToKey("CTRL+ALT+O")) self.previewAction.setMenuText(u"Düzenleme/Önizleme modu") self.connect(self.previewAction, SIGNAL("activated()"), self.slotPreviewText) self.newAction = QAction(self) self.newAction.setAccel(QAccel.stringToKey("CTRL+ALT+Y")) self.newAction.setMenuText(u"Yeni") self.connect(self.newAction, SIGNAL("activated()"), self.slotNewEntry) self.deleteAction = QAction(self) self.deleteAction.setMenuText(u"Seçili olan gidiyi Sil") self.connect(self.deleteAction, SIGNAL("activated()"), self.slotDeleteEntry) self.quitAction = QAction(self) self.quitAction.setAccel(QAccel.stringToKey("CTRL+Q")) self.quitAction.setMenuText(u"Çık") self.connect(self.quitAction, SIGNAL("activated()"), self.slotQuit) def _fillEntryList(self): self.w.entryList.clear() logs = self.server.getLogs() for e in logs: self.w.entryList.insertItem(e) self.w.textLabel1.setText("Eski Girdiler (" + str(len(logs)) + "):") def _genFilename(self, line): self.filename = "" for c in range(line.length()): t = line[c] if t == u"ı" or t == u"İ": t = "i" elif t == u"ş" or t == u"Ş": t = "s" elif t == u"ü" or t == u"Ü": t = "u" elif t == u"ğ" or t == u"Ğ": t = "g" elif t == u"ö" or t == u"Ö": t = "o" elif t == u"ç" or t == u"Ç": t = "c" elif t == " " or t == "\t": t = "-" else: t = line[c].ascii() self.filename += t if not self.filename[-4] == ".txt": self.filename += ".txt" def slotGetPassword(self): askPass = PassDialog() askPass.exec_loop() def slotNewEntry(self): if self.inEdit: self.setEditMode(False) self.setPreviewMode(False) self.w.entryText.clear() def slotDeleteEntry(self): item = self.w.entryList.selectedItem() if not item: QMessageBox.critical( self, "HATA", u"Eski girdilerden hiçbiri seçili durumda değil!") return warnmsg = u"\"" + str(item.text().utf8( )) + u"\" isimli iletiyi gerçekten silmek istiyor musunuz?" ret = QMessageBox.question(self, "Dikkat!", warnmsg, u"Evet", u"Hayır") if ret != 0: return ret = self.server.deleteEntry(username, password, item.text().ascii()) if not ret: QMessageBox.critical(self, "HATA", u"Girdi silme başarısız!") else: QMessageBox.information(self, "Bitti", u"Girdi başarı ile silindi!") self._fillEntryList() def slotEdit(self, index): self.setEditMode(True) self.setPreviewMode(True) entry = self.w.entryList.item(index).text().ascii() self.filename = entry text = self.server.getText(entry) self.w.entryText.setText(text) def setEditMode(self, mode): if not mode: self.w.publish_b.setText(u"Yeni Girdiyi Yayınla") else: self.w.publish_b.setText(u"Eski Girdiyi Güncelle") self.w.entryText.clear() self.inEdit = mode def slotInsertImage(self): dlg = ImgSelectionDialog() if dlg.exec_loop() == QDialog.Accepted: filename = dlg.getSelectedImage() self.w.entryText.insert("<img src=\"" + blog_url + "/" + img_dir + "/" + filename + "\">") def slotPreviewText(self): if self.inPreview: self.setPreviewMode(False) else: self.setPreviewMode(True) def setPreviewMode(self, mode): self.w.entryText.setTextFormat(QTextEdit.PlainText) text = self.w.entryText.text() self.w.entryText.clear() if mode: self.w.entryText.setTextFormat(QTextEdit.RichText) self.w.textLabel2.setText(u"<b>** Önizleme **</b>") text.replace("\n", "<br>\n") else: self.w.textLabel2.setText("<b>Metin:</b>") text.replace("<br>\n", "\n") self.inPreview = mode self.w.entryText.setText(text) self.w.entryText.setReadOnly(mode) #preview mode'dayken yayınlama düğmesi kullanılamamalı. self.w.publish_b.setEnabled(not mode) #preview mode'dayken resim eklenemez.. self.imgAction.setEnabled(not mode) del text def slotPublish(self): global password text = self.w.entryText.text() firstline = text.left(text.find("\n")) if not firstline: QMessageBox.critical(self, "HATA", u"Bir metin girmediniz!") return # eğer EditMode içerisindeysek dosya adı liste kutusundan alınıyor # yeni bir dosya adı oluşturmaya gerek yok! if not self.inEdit: # dosya adını oluştur. self._genFilename(firstline) # her \n bir <br>\n ile değiştirilsin. text.replace("\n", "<br>\n") ret = QMessageBox.question( self, "Dikkat!", u"İçeriği gerçekten yayınlamak istiyor musun?", u"Evet", u"Hayır") if ret != 0: return # girdiyi gönder. ret = self.server.addEntry(username, password, str(self.filename), str(text.utf8()), self.inEdit) if not ret: QMessageBox.critical(self, "HATA", u"Girdi yayınlanamadı!") else: QMessageBox.information(self, "Bitti", u"Girdi başarı ile yayınlandı!") self._fillEntryList() # yayınladıktan sonra eğer içindeysek, EditMode'dan # çıkalım. Ve metin girişini temizleyelim. if self.inEdit: self.setEditMode(False) self.w.entryText.clear() def slotQuit(self): self.close()