Example #1
0
    def createEditor(self):
        editor = QDateEdit()
        editor.setMinimumDate(self.minimumDate)
        # editor.setSpecialValueText(self.placeholderText)
        editor.setCalendarPopup(True)
        style = self.style()
        editor.setStyleSheet(style)
        # setup connections
        editor.dateChanged[QDate].connect(self.onActivated)

        return editor
Example #2
0
class dateWidget(QWidget):
    def __init__(self, parent):
        super(dateWidget, self).__init__(parent=parent)
        self.start = 0
        self.end = 0
        # --------------------------------------------------------------------
        # Date picker
        self.label_from = QLabel('From', parent)
        self.label_from.setAlignment(Qt.AlignCenter)
        self.label_from.setFont(QFont("Open Sans Bold", 12))
        self.label_from.setStyleSheet("background-color: rgb(134,194,50);"
                                      "color: rgb(255,255,255);")
        self.label_from.resize(100, 20)
        self.label_from.move(20, 60)

        self.d1 = QDateEdit(parent, calendarPopup=True)
        self.d1.setDateTime(QDateTime.currentDateTime())
        self.d1.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.d1.setGeometry(20, 80, 100, 25)
        #self.d1.dateChanged.connect(self.date_change)

        label_to = QLabel('To', parent)
        label_to.setAlignment(Qt.AlignCenter)
        label_to.setFont(QFont("Open Sans Bold", 12))
        label_to.setStyleSheet("background-color: rgb(134,194,50);"
                               "color: rgb(255,255,255);")
        label_to.resize(100, 20)
        label_to.move(140, 60)

        self.d2 = QDateEdit(parent, calendarPopup=True)
        self.d2.setDateTime(QDateTime.currentDateTime())
        self.d2.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.d2.setGeometry(140, 80, 100, 25)

    def date_change(self):

        self.start = self.d1.dateTime().toString('yyyy-MM-dd')
        self.end = self.d2.dateTime().toString('yyyy-MM-dd')
