Ejemplo n.º 1
0
                if remove is not None:
                    self._database.add_action_item_categorie(
                        google_id=self._google_id_by_position[position],
                        action_type='del',
                        categorie_name=remove,
                        categorie_shortname=self.get_shortname(remove),
                    )
        self._database.stop_add_session()


class RssReaderInfoGoogleCache(RssReaderInfo):
    names = ['GoogleCache', 'db']
    priority = 70

    def get_rss_reader(self):
        return GoogleCache(self._config)

    def get_doc(self):
        return ""


register_key('database',
             str,
             doc='The database name for GoogleCache mode',
             default='reader.sqlite3')
register_key('database-debug',
             bool,
             doc='Database will log every sql query if true. Developers only.',
             default=0,
             advanced=True)
Ejemplo n.º 2
0
from pyrfeed.rss_reader.info import RssReaderInfo
from pyrfeed.tools.info_list import ElementInfoList
from pyrfeed.config import register_key

class _RssReaderInfoList(ElementInfoList) :
    BaseClass = RssReaderInfo

    def get_rss_reader(self,config) :
        self._auto_register()

        name = config['rssreader']

        if name is None :
            name = self.get_default_info_name()

        if (name is not None) and (name in self) :
            rss_reader = self[name](config).get_rss_reader()
        else :
            raise ValueError("Don't know RssReader type [%s]" % name)

        return rss_reader


rssreader_info_list = _RssReaderInfoList()

register_key( 'rssreader', str, doc='The RssReader to use', default=None, advanced=True )
Ejemplo n.º 3
0
                if name in gui_info_list :
                    self._config['gui/next'] = name
                    self._need_quit = True
                else :
                    self._print("Don't know [%s] as an interface name\n" % name)
        else :
            for ui_name,name in gui_info_list.get_ui_names() :
                self._print("    %s - %s\n" % (name,ui_name))

    def do_HELP(self,command_name,*args) :
        self._print(self._commands.get_help())

class GuiInfoTTY(GuiInfo) :
    names = ['tty','BasicTTY','cl']
    priority = 10
    ui_name = 'TTY interface'

    def _start_application(self) :
        commandline = BasicTTY(self._config)
        commandline.set_rss_reader(self._rss_reader)
        commandline.main_loop()

    def get_doc(self) :
        return ""

register_key( 'tty/encoding', str, doc='TTY Encoding', default='iso-8859-1', advanced=True )
register_key( 'tty/screensize', int, doc='Width of the TTY', default=80, advanced=True )

# 'gui/next' will be handled elsewere for registration

Ejemplo n.º 4
0
from pyrfeed.rss_reader.info import RssReaderInfo
from pyrfeed.tools.info_list import ElementInfoList
from pyrfeed.config import register_key


class _RssReaderInfoList(ElementInfoList):
    BaseClass = RssReaderInfo

    def get_rss_reader(self, config):
        self._auto_register()

        name = config["rssreader"]

        if name is None:
            name = self.get_default_info_name()

        if (name is not None) and (name in self):
            rss_reader = self[name](config).get_rss_reader()
        else:
            raise ValueError("Don't know RssReader type [%s]" % name)

        return rss_reader


rssreader_info_list = _RssReaderInfoList()

register_key("rssreader", str, doc="The RssReader to use", default=None, advanced=True)
Ejemplo n.º 5
0
        self._database.start_add_session()
        for position in positions :
            if position in self._google_id_by_position :
                if add is not None :
                    self._database.add_action_item_categorie(
                        google_id=self._google_id_by_position[position],
                        action_type='add',
                        categorie_name=add,
                        categorie_shortname=self.get_shortname(add),
                        )
                if remove is not None :
                    self._database.add_action_item_categorie(
                        google_id=self._google_id_by_position[position],
                        action_type='del',
                        categorie_name=remove,
                        categorie_shortname=self.get_shortname(remove),
                        )
        self._database.stop_add_session()

class RssReaderInfoGoogleCache(RssReaderInfo) :
    names = ['GoogleCache','db']
    priority = 70
    def get_rss_reader(self) :
        return GoogleCache(self._config)
    def get_doc(self) :
        return ""

register_key( 'database', str, doc='The database name for GoogleCache mode', default='reader.sqlite3' )
register_key( 'database-debug', bool, doc='Database will log every sql query if true. Developers only.', default=0, advanced=True )

