2015-02-21 18:30:32 -08:00
|
|
|
"""A python app to (automatically) tag comic archives"""
|
2013-02-06 17:20:05 -08:00
|
|
|
|
2015-02-21 18:30:32 -08:00
|
|
|
# Copyright 2012-2014 Anthony Beville
|
2013-02-06 17:20:05 -08:00
|
|
|
|
2015-02-21 18:30:32 -08:00
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
# you may not use this file except in compliance with the License.
|
|
|
|
# You may obtain a copy of the License at
|
2013-02-06 17:20:05 -08:00
|
|
|
|
2015-02-21 18:30:32 -08:00
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
2013-02-06 17:20:05 -08:00
|
|
|
|
2015-02-21 18:30:32 -08:00
|
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
# See the License for the specific language governing permissions and
|
|
|
|
# limitations under the License.
|
2013-02-06 17:20:05 -08:00
|
|
|
|
|
|
|
import sys
|
|
|
|
import signal
|
|
|
|
import traceback
|
|
|
|
import platform
|
2015-02-21 18:30:32 -08:00
|
|
|
#import os
|
2013-02-06 17:20:05 -08:00
|
|
|
|
|
|
|
try:
|
2015-02-12 14:57:46 -08:00
|
|
|
qt_available = True
|
|
|
|
from PyQt4 import QtCore, QtGui
|
|
|
|
from taggerwindow import TaggerWindow
|
2013-02-06 17:20:05 -08:00
|
|
|
except ImportError as e:
|
2015-02-12 14:57:46 -08:00
|
|
|
qt_available = False
|
2015-02-13 15:08:07 -08:00
|
|
|
|
|
|
|
import utils
|
|
|
|
import cli
|
|
|
|
from settings import ComicTaggerSettings
|
|
|
|
from options import Options
|
|
|
|
from comicvinetalker import ComicVineTalker
|
|
|
|
|
2013-02-06 17:20:05 -08:00
|
|
|
|
2013-02-14 16:23:54 -08:00
|
|
|
def ctmain():
|
2015-02-12 14:57:46 -08:00
|
|
|
utils.fix_output_encoding()
|
|
|
|
settings = ComicTaggerSettings()
|
|
|
|
|
|
|
|
opts = Options()
|
|
|
|
opts.parseCmdLineArgs()
|
|
|
|
|
|
|
|
# manage the CV API key
|
|
|
|
if opts.cv_api_key:
|
|
|
|
if opts.cv_api_key != settings.cv_api_key:
|
|
|
|
settings.cv_api_key = opts.cv_api_key
|
|
|
|
settings.save()
|
|
|
|
if opts.only_set_key:
|
2015-02-13 15:08:07 -08:00
|
|
|
print("Key set")
|
2015-02-12 14:57:46 -08:00
|
|
|
return
|
|
|
|
|
|
|
|
ComicVineTalker.api_key = settings.cv_api_key
|
|
|
|
|
|
|
|
signal.signal(signal.SIGINT, signal.SIG_DFL)
|
|
|
|
|
|
|
|
if not qt_available and not opts.no_gui:
|
|
|
|
opts.no_gui = True
|
|
|
|
print >> sys.stderr, "PyQt4 is not available. ComicTagger is limited to command-line mode."
|
|
|
|
|
|
|
|
if opts.no_gui:
|
2015-02-13 15:08:07 -08:00
|
|
|
cli.cli_mode(opts, settings)
|
2015-02-12 14:57:46 -08:00
|
|
|
else:
|
|
|
|
app = QtGui.QApplication(sys.argv)
|
|
|
|
|
|
|
|
if platform.system() != "Linux":
|
2015-02-15 02:44:00 -08:00
|
|
|
img = QtGui.QPixmap(ComicTaggerSettings.getGraphic('tags.png'))
|
2015-02-12 14:57:46 -08:00
|
|
|
|
|
|
|
splash = QtGui.QSplashScreen(img)
|
|
|
|
splash.show()
|
|
|
|
splash.raise_()
|
|
|
|
app.processEvents()
|
|
|
|
|
|
|
|
try:
|
2015-02-13 15:08:07 -08:00
|
|
|
tagger_window = TaggerWindow(opts.file_list, settings, opts=opts)
|
2015-02-12 14:57:46 -08:00
|
|
|
tagger_window.show()
|
|
|
|
|
|
|
|
if platform.system() != "Linux":
|
2015-02-13 15:08:07 -08:00
|
|
|
splash.finish(tagger_window)
|
2015-02-12 14:57:46 -08:00
|
|
|
|
|
|
|
sys.exit(app.exec_())
|
2015-02-13 15:08:07 -08:00
|
|
|
except Exception as e:
|
2015-02-15 03:55:04 -08:00
|
|
|
QtGui.QMessageBox.critical(
|
|
|
|
QtGui.QMainWindow(),
|
|
|
|
"Error",
|
|
|
|
"Unhandled exception in app:\n" +
|
|
|
|
traceback.format_exc())
|