Example #3
0
class MainApp(QMainWindow):
    """Esta será la aplicación principal"""
    def __init__(self, parent=None, *args):
        super(MainApp, self).__init__(parent=parent)
        '''
		configuración de la pantalla
		'''
        self.setFixedSize(
            850,
            600)  #El tamaño por defecto de la pantalla sin permitir ajustes
        self.setWindowTitle("Parámetros de la fotografía aérea"
                            )  #Establece el título de la ventana
        self.setStyleSheet("background-color: rgb(85, 255, 127)"
                           )  #Establece el color de fondo
        self.setWindowIcon(QIcon(
            "iconos/main_window.png"))  #se establece un ícono para la pantalla
        '''
		Configuración del título
		'''
        self.label_t = QLabel("Definir los parámetros de la fotografía aérea",
                              self)  #instanciamos un label
        self.label_t.setGeometry(
            0, 20, 800, 40)  #definimos las propiedades geométricas del label
        self.label_t.setAlignment(
            Qt.AlignHCenter)  #Aliniamos el label en el centro de la pantalla
        self.label_t.setFont(QFont(
            'Times', 24))  #Definimos la fuente del texto del label
        '''
		Configuración de los labels e inputs
		'''

        #label 1 entidad
        self.label_e = QLabel("Entidad de donde proviene la fotografía:", self)
        self.label_e.setGeometry(50, 100, 800, 30)
        self.label_e.setAlignment(Qt.AlignLeft)
        self.label_e.setFont(QFont('Times', 12))
        #input 1 entidad
        self.input_e = QLineEdit(
            self)  #instanciamos un objeto para realizar una entrada
        self.input_e.move(600, 100)  #movemos el input a estas coordenadas
        self.input_e.resize(200, 25)  #Definimos el tamaño de el campo de texto
        self.input_e.setStyleSheet(
            "background-color: #fff")  #el color del campo de texto será blanco
        self.input_e.setMaxLength(
            50)  #definimos la cantidad maxima de carácteres a recibir

        #label 2 número de vuelo
        self.label_n_v = QLabel("Número de vuelo:", self)
        self.label_n_v.setGeometry(50, 150, 800, 30)
        self.label_n_v.setAlignment(Qt.AlignLeft)
        self.label_n_v.setFont(QFont('Times', 12))
        #input 2 número de vuelo
        self.input_n_v = QLineEdit(self)
        self.input_n_v.move(600, 150)
        self.input_n_v.resize(200, 25)
        self.input_n_v.setStyleSheet("background-color: #fff")
        self.input_n_v.setValidator(
            QIntValidator(0, 30000, self)
        )  #Validamos que solo se acepten valores numéricos con un rango de 0 a 30000

        #label 3 faja de vuelo
        self.label_f_v = QLabel("Faja de vuelo:", self)
        self.label_f_v.setGeometry(50, 200, 800, 30)
        self.label_f_v.setAlignment(Qt.AlignLeft)
        self.label_f_v.setFont(QFont('Times', 12))
        #input 3 faja de vuelo
        self.input_f_v = QLineEdit(self)
        self.input_f_v.move(600, 200)
        self.input_f_v.resize(200, 25)
        self.input_f_v.setStyleSheet("background-color: #fff")
        self.input_f_v.setMaxLength(50)

        #label 4 escala de la fotografía
        self.label_e_f = QLabel("Escala de la fotografía 1:", self)
        self.label_e_f.setGeometry(50, 250, 800, 30)
        self.label_e_f.setAlignment(Qt.AlignLeft)
        self.label_e_f.setFont(QFont('Times', 12))
        #input 4 escala de la fotografía
        self.input_e_f = QLineEdit(self)
        self.input_e_f.move(600, 250)
        self.input_e_f.resize(200, 25)
        self.input_e_f.setStyleSheet("background-color: #fff")
        self.input_e_f.setValidator(QIntValidator(0, 300000, self))

        #label 5 altura del vuelo
        self.label_a_v = QLabel("Altura del vuelo (en metros):", self)
        self.label_a_v.setGeometry(50, 300, 800, 30)
        self.label_a_v.setAlignment(Qt.AlignLeft)
        self.label_a_v.setFont(QFont('Times', 12))
        #input 5 altura del vuelo
        self.input_a_v = QLineEdit(self)
        self.input_a_v.move(600, 300)
        self.input_a_v.resize(200, 25)
        self.input_a_v.setStyleSheet("background-color: #fff")
        self.input_a_v.setValidator(QIntValidator(0, 300000, self))

        #label 6 distancia focal
        self.label_d_f = QLabel("Distancia focal:", self)
        self.label_d_f.setGeometry(50, 350, 800, 30)
        self.label_d_f.setAlignment(Qt.AlignLeft)
        self.label_d_f.setFont(QFont('Times', 12))
        #input 6 distancia focal
        self.input_d_f = QLineEdit(self)
        self.input_d_f.move(600, 350)
        self.input_d_f.resize(200, 25)
        self.input_d_f.setStyleSheet("background-color: #fff")
        self.input_d_f.setValidator(QDoubleValidator(0.0, 1000000.0, 4, self))

        #label 7 altura del terreno sobre el nivel del mar
        self.label_a_t_m = QLabel("Altura del terreno/nivel del mar:", self)
        self.label_a_t_m.setGeometry(50, 400, 800, 30)
        self.label_a_t_m.setAlignment(Qt.AlignLeft)
        self.label_a_t_m.setFont(QFont('Times', 12))
        #input 7 altura del terreno sobre el nivel del mar
        self.input_a_t_m = QLineEdit(self)
        self.input_a_t_m.move(600, 400)
        self.input_a_t_m.resize(200, 25)
        self.input_a_t_m.setStyleSheet("background-color: #fff")
        self.input_a_t_m.setValidator(QIntValidator(0, 300000, self))

        #label 8 fecha en que se tomn_v la fotografía
        self.label_f_f = QLabel("Fecha en que se tomó la fotografía:", self)
        self.label_f_f.setGeometry(50, 450, 800, 30)
        self.label_f_f.setAlignment(Qt.AlignLeft)
        self.label_f_f.setFont(QFont('Times', 12))
        #input 8 fecha en que se tomó la fotografía
        self.input_f_f = QDateEdit(self)
        self.input_f_f.move(600, 450)
        self.input_f_f.resize(200, 25)
        self.input_f_f.setStyleSheet("background-color: #fff")
        '''
		configuración del boton
		'''
        #boton de aceptar
        self.btn_acept = QPushButton("Aceptar", self)  #instanciamos un boton
        self.btn_acept.setGeometry(0, 0, 100, 50)
        self.btn_acept.move(375, 500)
        self.btn_acept.setStyleSheet("background-color: rgb(255, 255, 0)")
        self.btn_acept.clicked.connect(
            self.slot_aceptar
        )  #definimos que evento realizará al ser presionado

        self.label_er = QLabel(
            "", self
        )  #definimos un label de error en caso de no todos los campos estén llenos
        self.label_er.setGeometry(20, 575, 800, 30)
        self.label_er.setAlignment(Qt.AlignHCenter)
        self.label_er.setFont(QFont('Times', 12))
        self.label_er.setStyleSheet("color: red")

        #Este es el evento que se va a ejecutar si se da en aceptar
    def slot_aceptar(self):
        #Creamos una lista con los textos de los campos para verificiar si están vacíos o no
        self.campos = []
        self.campos.extend([
            self.input_e.text(),
            self.input_n_v.text(),
            self.input_f_v.text(),
            self.input_e_f.text(),
            self.input_a_v.text(),
            self.input_d_f.text(),
            self.input_a_t_m.text(),
            self.input_f_f.text()
        ])

        #Recorremos la lista anteriormente creada
        for i in self.campos:
            '''
			ya que cada valor de i es un texto podemos preguntar si ese texto esta vacío o no
			de tal forma que aquí preguntamos si el texto es falso, es decir no hay texto, entonces
			mande un mensaje de error
			'''
            if not i:
                return self.label_er.setText(
                    "Uno o más campos están vacíos, Vuelve a intentarlo")
        else:
            '''
			Una vez verificado que los campos están llenos, validamos que el valor de la altura 
			del terreno sobre el mar es mayor a la altura de la fotografía, si esto no es así
			mandamos un mensaje de error pidiendo que se ingresen valores validos
			'''
            if int(self.campos[4]) >= int(self.campos[-2]):
                return self.label_er.setText(
                    "La altura del vuelo no puede ser mayor o igual a la altura del terreno sobre  el mar"
                )
            else:
                #Creamos un objeto de tipo CalApp para posteriormente mostrarla
                self.w = CalApp(
                    self.campos)  #Mandamos la lista de campos como parámetro
                self.w.show()  #mostramos la pantalla
