Пример #1
0
 def shutdown(self):
     try:
         if self.srv is not None:
             self.srv.stop()
     except:
         log.exception('Error on shutting down cherrypy server')
     self.srv = None
Пример #2
0
    def run(self, edit, clipboard_only=False):
        view = self.view
        try:
            html_content = RendererManager.render_view_as_html(view)

            if clipboard_only:
                self.copy_to_clipboard(html_content)
                return

            setting = Setting.instance()
            html_fn = self.write_to_file(html_content, setting)

            # Copy contents to clipboard
            if setting.export_options['copy_to_clipboard']:
                self.copy_to_clipboard(html_content)

            # Open output file if necessary
            if setting.export_options['open_after_exporting']:
                log.info('Launching web browser for %s', html_fn)
                launching_web_browser_for_url(html_fn)

        except NotImplementedError:
            pass
        except:
            log.exception('Error while exporting')
    def run(self, edit, clipboard_only=False):
        view = self.view
        try:
            html_content = RendererManager.render_view_as_html(view)

            if clipboard_only:
                self.copy_to_clipboard(html_content)
                return

            setting = Setting.instance()
            html_fn = self.write_to_file(html_content, setting)

            # Copy contents to clipboard
            if setting.export_options.get('copy_to_clipboard', False):
                self.copy_to_clipboard(html_content)

            # Open output file if necessary
            if setting.export_options.get('open_after_exporting', False):
                log.info('Launching web browser for %s', html_fn)
                launching_web_browser_for_url(html_fn)

        except NotImplementedError:
            pass
        except:
            sublime.error_message('Error while exporting, please check your console for more information.')
            log.exception('Error while exporting')
def launching_web_browser_for_url(url, success_msg_default=None, success_msg_user=None):
    try:
        setting = Setting.instance()
        if setting.browser_command:
            browser_command = [os.path.expandvars(arg).format(url=url)
                               for arg in setting.browser_command]

            if os.name == 'nt':
                # unicode arguments broken under windows
                encoding = locale.getpreferredencoding()
                browser_command = [arg.encode(encoding) for arg in browser_command]

            subprocess.Popen(browser_command)
            if success_msg_user:
                sublime.status_message(success_msg_user)
        else:
            # Default web browser
            desktop.open(url)
            if success_msg_default:
                sublime.status_message(success_msg_default)
    except:
        if setting.browser_command:
            log.exception('Error while launching user defined web browser')
        else:
            log.exception('Error while launching default web browser')
Пример #5
0
def launching_web_browser_for_url(url,
                                  success_msg_default=None,
                                  success_msg_user=None):
    try:
        setting = Setting.instance()
        if setting.browser_command:
            browser_command = [
                os.path.expandvars(arg).format(url=url)
                for arg in setting.browser_command
            ]

            if os.name == 'nt':
                # unicode arguments broken under windows
                encoding = locale.getpreferredencoding()
                browser_command = [
                    arg.encode(encoding) for arg in browser_command
                ]

            subprocess.Popen(browser_command)
            if success_msg_user:
                sublime.status_message(success_msg_user)
        else:
            # Default web browser
            desktop.open(url)
            if success_msg_default:
                sublime.status_message(success_msg_default)
    except:
        if setting.browser_command:
            log.exception('Error while launching user defined web browser')
        else:
            log.exception('Error while launching default web browser')
Пример #6
0
 def shutdown(self):
     try:
         if self.srv is not None:
             self.srv.stop()
     except:
         log.exception('Error on shutting down cherrypy server')
     self.srv = None
Пример #7
0
    def notify(self, evt_type, *evt_args, **evt_kwargs):
        if evt_type not in self._subscribers:
            return

        for subscriber in self._subscribers[evt_type]:
            try:
                subscriber(*evt_args, **evt_kwargs)
            except:
                log.exception("Error on calling event subscriber for setting: %s", str(subscriber))
Пример #8
0
    def notify(self, evt_type, *evt_args, **evt_kwargs):
        if evt_type not in self._subscribers:
            return

        for subscriber in self._subscribers[evt_type]:
            try:
                subscriber(*evt_args, **evt_kwargs)
            except:
                log.exception("Error on calling event subscriber for setting: %s", str(subscriber))
