kopia lustrzana https://github.com/ctjacobs/pyqso
74 wiersze
2.8 KiB
Python
74 wiersze
2.8 KiB
Python
#!/usr/bin/env python3
|
|
|
|
# Copyright (C) 2017 Christian Thomas Jacobs.
|
|
|
|
# This file is part of PyQSO.
|
|
|
|
# PyQSO 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 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# PyQSO 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 PyQSO. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
def compare_date_and_time(model, row1, row2, user_data):
|
|
""" Compare two rows (let's call them A and B) in a Gtk.ListStore, and sort by both date and time.
|
|
|
|
:arg Gtk.TreeModel model: The model used to sort the log data.
|
|
:arg Gtk.TreeIter row1: The pointer to row A.
|
|
:arg Gtk.TreeIter row2: The pointer to row B.
|
|
:arg user_data: The specific column from which to retrieve data for rows A and B.
|
|
:returns: -1 if Row B's date/time is more recent than Row A's; 0 if both dates and times are the same; 1 if Row A's date/time is more recent than Row B's.
|
|
:rtype: int
|
|
"""
|
|
date1 = model.get_value(row1, user_data[0])
|
|
date2 = model.get_value(row2, user_data[0])
|
|
time1 = model.get_value(row1, user_data[1])
|
|
time2 = model.get_value(row2, user_data[1])
|
|
if(date1 < date2):
|
|
return -1
|
|
elif(date1 == date2):
|
|
# If the dates are the same, then let's also sort by time.
|
|
if(time1 > time2):
|
|
return 1
|
|
elif(time1 == time2):
|
|
return 0
|
|
else:
|
|
return -1
|
|
else:
|
|
return 1
|
|
|
|
|
|
def compare_default(model, row1, row2, user_data):
|
|
""" The default sorting function for all Gtk.ListStore objects.
|
|
|
|
:arg Gtk.TreeModel model: The model used to sort the log data.
|
|
:arg Gtk.TreeIter row1: The pointer to row A.
|
|
:arg Gtk.TreeIter row2: The pointer to row B.
|
|
:arg user_data: The specific column from which to retrieve data for rows A and B.
|
|
:returns: -1 if the value of Row A's column value is less than Row B's column value; 0 if both values are the same; 1 if Row A's column value is greater than Row B's column value.
|
|
:rtype: int
|
|
"""
|
|
|
|
# Let's try to deal with numerical values, if possible.
|
|
try:
|
|
value1 = float(model.get_value(row1, user_data))
|
|
value2 = float(model.get_value(row2, user_data))
|
|
except ValueError:
|
|
value1 = model.get_value(row1, user_data)
|
|
value2 = model.get_value(row2, user_data)
|
|
|
|
if(value1 < value2):
|
|
return -1
|
|
elif(value1 == value2):
|
|
return 0
|
|
else:
|
|
return 1
|