pyqso/bin/pyqso

139 wiersze
5.1 KiB
Plaintext
Czysty Zwykły widok Historia

#!/usr/bin/env python
# File: pyqso.py
# Copyright (C) 2012 Christian 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/>.
from gi.repository import Gtk, GObject, Gdk, GdkPixbuf
import logging
import optparse
import os
import os.path
import sys
# This will help Python find the PyQSO modules
# that need to be imported below.
pyqso_path = os.path.join(os.path.realpath(os.path.dirname(__file__)), os.pardir)
sys.path.insert(0, pyqso_path)
# PyQSO modules
2013-03-30 20:56:34 +00:00
from pyqso.adif import *
from pyqso.logbook import *
from pyqso.menu import *
from pyqso.toolbar import *
from pyqso.toolbox import *
class PyQSO(Gtk.Window):
def __init__(self, logbook_path):
# Call the constructor of the super class (Gtk.Window)
Gtk.Window.__init__(self, title="PyQSO 0.1a.dev")
self.set_size_request(800, 600)
self.set_position(Gtk.WindowPosition.CENTER)
possible_icon_paths = [os.path.join(pyqso_path, "icons", "log_64x64.png")]
for icon_path in possible_icon_paths:
try:
self.set_icon_from_file(icon_path)
except Exception, error:
print error.message
2013-03-23 21:25:05 +00:00
# Kills the application if the close button is clicked on the main window itself.
self.connect("delete-event", Gtk.main_quit)
vbox_outer = Gtk.VBox()
self.add(vbox_outer)
2013-04-21 16:47:09 +00:00
self.statusbar = Gtk.Statusbar()
context_id = self.statusbar.get_context_id("Status")
self.statusbar.push(context_id, "Not connected to a Logbook.")
# Create a Logbook so we can add/remove/edit logs and records,
# once connected to the SQLite database.
self.logbook = Logbook(self)
self.logbook.set_scrollable(True)
self.toolbox = Toolbox(self)
# Set up menu and tool bars
# These classes depend on the Logbook class,
# so pack the logbook after the menu and toolbar.
self.menu = Menu(self)
self.toolbar = Toolbar(self)
2013-04-21 16:47:09 +00:00
if(logbook_path is not None):
self.logbook.db_connect(path=logbook_path)
vbox_outer.pack_start(self.menu, False, False, 0)
vbox_outer.pack_start(self.toolbar, False, False, 0)
vbox_outer.pack_start(self.logbook, True, True, 0)
vbox_outer.pack_start(self.toolbox, True, True, 0)
vbox_outer.pack_start(self.statusbar, False, False, 0)
self.show_all()
# Hide the Toolbox by default
self.toolbox.toggle_visible_callback()
return
def show_about(self, widget):
about = Gtk.AboutDialog()
about.set_program_name("PyQSO")
about.set_version("0.1a.dev")
about.set_authors(["Christian Jacobs"])
about.set_license('''This program 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.
This program 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 this program. If not, see <http://www.gnu.org/licenses/>.''')
about.set_comments("PyQSO: A Python-based contact logging tool for amateur radio operators")
possible_icon_paths = [os.path.join(pyqso_path, "icons", "log_64x64.png")]
for icon_path in possible_icon_paths:
try:
about.set_logo(GdkPixbuf.Pixbuf.new_from_file_at_scale(icon_path, 64, 64, False))
except Exception, error:
print error.message
about.run()
about.destroy()
return
if(__name__ == '__main__'):
# Get any command line arguments
parser = optparse.OptionParser()
parser.add_option('-d', '--debug', action="store_true", default=False, help='Enable debugging. All debugging messages will be written to pyqso.debug.')
parser.add_option('-l', '--logbook', action="store", type="string", dest="logbook", default=None, help='Path to the Logbook file.')
(options, args) = parser.parse_args()
# Set up debugging output
if(options.debug):
logging.basicConfig(level=logging.DEBUG, filename="pyqso.debug",
format="%(asctime)s %(levelname)s: %(message)s",
datefmt="%Y-%m-%d %H:%M:%S")
application = PyQSO(options.logbook) # Populate the main window and show it
Gtk.main() # Start up the event loop!