Пример #9
0
 def _run_queued_item(self, buffer_id, item):
     try:
         # Render text and save to cache
         filename = os.path.basename(item.fullpath)
         dirname = os.path.dirname(item.fullpath)
         html_part = RendererManager.render_text(item.fullpath, item.lang, item.text)
         entry = RenderedMarkupCacheEntry(filename=filename, dirname=dirname, html_part=html_part)
         RenderedMarkupCache.instance().set_entry(buffer_id, entry)
     except NotImplementedError:
         pass
     except:
         log.exception("")
Пример #10
0
 def render_text(cls, fullpath, lang, text, post_process_func=None):
     if post_process_func is None:
         post_process_func = cls.render_text_postprocess
     filename = os.path.basename(fullpath)
     with cls.RW_LOCK.readlock:
         for renderer_classname, renderer in cls.RENDERERS:
             try:
                 if renderer.is_enabled(filename, lang):
                     rendered_text = renderer.render(text, filename=filename)
                     return post_process_func(rendered_text, fullpath)
             except:
                 log.exception('Exception occured while rendering using %s', renderer_classname)
     raise NotImplementedError()
Пример #11
0
 def render_text(cls, fullpath, lang, text, post_process_func=None):
     if post_process_func is None:
         post_process_func = cls.render_text_postprocess
     filename = os.path.basename(fullpath)
     with cls.RW_LOCK.readlock:
         for renderer_classname, renderer in cls.RENDERERS:
             try:
                 if renderer.is_enabled(filename, lang):
                     rendered_text = renderer.render(text,
                                                     filename=filename)
                     return post_process_func(rendered_text, fullpath)
             except:
                 log.exception('Exception occured while rendering using %s',
                               renderer_classname)
     raise NotImplementedError()
Пример #12
0
    def on_setting_changed(cls, setting):
        # Unload ignored renderers
        if cls.OLD_IGNORED_RENDERERS != setting.ignored_renderers:
            # Reload renderers, of course
            log.info('Reloading renderers...')
            cls.load_renderers()

        with cls.RW_LOCK.readlock:
            for renderer_classname, renderer in cls.RENDERERS:
                key = 'renderer_options-' + renderer_classname
                try:
                    renderer_options = setting._sublime_settings.get(key, {})
                    renderer.load_settings(renderer_options, setting)
                except:
                    log.exception('Error on setting renderer options for %s', renderer_classname)
Пример #13
0
 def _run_queued_item(self, buffer_id, item):
     try:
         # Render text and save to cache
         filename = os.path.basename(item.fullpath)
         dirname = os.path.dirname(item.fullpath)
         html_part = RendererManager.render_text(item.fullpath, item.lang,
                                                 item.text)
         entry = RenderedMarkupCacheEntry(filename=filename,
                                          dirname=dirname,
                                          html_part=html_part)
         RenderedMarkupCache.instance().set_entry(buffer_id, entry)
     except NotImplementedError:
         pass
     except:
         log.exception("")
Пример #14
0
    def run(self, edit):
        view = self.view
        try:
            html_content = RendererManager.render_view_to_string(view)
            setting = Setting.instance()
            target_folder = setting.export_options['target_folder']

            if target_folder is not None:
                fullpath = self.view.file_name() or ''
                timestamp_format = setting.export_options['timestamp_format']

                if (not os.path.exists(fullpath) and target_folder == ".") or \
                not os.path.isdir(target_folder):
                    target_folder = None
                elif target_folder == '.':
                    fn_base, _ = os.path.splitext(fullpath)
                    html_fn = '%s%s.html' % (
                        fn_base,
                        time.strftime(timestamp_format, time.localtime()))
                elif not os.path.exists(fullpath):
                    html_fn = os.path.join(target_folder, 'Untitled%s.html' % \
                        time.strftime(timestamp_format, time.localtime()))
                else:
                    fn_base = os.path.basename(fullpath)
                    html_fn = os.path.join(target_folder, '%s%s.html' % \
                        (fn_base, time.strftime(timestamp_format, time.localtime())))

            if target_folder is None:
                with tempfile.NamedTemporaryFile(delete=False,
                                                 suffix='.html') as f:
                    html_fn = f.name

            with codecs.open(html_fn, 'w', encoding='utf-8') as html_file:
                html_file.write(html_content)

            # Copy contents to clipboard
            if setting.export_options['copy_to_clipboard']:
                sublime.set_clipboard(html_content)
                sublime.status_message('Exported result copied to clipboard')
            # Open output file if necessary
            if setting.export_options['open_after_exporting']:
                log.info('Launching web browser for %s', html_fn)
                launching_web_browser_for_url(html_fn)

        except NotImplementedError:
            pass
        except:
            log.exception("Error while exporting")
