Skip to content

Commit

Permalink
Criador de Postagens - Versão 1.1 - Verifique o CHANGELOG.txt para ma…
Browse files Browse the repository at this point in the history
…iores informações!
  • Loading branch information
Wolfterro committed Mar 26, 2017
1 parent 4f7ef4f commit 34fee4f
Show file tree
Hide file tree
Showing 7 changed files with 591 additions and 41 deletions.
20 changes: 20 additions & 0 deletions CHANGELOG.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
Criador de Postagens
====================

Um simples criador de postagens para meu site pessoal no GitHub!
----------------------------------------------------------------

CHANGELOG:
==========

VERSÃO 1.1:
- Variável com o valor da hash MD5 do arquivo modelo movida para a classe GlobalVars.
- Adicionada opção de salvar diretamente o arquivo já aberto pelo programa.
- Adicionada opção de limpar todos os campos e fechar o arquivo já aberto pelo programa.

#---------------------------------------------------------------------------------------

VERSÃO 1.0:
- Versão inicial do programa.

#---------------------------------------------------------------------------------------
16 changes: 13 additions & 3 deletions src/CriadorDePostagens.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

#===================================
# Criado por: Wolfterro
# Versão: 1.0 - Python 2.x
# Versão: 1.1 - Python 2.x
# Data: 26/03/2017
#===================================

Expand Down Expand Up @@ -168,12 +168,18 @@ def setupUi(self, MainWindow, Handler):
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar)
self.actionSalvar = QtGui.QAction(MainWindow)
self.actionSalvar.setObjectName(_fromUtf8("actionSalvar"))
self.actionNovo = QtGui.QAction(MainWindow)
self.actionNovo.setObjectName(_fromUtf8("actionNovo"))
self.actionSalvar_Como = QtGui.QAction(MainWindow)
self.actionSalvar_Como.setObjectName(_fromUtf8("actionSalvar_Como"))
self.actionSair = QtGui.QAction(MainWindow)
self.actionSair.setObjectName(_fromUtf8("actionSair"))
self.actionFonte = QtGui.QAction(MainWindow)
self.actionFonte.setObjectName(_fromUtf8("actionFonte"))
self.menuArquivo.addAction(self.actionNovo)
self.menuArquivo.addAction(self.actionSalvar)
self.menuArquivo.addAction(self.actionSalvar_Como)
self.menuArquivo.addAction(self.actionSair)
self.menuFormatar.addAction(self.actionFonte)
Expand All @@ -200,8 +206,10 @@ def setupUi(self, MainWindow, Handler):

# Adicionando evento 'triggered.connect' aos menus da janela
# ==========================================================
self.actionNovo.triggered.connect(Handler.Clear)
self.actionSair.triggered.connect(Handler.ExitProgram)
self.actionSalvar_Como.triggered.connect(Handler.GetValuesAndSaveAs)
self.actionSalvar.triggered.connect(Handler.Save)
self.actionSalvar_Como.triggered.connect(Handler.SaveAs)
self.actionFonte.triggered.connect(Handler.ChangeFont)

self.retranslateUi(MainWindow)
Expand Down Expand Up @@ -230,6 +238,8 @@ def retranslateUi(self, MainWindow):
self.pushButton_15.setText(_translate("MainWindow", "<hr>", None))
self.menuArquivo.setTitle(_translate("MainWindow", "Arquivo", None))
self.menuFormatar.setTitle(_translate("MainWindow", "Formatar", None))
self.actionNovo.setText(_translate("MainWindow", "Novo", None))
self.actionSalvar.setText(_translate("MainWindow", "Salvar", None))
self.actionSalvar_Como.setText(_translate("MainWindow", "Salvar Como...", None))
self.actionSair.setText(_translate("MainWindow", "Sair", None))
self.actionFonte.setText(_translate("MainWindow", "Fonte...", None))
Expand All @@ -241,7 +251,7 @@ def retranslateUi(self, MainWindow):

# Os métodos do programa serão definidos pelo Handler
# ---------------------------------------------------
Handler = WindowHandler(ui)
Handler = WindowHandler(ui, MainWindow)

