Commit 105427b8 authored by Philipp Hörist's avatar Philipp Hörist

Use consistent way to get paths

This lets us now import the app module without setting paths
parent 52cbae69
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
import os import os
import sys import sys
import logging import logging
import locale
import uuid import uuid
from distutils.version import LooseVersion as V from distutils.version import LooseVersion as V
from collections import namedtuple from collections import namedtuple
...@@ -63,20 +62,6 @@ logger = None ...@@ -63,20 +62,6 @@ logger = None
# some plugins use that # some plugins use that
gajimpaths = configpaths.gajimpaths gajimpaths = configpaths.gajimpaths
AVATAR_PATH = configpaths.get('AVATAR')
MY_EMOTS_PATH = configpaths.get('MY_EMOTS')
MY_ICONSETS_PATH = configpaths.get('MY_ICONSETS')
MY_MOOD_ICONSETS_PATH = configpaths.get('MY_MOOD_ICONSETS')
MY_ACTIVITY_ICONSETS_PATH = configpaths.get('MY_ACTIVITY_ICONSETS')
MY_CACERTS = configpaths.get('MY_CACERTS')
MY_PEER_CERTS_PATH = configpaths.get('MY_PEER_CERTS')
DATA_DIR = configpaths.get('DATA')
ICONS_DIR = configpaths.get('ICONS')
HOME_DIR = configpaths.get('HOME')
PLUGINS_DIRS = [configpaths.get('PLUGINS_BASE'),
configpaths.get('PLUGINS_USER')]
PLUGINS_CONFIG_DIR = configpaths.get('PLUGINS_CONFIG_DIR')
MY_CERT_DIR = configpaths.get('MY_CERT')
RecentGroupchat = namedtuple('RecentGroupchat', ['room', 'server', 'nickname']) RecentGroupchat = namedtuple('RecentGroupchat', ['room', 'server', 'nickname'])
......
...@@ -32,6 +32,9 @@ from gajim.common.const import PathType, PathLocation ...@@ -32,6 +32,9 @@ from gajim.common.const import PathType, PathLocation
def get(key): def get(key):
if key == 'PLUGINS_DIRS':
return [_paths['PLUGINS_BASE'],
_paths['PLUGINS_USER']]
return _paths[key] return _paths[key]
...@@ -43,6 +46,10 @@ def get_paths(type_): ...@@ -43,6 +46,10 @@ def get_paths(type_):
yield _paths[key] yield _paths[key]
def override_path(*args, **kwargs):
_paths._add(*args, **kwargs)
def set_separation(active: bool): def set_separation(active: bool):
_paths.profile_separation = active _paths.profile_separation = active
......
...@@ -1217,7 +1217,7 @@ class Connection(CommonConnection, ConnectionHandlers): ...@@ -1217,7 +1217,7 @@ class Connection(CommonConnection, ConnectionHandlers):
cacerts = '' cacerts = ''
if os.name == 'nt': if os.name == 'nt':
cacerts = certifi.where() cacerts = certifi.where()
mycerts = common.app.MY_CACERTS mycerts = common.configpaths.get('MY_CACERTS')
tls_version = app.config.get_per('accounts', self.name, 'tls_version') tls_version = app.config.get_per('accounts', self.name, 'tls_version')
cipher_list = app.config.get_per('accounts', self.name, 'cipher_list') cipher_list = app.config.get_per('accounts', self.name, 'cipher_list')
......
...@@ -47,6 +47,7 @@ from gajim.common import helpers ...@@ -47,6 +47,7 @@ from gajim.common import helpers
from gajim.common import app from gajim.common import app
from gajim.common import dataforms from gajim.common import dataforms
from gajim.common import jingle_xtls from gajim.common import jingle_xtls
from gajim.common import configpaths
from gajim.common.caps_cache import muc_caps_cache from gajim.common.caps_cache import muc_caps_cache
from gajim.common.commands import ConnectionCommands from gajim.common.commands import ConnectionCommands
from gajim.common.pubsub import ConnectionPubSub from gajim.common.pubsub import ConnectionPubSub
...@@ -391,7 +392,7 @@ class ConnectionVcard: ...@@ -391,7 +392,7 @@ class ConnectionVcard:
else: else:
app.log('avatar').info( app.log('avatar').info(
'Update (vCard): %s %s', obj.nick, obj.avatar_sha) 'Update (vCard): %s %s', obj.nick, obj.avatar_sha)
path = os.path.join(app.AVATAR_PATH, obj.avatar_sha) path = os.path.join(configpaths.get('AVATAR'), obj.avatar_sha)
if not os.path.isfile(path): if not os.path.isfile(path):
app.log('avatar').info( app.log('avatar').info(
'Request (vCard): %s', obj.nick) 'Request (vCard): %s', obj.nick)
...@@ -572,7 +573,7 @@ class ConnectionVcard: ...@@ -572,7 +573,7 @@ class ConnectionVcard:
current_sha = app.config.get_per('accounts', self.name, 'avatar_sha') current_sha = app.config.get_per('accounts', self.name, 'avatar_sha')
if current_sha == avatar_sha: if current_sha == avatar_sha:
path = os.path.join(app.AVATAR_PATH, current_sha) path = os.path.join(configpaths.get('AVATAR'), current_sha)
if not os.path.isfile(path): if not os.path.isfile(path):
app.log('avatar').info( app.log('avatar').info(
'Caching (vCard): %s', current_sha) 'Caching (vCard): %s', current_sha)
......
...@@ -40,6 +40,7 @@ from gajim.common import helpers ...@@ -40,6 +40,7 @@ from gajim.common import helpers
from gajim.common import app from gajim.common import app
from gajim.common import i18n from gajim.common import i18n
from gajim.common import dataforms from gajim.common import dataforms
from gajim.common import configpaths
from gajim.common.zeroconf.zeroconf import Constant from gajim.common.zeroconf.zeroconf import Constant
from gajim.common.const import KindConstant from gajim.common.const import KindConstant
from gajim.common.pep import SUPPORTED_PERSONAL_USER_EVENTS from gajim.common.pep import SUPPORTED_PERSONAL_USER_EVENTS
...@@ -2738,7 +2739,8 @@ class NotificationEvent(nec.NetworkIncomingEvent): ...@@ -2738,7 +2739,8 @@ class NotificationEvent(nec.NetworkIncomingEvent):
if jid: if jid:
# we want an avatar # we want an avatar
puny_jid = helpers.sanitize_filename(jid) puny_jid = helpers.sanitize_filename(jid)
path_to_file = os.path.join(app.AVATAR_PATH, puny_jid) + suffix path_to_file = os.path.join(
configpaths.get('AVATAR'), puny_jid) + suffix
path_to_local_file = path_to_file + '_local' path_to_local_file = path_to_file + '_local'
for extension in ('.png', '.jpeg'): for extension in ('.png', '.jpeg'):
path_to_local_file_full = path_to_local_file + extension path_to_local_file_full = path_to_local_file + extension
......
...@@ -53,6 +53,7 @@ import nbxmpp ...@@ -53,6 +53,7 @@ import nbxmpp
from gajim.common.i18n import Q_ from gajim.common.i18n import Q_
from gajim.common.i18n import ngettext from gajim.common.i18n import ngettext
from gajim.common import configpaths
try: try:
import precis_i18n.codec import precis_i18n.codec
...@@ -863,8 +864,8 @@ def check_soundfile_path(file_, dirs=None): ...@@ -863,8 +864,8 @@ def check_soundfile_path(file_, dirs=None):
:return the path to file or None if it doesn't exists. :return the path to file or None if it doesn't exists.
""" """
if dirs is None: if dirs is None:
dirs = [app.configpaths.get('MY_DATA'), dirs = [configpaths.get('MY_DATA'),
app.DATA_DIR] configpaths.get('DATA')]
if not file_: if not file_:
return None return None
...@@ -891,8 +892,8 @@ def strip_soundfile_path(file_, dirs=None, abs=True): ...@@ -891,8 +892,8 @@ def strip_soundfile_path(file_, dirs=None, abs=True):
return None return None
if dirs is None: if dirs is None:
dirs = [app.configpaths.get('MY_DATA'), dirs = [configpaths.get('MY_DATA'),
app.DATA_DIR] configpaths.get('DATA')]
name = os.path.basename(file_) name = os.path.basename(file_)
for d in dirs: for d in dirs:
...@@ -1257,31 +1258,32 @@ def get_current_show(account): ...@@ -1257,31 +1258,32 @@ def get_current_show(account):
return app.SHOW_LIST[status] return app.SHOW_LIST[status]
def get_iconset_path(iconset): def get_iconset_path(iconset):
if os.path.isdir(os.path.join(app.DATA_DIR, 'iconsets', iconset)): if os.path.isdir(os.path.join(configpaths.get('DATA'), 'iconsets', iconset)):
return os.path.join(app.DATA_DIR, 'iconsets', iconset) return os.path.join(configpaths.get('DATA'), 'iconsets', iconset)
elif os.path.isdir(os.path.join(app.MY_ICONSETS_PATH, iconset)): elif os.path.isdir(os.path.join(configpaths.get('MY_ICONSETS'), iconset)):
return os.path.join(app.MY_ICONSETS_PATH, iconset) return os.path.join(configpaths.get('MY_ICONSETS'), iconset)
def get_mood_iconset_path(iconset): def get_mood_iconset_path(iconset):
if os.path.isdir(os.path.join(app.DATA_DIR, 'moods', iconset)): if os.path.isdir(os.path.join(configpaths.get('DATA'), 'moods', iconset)):
return os.path.join(app.DATA_DIR, 'moods', iconset) return os.path.join(configpaths.get('DATA'), 'moods', iconset)
elif os.path.isdir(os.path.join(app.MY_MOOD_ICONSETS_PATH, iconset)): elif os.path.isdir(
return os.path.join(app.MY_MOOD_ICONSETS_PATH, iconset) os.path.join(configpaths.get('MY_MOOD_ICONSETS'), iconset)):
return os.path.join(configpaths.get('MY_MOOD_ICONSETS'), iconset)
def get_activity_iconset_path(iconset): def get_activity_iconset_path(iconset):
if os.path.isdir(os.path.join(app.DATA_DIR, 'activities', iconset)): if os.path.isdir(os.path.join(configpaths.get('DATA'), 'activities', iconset)):
return os.path.join(app.DATA_DIR, 'activities', iconset) return os.path.join(configpaths.get('DATA'), 'activities', iconset)
elif os.path.isdir(os.path.join(app.MY_ACTIVITY_ICONSETS_PATH, elif os.path.isdir(os.path.join(configpaths.get('MY_ACTIVITY_ICONSETS'),
iconset)): iconset)):
return os.path.join(app.MY_ACTIVITY_ICONSETS_PATH, iconset) return os.path.join(configpaths.get('MY_ACTIVITY_ICONSETS'), iconset)
def get_transport_path(transport): def get_transport_path(transport):
if os.path.isdir(os.path.join(app.DATA_DIR, 'iconsets', 'transports', if os.path.isdir(os.path.join(configpaths.get('DATA'), 'iconsets', 'transports',
transport)): transport)):
return os.path.join(app.DATA_DIR, 'iconsets', 'transports', transport) return os.path.join(configpaths.get('DATA'), 'iconsets', 'transports', transport)
elif os.path.isdir(os.path.join(app.MY_ICONSETS_PATH, 'transports', elif os.path.isdir(os.path.join(configpaths.get('MY_ICONSETS'), 'transports',
transport)): transport)):
return os.path.join(app.MY_ICONSETS_PATH, 'transports', transport) return os.path.join(configpaths.get('MY_ICONSETS'), 'transports', transport)
# No transport folder found, use default jabber one # No transport folder found, use default jabber one
return get_iconset_path(app.config.get('iconset')) return get_iconset_path(app.config.get('iconset'))
...@@ -1606,13 +1608,13 @@ def version_condition(current_version, required_version): ...@@ -1606,13 +1608,13 @@ def version_condition(current_version, required_version):
def get_available_emoticon_themes(): def get_available_emoticon_themes():
emoticons_themes = [] emoticons_themes = []
emoticons_data_path = os.path.join(app.DATA_DIR, 'emoticons') emoticons_data_path = os.path.join(configpaths.get('DATA'), 'emoticons')
font_theme_path = os.path.join( font_theme_path = os.path.join(
app.DATA_DIR, 'emoticons', 'font-emoticons', 'emoticons_theme.py') configpaths.get('DATA'), 'emoticons', 'font-emoticons', 'emoticons_theme.py')
folders = os.listdir(emoticons_data_path) folders = os.listdir(emoticons_data_path)
if os.path.isdir(app.MY_EMOTS_PATH): if os.path.isdir(configpaths.get('MY_EMOTS')):
folders += os.listdir(app.MY_EMOTS_PATH) folders += os.listdir(configpaths.get('MY_EMOTS'))
file = 'emoticons_theme.py' file = 'emoticons_theme.py'
if os.name == 'nt' and not os.path.exists(font_theme_path): if os.name == 'nt' and not os.path.exists(font_theme_path):
...@@ -1628,11 +1630,11 @@ def get_available_emoticon_themes(): ...@@ -1628,11 +1630,11 @@ def get_available_emoticon_themes():
return emoticons_themes return emoticons_themes
def get_emoticon_theme_path(theme): def get_emoticon_theme_path(theme):
emoticons_data_path = os.path.join(app.DATA_DIR, 'emoticons', theme) emoticons_data_path = os.path.join(configpaths.get('DATA'), 'emoticons', theme)
if os.path.exists(emoticons_data_path): if os.path.exists(emoticons_data_path):
return emoticons_data_path return emoticons_data_path
emoticons_user_path = os.path.join(app.MY_EMOTS_PATH, theme) emoticons_user_path = os.path.join(configpaths.get('MY_EMOTS'), theme)
if os.path.exists(emoticons_user_path): if os.path.exists(emoticons_user_path):
return emoticons_user_path return emoticons_user_path
......
...@@ -19,6 +19,7 @@ Handles Jingle contents (XEP 0166) ...@@ -19,6 +19,7 @@ Handles Jingle contents (XEP 0166)
import os import os
from gajim.common import app from gajim.common import app
from gajim.common import configpaths
import nbxmpp import nbxmpp
from gajim.common.jingle_xtls import SELF_SIGNED_CERTIFICATE from gajim.common.jingle_xtls import SELF_SIGNED_CERTIFICATE
from gajim.common.jingle_xtls import load_cert_file from gajim.common.jingle_xtls import load_cert_file
...@@ -221,8 +222,8 @@ class JingleContent: ...@@ -221,8 +222,8 @@ class JingleContent:
if self.use_security: if self.use_security:
security = nbxmpp.simplexml.Node( security = nbxmpp.simplexml.Node(
tag=nbxmpp.NS_JINGLE_XTLS + ' security') tag=nbxmpp.NS_JINGLE_XTLS + ' security')
certpath = os.path.join(app.MY_CERT_DIR, SELF_SIGNED_CERTIFICATE)\ certpath = os.path.join(
+ '.cert' configpaths.get('MY_CERT'), SELF_SIGNED_CERTIFICATE) + '.cert'
cert = load_cert_file(certpath) cert = load_cert_file(certpath)
if cert: if cert:
try: try:
......
...@@ -21,6 +21,7 @@ import os ...@@ -21,6 +21,7 @@ import os
import nbxmpp import nbxmpp
from gajim.common import app from gajim.common import app
from gajim.common import configpaths
log = logging.getLogger('gajim.c.jingle_xtls') log = logging.getLogger('gajim.c.jingle_xtls')
...@@ -111,18 +112,18 @@ def get_context(fingerprint, verify_cb=None, remote_jid=None): ...@@ -111,18 +112,18 @@ def get_context(fingerprint, verify_cb=None, remote_jid=None):
elif fingerprint == 'client': elif fingerprint == 'client':
ctx.set_verify(SSL.VERIFY_PEER, verify_cb or default_callback) ctx.set_verify(SSL.VERIFY_PEER, verify_cb or default_callback)
cert_name = os.path.join(app.MY_CERT_DIR, SELF_SIGNED_CERTIFICATE) cert_name = os.path.join(configpaths.get('MY_CERT'), SELF_SIGNED_CERTIFICATE)
ctx.use_privatekey_file((cert_name + '.pkey').encode('utf-8')) ctx.use_privatekey_file((cert_name + '.pkey').encode('utf-8'))
ctx.use_certificate_file((cert_name + '.cert').encode('utf-8')) ctx.use_certificate_file((cert_name + '.cert').encode('utf-8'))
# Try to load Diffie-Hellman parameters. # Try to load Diffie-Hellman parameters.
# First try user DH parameters, if this fails load the default DH parameters # First try user DH parameters, if this fails load the default DH parameters
dh_params_name = os.path.join(app.MY_CERT_DIR, DH_PARAMS) dh_params_name = os.path.join(configpaths.get('MY_CERT'), DH_PARAMS)
try: try:
with open(dh_params_name, "r") as dh_params_file: with open(dh_params_name, "r") as dh_params_file:
ctx.load_tmp_dh(dh_params_name.encode('utf-8')) ctx.load_tmp_dh(dh_params_name.encode('utf-8'))
except FileNotFoundError as err: except FileNotFoundError as err:
default_dh_params_name = os.path.join(app.DATA_DIR, default_dh_params_name = os.path.join(configpaths.get('DATA'),
'other', DEFAULT_DH_PARAMS) 'other', DEFAULT_DH_PARAMS)
try: try:
with open(default_dh_params_name, "r") as default_dh_params_file: with open(default_dh_params_name, "r") as default_dh_params_file:
...@@ -134,7 +135,7 @@ def get_context(fingerprint, verify_cb=None, remote_jid=None): ...@@ -134,7 +135,7 @@ def get_context(fingerprint, verify_cb=None, remote_jid=None):
if remote_jid: if remote_jid:
store = ctx.get_cert_store() store = ctx.get_cert_store()
path = os.path.join(os.path.expanduser(app.MY_PEER_CERTS_PATH), path = os.path.join(os.path.expanduser(configpaths.get('MY_PEER_CERTS')),
remote_jid) + '.cert' remote_jid) + '.cert'
if os.path.exists(path): if os.path.exists(path):
load_cert_file(path, cert_store=store) load_cert_file(path, cert_store=store)
...@@ -151,7 +152,7 @@ def read_cert(certpath): ...@@ -151,7 +152,7 @@ def read_cert(certpath):
return certificate return certificate
def send_cert(con, jid_from, sid): def send_cert(con, jid_from, sid):
certpath = os.path.join(app.MY_CERT_DIR, SELF_SIGNED_CERTIFICATE) + \ certpath = os.path.join(configpaths.get('MY_CERT'), SELF_SIGNED_CERTIFICATE) + \
'.cert' '.cert'
certificate = read_cert(certpath) certificate = read_cert(certpath)
iq = nbxmpp.Iq('result', to=jid_from) iq = nbxmpp.Iq('result', to=jid_from)
...@@ -170,7 +171,7 @@ def send_cert(con, jid_from, sid): ...@@ -170,7 +171,7 @@ def send_cert(con, jid_from, sid):
def handle_new_cert(con, obj, jid_from): def handle_new_cert(con, obj, jid_from):
jid = app.get_jid_without_resource(jid_from) jid = app.get_jid_without_resource(jid_from)
certpath = os.path.join(os.path.expanduser(app.MY_PEER_CERTS_PATH), jid) certpath = os.path.join(os.path.expanduser(configpaths.get('MY_PEER_CERTS')), jid)
certpath += '.cert' certpath += '.cert'
id_ = obj.getAttr('id') id_ = obj.getAttr('id')
...@@ -188,7 +189,7 @@ def handle_new_cert(con, obj, jid_from): ...@@ -188,7 +189,7 @@ def handle_new_cert(con, obj, jid_from):
approve_pending_content(id_) approve_pending_content(id_)
def check_cert(jid, fingerprint): def check_cert(jid, fingerprint):
certpath = os.path.join(os.path.expanduser(app.MY_PEER_CERTS_PATH), jid) certpath = os.path.join(os.path.expanduser(configpaths.get('MY_PEER_CERTS')), jid)
certpath += '.cert' certpath += '.cert'
if os.path.exists(certpath): if os.path.exists(certpath):
cert = load_cert_file(certpath) cert = load_cert_file(certpath)
......
...@@ -58,6 +58,7 @@ from gajim.common import app ...@@ -58,6 +58,7 @@ from gajim.common import app
from gajim.common import connection from gajim.common import connection
from gajim.common import dataforms from gajim.common import dataforms
from gajim.common import ged from gajim.common import ged
from gajim.common import configpaths
from gajim.accounts_window import AccountsWindow from gajim.accounts_window import AccountsWindow
try: try:
...@@ -202,9 +203,10 @@ class PreferencesWindow: ...@@ -202,9 +203,10 @@ class PreferencesWindow:
self.update_theme_list() self.update_theme_list()
# iconset # iconset
iconsets_list = os.listdir(os.path.join(app.DATA_DIR, 'iconsets')) iconsets_list = os.listdir(
if os.path.isdir(app.MY_ICONSETS_PATH): os.path.join(configpaths.get('DATA'), 'iconsets'))
iconsets_list += os.listdir(app.MY_ICONSETS_PATH) if os.path.isdir(configpaths.get('MY_ICONSETS')):
iconsets_list += os.listdir(configpaths.get('MY_ICONSETS'))
# new model, image in 0, string in 1 # new model, image in 0, string in 1
model = Gtk.ListStore(Gtk.Image, str) model = Gtk.ListStore(Gtk.Image, str)
renderer_image = cell_renderer_image.CellRendererImage(0, 0) renderer_image = cell_renderer_image.CellRendererImage(0, 0)
...@@ -217,8 +219,8 @@ class PreferencesWindow: ...@@ -217,8 +219,8 @@ class PreferencesWindow:
self.iconset_combobox.set_model(model) self.iconset_combobox.set_model(model)
l = [] l = []
for dir in iconsets_list: for dir in iconsets_list:
if not os.path.isdir(os.path.join(app.DATA_DIR, 'iconsets', dir)) \ if not os.path.isdir(os.path.join(configpaths.get('DATA'), 'iconsets', dir)) \
and not os.path.isdir(os.path.join(app.MY_ICONSETS_PATH, dir)): and not os.path.isdir(os.path.join(configpaths.get('MY_ICONSETS'), dir)):
continue continue
if dir != '.svn' and dir != 'transports': if dir != '.svn' and dir != 'transports':
l.append(dir) l.append(dir)
...@@ -2292,7 +2294,8 @@ class AccountCreationWizardWindow: ...@@ -2292,7 +2294,8 @@ class AccountCreationWizardWindow:
self.update_proxy_list() self.update_proxy_list()
# parse servers.xml # parse servers.xml
servers_xml = os.path.join(app.DATA_DIR, 'other', 'servers.xml') servers_xml = os.path.join(
configpaths.get('DATA'), 'other', 'servers.xml')
servers = gtkgui_helpers.parse_server_xml(servers_xml) servers = gtkgui_helpers.parse_server_xml(servers_xml)
servers_model = self.xml.get_object('server_liststore') servers_model = self.xml.get_object('server_liststore')
for server in servers: for server in servers:
...@@ -2532,16 +2535,17 @@ class AccountCreationWizardWindow: ...@@ -2532,16 +2535,17 @@ class AccountCreationWizardWindow:
'hostname'] 'hostname']
# Check if cert is already in file # Check if cert is already in file
certs = '' certs = ''
if os.path.isfile(app.MY_CACERTS): my_ca_certs = configpaths.get('MY_CACERTS')
f = open(app.MY_CACERTS) if os.path.isfile(my_ca_certs):
f = open(my_ca_certs)
certs = f.read() certs = f.read()
f.close() f.close()
if self.ssl_cert in certs: if self.ssl_cert in certs:
dialogs.ErrorDialog(_('Certificate Already in File'), dialogs.ErrorDialog(_('Certificate Already in File'),
_('This certificate is already in file %s, so it\'s ' _('This certificate is already in file %s, so it\'s '
'not added again.') % app.MY_CACERTS) 'not added again.') % my_ca_certs)
else: else:
f = open(app.MY_CACERTS, 'a') f = open(my_ca_certs, 'a')
f.write(hostname + '\n') f.write(hostname + '\n')
f.write(self.ssl_cert + '\n\n') f.write(self.ssl_cert + '\n\n')
f.close() f.close()
......
...@@ -52,7 +52,7 @@ from gajim.common import pep ...@@ -52,7 +52,7 @@ from gajim.common import pep
from gajim.common import configpaths from gajim.common import configpaths
gtk_icon_theme = Gtk.IconTheme.get_default() gtk_icon_theme = Gtk.IconTheme.get_default()
gtk_icon_theme.append_search_path(app.ICONS_DIR) gtk_icon_theme.append_search_path(configpaths.get('ICONS'))
class Color: class Color:
BLACK = Gdk.RGBA(red=0, green=0, blue=0, alpha=1) BLACK = Gdk.RGBA(red=0, green=0, blue=0, alpha=1)
...@@ -610,7 +610,7 @@ def get_pep_as_pixbuf(pep_class): ...@@ -610,7 +610,7 @@ def get_pep_as_pixbuf(pep_class):
elif isinstance(pep_class, pep.UserTunePEP): elif isinstance(pep_class, pep.UserTunePEP):
icon = get_icon_pixmap('audio-x-generic', quiet=True) icon = get_icon_pixmap('audio-x-generic', quiet=True)
if not icon: if not icon:
path = os.path.join(app.DATA_DIR, 'emoticons', 'static', path = os.path.join(configpaths.get('DATA'), 'emoticons', 'static',
'music.png') 'music.png')
return GdkPixbuf.Pixbuf.new_from_file(path) return GdkPixbuf.Pixbuf.new_from_file(path)
return icon return icon
......
...@@ -1352,16 +1352,17 @@ class Interface: ...@@ -1352,16 +1352,17 @@ class Interface:
if is_checked[0]: if is_checked[0]:
# Check if cert is already in file # Check if cert is already in file
certs = '' certs = ''
if os.path.isfile(app.MY_CACERTS): my_ca_certs = configpaths.get('MY_CACERTS')
f = open(app.MY_CACERTS) if os.path.isfile(my_ca_certs):
f = open(my_ca_certs)
certs = f.read() certs = f.read()
f.close() f.close()
if obj.cert in certs: if obj.cert in certs:
dialogs.ErrorDialog(_('Certificate Already in File'), dialogs.ErrorDialog(_('Certificate Already in File'),
_('This certificate is already in file %s, so it\'s ' _('This certificate is already in file %s, so it\'s '
'not added again.') % app.MY_CACERTS) 'not added again.') % my_ca_certs)
else: else:
f = open(app.MY_CACERTS, 'a') f = open(my_ca_certs, 'a')
f.write(server + '\n') f.write(server + '\n')
f.write(obj.cert + '\n\n') f.write(obj.cert + '\n\n')
f.close() f.close()
...@@ -2446,14 +2447,15 @@ class Interface: ...@@ -2446,14 +2447,15 @@ class Interface:
pixbuf = pixbuf.scale_simple(AvatarSize.PROFILE, pixbuf = pixbuf.scale_simple(AvatarSize.PROFILE,
AvatarSize.PROFILE, AvatarSize.PROFILE,
GdkPixbuf.InterpType.BILINEAR) GdkPixbuf.InterpType.BILINEAR)
publish_path = os.path.join(app.AVATAR_PATH, 'temp_publish') publish_path = os.path.join(
configpaths.get('AVATAR'), 'temp_publish')
pixbuf.savev(publish_path, 'png', [], []) pixbuf.savev(publish_path, 'png', [], [])
with open(publish_path, 'rb') as file: with open(publish_path, 'rb') as file:
data = file.read() data = file.read()
return self.save_avatar(data) return self.save_avatar(data)
sha = hashlib.sha1(data).hexdigest() sha = hashlib.sha1(data).hexdigest()
path = os.path.join(app.AVATAR_PATH, sha) path = os.path.join(configpaths.get('AVATAR'), sha)
try: try:
with open(path, "wb") as output_file: with open(path, "wb") as output_file:
output_file.write(data) output_file.write(data)
...@@ -2475,7 +2477,7 @@ class Interface: ...@@ -2475,7 +2477,7 @@ class Interface:
size = size * scale size = size * scale
if publish: if publish:
path = os.path.join(app.AVATAR_PATH, filename) path = os.path.join(configpaths.get('AVATAR'), filename)
with open(path, 'rb') as file: with open(path, 'rb') as file:
data = file.read() data = file.read()
return data return data
...@@ -2488,7 +2490,7 @@ class Interface: ...@@ -2488,7 +2490,7 @@ class Interface:
except KeyError: except KeyError:
pass pass
path = os.path.join(app.AVATAR_PATH, filename) path = os.path.join(configpaths.get('AVATAR'), filename)
if not os.path.isfile(path): if not os.path.isfile(path):
return return
...@@ -2532,7 +2534,7 @@ class Interface: ...@@ -2532,7 +2534,7 @@ class Interface:
@staticmethod @staticmethod
def avatar_exists(filename): def avatar_exists(filename):
path = os.path.join(app.AVATAR_PATH, filename) path = os.path.join(configpaths.get('AVATAR'), filename)
if not os.path.isfile(path): if not os.path.isfile(path):
return False return False
return True return True
...@@ -2601,7 +2603,8 @@ class Interface: ...@@ -2601,7 +2603,8 @@ class Interface:
mood = received_mood if received_mood in pep.MOODS else 'unknown' mood = received_mood if received_mood in pep.MOODS else 'unknown'
return gtkgui_helpers.load_mood_icon(mood).get_pixbuf() return gtkgui_helpers.load_mood_icon(mood).get_pixbuf()
elif isinstance(pep_obj, pep.UserTunePEP): elif isinstance(pep_obj, pep.UserTunePEP):
path = os.path.join(app.DATA_DIR, 'emoticons', 'static', 'music.png') path = os.path.join(
configpaths.get('DATA'), 'emoticons', 'static', 'music.png')
return GdkPixbuf.Pixbuf.new_from_file(path) return GdkPixbuf.Pixbuf.new_from_file(path)
elif isinstance(pep_obj, pep.UserActivityPEP): elif isinstance(pep_obj, pep.UserActivityPEP):
pep_ = pep_obj._pep_specific_data pep_ = pep_obj._pep_specific_data
......
...@@ -47,6 +47,7 @@ from gi.repository import GLib ...@@ -47,6 +47,7 @@ from gi.repository import GLib
from gi.repository import Gio from gi.repository import Gio
from gajim.common import i18n from gajim.common import i18n
from gajim.common import configpaths
def is_standalone(): def is_standalone():
...@@ -59,10 +60,6 @@ def is_standalone(): ...@@ -59,10 +60,6 @@ def is_standalone():
if is_standalone(): if is_standalone():
# Standalone Mode
# Must be done before importing app
from gajim.common import configpaths
try: try:
shortargs = 'hvsc:l:p:' shortargs = 'hvsc:l:p:'
longargs = 'help verbose separate config-path= loglevel= profile=' longargs = 'help verbose separate config-path= loglevel= profile='
...@@ -474,7 +471,7 @@ class HistoryManager: ...@@ -474,7 +471,7 @@ class HistoryManager:
dlg = xml.get_object('filechooserdialog') dlg = xml.get_object('filechooserdialog')
dlg.set_title(_('Exporting History Logs…')) dlg.set_title(_('Exporting History Logs…'))
dlg.set_current_folder(app.HOME_DIR) dlg.set_current_folder(configpaths.get('HOME'))
dlg.props.do_overwrite_confirmation = True dlg.props.do_overwrite_confirmation = True
response = dlg.run() response = dlg.run()
......
...@@ -27,7 +27,7 @@ Base class for implementing plugin. ...@@ -27,7 +27,7 @@ Base class for implementing plugin.
import os