init commit
authorFlorian Schweikert <kelvan@logic.at>
Tue, 15 Feb 2011 13:29:08 +0000 (14:29 +0100)
committerFlorian Schweikert <kelvan@logic.at>
Tue, 15 Feb 2011 13:29:08 +0000 (14:29 +0100)
README [new file with mode: 0644]
Ui_Qt.py [new file with mode: 0644]
pyWienerLinien.py [new file with mode: 0644]
pyWienerLinien.ui [new file with mode: 0644]
settings.py [new file with mode: 0644]
wlSearch.py [new file with mode: 0644]

diff --git a/README b/README
new file mode 100644 (file)
index 0000000..25120d7
--- /dev/null
+++ b/README
@@ -0,0 +1,2 @@
+Search for connection on wienerlinien.at
+Opens default webbrowser to show results
diff --git a/Ui_Qt.py b/Ui_Qt.py
new file mode 100644 (file)
index 0000000..5f7ccb0
--- /dev/null
+++ b/Ui_Qt.py
@@ -0,0 +1,99 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'pyWienerLinien.ui'
+#
+# Created: Tue Feb 15 13:11:11 2011
+#      by: PyQt4 UI code generator 4.7.4
+#
+# WARNING! All changes made in this file will be lost!
+
+from PySide import QtCore, QtGui
+
+class Ui_MainWindow(object):
+    def setupUi(self, MainWindow):
+        MainWindow.setObjectName("MainWindow")
+        MainWindow.resize(800, 480)
+        self.centralwidget = QtGui.QWidget(MainWindow)
+        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Maximum)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.centralwidget.sizePolicy().hasHeightForWidth())
+        self.centralwidget.setSizePolicy(sizePolicy)
+        self.centralwidget.setObjectName("centralwidget")
+        self.gridLayout_3 = QtGui.QGridLayout(self.centralwidget)
+        self.gridLayout_3.setObjectName("gridLayout_3")
+        self.btnSearch = QtGui.QPushButton(self.centralwidget)
+        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.btnSearch.sizePolicy().hasHeightForWidth())
+        self.btnSearch.setSizePolicy(sizePolicy)
+        self.btnSearch.setObjectName("btnSearch")
+        self.gridLayout_3.addWidget(self.btnSearch, 5, 1, 1, 1)
+        self.comboTarget = QtGui.QComboBox(self.centralwidget)
+        self.comboTarget.setObjectName("comboTarget")
+        self.comboTarget.addItem("")
+        self.comboTarget.addItem("")
+        self.comboTarget.addItem("")
+        self.gridLayout_3.addWidget(self.comboTarget, 3, 1, 1, 1)
+        self.label = QtGui.QLabel(self.centralwidget)
+        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Preferred)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
+        self.label.setSizePolicy(sizePolicy)
+        self.label.setObjectName("label")
+        self.gridLayout_3.addWidget(self.label, 1, 0, 2, 1)
+        self.label_2 = QtGui.QLabel(self.centralwidget)
+        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Preferred)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth())
+        self.label_2.setSizePolicy(sizePolicy)
+        self.label_2.setObjectName("label_2")
+        self.gridLayout_3.addWidget(self.label_2, 3, 0, 2, 1)
+        self.editStart = QtGui.QComboBox(self.centralwidget)
+        self.editStart.setEditable(True)
+        self.editStart.setInsertPolicy(QtGui.QComboBox.NoInsert)
+        self.editStart.setObjectName("editStart")
+        self.gridLayout_3.addWidget(self.editStart, 2, 1, 1, 1)
+        self.editTarget = QtGui.QComboBox(self.centralwidget)
+        self.editTarget.setEditable(True)
+        self.editTarget.setInsertPolicy(QtGui.QComboBox.NoInsert)
+        self.editTarget.setObjectName("editTarget")
+        self.gridLayout_3.addWidget(self.editTarget, 4, 1, 1, 1)
+        self.comboStart = QtGui.QComboBox(self.centralwidget)
+        self.comboStart.setObjectName("comboStart")
+        self.comboStart.addItem("")
+        self.comboStart.addItem("")
+        self.comboStart.addItem("")
+        self.gridLayout_3.addWidget(self.comboStart, 1, 1, 1, 1)
+        MainWindow.setCentralWidget(self.centralwidget)
+        self.menubar = QtGui.QMenuBar(MainWindow)
+        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 25))
+        self.menubar.setObjectName("menubar")
+        self.menuHelp = QtGui.QMenu(self.menubar)
+        self.menuHelp.setObjectName("menuHelp")
+        MainWindow.setMenuBar(self.menubar)
+        self.actionAbout = QtGui.QAction(MainWindow)
+        self.actionAbout.setObjectName("actionAbout")
+        self.menuHelp.addAction(self.actionAbout)
+        self.menubar.addAction(self.menuHelp.menuAction())
+
+        self.retranslateUi(MainWindow)
+        QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+    def retranslateUi(self, MainWindow):
+        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
+        self.btnSearch.setText(QtGui.QApplication.translate("MainWindow", "Search", None, QtGui.QApplication.UnicodeUTF8))
+        self.comboTarget.setItemText(0, QtGui.QApplication.translate("MainWindow", "Haltestelle", None, QtGui.QApplication.UnicodeUTF8))
+        self.comboTarget.setItemText(1, QtGui.QApplication.translate("MainWindow", "Adresse", None, QtGui.QApplication.UnicodeUTF8))
+        self.comboTarget.setItemText(2, QtGui.QApplication.translate("MainWindow", "POI", None, QtGui.QApplication.UnicodeUTF8))
+        self.label.setText(QtGui.QApplication.translate("MainWindow", "Start", None, QtGui.QApplication.UnicodeUTF8))
+        self.label_2.setText(QtGui.QApplication.translate("MainWindow", "Ziel", None, QtGui.QApplication.UnicodeUTF8))
+        self.comboStart.setItemText(0, QtGui.QApplication.translate("MainWindow", "Haltestelle", None, QtGui.QApplication.UnicodeUTF8))
+        self.comboStart.setItemText(1, QtGui.QApplication.translate("MainWindow", "Adresse", None, QtGui.QApplication.UnicodeUTF8))
+        self.comboStart.setItemText(2, QtGui.QApplication.translate("MainWindow", "POI", None, QtGui.QApplication.UnicodeUTF8))
+        self.menuHelp.setTitle(QtGui.QApplication.translate("MainWindow", "Help", None, QtGui.QApplication.UnicodeUTF8))
+        self.actionAbout.setText(QtGui.QApplication.translate("MainWindow", "About", None, QtGui.QApplication.UnicodeUTF8))
+
diff --git a/pyWienerLinien.py b/pyWienerLinien.py
new file mode 100644 (file)
index 0000000..36a59e6
--- /dev/null
@@ -0,0 +1,43 @@
+#!/usr/bin/env python
+
+import sys
+import os
+import time
+import logging
+from PySide import QtCore, QtGui
+from Ui_Qt import Ui_MainWindow
+from wlSearch import Search
+import webbrowser
+
+
+class WienerLinienQt(QtGui.QMainWindow, Ui_MainWindow):
+    types = ('stop', 'address', 'poi')
+
+    def __init__(self):
+        QtGui.QMainWindow.__init__(self)
+        self.setupUi(self)
+
+        self.connect(self.btnSearch, QtCore.SIGNAL("clicked()"), self.search)
+
+    def search(self):
+        start = self.editStart.currentText()
+        target = self.editTarget.currentText()
+        if not start and target:
+            self.btnSearch.setText("Search - Missing input")
+        else:
+            s = Search(start, target, \
+                       origin_type=self.types[self.comboStart.currentIndex()], \
+                       destination_type=self.types[self.comboTarget.currentIndex()])
+            try:
+                s.open_browser()
+            except webbrowser.Error:
+                self.btnSearch.setText("Error starting webbrowser")
+                return False
+            self.btnSearch.setText("Search - Opening webbrowser")
+            return True
+
+if __name__ == "__main__":
+    app = QtGui.QApplication(sys.argv)
+    w = WienerLinienQt()
+    w.show()
+    app.exec_()
diff --git a/pyWienerLinien.ui b/pyWienerLinien.ui
new file mode 100644 (file)
index 0000000..c4914b4
--- /dev/null
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>800</width>
+    <height>480</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>MainWindow</string>
+  </property>
+  <widget class="QWidget" name="centralwidget">
+   <property name="sizePolicy">
+    <sizepolicy hsizetype="Maximum" vsizetype="Maximum">
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <layout class="QGridLayout" name="gridLayout_3">
+    <item row="5" column="1">
+     <widget class="QPushButton" name="btnSearch">
+      <property name="sizePolicy">
+       <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+        <horstretch>0</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
+      </property>
+      <property name="text">
+       <string>Search</string>
+      </property>
+     </widget>
+    </item>
+    <item row="3" column="1">
+     <widget class="QComboBox" name="comboTarget">
+      <item>
+       <property name="text">
+        <string>Haltestelle</string>
+       </property>
+      </item>
+      <item>
+       <property name="text">
+        <string>Adresse</string>
+       </property>
+      </item>
+      <item>
+       <property name="text">
+        <string>POI</string>
+       </property>
+      </item>
+     </widget>
+    </item>
+    <item row="1" column="0" rowspan="2">
+     <widget class="QLabel" name="label">
+      <property name="sizePolicy">
+       <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+        <horstretch>0</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
+      </property>
+      <property name="text">
+       <string>Start</string>
+      </property>
+     </widget>
+    </item>
+    <item row="3" column="0" rowspan="2">
+     <widget class="QLabel" name="label_2">
+      <property name="sizePolicy">
+       <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+        <horstretch>0</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
+      </property>
+      <property name="text">
+       <string>Ziel</string>
+      </property>
+     </widget>
+    </item>
+    <item row="2" column="1">
+     <widget class="QComboBox" name="editStart">
+      <property name="editable">
+       <bool>true</bool>
+      </property>
+      <property name="insertPolicy">
+       <enum>QComboBox::NoInsert</enum>
+      </property>
+     </widget>
+    </item>
+    <item row="4" column="1">
+     <widget class="QComboBox" name="editTarget">
+      <property name="editable">
+       <bool>true</bool>
+      </property>
+      <property name="insertPolicy">
+       <enum>QComboBox::NoInsert</enum>
+      </property>
+     </widget>
+    </item>
+    <item row="1" column="1">
+     <widget class="QComboBox" name="comboStart">
+      <item>
+       <property name="text">
+        <string>Haltestelle</string>
+       </property>
+      </item>
+      <item>
+       <property name="text">
+        <string>Adresse</string>
+       </property>
+      </item>
+      <item>
+       <property name="text">
+        <string>POI</string>
+       </property>
+      </item>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menubar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>800</width>
+     <height>25</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="menuHelp">
+    <property name="title">
+     <string>Help</string>
+    </property>
+    <addaction name="actionAbout"/>
+   </widget>
+   <addaction name="menuHelp"/>
+  </widget>
+  <action name="actionAbout">
+   <property name="text">
+    <string>About</string>
+   </property>
+  </action>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/settings.py b/settings.py
new file mode 100644 (file)
index 0000000..3a75377
--- /dev/null
@@ -0,0 +1 @@
+action = 'http://efa.vor.at/wvb/XSLT_TRIP_REQUEST2'
diff --git a/wlSearch.py b/wlSearch.py
new file mode 100644 (file)
index 0000000..f879736
--- /dev/null
@@ -0,0 +1,63 @@
+import urllib
+import sys
+from datetime import datetime
+import settings
+import webbrowser
+
+
+class Search:
+
+    def __init__(self, origin, destination, origin_type='stop', destination_type='stop', dtime=datetime.now()):
+        self.origin = origin
+        self.destination = destination
+        self.datetime = dtime
+        self.origin_type = origin_type
+        self.destination_type = destination_type
+
+    def open_browser(self):
+        webbrowser.open('%s?%s' % (settings.action, self.parameter))
+
+    @property
+    def time(self):
+        return self.datetime.strftime('%H:%M')
+
+    @property
+    def date(self):
+        return self.datetime.strftime('%d.%m.%Y')
+
+    @property
+    def parameter(self):
+        post = {'language': 'de',
+            'sessionID': 0,
+            'requestID': 0,
+            'execInst': 'normal',
+            'command': '',
+            'anySigWhenPerfectNoOtherMatches': 1,
+            'itdLPxx_locationServerActive': '',
+            'locationServerActive': 0,
+            'typeInfo_origin': 'invalid',
+            'placeState_origin': 'empty',
+            'placeInfo_origin': 'invalid',
+            'place_origin': 'Wien',
+            'type_origin': self.origin_type, # stop/address/poi
+            'nameState_origin': 'empty',
+            'nameInfo_origin': 'invalid',
+            'anyType_origin': '',
+            'name_origin': self.origin,
+            'typeInfo_destination': 'invalid',
+            'placeState_destination': 'empty',
+            'placeInfo_destination': 'invalid',
+            'place_destination': 'Wien',
+            'type_destination': self.destination_type, # stop/address/poi
+            'nameState_destination': 'empty',
+            'nameInfo_destination': 'invalid',
+            'anyType_destination': '',
+            'name_destination': self.destination,
+            'itdTripDateTimeDepArr': 'dep',
+            'itdDateDayMonthYear': self.date, # DD.MM.YYYY
+            'itdTime': self.time, # HH:MM
+            'submitbutton': 'SUCHEN'
+        }
+
+        params = urllib.urlencode(post)
+        return params