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
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
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 __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
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")
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')
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
def __init__(self): from gourmet.recipeManager import get_recipe_manager self.rm = get_recipe_manager()
def setup_db(self): self.im = get_im() self.db = get_recipe_manager()
def __init__ (self): from gourmet.recipeManager import get_recipe_manager self.rm = get_recipe_manager()
def add_ing_from_text(self, txt): parsed_dict = get_recipe_manager().parse_ingredient(txt) self.ing = parsed_dict self.commit_ing()
def setup_db (self): self.im = get_im() self.db = get_recipe_manager()