Module pedplug

Expand source code
#!/usr/bin/env python

#from __future__ import absolute_import, print_function

import os
import time
import sys
import ctypes
import warnings
import stat
import collections
import platform
import datetime
import importlib

import gi; gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
from gi.repository import Gdk
from gi.repository import GLib
from gi.repository import Gio

from pedlib import pedconfig
#from pedlib import peddoc
from pedlib import pedync
from pedlib import pedlog
from pedlib import pedcal
from pedlib import pednotes
from pedlib import pedoline
from pedlib import pedfont
from pedlib import pedcolor
from pedlib import pedfind
from pedlib import pedweb
from pedlib import peddlg

#sys.path.append('..' + os.sep + "pycommon")

from pycommon.pggui import *
from pycommon.pgsimp import *

# Into our name space
from    pedlib.pedmenu import *
from    pedlib.pedui import *
from    pedlib.pedutil import *

plugin_list = []

def     load_plugins():

    if not os.path.isdir(pedconfig.conf.plugins_dir):
        os.mkdir(pedconfig.conf.plugins_dir)

    sys.path.append(pedconfig.conf.plugins_dir)

    for aa in os.listdir(pedconfig.conf.plugins_dir):
        if aa[-3:] == ".py":
            modname =  aa[:-3]
            if pedconfig.conf.verbose:
                print("Loading user plugin:", modname);
            try:
                ppp = importlib.import_module(modname)
                plugin_list.append(ppp)
                ppp.name = modname
            except:
                print("Exception on plugin", modname, sys.exc_info())

    sys.path.append(pedconfig.conf.plugins_dir2)
    for aa in os.listdir(pedconfig.conf.plugins_dir2):
        if aa == "__init__.py":
            continue

        dup = 0
        if aa[-3:] == ".py":
            modname =  aa[:-3]
            for aa in plugin_list:
                # user plugins override
                if aa.name == modname:
                    dup = 1
            if dup:
                print("Duplicate plugin, not loading: '" + aa.name + "'")
                print("Plugin location:", pedconfig.conf.plugins_dir2)
                continue

            if pedconfig.conf.verbose:
                print("Loading sys plugin:", modname);
            try:
                ppp = importlib.import_module(modname)
                plugin_list.append(ppp)
                ppp.name = modname
            except:
                print("Exception on plugin", modname, sys.exc_info())

    # Call init on all:
    for aa in plugin_list:
        try:
            aa.init()
            #print("Called init for:", aa.name);
        except:
            print("Plugin:", "'" + aa.name + "'", "has no init function", sys.exc_info())

# ---------------------------------------------------------------------------

def     keypress(disp, keypress = " "):

    # Call keypress on all:
    for aa in plugin_list:

        if "keypress" not in  dir(aa):
            continue
        try:
            aa.keypress(disp, keypress)
        except:
            print("Plugin named:", "'" + aa.name + "'", sys.exc_info())
            pass

def     display(disp, cr):

    #print("display plugin call:", disp, cr)

    # Call on all:
    for aa in plugin_list:

        if "display" not in  dir(aa):
            continue
        try:
            aa.display(disp, cr)
        except:
            print("Plugin", "'" + aa.name + "'", "display()", sys.exc_info())
            pass

def     syntax(disp, cr):

    # Call on all:
    for aa in plugin_list:
        if "syntax" not in  dir(aa):
            continue
        try:
            aa.syntax(disp, cr)
        except:
            print("Plugin named:", "'" + aa.name + "'", sys.exc_info())
            pass

def     clsyntax(disp, cr):

    # Call on all:
    for aa in plugin_list:
        if "syntax" not in  dir(aa):
            continue
        try:
            aa.syntax(disp, cr)
        except:
            print("Plugin named:", "'" + aa.name + "'", sys.exc_info())
            pass

def     predraw(disp, cr):

    #print("predraw plugin call:", cr)

    # Call on all:
    for aa in plugin_list:
        if "predraw" not in dir(aa):
            return
        try:
            aa.predraw(disp, cr)
        except:
            print("Plugin named:", "'" + aa.name + "'", sys.exc_info())
            pass

# EOF

Functions

def clsyntax(disp, cr)
Expand source code
def     clsyntax(disp, cr):

    # Call on all:
    for aa in plugin_list:
        if "syntax" not in  dir(aa):
            continue
        try:
            aa.syntax(disp, cr)
        except:
            print("Plugin named:", "'" + aa.name + "'", sys.exc_info())
            pass
def display(disp, cr)
Expand source code
def     display(disp, cr):

    #print("display plugin call:", disp, cr)

    # Call on all:
    for aa in plugin_list:

        if "display" not in  dir(aa):
            continue
        try:
            aa.display(disp, cr)
        except:
            print("Plugin", "'" + aa.name + "'", "display()", sys.exc_info())
            pass
def keypress(disp, keypress=' ')
Expand source code
def     keypress(disp, keypress = " "):

    # Call keypress on all:
    for aa in plugin_list:

        if "keypress" not in  dir(aa):
            continue
        try:
            aa.keypress(disp, keypress)
        except:
            print("Plugin named:", "'" + aa.name + "'", sys.exc_info())
            pass
def load_plugins()
Expand source code
def     load_plugins():

    if not os.path.isdir(pedconfig.conf.plugins_dir):
        os.mkdir(pedconfig.conf.plugins_dir)

    sys.path.append(pedconfig.conf.plugins_dir)

    for aa in os.listdir(pedconfig.conf.plugins_dir):
        if aa[-3:] == ".py":
            modname =  aa[:-3]
            if pedconfig.conf.verbose:
                print("Loading user plugin:", modname);
            try:
                ppp = importlib.import_module(modname)
                plugin_list.append(ppp)
                ppp.name = modname
            except:
                print("Exception on plugin", modname, sys.exc_info())

    sys.path.append(pedconfig.conf.plugins_dir2)
    for aa in os.listdir(pedconfig.conf.plugins_dir2):
        if aa == "__init__.py":
            continue

        dup = 0
        if aa[-3:] == ".py":
            modname =  aa[:-3]
            for aa in plugin_list:
                # user plugins override
                if aa.name == modname:
                    dup = 1
            if dup:
                print("Duplicate plugin, not loading: '" + aa.name + "'")
                print("Plugin location:", pedconfig.conf.plugins_dir2)
                continue

            if pedconfig.conf.verbose:
                print("Loading sys plugin:", modname);
            try:
                ppp = importlib.import_module(modname)
                plugin_list.append(ppp)
                ppp.name = modname
            except:
                print("Exception on plugin", modname, sys.exc_info())

    # Call init on all:
    for aa in plugin_list:
        try:
            aa.init()
            #print("Called init for:", aa.name);
        except:
            print("Plugin:", "'" + aa.name + "'", "has no init function", sys.exc_info())
def predraw(disp, cr)
Expand source code
def     predraw(disp, cr):

    #print("predraw plugin call:", cr)

    # Call on all:
    for aa in plugin_list:
        if "predraw" not in dir(aa):
            return
        try:
            aa.predraw(disp, cr)
        except:
            print("Plugin named:", "'" + aa.name + "'", sys.exc_info())
            pass
def syntax(disp, cr)
Expand source code
def     syntax(disp, cr):

    # Call on all:
    for aa in plugin_list:
        if "syntax" not in  dir(aa):
            continue
        try:
            aa.syntax(disp, cr)
        except:
            print("Plugin named:", "'" + aa.name + "'", sys.exc_info())
            pass