Пример #15
0
    def on_setting_changed(cls, setting):
        # Unload ignored renderers
        if cls.OLD_IGNORED_RENDERERS != setting.ignored_renderers:
            # Reload renderers, of course
            log.info('Reloading renderers...')
            cls.load_renderers()

        with cls.RW_LOCK.readlock:
            for renderer_classname, renderer in cls.RENDERERS:
                key = 'renderer_options-' + renderer_classname
                try:
                    renderer_options = setting._sublime_settings.get(key, {})
                    renderer.load_settings(renderer_options, setting)
                except:
                    log.exception('Error on setting renderer options for %s',
                                  renderer_classname)
Пример #16
0
 def _load_renderer(cls, renderers, module_file, module_name):
     try:
         __import__(module_name)
         mod = sys.modules[module_name] = reload(sys.modules[module_name])
         # Get classes
         classes = inspect.getmembers(mod, inspect.isclass)
         for classname, classtype in classes:
             # Register renderer into manager
             if hasattr(classtype, 'IS_VALID_RENDERER__'):
                 try:
                     log.info('Loaded renderer: OmniMarkupLib.Renderers.%s', classname)
                     # Add both classname and its instance
                     renderers.append((classname, classtype()))
                 except:
                     log.exception('Failed to load renderer: %s', classname)
     except:
         log.exception('Failed to load renderer module: OmniMarkupLib/Renderers/%s', module_file)
Пример #17
0
    def run(self, edit):
        view = self.view
        try:
            html_content = RendererManager.render_view_to_string(view)
            setting = Setting.instance()
            target_folder = setting.export_options['target_folder']

            if target_folder is not None:
                fullpath = self.view.file_name() or ''
                timestamp_format = setting.export_options['timestamp_format']

                if (not os.path.exists(fullpath) and target_folder == ".") or \
                not os.path.isdir(target_folder):
                    target_folder = None
                elif target_folder == '.':
                    fn_base, _ = os.path.splitext(fullpath)
                    html_fn = '%s%s.html' % (fn_base, time.strftime(timestamp_format,
                        time.localtime()))
                elif not os.path.exists(fullpath):
                    html_fn = os.path.join(target_folder, 'Untitled%s.html' % \
                        time.strftime(timestamp_format, time.localtime()))
                else:
                    fn_base = os.path.basename(fullpath)
                    html_fn = os.path.join(target_folder, '%s%s.html' % \
                        (fn_base, time.strftime(timestamp_format, time.localtime())))

            if target_folder is None:
                with tempfile.NamedTemporaryFile(delete=False, suffix='.html') as f:
                    html_fn = f.name

            with codecs.open(html_fn, 'w', encoding='utf-8') as html_file:
                html_file.write(html_content)

            # Copy contents to clipboard
            if setting.export_options['copy_to_clipboard']:
                sublime.set_clipboard(html_content)
                sublime.status_message('Exported result copied to clipboard')
            # Open output file if necessary
            if setting.export_options['open_after_exporting']:
                log.info('Launching web browser for %s', html_fn)
                launching_web_browser_for_url(html_fn)

        except NotImplementedError:
            pass
        except:
            log.exception("Error while exporting")
Пример #18
0
 def _load_renderer(cls, renderers, module_file, module_name):
     try:
         __import__(module_name)
         mod = sys.modules[module_name] = reload(sys.modules[module_name])
         # Get classes
         classes = inspect.getmembers(mod, inspect.isclass)
         for classname, classtype in classes:
             # Register renderer into manager
             if hasattr(classtype, 'IS_VALID_RENDERER__'):
                 try:
                     log.info('Loaded renderer: OmniMarkupLib.Renderers.%s',
                              classname)
                     # Add both classname and its instance
                     renderers.append((classname, classtype()))
                 except:
                     log.exception('Failed to load renderer: %s', classname)
     except:
         log.exception(
             'Failed to load renderer module: OmniMarkupLib/Renderers/%s',
             module_file)