Example #4
0
class UserPopup(QWidget):
    """Super class for the two popups which allows users to be edited or added.
    They are so similar that it warrants one super class which creates the labels
    and entries."""
    def __init__(self, parent=None):
        super().__init__()
        self.controller = parent
        self.initUI()
        self.setWindowModality(Qt.ApplicationModal)
        self.show()

    def initUI(self):
        self.mainLayout = QVBoxLayout()
        lineEditsGroup = QGroupBox()
        grid = QGridLayout()

        #Create line edit labels for each field except user ID (non-editable)
        for i, key in enumerate(['Name', 'Birthday', 'Gender', 'Nationality']):
            grid.addWidget(QLabel(key + "*"), i, 0)

        #Create name line entry
        self.nameEntry = QLineEdit(self)
        grid.addWidget(self.nameEntry, 0, 1)

        #Create birthday entry
        self.birthdayEntry = QDateEdit(self)
        grid.addWidget(self.birthdayEntry, 1, 1)

        #Create gender selection
        self.genderBox = QComboBox(self)
        self.genderBox.addItem("Male")
        self.genderBox.addItem("Female")
        self.genderBox.addItem("Other")
        grid.addWidget(self.genderBox, 2, 1)

        #Add nationality
        self.nationEntry = QLineEdit(self)
        grid.addWidget(self.nationEntry, 3, 1)

        lineEditsGroup.setLayout(grid)
        self.mainLayout.addWidget(lineEditsGroup)

        self.setLayout(self.mainLayout)

    def verifyInputValidity(self):
        """Triggers when user tries to save changes. Checks all fields
        for correct data."""

        #Reset borders in case of earlier tries
        for field in [
                self.nameEntry, self.birthdayEntry, self.genderBox,
                self.nationEntry
        ]:
            field.setStyleSheet("border: 1px solid black")

        if self.nameEntry.text().strip() == "":
            self.nameEntry.setStyleSheet("border: 2px solid red")
            return 1

        if (self.birthdayEntry.date() >= QDate().currentDate()):
            self.birthdayEntry.setStyleSheet("border: 2px solid red")
            return 1

        if self.genderBox.currentText().strip() not in [
                "Male", "Female", "Other"
        ]:
            self.genderBox.setStyleSheet("border: 2px solid red")
            return 1

        if self.nationEntry.text().strip() == "":
            self.nationEntry.setStyleSheet("border: 2px solid red")
            return 1

        return 0