# Definindo locale do programa
# ----------------------------
Expand Down
5 changes: 3 additions & 2 deletions src/GlobalVars.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,10 @@

#===================================
# Criado por: Wolfterro
# Versão: 1.0 - Python 2.x
# Versão: 1.1 - Python 2.x
# Data: 26/03/2017
#===================================

class GlobalVars:
Version = "1.0"
Version = "1.1"
ModelFileMD5 = "e5f02f183eb2dea4cfda8f97c8e39b5e"
132 changes: 96 additions & 36 deletions src/WindowHandler.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

#===================================
# Criado por: Wolfterro
# Versão: 1.0 - Python 2.x
# Versão: 1.1 - Python 2.x
# Data: 26/03/2017
#===================================

Expand All @@ -51,30 +51,59 @@
reload(sys)
sys.setdefaultencoding('utf-8')

# Definindo Versão do Programa e determinando a pasta 'home' do usuário.
# NÃO-IMPLEMENTADA
# ======================================================================
# Codificação do programa.
# ========================
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s

try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)

# Determinando a pasta 'home' do usuário.
# !!! NÃO-IMPLEMENTADO AINDA !!!
# =======================================
if platform.system() == "Windows":
buf = ctypes.create_unicode_buffer(1024)
ctypes.windll.kernel32.GetEnvironmentVariableW(u"USERPROFILE", buf, 1024)
home_dir = buf.value
else:
home_dir = expanduser("~")

# Classe de métodos da janela principal do programa
# =================================================
class WindowHandler(object):
# Obtendo o objeto da janela principal do programa
# ================================================
def __init__(self, ui):
self.window = ui
def __init__(self, ui, MainWindow):
self.ui = ui
self.MainWindow = MainWindow
self.Filename = ""
self.CheckModelFile()

# Adicionando tags ao texto principal
# ===================================
def InsertTag(self, Tag, isNewLine):
if isNewLine:
self.window.textEdit.insertPlainText("%s\n" % (Tag))
self.ui.textEdit.insertPlainText("%s\n" % (Tag))
else:
self.window.textEdit.insertPlainText(Tag)
self.ui.textEdit.insertPlainText(Tag)

# Limpando todos os campos e zerando nome de arquivo para um novo post
# ====================================================================
def Clear(self):
self.ui.textEdit.clear()
self.ui.lineEdit.clear()
self.ui.lineEdit_2.clear()
self.Filename = ""
self.ShowOpenedFilename(False)

# Gerando texto automático para inserir como identificador no arquivo .html
# =========================================================================
Expand All @@ -88,55 +117,86 @@ def GenerateAutoText(self):
def GenerateFormattedData(self):
return "%s" % (datetime.datetime.now().strftime("%d/%m/%Y"))

# Resgatando os valores do programa e salvando em um arquivo .html
# ================================================================
def GetValuesAndSaveAs(self):
Title = cgi.escape(self.window.lineEdit.text())
SubTitle = cgi.escape(self.window.lineEdit_2.text())
# Mostrando o arquivo aberto no título da janela
# ==============================================
def ShowOpenedFilename(self, isOpened):
if isOpened:
self.MainWindow.setWindowTitle(_translate("MainWindow", "Criador de Postagens - v%s - %s" % (GlobalVars.Version,
self.Filename), None))
else:
self.MainWindow.setWindowTitle(_translate("MainWindow", "Criador de Postagens - v%s" % (GlobalVars.Version), None))

# Salvando em um novo arquivo .html
# =================================
def SaveAs(self):
Title, SubTitle, GeneratedText, FormattedData, MainPost = self.GetValues()

self.ChosenFilename = QtGui.QFileDialog.getSaveFileName(None, "Salvar como", "", u"Página da Web (*.html)")

if self.ChosenFilename != "":
self.Filename = self.ChosenFilename
self.SaveMethod(Title, SubTitle, GeneratedText, FormattedData, MainPost)
self.ShowOpenedFilename(True)