Пример #19
0
    from .OmniMarkupLib.Common import Singleton
    try:
        from .OmniMarkupLib import OnDemandDownloader
    except:
        log.exception('Error on loading OnDemandDownloader')
    from . import desktop
else:
    exec('import OmniMarkupLib.LinuxModuleChecker')
    from OmniMarkupLib import log, Server
    from OmniMarkupLib.Setting import Setting
    from OmniMarkupLib.RendererManager import RenderedMarkupCache, RendererManager
    from OmniMarkupLib.Common import Singleton
    try:
        from OmniMarkupLib import OnDemandDownloader
    except:
        log.exception('Error on loading OnDemandDownloader')
    import desktop


def launching_web_browser_for_url(url, success_msg_default=None, success_msg_user=None):
    try:
        setting = Setting.instance()
        if setting.browser_command:
            browser_command = [os.path.expandvars(arg).format(url=url)
                               for arg in setting.browser_command]

            if os.name == 'nt':
                # unicode arguments broken under windows
                encoding = locale.getpreferredencoding()
                browser_command = [arg.encode(encoding) for arg in browser_command]
Пример #20
0
        except:
            pass

import OmniMarkupLib.LinuxModuleChecker
OmniMarkupLib.LinuxModuleChecker.check()

from OmniMarkupLib import log
from OmniMarkupLib.Setting import Setting
from OmniMarkupLib.RendererManager import RendererManager
from OmniMarkupLib.Server import Server
from OmniMarkupLib.Common import Singleton, RenderedMarkupCache

try:
    from OmniMarkupLib import OnDemandDownloader
except:
    log.exception("Error on loading OnDemandDownloader")


def launching_web_browser_for_url(url, success_msg_default=None, success_msg_user=None):
    try:
        setting = Setting.instance()
        if setting.browser_command:
            browser_command = [
                os.path.expandvars(arg).format(url=url)
                for arg in setting.browser_command
            ]

            if os.name == 'nt':
                # unicode arguments broken under windows
                encoding = locale.getpreferredencoding()
                browser_command = [arg.encode(encoding) for arg in browser_command]
Пример #21
0
    from .OmniMarkupLib.Common import Singleton
    try:
        from .OmniMarkupLib import OnDemandDownloader
    except:
        log.exception('Error on loading OnDemandDownloader')
    from . import desktop
else:
    exec('import OmniMarkupLib.LinuxModuleChecker')
    from OmniMarkupLib import log, Server
    from OmniMarkupLib.Setting import Setting
    from OmniMarkupLib.RendererManager import RenderedMarkupCache, RendererManager
    from OmniMarkupLib.Common import Singleton
    try:
        from OmniMarkupLib import OnDemandDownloader
    except:
        log.exception('Error on loading OnDemandDownloader')
    import desktop


def launching_web_browser_for_url(url,
                                  success_msg_default=None,
                                  success_msg_user=None):
    try:
        setting = Setting.instance()
        if setting.browser_command:
            browser_command = [
                os.path.expandvars(arg).format(url=url)
                for arg in setting.browser_command
            ]

            if os.name == 'nt':
Пример #22
0
        except:
            pass

import OmniMarkupLib.LinuxModuleChecker
OmniMarkupLib.LinuxModuleChecker.check()

from OmniMarkupLib import log
from OmniMarkupLib.Setting import Setting
from OmniMarkupLib.RendererManager import RendererManager
from OmniMarkupLib.Server import Server
from OmniMarkupLib.Common import Singleton, RenderedMarkupCache

try:
    from OmniMarkupLib import OnDemandDownloader
except:
    log.exception("Error on loading OnDemandDownloader")


def launching_web_browser_for_url(url,
                                  success_msg_default=None,
                                  success_msg_user=None):
    try:
        setting = Setting.instance()
        if setting.browser_command:
            browser_command = [
                os.path.expandvars(arg).format(url=url)
                for arg in setting.browser_command
            ]

            if os.name == 'nt':
                # unicode arguments broken under windows