Skip to content
This repository has been archived by the owner on Jan 30, 2024. It is now read-only.

Commit

Permalink
reorganize code
Browse files Browse the repository at this point in the history
  • Loading branch information
gen2brain committed Jul 2, 2012
1 parent 1e8f1ce commit cba77b5
Show file tree
Hide file tree
Showing 25 changed files with 79 additions and 109 deletions.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
43 changes: 0 additions & 43 deletions src/debug.py

This file was deleted.

File renamed without changes.
22 changes: 13 additions & 9 deletions src/alsactrl.py → src/volti/alsactrl.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,11 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

import sys

import alsaaudio as alsa

from debug import log
from volti.utils import log

OLD_VOLUME = 0
MUTED = False
Expand All @@ -36,16 +38,17 @@ def __init__(self, card_index, control, main_instance):
self.open()
self._check_version()
except Exception, err:
log.Warn("can't open %s control for card %s, trying to select first available mixer channel\n" % (
log.warn("can't open %s control for card %s, trying to select first available mixer channel\n" % (
self.control, self.get_card_name()))
try:
control = self.get_mixers(self.card_index)[0]
self.main.control = control
self.reopen(self.card_index, control)
self._check_version()
except Exception, err:
log.Error("can't open first available control for card %s\nerror: %s" % (
log.error("can't open first available control for card %s\nerror: %s" % (
self.get_card_name(), str(err)))
sys.exit(1)

def __del__(self):
""" Destructor """
Expand All @@ -56,7 +59,8 @@ def _check_version(self):
try:
assert hasattr(self.mixer, "polldescriptors")
except AssertionError:
log.Error("This program needs pyalsaaudio 0.6 or higher")
log.error("This program needs pyalsaaudio 0.6 or higher")
sys.exit(1)

def open(self):
""" Open mixer """
Expand Down Expand Up @@ -105,7 +109,7 @@ def get_descriptors(self):
return (None, None)
return self.mixer.polldescriptors()[0]
except Exception, err:
log.Warn(str(err))
log.exception(str(err))
return (None, None)

def set_volume(self, volume):
Expand All @@ -115,7 +119,7 @@ def set_volume(self, volume):
mixer.setvolume(volume, self.channel)
return True
except alsa.ALSAAudioError, err:
log.Warn(str(err))
log.exception(str(err))
return False

def get_volume(self):
Expand All @@ -125,7 +129,7 @@ def get_volume(self):
return 0
return self.mixerlist[0].getvolume()[0]
except alsa.ALSAAudioError, err:
log.Warn(str(err))
log.exception(str(err))

def set_mute(self, mute=0):
""" Set mixer mute status """
Expand Down Expand Up @@ -161,7 +165,7 @@ def get_card_name(self):
try:
return alsa.cards()[self.card_index]
except IndexError, err:
log.Warn(str(err))
log.exception(str(err))

def get_mixer_name(self):
""" Returns mixer name """
Expand All @@ -170,7 +174,7 @@ def get_mixer_name(self):
return ''
return self.mixerlist[0].mixer()
except alsa.ALSAAudioError, err:
log.Warn(str(err))
log.exception(str(err))

def get_cards(self):
""" Returns cards list """
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
Empty file added src/volti/gtk2/__init__.py
Empty file.
64 changes: 24 additions & 40 deletions src/main.py → src/volti/gtk2/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,42 +22,25 @@
from subprocess import Popen, PIPE
from signal import SIGTERM

try:
from dbus.exceptions import DBusException
except ImportError:
sys.stderr.write("This program needs dbus-python 0.80.0 or higher\nExiting\n")
sys.exit(1)

try:
import gtk
import gobject
assert gtk.pygtk_version >= (2, 16, 0)
except ImportError, AssertionError:
sys.stderr.write("This program needs pygtk 2.16 or higher\nExiting\n")
sys.exit(1)

try:
import alsaaudio as alsa
except ImportError:
sys.stderr.write("This program needs pyalsaaudio 0.6 or higher\nExiting\n")
sys.exit(1)
import gtk
import gobject
from dbus.exceptions import DBusException

try:
from config import Config
from preferences import Preferences, PREFS
from alsactrl import AlsaControl
from dbusservice import DBusService
from scale import VolumeScale
from menu import PopupMenu
from utils import which, find_term, get_pid_app
from debug import log
from volti.config import Config
from volti.alsactrl import AlsaControl
from volti.dbusservice import DBusService
from volti.utils import log, which, find_term, get_pid_app
from volti.gtk2.scale import VolumeScale
from volti.gtk2.menu import PopupMenu
from volti.gtk2.preferences import Preferences, PREFS
except ImportError:
sys.stderr.write("Can't import application modules\nExiting\n")
sys.exit(1)

config = Config()
gettext.bindtextdomain(config.app_name, config.locale_dir)
gettext.textdomain(config.app_name)
CONFIG = Config()
gettext.bindtextdomain(CONFIG.app_name, CONFIG.locale_dir)
gettext.textdomain(CONFIG.app_name)

import __builtin__
__builtin__._ = gettext.gettext
Expand All @@ -69,7 +52,7 @@ def __init__(self):
""" Constructor """
gtk.StatusIcon.__init__(self)

self.config = config
self.config = CONFIG
self.preferences = Preferences(self)

self.card_index = int(PREFS["card_index"])
Expand Down Expand Up @@ -139,7 +122,7 @@ def init_keys_events(self):
from dbusevent import DBusEvent
self.keys_events = DBusEvent(self)
except Exception, err:
log.Warn(str(err))
log.exception(str(err))
self.keys_events = None
elif self.keys_backend == "xlib":
if self.has_xlib:
Expand All @@ -148,10 +131,10 @@ def init_keys_events(self):
self.keys_events = XlibEvent(self)
self.keys_events.start()
except Exception, err:
log.Warn(str(err))
log.exception(str(err))
self.keys_events = None
else:
log.Warn("Xlib backend needs python-xlib 0.15rc1 or higher\n")
log.warn("Xlib backend needs python-xlib 0.15rc1 or higher\n")
self.keys_events = None

def init_notify(self):
Expand All @@ -166,7 +149,7 @@ def init_notify(self):
from notification import Notification
self.notify = Notification(self)
except Exception, err:
log.Warn(str(err))
log.exception(str(err))
self.notify = None

def on_volume_changed(self, widget=None, data=None):
Expand Down Expand Up @@ -264,7 +247,7 @@ def get_icon_name(self, volume):

def get_icon_themes(self):
themes = ["Default"]
icons_dir = os.path.join(config.res_dir, "icons")
icons_dir = os.path.join(CONFIG.res_dir, "icons")
try:
for file in os.listdir(icons_dir):
if os.path.isdir(os.path.join(icons_dir, file)):
Expand Down Expand Up @@ -299,7 +282,7 @@ def update_icon(self, volume, icon):
""" Update icon """
if self.icon_theme != "Default":
icon = os.path.abspath(os.path.join(
config.res_dir, "icons", self.icon_theme, "32x32", icon+".png"))
CONFIG.res_dir, "icons", self.icon_theme, "32x32", icon+".png"))
self.set_from_file(icon)
else:
self.set_from_icon_name(icon)
Expand All @@ -315,7 +298,7 @@ def update_notify(self, volume, icon):
""" Update notification """
if self.icon_theme != "Default":
icon = os.path.abspath(os.path.join(
config.res_dir, "icons", self.icon_theme, "48x48", icon+".png"))
CONFIG.res_dir, "icons", self.icon_theme, "48x48", icon+".png"))
try:
self.notify.show(icon, self.notify_body, self.notify_timeout, volume)
except DBusException:
Expand All @@ -337,7 +320,7 @@ def update(self, source=None, condition=None, reopen=True):
gtk.gdk.threads_leave()
return True
except Exception, err:
log.Warn(str(err))
log.exception(str(err))
return False

