Skip to content

Instantly share code, notes, and snippets.

@SRomansky
Created December 26, 2014 06:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SRomansky/11524983a3fd1d1e0e41 to your computer and use it in GitHub Desktop.
Save SRomansky/11524983a3fd1d1e0e41 to your computer and use it in GitHub Desktop.
TalkEditor time stamp translating delegate diff
diff --git a/src/freeseer/frontend/talkeditor/talkeditor.py b/src/freeseer/frontend/talkeditor/talkeditor.py
index c7228bb..99818e7 100644
--- a/src/freeseer/frontend/talkeditor/talkeditor.py
+++ b/src/freeseer/frontend/talkeditor/talkeditor.py
@@ -28,6 +28,7 @@ import logging
from PyQt4.QtCore import SIGNAL
from PyQt4.QtCore import QPersistentModelIndex
from PyQt4.QtCore import QStringList
+from PyQt4.QtCore import QString
from PyQt4.QtCore import Qt
from PyQt4.QtGui import QAbstractItemView
from PyQt4.QtGui import QAction
@@ -39,6 +40,8 @@ from PyQt4.QtGui import QIcon
from PyQt4.QtGui import QMessageBox
from PyQt4.QtGui import QPixmap
from PyQt4.QtGui import QSortFilterProxyModel
+from PyQt4.QtGui import QStyledItemDelegate
+from PyQt4.QtGui import QStyleOptionViewItem
from PyQt4.QtGui import QTableView
from PyQt4.QtGui import QVBoxLayout
from PyQt4.QtGui import QWidget
@@ -56,6 +59,18 @@ from freeseer.frontend.talkeditor.ImportTalksWidget import ImportTalksWidget
log = logging.getLogger(__name__)
+class HumanReadableDelegate(QStyledItemDelegate):
+ def paint(self, painter, option, index): # This thing draws/renders each element in the talk editor table
+ if index.column() == 8 or index.column() == 9:
+ humanTime = index.data().toTime().toString('hh:mm ap') # hh:mm:ss -> hh:mm ap
+ # Setup painter?
+ QStyledItemDelegate.paint(self, painter, option, index)
+ else:
+ QStyledItemDelegate.paint(self, painter, option, index)
+
+
+
+
class TalkEditorApp(FreeseerApp):
'''Freeseer talk database editor main gui class'''
def __init__(self, config, db):
@@ -91,6 +106,8 @@ class TalkEditorApp(FreeseerApp):
self.mainLayout.addWidget(self.tableView)
self.mainLayout.addWidget(self.talkDetailsWidget)
self.mainLayout.addWidget(self.importTalksWidget)
+
+ self.tableView.setItemDelegate(HumanReadableDelegate())
# --- End Layout
# Keep track of index of the most recently selected talk
@@ -272,6 +289,8 @@ class TalkEditorApp(FreeseerApp):
# Hide the ID field
self.tableView.setColumnHidden(0, True)
+ # Use custom QItemDelegate with the QDataWidgetMapper object?
+
# Map data to widgets
self.mapper = QDataWidgetMapper()
self.mapper.setModel(self.proxy)
@SRomansky
Copy link
Author

Code needed to get the application to use the human friendly formatted time stamps through out the application, excluding unit test updates.

diff --git a/src/freeseer/framework/database.py b/src/freeseer/framework/database.py
index bb9c5a4..536e2fd 100644
--- a/src/freeseer/framework/database.py
+++ b/src/freeseer/framework/database.py
@@ -240,8 +240,8 @@ class QtDBConnector(object):
                              event=unicode(result.value(5).toString()),
                              room=unicode(result.value(6).toString()),
                              date=result.value(7).toDate(),
-                             startTime=result.value(8).toTime(),
-                             endTime=result.value(9).toTime())
+                             startTime=result.value(8).toTime('hh:mm ap'),^M
+                             endTime=result.value(9).toTime('hh:mm ap'))^M
         else:
             return None

@@ -475,7 +475,7 @@ class QtDBConnector(object):
                                     event=presentation["Event"],
                                     room=presentation["Room"],
                                     date=QtCore.QDate.fromString(presentation["Time"], QtCore.Qt.ISODate),
-                                    startTime=QtCore.QTime.fromString(presentation["Time"], 'yyyy-MM-ddThh:mm'))
+                                    startTime=QtCore.QTime.fromString(presentation["Time"], 'yyyy-MM-ddThh:mm').toString('
                 self.insert_presentation(talk)

:...skipping...
diff --git a/src/freeseer/framework/database.py b/src/freeseer/framework/database.py
index bb9c5a4..536e2fd 100644
--- a/src/freeseer/framework/database.py
+++ b/src/freeseer/framework/database.py
@@ -240,8 +240,8 @@ class QtDBConnector(object):
                              event=unicode(result.value(5).toString()),
                              room=unicode(result.value(6).toString()),
                              date=result.value(7).toDate(),
-                             startTime=result.value(8).toTime(),
-                             endTime=result.value(9).toTime())
+                             startTime=result.value(8).toTime('hh:mm ap'),^M
+                             endTime=result.value(9).toTime('hh:mm ap'))^M
         else:
             return None

