def parse_position(self, line): timestamp, lat, lng = line.split() timestamp = QDateTime.fromString(timestamp, Qt.ISODate) lat = float(lat) lng = float(lng) coordinate = QGeoCoordinate(lat, lng) info = QGeoPositionInfo(coordinate, timestamp) return info
def readNextPosition(self): line = self.logFile.readLine().trimmed() if not line.isEmpty(): data = line.split(' ') hasLatitude = True hasLongitude = True timestamp = QDateTime.fromString(str(data[0]), Qt.ISODate) latitude = float(data[1]) longitude = float(data[2]) if timestamp.isValid(): coordinate = QGeoCoordinate(latitude, longitude) info = QGeoPositionInfo(coordinate, timestamp) if info.isValid(): self.lastPosition = info # Currently segfaulting. See Bug 657 # http://bugs.openbossa.org/show_bug.cgi?id=657 self.positionUpdated.emit(info)
def datetimeTrans(s, stripTime=False): """Localize datetime in database format.""" dt = QDateTime.fromString(s, dbDatetimeFmtQt) return locale.toString(dt, dateFmt if stripTime else datetimeFmt)
def parseISODate(self, isoDate): return QDateTime.fromString(isoDate, Qt.ISODate).toString('dd/MM/yyyy hh:mm')
def initialize(self): locale = QLocale() model = self.state.model if not bool(model): self.browser.setHtml("<font color=red>Information can only " "be shown if an index is open</font>") return top, total, _ = self.state.indicatorCounts() fullname = QDir.toNativeSeparators(os.path.abspath(model.filename)) creator = model.config(Gconf.Key.Creator) created = model.config("Created") created = locale.toString( QDateTime.fromString(created, "yyyy-MM-dd HH:mm:ss")) updated = locale.toString(QFileInfo(model.filename).lastModified()) size = os.path.getsize(model.filename) KB = 1024 MB = KB * KB if size < MB: size = "~{:,} KB ({:,} bytes)".format(round(size / KB), size) else: size = "~{:,} MB ({:,} bytes)".format(round(size / MB), size) filename = re.sub(r"\.xix$", "", os.path.basename(fullname), re.IGNORECASE) version = str(model.version()) secs = self.state.workTime + int(time.monotonic() - self.state.startTime) hours, secs = divmod(secs, 3600) if hours: worktime = "{:,}h{}'".format(hours, secs // 60) else: worktime = "{}'".format(secs // 60) uuid = model.config(UUID) LEFT_STYLE = """ style=" margin-right: 0; padding-right: 0; spacing-right: 0; border-right: 0; " """ RIGHT_STYLE = """ style=" margin-left: 0; padding-left: 0; spacing-left: 0; border-left: 0; " """ color1 = "#DDDDFF" color2 = "#EEEEFF" STYLE = ' style="background-color: {};"' texts = [ """<html><table border=0 style=" background-color: {}; ">""".format(color1) ] for i, (name, value, right, debug) in enumerate(( ("Index", filename, False, False), ("Creator", creator, False, False), ("Filename", fullname, False, False), ("Size", size, False, False), ("Created", created, False, False), ("Updated", updated, False, False), ("Total Entries", "{:,}".format(total), True, False), ("Main Entries", "{:,}".format(top), True, False), ("Subentries", "{:,}".format(total - top), True, False), ("Worktime", worktime, True, False), (None, None, False, False), ("Index Format", version, True, False), ("Index UUID", uuid, True, True), )): if debug and not self.state.window.debug: continue if name is None: color1 = "#EEEEEE" color2 = "#DDDDDD" continue style = STYLE.format(color1 if i % 2 == 0 else color2) align = " align=right" if right else "" texts.append("""<tr{}><td{}>{} </td> <td{}{}>{}</td></tr>""".format(style, LEFT_STYLE, html.escape(name), align, RIGHT_STYLE, html.escape(value))) texts.append("</table></html>") self.browser.setHtml("".join(texts))