Hi all,

here's the main code of thc, my txt to html converter. Since I'm a beginner it is far, far, faaaaaaar away from perfect or even good :-)
What could be done better?

====================================================================================
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# thc
# Copyright (C) 2007 - 2009 Listick Lorch
#
# <i...@listick.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

import sys
import webbrowser
import texts_en as texts # you have to change only the countrycode like texts_de ...
from PyQt4 import QtGui, QtCore
from mainframe_ui import Ui_MainWindow as Frm
import abtDialogFrame

class ThcMainframe(QtGui.QMainWindow, Frm):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        self.setupUi(self)

        # ---MEMBERS---
        self.file_to_convert     = ''
        self.file_to_write       = ''
        self.txt_file_to_convert = '' # stores the text of the .txt file
        self.bgColor_R = hex(255)[2:].zfill(2)
        self.bgColor_G = hex(255)[2:].zfill(2)
        self.bgColor_B = hex(255)[2:].zfill(2)
        self.font_size   = 0

        # ---SLOTS---
        # browse file to convert
        self.connect(self.btnBrowseFileConv,
                QtCore.SIGNAL("clicked()"), self.onBrowseFileConv)
        # browse file to write
        self.connect(self.btnBrowseFileWrite,
                QtCore.SIGNAL("clicked()"), self.onBrowseFileWrite)
        # convert
        self.connect(self.btnConvert,
                QtCore.SIGNAL("clicked()"), self.onConvert)
        # show result
        self.connect(self.btnShowResult,
                QtCore.SIGNAL("clicked()"), self.onShowResult)
        # select color
        self.connect(self.btnColorSelect,
                QtCore.SIGNAL("clicked()"), self.SelectColor)
        # font size
        self.connect(self.horizontalSlider,
                QtCore.SIGNAL("changed()"), self.onFontSizeChanged)
        # help menu
        self.connect(self.actionGo_to_listick_org,
                QtCore.SIGNAL("triggered()"), self.GoToListickOrg)

        self.connect(self.actionAbout,
                QtCore.SIGNAL("triggered()"), self.OpenAbout)
        # quit
        self.connect(self.btnQuit,
                QtCore.SIGNAL("clicked()"), self.onQuit)

        self.connect(self.actionExit,
                QtCore.SIGNAL("triggered()"), self.onQuit)

    def onBrowseFileConv(self):
self.file_to_convert = QtGui.QFileDialog.getOpenFileName(self, texts.FileMenuOpen, '/home', '*.txt')
        self.inpFileConv.setText(self.file_to_convert)

    def onBrowseFileWrite(self):
self.file_to_write = QtGui.QFileDialog.getSaveFileName(self, texts.FileMenuSaveAs, '/home', '*.htm*')
        self.inpFileWrite.setText(self.file_to_write)

    def onConvert(self):
        # read the title
        html_file_title = str(self.inpTitle.displayText())
        # read the txt
        file_open = open(self.file_to_convert)
        print texts.FileOpened
        self.txtOutput.insertPlainText(texts.FileOpened)
        self.txt_file_to_convert = file_open.read()
        file_open.close()
        print texts.FileClosed
        self.txtOutput.insertPlainText(texts.FileClosed)

        # write html
        file_open = open(self.file_to_write, "w")
        print texts.WritingFile
        self.txtOutput.insertPlainText(texts.WritingFile)
        strict_or_transitional = {True: 'Transitional', False: 'Strict'}
        spec = strict_or_transitional[self.rdioBtnTransitional.isChecked()]
doctype = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 %s//EN">\n' % spec
        file_open.write(doctype)
        file_open.write('<HTML>\n')
        # HTML head stuff
        file_open.write('<HEAD>\n')
file_open.write('<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">\n')
        file_open.write('<TITLE>%s</TITLE>\n' % html_file_title)
file_open.write('<META NAME="Generator" CONTENT="thc - Txt-to-Html-Converter %s">\n' % texts.versionInfo)
        file_open.write('</HEAD>\n')
        #head end

        #HTML body
file_open.write('<BODY BGCOLOR="#%s%s%s">\n' % (self.bgColor_R, self.bgColor_G, self.bgColor_B))
        file_open.write(self.txt_file_to_convert)
        file_open.write('<BR>')

        # Created-with-thc notice
        file_open.write(texts.createdWithNote)
        file_open.write('</BODY>\n')
        #body end
        file_open.write('</HTML>')

        file_open.close()
        print texts.FileWritten
        self.txtOutput.insertPlainText(texts.FileWritten)
        self.txtOutput.insertPlainText(texts.Success)

    def onShowResult(self):
        webbrowser.open_new(self.file_to_write)

    def SelectColor(self):
        color = QtGui.QColorDialog.getColor()
        self.bgColor_R  = hex(color.red())[2:].zfill(2)
        self.bgColor_G  = hex(color.green())[2:].zfill(2)
        self.bgColor_B  = hex(color.blue())[2:].zfill(2)
self.txtOutput.insertPlainText("\nSelected color (RGB Hex): %s%s%s" % (self.bgColor_R, self.bgColor_G, self.bgColor_B))

    def onFontSizeChanged(self):
        self.font_size = horizontalSlider.value()
        self.txtOutput.insertPlainText("font size: %s" % self.font_size)

    def OpenAbout(self):
        abtDialog = abtDialogFrame.ThcAboutDialog()
        abtDialog.setAttribute(QtCore.Qt.WA_DeleteOnClose)
        abtDialog.exec_()

    def GoToListickOrg(self):
        webbrowser.open_new('http://www.listick.org')

    def onQuit(self):
        print texts.Quit
        self.close()

app = QtGui.QApplication(sys.argv)
mainframe = ThcMainframe()
mainframe.show()
sys.exit(app.exec_())
========================================================================================

Thanks in advance.

Listick
http://www.listick.org
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to