Ejemplo n.º 6
0
        get_feed_args = {}
        max_count = self._config['google/max_count']

        if not(self._config['google/include_read']) :
            get_feed_args['exclude_target'] = CONST.ATOM_STATE_READ
        if self._config['url'] :
            get_feed_args['url'] = self._config['url']
        if self._config['label'] :
            get_feed_args['feed'] = CONST.ATOM_PREFIXE_LABEL + self._config['label']
        elif self._config['feed'] :
            get_feed_args['feed'] = self._config['feed']

        get_feed_args['count'] = max_count

        return get_feed_args

register_key( 'google/max_count', int, doc='The size of the feed to fetch from google', default=200 )
register_key( 'google/include_read', bool, doc='If true, will fetch all items, otherwise will fetch only unread ones', default=True, advanced=True )
register_key( 'url', str, doc='The url of the google feed to fetch', default=None, advanced=True )
register_key( 'label', str, doc='The label of google reader to fetch', default=None, advanced=True )
register_key( 'feed', str, doc='The feed to fetch on google', default=None, advanced=True )

register_key( 'filter', str, doc='the filter at start to search items', default='', advanced=True )
register_key( 'login', str, doc='Google login', default=None )
register_key( 'passwd', str, doc='Google password', default=None )

register_key( 'datefmt', str, doc='the strftime format for date', default='%Y-%m-%d %H:%M:%S', advanced=True )
register_key( 'proxy_host', str, doc='Host for proxy', default='' )
register_key( 'proxy_port', int, doc='Port for proxy', default=3128 )
Ejemplo n.º 7
0
            get_feed_args['exclude_target'] = CONST.ATOM_STATE_READ
        if self._config['url']:
            get_feed_args['url'] = self._config['url']
        if self._config['label']:
            get_feed_args[
                'feed'] = CONST.ATOM_PREFIXE_LABEL + self._config['label']
        elif self._config['feed']:
            get_feed_args['feed'] = self._config['feed']

        get_feed_args['count'] = max_count

        return get_feed_args


register_key('google/max_count',
             int,
             doc='The size of the feed to fetch from google',
             default=200)
register_key(
    'google/include_read',
    bool,
    doc='If true, will fetch all items, otherwise will fetch only unread ones',
    default=True,
    advanced=True)
register_key('url',
             str,
             doc='The url of the google feed to fetch',
             default=None,
             advanced=True)