Example #5
0
class HomeScreen(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setWindowTitle("Home Screen")
        self.resize(550, 461)
        self.setStyleSheet(Hariku_Style.get_window_stylesheet())
        self.centralWidget = QWidget()
        self.setCentralWidget(self.centralWidget)

        self.setupUI()

    def setupUI(self):
        self.setWindowIcon(Hariku_Style.getIcon())

        self.centralwidget = QWidget(self)
        self.setFocus()

        self.gridLayout = QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName("gridLayout")

        self.topcenter_layout = QHBoxLayout()

        spacerItem = QSpacerItem(25, 20, QSizePolicy.MinimumExpanding,
                                 QSizePolicy.Minimum)
        self.topcenter_layout.addItem(spacerItem)

        self.monthFilter = QDateEdit(self.centralwidget)
        self.monthFilter.setCurrentSection(QDateTimeEdit.MonthSection)
        self.monthFilter.setButtonSymbols(QSpinBox.NoButtons)
        self.monthFilter.setDate(datetime.now())
        self.monthFilter.setDisplayFormat("MMMM/yyyy")
        self.monthFilter.setFont(Hariku_Style.get_font(10))
        self.monthFilter.setStyleSheet(Hariku_Style.get_dateedit_stylesheet())
        self.monthFilter.dateChanged.connect(self.filterDiaryByMonth)
        self.topcenter_layout.addWidget(self.monthFilter)

        self.showAllBtn = QPushButton("Remove Filter", self.centralwidget)
        self.showAllBtn.setFont(Hariku_Style.get_font(8))
        self.showAllBtn.clicked.connect(self.getDiaries)
        self.showAllBtn.setStyleSheet(
            Hariku_Style.get_moodBtn_stylesheet("rgb(38, 160, 173)",
                                                "rgb(8, 102, 112)"))
        self.topcenter_layout.addWidget(self.showAllBtn)

        spacerItem1 = QSpacerItem(25, 20, QSizePolicy.MinimumExpanding,
                                  QSizePolicy.Minimum)
        self.topcenter_layout.addItem(spacerItem1)

        self.gridLayout.addLayout(self.topcenter_layout, 1, 0, 1, 1)

        self.bottomLayout = QHBoxLayout()

        spacerItem2 = QSpacerItem(40, 20, QSizePolicy.Expanding,
                                  QSizePolicy.Minimum)
        self.bottomLayout.addItem(spacerItem2)

        self.createBtn = QPushButton("+ Add New Diary", self.centralwidget)
        self.createBtn.setFont(Hariku_Style.get_font(10))
        self.createBtn.clicked.connect(self.addNewDiary)
        self.createBtn.setStyleSheet(
            Hariku_Style.get_moodBtn_stylesheet("rgb(40, 186, 130)",
                                                "rgb(207, 207, 188)"))
        self.bottomLayout.addWidget(self.createBtn)

        self.gridLayout.addLayout(self.bottomLayout, 4, 0, 1, 1)

        self.contentScrollArea = QScrollArea(self.centralwidget)
        self.contentScrollArea.setEnabled(True)
        sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.contentScrollArea.sizePolicy().hasHeightForWidth())
        self.contentScrollArea.setSizePolicy(sizePolicy)
        self.contentScrollArea.setStyleSheet(
            Hariku_Style.get_scrollarea_stylesheet())
        self.contentScrollArea.setWidgetResizable(True)
        self.contentScrollArea.setAlignment(QtCore.Qt.AlignLeading
                                            | QtCore.Qt.AlignLeft
                                            | QtCore.Qt.AlignTop)

        self.scrollAreaWidgetContents = QWidget()
        self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 487, 321))
        self.scrollAreaLayout = QVBoxLayout(self.scrollAreaWidgetContents)

        self.getDiaries()

        self.contentScrollArea.setWidget(self.scrollAreaWidgetContents)

        self.gridLayout.addWidget(self.contentScrollArea, 2, 0, 1, 1)

        self.judul = QLabel("\nWelcome Home:)\n", self)
        self.judul.setFont(Hariku_Style.get_font(18))
        self.judul.setAlignment(QtCore.Qt.AlignCenter)
        self.gridLayout.addWidget(self.judul, 0, 0, 1, 1)

        self.setCentralWidget(self.centralwidget)

    def addNewDiary(self):
        dialog = DiaryScreen(self)
        dialog.show()
        self.hide()

    def clearScrollAreaLayout(self):
        # delete the diaries currently showind
        for i in reversed(range(self.scrollAreaLayout.count())):
            try:
                self.scrollAreaLayout.itemAt(i).widget().setParent(None)
            except AttributeError:
                self.scrollAreaLayout.removeItem(
                    self.scrollAreaLayout.itemAt(i))

    def filterDiaryByMonth(self):
        self.clearScrollAreaLayout()

        year = self.monthFilter.date().year()
        month = self.monthFilter.date().month()

        diaries = getDiaryByMonth(year, month)

        for i, diary in enumerate(diaries):
            self.diaryItem = QWidget(self.scrollAreaWidgetContents)
            sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed)
            sizePolicy.setHeightForWidth(
                self.diaryItem.sizePolicy().hasHeightForWidth())
            self.diaryItem.setSizePolicy(sizePolicy)
            self.diaryItem.setMinimumSize(QtCore.QSize(0, 50))
            self.diaryItem.setStyleSheet(
                "background-color: rgba(227, 217, 163, 100%);\nborder-radius : 10px;"
            )
            self.diaryItem.setObjectName("diaryItem")
            self.itemLayout = QGridLayout(self.diaryItem)

            self.contentDateLayout = QVBoxLayout()
            self.contentDateLayout.setObjectName("contentDateLayout")

            self.content = QLabel(self.truncateString(diary.content),
                                  self.diaryItem)
            self.content.setFont(Hariku_Style.get_font(10))
            self.contentDateLayout.addWidget(self.content)

            self.date = QLabel(
                diary.date.strftime("%d %B %Y") +
                diary.time.strftime("  %I:%M %p"), self.diaryItem)
            self.date.setFont(Hariku_Style.get_font(8))
            self.contentDateLayout.addWidget(self.date)

            self.itemLayout.addLayout(self.contentDateLayout, 0, 0, 1, 1)

            self.buttons.append(i)
            self.buttons[i] = [
                QPushButton("⋗", self.diaryItem),
                QPushButton("×", self.diaryItem)
            ]

            self.buttons[i][0].clicked.connect(
                lambda checked, i=diary.diary_id: self.viewDiaryById(i))
            sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            sizePolicy.setHeightForWidth(
                self.buttons[i][0].sizePolicy().hasHeightForWidth())
            self.buttons[i][0].setSizePolicy(sizePolicy)
            self.buttons[i][0].setFont(Hariku_Style.get_font(9))
            self.buttons[i][0].setStyleSheet(
                Hariku_Style.get_moodBtn_stylesheet("rgb(145, 133, 63)",
                                                    "rgb(235, 224, 157)"))
            self.itemLayout.addWidget(self.buttons[i][0], 0, 1, 1, 1)

            # self.deleteBtn = QPushButton("×", self.diaryItem)
            self.buttons[i][1].clicked.connect(
                lambda checked, i=diary.diary_id: self.deleteDiaryById(i))
            sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            sizePolicy.setHeightForWidth(
                self.buttons[i][1].sizePolicy().hasHeightForWidth())
            self.buttons[i][1].setSizePolicy(sizePolicy)
            self.buttons[i][1].setFont(Hariku_Style.get_font(9))
            self.buttons[i][1].setStyleSheet(
                Hariku_Style.get_moodBtn_stylesheet("rgb(145, 63, 63)",
                                                    "rgb(235, 157, 157)"))
            self.itemLayout.addWidget(self.buttons[i][1], 0, 2, 1, 1)

            self.scrollAreaLayout.addWidget(self.diaryItem,
                                            alignment=QtCore.Qt.AlignTop)

        spacerItem2 = QSpacerItem(20, 40, QSizePolicy.Minimum,
                                  QSizePolicy.MinimumExpanding)
        self.scrollAreaLayout.addItem(spacerItem2)

    def getDiaries(self):
        diaries = getAllDiaries()

        self.monthFilter.setDate(datetime.now())
        self.clearScrollAreaLayout()

        self.buttons = []

        for i, diary in enumerate(diaries):
            self.diaryItem = QWidget(self.scrollAreaWidgetContents)
            sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed)
            sizePolicy.setHeightForWidth(
                self.diaryItem.sizePolicy().hasHeightForWidth())
            self.diaryItem.setSizePolicy(sizePolicy)
            self.diaryItem.setMinimumSize(QtCore.QSize(0, 50))
            self.diaryItem.setStyleSheet(
                "background-color: rgba(227, 217, 163, 100%);\nborder-radius : 10px;"
            )
            self.diaryItem.setObjectName("diaryItem")
            self.itemLayout = QGridLayout(self.diaryItem)

            self.contentDateLayout = QVBoxLayout()
            self.contentDateLayout.setObjectName("contentDateLayout")

            self.content = QLabel(self.truncateString(diary.content),
                                  self.diaryItem)
            self.content.setFont(Hariku_Style.get_font(10))
            self.contentDateLayout.addWidget(self.content)

            self.date = QLabel(
                diary.date.strftime("%d %B %Y") +
                diary.time.strftime("  %I:%M %p"), self.diaryItem)
            self.date.setFont(Hariku_Style.get_font(8))
            self.contentDateLayout.addWidget(self.date)

            self.itemLayout.addLayout(self.contentDateLayout, 0, 0, 1, 1)

            self.buttons.append(i)
            self.buttons[i] = [
                QPushButton("⋗", self.diaryItem),
                QPushButton("×", self.diaryItem)
            ]

            self.buttons[i][0].clicked.connect(
                lambda checked, i=diary.diary_id: self.viewDiaryById(i))
            sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            sizePolicy.setHeightForWidth(
                self.buttons[i][0].sizePolicy().hasHeightForWidth())
            self.buttons[i][0].setSizePolicy(sizePolicy)
            self.buttons[i][0].setFont(Hariku_Style.get_font(9))
            self.buttons[i][0].setStyleSheet(
                Hariku_Style.get_moodBtn_stylesheet("rgb(145, 133, 63)",
                                                    "rgb(235, 224, 157)"))
            self.itemLayout.addWidget(self.buttons[i][0], 0, 1, 1, 1)

            # self.deleteBtn = QPushButton("×", self.diaryItem)
            self.buttons[i][1].clicked.connect(
                lambda checked, i=diary.diary_id: self.deleteDiaryById(i))
            sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            sizePolicy.setHeightForWidth(
                self.buttons[i][1].sizePolicy().hasHeightForWidth())
            self.buttons[i][1].setSizePolicy(sizePolicy)
            self.buttons[i][1].setFont(Hariku_Style.get_font(9))
            self.buttons[i][1].setStyleSheet(
                Hariku_Style.get_moodBtn_stylesheet("rgb(145, 63, 63)",
                                                    "rgb(235, 157, 157)"))
            self.itemLayout.addWidget(self.buttons[i][1], 0, 2, 1, 1)

            self.scrollAreaLayout.addWidget(self.diaryItem,
                                            alignment=QtCore.Qt.AlignTop)

        spacerItem2 = QSpacerItem(20, 40, QSizePolicy.Minimum,
                                  QSizePolicy.MinimumExpanding)
        self.scrollAreaLayout.addItem(spacerItem2)

    def truncateString(self, string):
        try:
            string = string.replace('\n', ' ')
            return string[:45] + '...'
        except IndexError:
            return string

    def viewDiaryById(self, id):
        dialog = DiaryScreen(self, edit=False, id=id)
        dialog.show()
        self.hide()

    def deleteDiaryById(self, id):
        deleteDiaryById(id)
        self.clearScrollAreaLayout()
        self.getDiaries()