# Salvando arquivo .html aberto no programa
# =========================================
def Save(self):
if self.Filename != "":
Title, SubTitle, GeneratedText, FormattedData, MainPost = self.GetValues()
self.SaveMethod(Title, SubTitle, GeneratedText, FormattedData, MainPost)
else:
self.SaveAs()

# Método comum para salvamento de arquivo
# =======================================
def SaveMethod(self, Title, SubTitle, GeneratedText, FormattedData, MainPost):
FileModel = open("model.html", "r")
ModelText = FileModel.read()
FileModel.close()

ModelText = ModelText.replace("[####TÍTULO####]", Title) # Inserindo título
ModelText = ModelText.replace("[####TEXTO-GERADO####]", GeneratedText) # Inserindo texto gerado
ModelText = ModelText.replace("[####DATAFORMATADA####]", FormattedData) # Inserindo data formatada
ModelText = ModelText.replace("[####SUBTÍTULO####]", SubTitle) # Inserindo subtítulo
ModelText = ModelText.replace("[####POSTAGEM-PRINCIPAL####]", MainPost) # Inserindo post principal

SavedFile = open(unicode(self.Filename), "w")
SavedFile.write(ModelText)
SavedFile.close()

# Resgatando os valores do programa
# =================================
def GetValues(self):
Title = cgi.escape(self.ui.lineEdit.text())
SubTitle = cgi.escape(self.ui.lineEdit_2.text())
GeneratedText = self.GenerateAutoText()
FormattedData = self.GenerateFormattedData()
MainPost = self.window.textEdit.toPlainText().replace("\n", "\n\t\t\t\t\t")

Filename = QtGui.QFileDialog.getSaveFileName(None, "Salvar como", "", u"Página da Web (*.html)")

if Filename != "":
FileModel = open("model.html", "r")
ModelText = FileModel.read()
FileModel.close()

ModelText = ModelText.replace("[####TÍTULO####]", Title) # Inserindo título
ModelText = ModelText.replace("[####TEXTO-GERADO####]", GeneratedText) # Inserindo texto gerado
ModelText = ModelText.replace("[####DATAFORMATADA####]", FormattedData) # Inserindo data formatada
ModelText = ModelText.replace("[####SUBTÍTULO####]", SubTitle) # Inserindo subtítulo
ModelText = ModelText.replace("[####POSTAGEM-PRINCIPAL####]", MainPost) # Inserindo post principal
MainPost = self.ui.textEdit.toPlainText().replace("\n", "\n\t\t\t\t\t")

SavedFile = open(unicode(Filename), "w")
SavedFile.write(ModelText)
SavedFile.close()
return [Title, SubTitle, GeneratedText, FormattedData, MainPost]

# Saindo do programa
# ==================
def ExitProgram(self):
sys.exit(0)

# Diálogo para alterar a fonte do campo de postagem (self.window.textEdit)
# ========================================================================
# Diálogo para alterar a fonte do campo de postagem (self.ui.textEdit)
# ====================================================================
def ChangeFont(self):
FontDialog = QtGui.QFontDialog()
FontDialog.setWindowIcon(QtGui.QIcon("Icon.ico"))
SelectedFont, isOK = FontDialog.getFont(self.window.textEdit)
SelectedFont, isOK = FontDialog.getFont(self.ui.textEdit)

if isOK:
self.window.textEdit.setFont(SelectedFont)
self.ui.textEdit.setFont(SelectedFont)

# Verificando o arquivo modelo para criar a postagem
# ==================================================
def CheckModelFile(self):
if os.path.isfile("model.html"):
originalMD5 = "e5f02f183eb2dea4cfda8f97c8e39b5e"
fileMD5 = hashlib.md5(open("model.html", 'rb').read()).hexdigest()

if originalMD5 != fileMD5:
if fileMD5 != GlobalVars.ModelFileMD5:
self.ShowMessageBox(u"Erro!",
QtGui.QMessageBox.Critical,
u"Erro de checksum MD5 no arquivo modelo!",
Expand Down
Loading

0 comments on commit 34fee4f

Please sign in to comment.