def toggle_mute(self, widget=None):
Expand Down Expand Up @@ -366,7 +349,8 @@ def toggle_mixer(self, widget=None):
cmd = which(mixer)
Popen(cmd, shell=False)
except Exception, err:
log.Warn(str(err))
log.debug(cmd)
log.exception(str(err))

def mixer_get_pid(self):
""" Get process id of mixer application """
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion src/mixer.py → src/volti/gtk2/mixer.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import gobject
import alsaaudio as alsa

from config import Config
from volti.config import Config
CONFIG = Config()

gettext.bindtextdomain(CONFIG.app_name, CONFIG.locale_dir)
Expand Down
4 changes: 2 additions & 2 deletions src/preferences.py → src/volti/gtk2/preferences.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import pango
from ConfigParser import ConfigParser

from debug import log
from volti.utils import log

PREFS = {
"card_index": 0,
Expand Down Expand Up @@ -126,7 +126,7 @@ def init_builder(self):
self.tree.set_translation_domain(self.main.config.app_name)
self.tree.add_from_file(glade_file)
except Exception, err:
log.Warn(str(err))
log.exception(str(err))

self.version_label = self.tree.get_object("version_label")
self.version_label.set_text("%s %s" % (
Expand Down
File renamed without changes.
File renamed without changes.
14 changes: 13 additions & 1 deletion src/utils.py → src/volti/utils.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
import os
import logging
from subprocess import Popen, PIPE

def which(prog):
""" Equivalent of unix which command """
def is_exe(fpath):
return os.path.exists(fpath) and os.access(fpath, os.X_OK)

paths = os.environ["PATH"].split(os.pathsep)
paths.append(".")

fpath, fname = os.path.split(prog)
if fpath:
if is_exe(prog):
return prog
else:
for path in os.environ["PATH"].split(os.pathsep):
for path in paths:
filename = os.path.join(path, prog)
if is_exe(filename):
return filename
Expand All @@ -38,3 +42,11 @@ def get_pid_app():
elif which("pgrep"):
return "pgrep"
return None

class Logger():
def __init__(self):
log_format = '%(levelname)s: %(message)s'
logging.basicConfig(level=logging.DEBUG, format=log_format)
self.logger = logging.getLogger('frontend')

log = Logger().logger
4 changes: 2 additions & 2 deletions src/xlibevent.py → src/volti/xlibevent.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
from Xlib.display import Display
from Xlib import X, XK

from debug import log
from volti.utils import log

class XlibEvent(gobject.GObject, threading.Thread):
""" Handle multimedia keys via Xlib """
Expand All @@ -44,7 +44,7 @@ def __init__(self, main_instance):
try:
XK.load_keysym_group("xf86")
except ImportError, err:
log.Warn("Xlib backend needs python-xlib 0.15rc1 or higher\n")
log.warn("Xlib backend needs python-xlib 0.15rc1 or higher\n")
raise ImportError(str(err))

self.display = Display()
Expand Down
23 changes: 18 additions & 5 deletions volti
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,24 @@ except ImportError, AssertionError:
sys.exit(1)

try:
if os.path.isdir(os.path.join(".","src")) and os.path.isfile(
os.path.join(".","setup.py")):
from src import main
else:
from volti import main
import gtk
assert gtk.pygtk_version >= (2, 16, 0)
except ImportError, AssertionError:
sys.stderr.write("This program needs pygtk 2.16 or higher\nExiting\n")
sys.exit(1)

try:
import alsaaudio
except ImportError:
sys.stderr.write("This program needs pyalsaaudio 0.6 or higher\nExiting\n")
sys.exit(1)

if os.path.isdir(os.path.join(".","src")) and os.path.isfile(
os.path.join(".","setup.py")):
sys.path.append(os.path.realpath("src"))

try:
from volti.gtk2 import main
except ImportError:
sys.stderr.write("Can't import volti main module\nExiting\n")
sys.exit(1)
Expand Down
Loading

0 comments on commit cba77b5

Please sign in to comment.