register_key('label',
             str,
             doc='The label of google reader to fetch',
Ejemplo n.º 8
0
        if 0 <= position < self.__items_count :
            self.__cursor_position = position

    def set_local_cursor_position(self,position) :
        '''Set the current local cursor position (start with 0)'''
        if 0 <= position < self.__config['pagesize'] :
            self.__cursor_position = position + self.get_page_number()*self.__config['pagesize']

    def set_items(self,items) :
        '''Set the items'''
        self.__items = items
        self.__items_count = len(self.__items)
        self.__selected_items = [False] * self.__items_count
        self.__selected_item_count = 0
        
        if self.__cursor_position >= self.__items_count :
            self.__cursor_position = self.__items_count-1
        if self.__cursor_position < 0 :
            self.__cursor_position = 0

    def get_page(self) :
        """Get the current page (which consist of a tuple of 'a global position', 'a boolean which is True if selected', 'a title')"""
        current_position = self.get_page_number()*self.__config['pagesize']
        page = []
        for title in self.__items[current_position:current_position+self.__config['pagesize']] :
            page.append((current_position,self.__selected_items[current_position],self.__items[current_position]))
            current_position += 1
        return page

register_key( 'pagesize', int, doc='Size of a page of items', default=30 )
Ejemplo n.º 9
0
        if 0 <= position < self.__config['pagesize']:
            self.__cursor_position = position + self.get_page_number(
            ) * self.__config['pagesize']

    def set_items(self, items):
        '''Set the items'''
        self.__items = items
        self.__items_count = len(self.__items)
        self.__selected_items = [False] * self.__items_count
        self.__selected_item_count = 0

        if self.__cursor_position >= self.__items_count:
            self.__cursor_position = self.__items_count - 1
        if self.__cursor_position < 0:
            self.__cursor_position = 0

    def get_page(self):
        """Get the current page (which consist of a tuple of 'a global position', 'a boolean which is True if selected', 'a title')"""
        current_position = self.get_page_number() * self.__config['pagesize']
        page = []
        for title in self.__items[current_position:current_position +
                                  self.__config['pagesize']]:
            page.append(
                (current_position, self.__selected_items[current_position],
                 self.__items[current_position]))
            current_position += 1
        return page


register_key('pagesize', int, doc='Size of a page of items', default=30)
Ejemplo n.º 10
0
class GuiInfoWx(GuiInfo):
    names = []
    priority = 50
    RSSReaderFrameClass = None

    def _start_application(self):
        app = get_simple_app()
        rss_reader_frame = self.RSSReaderFrameClass(self._config, None)
        rss_reader_frame.SetRssReader(self._rss_reader)
        app.SetTopWindow(rss_reader_frame)
        rss_reader_frame.Show()
        rss_reader_frame.Load()
        app.MainLoop()

    def get_doc(self):
        return ""


register_key('wx/sashposition',
             int,
             doc='Position of the Sash seperation in pixels',
             default=200)
register_key('wx/htmlwindow',
             str,
             doc='HTML Window component to use (simple/complex/best)',
             default='best',
             advanced=True)

# 'gui/next' will be handled elsewere for registration
Ejemplo n.º 11
0
            self._selected_items.remove(self.GetSelection())
        self.RefreshAll()

    def SelectItemNext(self,event=None) :
        item_selected = self._frame.SelectItem(self.GetSelection())
        if item_selected :
            self._selected_items.add(self.GetSelection())
        else :
            self._selected_items.remove(self.GetSelection())
        self.Next(event)
        self.RefreshAll()

    def Prev(self,event=None) :
        self._frame.OnPrevItem()

    def Next(self,event=None) :
        self._frame.OnNextItem()

    def GetSelectedItems(self) :
        if len(self._selected_items) == 0 :
            self.SelectItem()
        return list(self._selected_items)
        
    def OnDClick(self,event=None) :
        self.SelectItem()


register_key( 'wx/htmllistbox/useimage', bool, doc='Use image for check/uncheck', default=True, advanced=True )
register_key( 'wx/htmllistbox/usebold', bool, doc='Use bold for check', default=True, advanced=True )

Ejemplo n.º 12
0
        return get_simple_app._simple_app
    get_simple_app._simple_app = wx.PySimpleApp(0)
    wx.InitAllImageHandlers()
    return get_simple_app._simple_app


class GuiInfoWx(GuiInfo):
    names = []
    priority = 50
    RSSReaderFrameClass = None

    def _start_application(self):
        app = get_simple_app()
        rss_reader_frame = self.RSSReaderFrameClass(self._config, None)
        rss_reader_frame.SetRssReader(self._rss_reader)
        app.SetTopWindow(rss_reader_frame)
        rss_reader_frame.Show()
        rss_reader_frame.Load()
        app.MainLoop()

    def get_doc(self):
        return ""


register_key("wx/sashposition", int, doc="Position of the Sash seperation in pixels", default=200)
register_key(
    "wx/htmlwindow", str, doc="HTML Window component to use (simple/complex/best)", default="best", advanced=True
)

# 'gui/next' will be handled elsewere for registration
Ejemplo n.º 13
0
    if binname is None:
        if len(sys.argv) > 0:
            binname = sys.argv[0]
        else:
            binname = '.'
    if argv is None:
        argv = sys.argv[1:]
    config.process_argv(binname, argv)

    if config['profile']:
        cProfile.run(pyrfeed_main.func_code)
    else:
        pyrfeed_main()


register_key('help', bool, doc='Show help')
register_key('help-advanced', bool, doc='Show help for advanced options')
register_key('save',
             bool,
             doc='Save the options in command line into configuration file',
             advanced=True)
register_key('forcesynchro',
             bool,
             doc='Force synchronisation and stop without interactive GUI.',
             advanced=True)
register_key('profile',
             bool,
             doc='Profile the current application. Developer only.',
             advanced=True)

if __name__ == '__main__':
Ejemplo n.º 14
0
class _GuiInfoList(ElementInfoList) :
    BaseClass = GuiInfo

    def mainloop(self,config,rss_reader) :
        self._auto_register()

        name = config['gui']

        if name is None :
            name = self.get_default_info_name()

        while (name is not None) and (name in self) :
            # by default, there is no next gui.
            del config['gui/next']

            gui_info = self[name](config)
            gui_info.set_rss_reader(rss_reader)
            gui_info.start_application()
            gui_info = None

            name = config['gui/next']

        if name is not None :
            raise ValueError("Don't know Gui type [%s]" % name)

gui_info_list = _GuiInfoList()

register_key( 'gui', str, doc='The Gui name to use', default=None, advanced=True )
register_key( 'gui/next', str, doc='Next gui to launch when exiting', default=None, internal=True, advanced=True )