Ejemplo n.º 1
0
    def setup_treeview_column (self, ike, key_col, instant_apply=False):
        '''Set up a treeview column to display your data.

        The key_col is the column in the treemodel which will contain
        your data in the model. It\'s your responsibility to get
        whatever other data you need yourself.

        If you make this editable, it\'s up to you to apply the
        changes as well to the database. If instant_apply is True,
        then apply them instantly; if False, apply them when this
        class\'s save method is called.
        '''
        renderer = gtk.CellRendererCombo()
        renderer.connect('editing-started',self.start_edit_cb)
        renderer.connect('edited',self.key_edited_cb,(ike,key_col,instant_apply))
        # Build shopcat model...
        self.rd = get_recipe_manager()
        self.shopcat_model = gtk.ListStore(str)
        for val in self.rd.get_unique_values('shopcategory',table=self.rd.shopcats_table):
            if val: self.shopcat_model.append([val])
        renderer.set_property('model',self.shopcat_model)
        renderer.set_property('text-column',0)        
        renderer.set_property('editable',True)
        renderer.set_property('mode',gtk.CELL_RENDERER_MODE_EDITABLE)
        renderer.set_property('sensitive',True)        
        tvc = gtk.TreeViewColumn(self.title,renderer)
        tvc.set_cell_data_func(renderer,self.cell_data_func,key_col)
        self.tvcs[renderer] = tvc
        return tvc
Ejemplo n.º 2
0
    def setup_treeview_column (self, ike, key_col, instant_apply=False):
        '''Set up a treeview column to display your data.

        The key_col is the column in the treemodel which will contain
        your data in the model. It\'s your responsibility to get
        whatever other data you need yourself.

        If you make this editable, it\'s up to you to apply the
        changes as well to the database. If instant_apply is True,
        then apply them instantly; if False, apply them when this
        class\'s save method is called.
        '''
        renderer = Gtk.CellRendererCombo()
        renderer.connect('editing-started',self.start_edit_cb)
        renderer.connect('edited',self.key_edited_cb,(ike,key_col,instant_apply))
        # Build shopcat model...
        self.rd = get_recipe_manager()
        self.shopcat_model = Gtk.ListStore(str)
        for val in self.rd.get_unique_values('shopcategory',table=self.rd.shopcats_table):
            if val: self.shopcat_model.append([val])
        renderer.set_property('model',self.shopcat_model)
        renderer.set_property('text-column',0)
        renderer.set_property('editable',True)
        renderer.set_property('mode',Gtk.CellRendererMode.EDITABLE)
        renderer.set_property('sensitive',True)
        tvc = Gtk.TreeViewColumn(self.title,renderer)
        tvc.set_cell_data_func(renderer,self.cell_data_func,key_col)
        self.tvcs[renderer] = tvc
        return tvc
Ejemplo n.º 3
0
    def __init__(
        self,
        rd=None,  # OBSOLETE
        total=0,
        prog=None,  # OBSOLETE
        do_markup=True,
        conv=None,
        rating_converter=None,
        name="importer",
    ):
        """rd is our recipeData instance.

        Total is used to keep track of progress.

        do_markup should be True if instructions and modifications
        come to us unmarked up (i.e. if we need to escape < and &,
        etc. -- this might be False if importing e.g. XML).
        """

        timeaction = TimeAction("importer.__init__", 10)
        if not conv:
            self.conv = convert.get_converter()
        self.id_converter = {}  # a dictionary for tracking named IDs
        self.total = total
        if prog or rd:
            import traceback

            traceback.print_stack()
            if prog:
                print "WARNING: ", self, "handed obsolete parameter prog=", prog
            if rd:
                print "WARNING: ", self, "handed obsolete parameter rd=", rd
        self.do_markup = do_markup
        self.count = 0
        self.rd = get_recipe_manager()
        self.rd_orig_ing_hooks = self.rd.add_ing_hooks
        self.added_recs = []
        self.added_ings = []
        # self.rd_orig_hooks = self.rd.add_hooks
        self.rd.add_ing_hooks = []
        # self.rd.add_hooks = []
        self.position = 0
        self.group = None
        # allow threaded calls to pause
        self.suspended = False
        # allow threaded calls to be terminated (this
        # has to be implemented in subclasses).
        self.terminated = False
        # Our rating converter -- if we've been handed a class, we
        # assume our caller will handle doing the
        # conversion. Otherwise we do it ourselves.
        if rating_converter:
            self.rating_converter = rating_converter
            self.do_conversion = False
        else:
            self.rating_converter = RatingConverter()
            self.do_conversion = True
        self.km = keymanager.get_keymanager()
        timeaction.end()
        SuspendableThread.__init__(self, name=name)
Ejemplo n.º 4
0
 def __init__(self, rd=None, in_recipes=None, on_close_callback=None):
     if rd:
         self.rd = rd
     else:
         self.rd = recipeManager.get_recipe_manager()
     self.in_recipes = in_recipes
     self.on_close_callback = on_close_callback
     self.to_merge = []  # Queue of recipes to be merged...
     self.ui = Gtk.Builder()
     self.ui.add_from_file(os.path.join(current_path, 'recipeMerger.ui'))
     self.get_widgets()
     self.searchTypeCombo.set_active(self.COMPLETE_DUP_MODE)
     self.mm = mnemonic_manager.MnemonicManager()
     self.mm.add_builder(self.ui)
     self.mm.fix_conflicts_peacefully()
     self.ui.connect_signals({
         'on_searchTypeCombo_changed':
         lambda *args: self.populate_tree(),
         'on_includeDeletedRecipesCheckButton_toggled':
         lambda *args: self.populate_tree(),
         'on_mergeAllButton_clicked':
         self.merge_all,
         'on_cancelMergeButton_clicked':
         self.cancel_merge,
         'on_mergeSelectedButton_clicked':
         self.merge_selected,
         'on_applyButton_clicked':
         self.apply_merge,
         'auto_merge':
         self.offer_auto_merge,
         'close':
         self.close,
     })
def test_mmf (recs, filename):
    rd = get_recipe_manager()
    assert_equal(recs[0].title,'Almond Mushroom Pate')
    assert_equal(recs[0].yields, 6)
    assert_equal(recs[0].yield_unit,'servings')
    assert_equal(recs[3].title,'Anchovy Olive Dip')
    ings = rd.get_ings(recs[3])
    assert_equal(ings[1].item,'Finely chopped stuffed green olives') # test line-wrap
Ejemplo n.º 6
0
def test_mmf (recs, filename):
    rd = get_recipe_manager()
    assert_equal(recs[0].title,'Almond Mushroom Pate')
    assert_equal(recs[0].yields, 6)
    assert_equal(recs[0].yield_unit,'servings')
    assert_equal(recs[3].title,'Anchovy Olive Dip')
    ings = rd.get_ings(recs[3])
    assert_equal(ings[1].item,'Finely chopped stuffed green olives') # test line-wrap
Ejemplo n.º 7
0
    def __init__(
            self,
            rd=None,  # OBSOLETE
            total=0,
            prog=None,  # OBSOLETE
            do_markup=True,
            conv=None,
            rating_converter=None,
            name='importer'):
        """rd is our recipeData instance.

        Total is used to keep track of progress.

        do_markup should be True if instructions and modifications
        come to us unmarked up (i.e. if we need to escape < and &,
        etc. -- this might be False if importing e.g. XML).
        """

        timeaction = TimeAction('importer.__init__', 10)
        if not conv: self.conv = convert.get_converter()
        self.id_converter = {}  # a dictionary for tracking named IDs
        self.total = total
        if prog or rd:
            import traceback
            traceback.print_stack()
            if prog:
                print('WARNING: ', self, 'handed obsolete parameter prog=',
                      prog)
            if rd:
                print('WARNING: ', self, 'handed obsolete parameter rd=', rd)
        self.do_markup = do_markup
        self.count = 0
        self.rd = get_recipe_manager()
        self.rd_orig_ing_hooks = self.rd.add_ing_hooks
        self.added_recs = []
        self.added_ings = []
        #self.rd_orig_hooks = self.rd.add_hooks
        self.rd.add_ing_hooks = []
        #self.rd.add_hooks = []
        self.position = 0
        self.group = None
        # allow threaded calls to pause
        self.suspended = False
        # allow threaded calls to be terminated (this
        # has to be implemented in subclasses).
        self.terminated = False
        # Our rating converter -- if we've been handed a class, we
        # assume our caller will handle doing the
        # conversion. Otherwise we do it ourselves.
        if rating_converter:
            self.rating_converter = rating_converter
            self.do_conversion = False
        else:
            self.rating_converter = RatingConverter()
            self.do_conversion = True
        self.km = keymanager.get_keymanager()
        timeaction.end()
        SuspendableThread.__init__(self, name=name)
def test_2_col (recs, filename):
    rd = get_recipe_manager()
    assert len(recs) == 1,'Expected 1 recipes; got %s (%s)'%(len(recs),recs)
    chile_ings = rd.get_ings(recs[0])
    print 'chile_ings=',chile_ings
    assert_equal(chile_ings[0].amount, 2)
    assert_equal(chile_ings[1].amount, 1) # second column
    assert_equal_ignorecase(chile_ings[1].ingkey, 'eggs')
    assert_equal(chile_ings[1].item, 'Eggs; separated')
    assert_equal_ignorecase(chile_ings[0].ingkey, u'Chiles, calif.')
    assert_equal(recs[0].yields, 2)
    assert_equal(recs[0].yield_unit, 'servings')
    assert_equal(recs[0].title, u'Chiles Rellenos de Queso')
    assert_equal(chile_ings[5].item, 'Tomatoes; peeled')
    assert_equal_ignorecase(chile_ings[5].inggroup, 'Tomato Sauce')
def test_2_col(recs, filename):
    rd = get_recipe_manager()
    assert len(recs) == 1, "Expected 1 recipes; got %s (%s)" % (len(recs), recs)
    chile_ings = rd.get_ings(recs[0])
    print "chile_ings=", chile_ings
    assert_equal(chile_ings[0].amount, 2)
    assert_equal(chile_ings[1].amount, 1)  # second column
    assert_equal_ignorecase(chile_ings[1].ingkey, "eggs")
    assert_equal(chile_ings[1].item, "Eggs; separated")
    assert_equal_ignorecase(chile_ings[0].ingkey, u"Chiles, calif.")
    assert_equal(recs[0].yields, 2)
    assert_equal(recs[0].yield_unit, "servings")
    assert_equal(recs[0].title, u"Chiles Rellenos de Queso")
    assert_equal(chile_ings[5].item, "Tomatoes; peeled")
    assert_equal_ignorecase(chile_ings[5].inggroup, "Tomato Sauce")
Ejemplo n.º 10
0
def test_2_col (recs, filename):
    rd = get_recipe_manager()
    assert len(recs) == 1,'Expected 1 recipes; got %s (%s)'%(len(recs),recs)
    chile_ings = rd.get_ings(recs[0])
    print('chile_ings=',chile_ings)
    assert_equal(chile_ings[0].amount, 2)
    assert_equal(chile_ings[1].amount, 1) # second column
    assert_equal_ignorecase(chile_ings[1].ingkey, 'eggs')
    assert_equal(chile_ings[1].item, 'Eggs; separated')
    assert_equal_ignorecase(chile_ings[0].ingkey, 'Chiles, calif.')
    assert_equal(recs[0].yields, 2)
    assert_equal(recs[0].yield_unit, 'servings')
    assert_equal(recs[0].title, 'Chiles Rellenos de Queso')
    assert_equal(chile_ings[5].item, 'Tomatoes; peeled')
    assert_equal_ignorecase(chile_ings[5].inggroup, 'Tomato Sauce')
Ejemplo n.º 11
0
 def test_grm_export (pdf_args=DEFAULT_PDF_ARGS):
     fname = tempfile.mktemp('.pdf')
     #if os.name == 'nt':
     #    base = 'C:\\grm\grm'
     #else:
     #    base = '/home/tom/Projects/grm'
     import gourmet.recipeManager as rm
     rd = rm.get_recipe_manager(file=os.path.join(base,'src','tests','reference_setup','recipes.db'))
     #rd = rm.RecipeManager()
     rr = []
     #for n,rec in enumerate(rd.fetch_all(rd.recipe_table,deleted=False)):
     #    if rec.image:
     #        rr.append(rec)
     pe = PdfExporterMultiDoc(rd,rd.fetch_all(rd.recipe_table,deleted=False),fname,pdf_args=pdf_args)
     pe.run()
     return fname
Ejemplo n.º 12
0
 def test_grm_export (pdf_args=DEFAULT_PDF_ARGS):
     fname = tempfile.mktemp('.pdf')
     #if os.name == 'nt':
     #    base = 'C:\\grm\grm'
     #else:
     #    base = '/home/tom/Projects/grm'
     import gourmet.recipeManager as rm
     rd = rm.get_recipe_manager(file=os.path.join(base,'src','tests','reference_setup','recipes.db'))
     #rd = rm.RecipeManager()
     rr = []
     #for n,rec in enumerate(rd.fetch_all(rd.recipe_table,deleted=False)):
     #    if rec.image:
     #        rr.append(rec)
     pe = PdfExporterMultiDoc(rd,rd.fetch_all(rd.recipe_table,deleted=False),fname,pdf_args=pdf_args)
     pe.run()
     return fname
Ejemplo n.º 13
0
 def __init__(self):
     from gourmet.recipeManager import get_recipe_manager
     self.rm = get_recipe_manager()
Ejemplo n.º 14
0
 def setup_db(self):
     self.im = get_im()
     self.db = get_recipe_manager()
Ejemplo n.º 15
0
 def __init__ (self):
     from gourmet.recipeManager import get_recipe_manager
     self.rm = get_recipe_manager()
Ejemplo n.º 16
0
 def add_ing_from_text(self, txt):
     parsed_dict = get_recipe_manager().parse_ingredient(txt)
     self.ing = parsed_dict
     self.commit_ing()
Ejemplo n.º 17
0
 def setup_db (self):
     self.im = get_im()
     self.db = get_recipe_manager()