Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue #138 - Add SOV on map #167

Open
wants to merge 25 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,10 @@
.idea/workspace.xml
.vs/*
*.pyproj
*.exe
src/dist/*
src/build/*
*.log
avbin64.dll
avbin32.dll
avbin.dll
67 changes: 21 additions & 46 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@

Visual intel chat analysis, planning and notification application for [EVE Online](http://www.eveonline.com). Gathers status through in-game intelligence channels on all known hostiles and presents all the data on a [dotlan](http://evemaps.dotlan.net/map/Cache#npc24) generated regional map. The map is annotated in real-time as players report intel in monitored chat channels.

Vintel is written with Python 2.7, using PyQt4 for the application presentation layer, BeautifulSoup4 for SVG parsing, and Pyglet for audio playback.
Vintel is written with Python 3.6, using PyQt5 for the application presentation layer, BeautifulSoup4 for SVG parsing, and Pyglet+pyttsx3 for audio playback.

### News
_The current release version of Vintel [can be found here](https://github.com/Xanthos-Eve/vintel/releases). Both Mac and Windows distributions are now available for download with this release._
_The current release version of Vintel [can be found here](https://github.com/bperian/vintel/releases). Windows distributions are now available for download with this release._

Keep up on the latest at the [wiki](https://github.com/Xanthos-Eve/vintel/wiki) or visit our [issues](https://github.com/Xanthos-Eve/vintel/issues) page to see what bugs and features are in the queue.
Keep up on the latest at the [wiki](https://github.com/bperian/vintel/wiki) or visit our [issues](https://github.com/bperian/vintel/issues) page to see what bugs and features are in the queue.

## Screenshot

![](https://github.com/Xanthos-Eve/vintel/blob/master/src/docs/screenshot.png)
![](https://github.com/bperian/vintel/blob/master/src/docs/screenshot.png)

## Features

Expand Down Expand Up @@ -55,47 +55,29 @@ To use this feature: click on a pilot in the local pilot list and then type the

## Running Vintel from Source

To run or build from the source you need the following packages installed on your machine. Most, if not all, can be installed from the command line using package management software such as "pip". Mac and Linux both come with pip installed, Windows users may need to install [cygwin](https://www.cygwin.com) to get pip. Of course all the requirements also have downoad links.

The packages required are:
- Python 2.7.x
https://www.python.org/downloads/
Vintel is not compatible with Python 3!
- PyQt4x
http://www.riverbankcomputing.com/software/pyqt/download
Please use the PyQt Binary Package for Py2.7
Vintel is not compatible with PyQt5!
- BeautifulSoup 4
https://pypi.python.org/pypi/beautifulsoup4
- Pyglet 1.2.4 (for python 2.7)
https://bitbucket.org/pyglet/pyglet/wiki/Download
pyglet is used to play the sound – If it is not available the sound option will be disabled.
- Requests 2
https://pypi.python.org/pypi/requests
- Six for python 3 compatibility https://pypi.python.org/pypi/six
- The packages requirements are defined in `setup.py` file
- Pyglet may require https://github.com/AVbin/AVbin installed; this can be easily confirmed by checking the `vintel.log` file for errors regarding `avbin` not loaded.


## Building the Vintel Standalone Package

- The standalone is created using pyinstaller. All media files and the .spec-file with the configuration for pyinstaller are included in the source repo. Pyinstaller can be found here: https://github.com/pyinstaller/pyinstaller/wiki.
- Edit the .spec file to match your src path in the "a = Analysis" section and execute "pyinstaller vintel.spec vintel.py". If everything went correctly you should get a dist folder that contains the standalone executable.
- The standalone is created using pyinstaller. All media files and the setup.py file with the configuration for pyinstaller are included in the source repo.
pyinstaller can be installed through pip like this `pip install pyinstaller`
- execute "pyinstaller vintel.spec vintel.py". If everything went correctly you should get a dist folder that contains the standalone executable + required files.

## FAQ

**License?**
**License**

Vintel is licensed under the [GPLv3](http://www.gnu.org/licenses/gpl-3.0.html).

**Vintel does not play sounds - is there a remedy for this?**

The most likely cause of this is that pyglet is not installed.

**A litte bit to big for such a little tool.**

The .exe ships with the complete environment and needed libs. You could save some space using the the source code instead.
- The .exe ships with the complete environment and needed libs. You could save some space using the the source code instead.

**What platforms are supported?**

Vintel runs on Mac (OS X), Windows and Linux. Mac and Windows standalone packages are provided with each release. Linux users are advised to install all the requirements listed above then download and run from source.
Vintel runs on Mac (OS X), Windows and Linux. Windows standalone packages are provided with each release. Linux and Mac users are advised to install all the requirements listed above then download and run from source.

**What file system permissions does Vintel need?**

Expand All @@ -110,44 +92,37 @@ Vintel looks for a new version at startup and loads dynamic infomation (i.e., ju

**Vintel does not find my chatlogs or is not showing changes to chat when it should. What can I do?**

Vintel looks for your chat logs in ~\EVE\logs\chatlogs and ~\DOCUMENTS\EVE\logs\chatlogs. Logging must be enabled in the EVE client options. You can set this path on your own by giving it to Vintel at startup. For this you have to start it on the command line and call the program with the path to the logs.
Vintel looks for your chat logs in ~\EVE\logs\chatlogs and ~\DOCUMENTS\EVE\logs\chatlogs , game logs in ~\EVE\logs\gamelogs and ~\DOCUMENTS\EVE\logs\gamelogs
Logging must be enabled in the EVE client options. You can set this path on your own by giving it to Vintel at startup. For this you have to start it on the command line and call the program with the path to the logs.

Examples:

`win> vintel-1.0.exe "d:\strange\path\EVE\logs\chatlogs"`
`win> vintel.exe "d:\strange\path\EVE\logs\chatlogs" "d:\strange\path\EVE\logs\gamelogs"`

– or –

`linux and mac> python vintel.py "/home/user/myverypecialpath/EVE/logs/chatlogs"`

**Vintel does not start! What can I do?**
`linux and mac> python vintel.py "/home/user/myverypecialpath/EVE/logs/chatlogs" "/home/user/myverypecialpath/EVE/logs/gamelogs"`

Please try to delete Vintel's Cache. It is located in the EVE-directory where the chatlogs are in. If your chatlogs are in \Documents\EVE\logs\chatlogs Vintel writes the cachte to \Documents\EVE\vintel

**Vintel takes many seconds to start up; what are some of the causes and what can I do about it?**

Vintel asks the operating system to notifiy when a change has been made to the ChatLogs directory - this will happen when a new log is created or an existing one is updated. In response to this notification, Vintel examines all of the files in the directory to analysze the changes. If you have a lot of chat logs this can make Vintel slow to scan for file changes. Try perodically moving all the chatlogs out of the ChatLogs directory (zip them up and save them somewhere else if you think you may need them some day).

**Vintel complains about missing dll files on Windows at app launch, is there a workaround for this?**

Yes there is! There is a bit of a mix up going on with the latest pyinstaller and the Microsoft developer dlls. Here is a link to help illuminate the issue https://github.com/pyinstaller/pyinstaller/issues/1974

You can visit Microsoft's web site to download the developer dlls https://www.microsoft.com/en-in/download/details.aspx?id=5555.

You can also read a more technical treatment of the issue here http://www.tomshardware.com/answers/id-2417960/msvcr100-dll-32bit-64bit.html

**How can I resolve the "empty certificate data" error?**

Do not use the standalone EXE, install the environment and use the sourcecode directly. There are missing certificates that must be provided by the environment. This error was discovered when running the standalone EXE on Linux using wine.

**Vintel is misbehaving and I dont know why - how can I easily help diagnose problems with Vintel**

Vintel writes its own set of logs to the \Documents\EVE\vintel\vintel directory. A new log is created as the old one fills up to its maximum size setting. Each entry inside the log file is time-stamped. These logs are emitted in real-time so you can watch the changes to the file as you use the app.
Vintel writes its own set of logs to the \Documents\EVE\vintel\vintel directory and in the application directory vintel.log . A new log is created as the old one fills up to its maximum size setting. Each entry inside the log file is time-stamped. These logs are emitted in real-time so you can watch the changes to the file as you use the app.

**I love Vintel - how can I help?**

If you are technically inclined and have a solid grasp of Python, [contact the project maintainer via email](mailto:xanthos.eve@gmail.com) to see how you can best help out. Alternatively you can find something you want to change and create a pull request to have your changes reviewed and potentially added to the codebase. There have been several great contributions made this way!
If you are technically inclined and have a solid grasp of Python, [contact the project maintainer via email](mailto:bperian@faxtorial.com) to see how you can best help out. Alternatively you can find something you want to change and create a pull request to have your changes reviewed and potentially added to the codebase. There have been several great contributions made this way!

**I'm not a coder, how can I help?**

Your feedback is needed! Use the program for a while, then come back [here and create issues](https://github.com/Xanthos-Eve/vintel/issues). Record anything you think about Vintel - bugs, frustrations, and ideas to make it better.
Your feedback is needed! Use the program for a while, then come back [here and create issues](https://github.com/bperian/vintel/issues). Record anything you think about Vintel - bugs, frustrations, and ideas to make it better.
ISK donations to [Blitz Arkaral](https://zkillboard.com/character/95517727/) are of course welcome.
40 changes: 40 additions & 0 deletions src/setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
from setuptools import find_packages, setup, Executable




import sys
base = None

if sys.platform == "win32":
base = "Win32GUI"

import os.path
PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__))



executables = [Executable("vintel.py", base=base,icon="icon.ico")]

packages = ["appdirs","packaging.version","packaging.specifiers","packaging","pyglet","pyqt5","pyttsx3"]

package_data = {'ui' : ['vi/ui/*']}

options = {
'build_exe': {
'packages':packages,
'optimize':2,

},
}

setup(
name = "VINTEL",
options = options,
version = "1.2.4",
description = 'Intel chat analyzer',
executables = executables,
include_package_data=True,
package_data = {'' : ['*.ui','*.png','*.svg','*.wav']},

)
24 changes: 0 additions & 24 deletions src/tools/addmessage.py

This file was deleted.

40 changes: 25 additions & 15 deletions src/vi/PanningWebView.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,22 @@

from PyQt4.QtWebKit import QWebView
from PyQt4.QtGui import *
from PyQt4 import QtCore
from PyQt4.QtCore import QPoint
from PyQt4.QtCore import QString
from PyQt4.QtCore import QEvent

class PanningWebView(QWebView):
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage
from PyQt5.QtCore import QPoint,pyqtSignal, QUrl, QEvent

class WebEnginePage(QWebEnginePage):
mapLinkClicked = pyqtSignal(QUrl)
def acceptNavigationRequest(self, url, type, isMainFrame):
if type == QWebEnginePage.NavigationTypeLinkClicked:
self.mapLinkClicked.emit(url)
return False
return True
def javaScriptConsoleMessage(self, level, msg, line, source):
# supress Javascript warnings and uncaught ReferenceError exceptions for JS functions
pass

class PanningWebView(QWebEngineView):

def setPage(self, newPage):
super(PanningWebView, self).setPage(newPage)
self.widget = self.page()

def __init__(self, parent=None):
super(PanningWebView, self).__init__()
Expand All @@ -17,7 +27,7 @@ def __init__(self, parent=None):
self.offset = 0
self.handIsClosed = False
self.clickedInScrollBar = False

self.setPage(WebEnginePage(self))

def mousePressEvent(self, mouseEvent):
pos = mouseEvent.pos()
Expand All @@ -27,7 +37,7 @@ def mousePressEvent(self, mouseEvent):
else:
if self.ignored.count(mouseEvent):
self.ignored.remove(mouseEvent)
return QWebView.mousePressEvent(self, mouseEvent)
return QWebEngineView.mousePressEvent(self, mouseEvent)

if not self.pressed and not self.scrolling and mouseEvent.modifiers() == QtCore.Qt.NoModifier:
if mouseEvent.buttons() == QtCore.Qt.LeftButton:
Expand All @@ -43,7 +53,7 @@ def mousePressEvent(self, mouseEvent):
self.offset = QPoint(xTuple[0], yTuple[0])
return

return QWebView.mousePressEvent(self, mouseEvent)
return QWebEngineView.mousePressEvent(self, mouseEvent)


def mouseReleaseEvent(self, mouseEvent):
Expand All @@ -52,7 +62,7 @@ def mouseReleaseEvent(self, mouseEvent):
else:
if self.ignored.count(mouseEvent):
self.ignored.remove(mouseEvent)
return QWebView.mousePressEvent(self, mouseEvent)
return QWebEngineView.mousePressEvent(self, mouseEvent)

if self.scrolling:
self.pressed = False
Expand All @@ -74,7 +84,7 @@ def mouseReleaseEvent(self, mouseEvent):
QApplication.postEvent(self, event1)
QApplication.postEvent(self, event2)
return
return QWebView.mouseReleaseEvent(self, mouseEvent)
return QWebEngineView.mouseReleaseEvent(self, mouseEvent)


def mouseMoveEvent(self, mouseEvent):
Expand All @@ -94,7 +104,7 @@ def mouseMoveEvent(self, mouseEvent):
self.pressed = False
self.scrolling = True
return
return QWebView.mouseMoveEvent(self, mouseEvent)
return QWebEngineView.mouseMoveEvent(self, mouseEvent)


def pointInScroller(self, position, orientation):
Expand Down
7 changes: 5 additions & 2 deletions src/vi/amazon_s3.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
import requests
import logging

from PyQt4 import Qt
from PyQt4.QtCore import QThread, SIGNAL
from PyQt5 import Qt
from PyQt5.QtCore import QThread, pyqtSignal
from vi import version
from vi.cache.cache import Cache
from distutils.version import LooseVersion, StrictVersion
Expand Down Expand Up @@ -62,6 +62,9 @@ def getNewestVersion():


class NotifyNewVersionThread(QThread):

newer_version = pyqtSignal()

def __init__(self):
QThread.__init__(self)
self.alerted = False
Expand Down
2 changes: 2 additions & 0 deletions src/vi/cache/cache.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
import threading
import time
import six
import PyQt5

if six.PY2:
def to_blob(x):
return buffer(str(x))
Expand Down
Loading