@@ -475,7 +475,7 @@ class QtDBConnector(object):
                                     event=presentation["Event"],
diff --git a/src/freeseer/framework/database.py b/src/freeseer/framework/database.py
index bb9c5a4..536e2fd 100644
--- a/src/freeseer/framework/database.py
+++ b/src/freeseer/framework/database.py
@@ -240,8 +240,8 @@ class QtDBConnector(object):
                              event=unicode(result.value(5).toString()),
                              room=unicode(result.value(6).toString()),
                              date=result.value(7).toDate(),
-                             startTime=result.value(8).toTime(),
-                             endTime=result.value(9).toTime())
+                             startTime=result.value(8).toTime('hh:mm ap'),^M
+                             endTime=result.value(9).toTime('hh:mm ap'))^M
         else:
             return None

@@ -475,7 +475,7 @@ class QtDBConnector(object):
                                     event=presentation["Event"],
                                     room=presentation["Room"],
                                     date=QtCore.QDate.fromString(presentation["Time"], QtCore.Qt.ISODate),
-                                    startTime=QtCore.QTime.fromString(presentation["Time"], 'yyyy-MM-ddThh:mm'))
+                                    startTime=QtCore.QTime.fromString(presentation["Time"], 'yyyy-MM-ddThh:mm').toString('hh:mm ap'))^M
                 self.insert_presentation(talk)

         else:
@@ -500,7 +500,7 @@ class QtDBConnector(object):
                                         presentation["Event"],
                                         presentation["Room"],
                                         QtCore.QDate.fromString(presentation["Time"], QtCore.Qt.ISODate),
-                                        self.isodate_string_to_qtime(presentation["Time"]))  # Presentation using legacy time field
+                                        self.isodate_string_to_qtime(presentation["Time"]).toString('hh:mm ap'))  # Presentation using legacy time field^M
                 else:
                     talk = Presentation(presentation["Title"],
                                         presentation["Speaker"],
@@ -509,8 +509,8 @@ class QtDBConnector(object):
                                         presentation["Event"],
                                         presentation["Room"],
                                         QtCore.QDate.fromString(presentation["Date"], QtCore.Qt.ISODate),
-                                        QtCore.QTime.fromString(presentation["StartTime"]),
-                                        QtCore.QTime.fromString(presentation["EndTime"]))
+                                        QtCore.QTime.fromString(presentation["StartTime"]).toString('hh:mm ap'),^M
+                                        QtCore.QTime.fromString(presentation["EndTime"]).toString('hh:mm ap'))^M
                 self.insert_presentation(talk)

         else:
@@ -542,8 +542,8 @@ class QtDBConnector(object):
                                  'Event': unicode(result.value(5).toString()),
                                  'Room': unicode(result.value(6).toString()),
                                  'Date': unicode(result.value(7).toDate().toString(QtCore.Qt.ISODate)),
-                                 'StartTime': unicode(result.value(8).toTime().toString()),
-                                 'EndTime': unicode(result.value(9).toTime().toString())})
+                                 'StartTime': unicode(QtCore.QTime.fromString(result.value(8).toString(), 'hh:mm ap').toString()),^M
+                                 'EndTime': unicode(QtCore.QTime.fromString(result.value(9).toString(), 'hh:mm ap').toString())})^M

     def export_reports_to_csv(self, fname):
         fieldNames = ('Title',
diff --git a/src/freeseer/frontend/talkeditor/talkeditor.py b/src/freeseer/frontend/talkeditor/talkeditor.py
index c7228bb..0a4f24f 100644
--- a/src/freeseer/frontend/talkeditor/talkeditor.py
+++ b/src/freeseer/frontend/talkeditor/talkeditor.py
@@ -409,8 +409,8 @@ class TalkEditorApp(FreeseerApp):
                 unicode(talkDetailsWidget.eventLineEdit.text()).strip(),
                 unicode(talkDetailsWidget.roomLineEdit.text()).strip(),
                 talkDetailsWidget.dateEdit.date(),
-                talkDetailsWidget.startTimeEdit.time().toString(),
-                talkDetailsWidget.endTimeEdit.time().toString())
+                talkDetailsWidget.startTimeEdit.time().toString('hh:mm ap'),
+                talkDetailsWidget.endTimeEdit.time().toString('hh:mm ap'))

     def show_new_talk_popup(self):
         """Displays a modal dialog with a talk details view

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment