def update_list(self, game_uuid): print("VariantsBrowser.update_list, game_uuid=", game_uuid) database = Database.get_instance() items = database.find_game_variants_new(game_uuid, have=0) # items = database.search_configurations(self.search) sortable_items = [] for i, item in enumerate(items): name = item["name"] name = name.replace("\nAmiga \u00b7 ", "\n") # print(name, item[3]) # name = name.replace("\nCD32 \u00b7 ", "\n") # name = item[1].replace("\n", " \u00b7 ") # only show variant name (without game name) name = name.split("\n", 1)[-1] game_database = fsgs.game_database(item["database"]) item["like_rating"], item["work_rating"] = game_database\ .get_ratings_for_game(item["uuid"]) item["personal_rating"], ignored = database.get_ratings_for_game( item["uuid"]) sort_key = (0, 1000000 - item["like_rating"], 1000000 - item["work_rating"], name) sortable_items.append( (sort_key, i, item)) # print(sortable_items) self.items = [x[2] for x in sorted(sortable_items)] self.update() # self.set_items(self.items) # self.set_item_count(len(self.items)) self.select_item(None, signal=False) select_index = None list_uuid = LauncherSettings.get("game_list_uuid") if list_uuid: list_variant_uuid = database.get_variant_for_list_and_game( list_uuid, game_uuid) print("game list", list_uuid, "override variant", list_variant_uuid) else: list_variant_uuid = None if list_variant_uuid: # override variant selection from list if possible for i, item in enumerate(self.items): print(item["uuid"], item["name"], list_variant_uuid) if item["uuid"] == list_variant_uuid: select_index = i print("override select index", select_index) break if select_index is None: # default index selection for i, item in enumerate(self.items): if item["personal_rating"] == 5: select_index = i break else: for i, item in enumerate(self.items): if item["have"] >= 3: select_index = i break else: for i, item in enumerate(self.items): if item["have"] >= 1: select_index = i break else: if len(self.items) > 0: select_index = 0 # self.clear() # for i, item in enumerate(self.items): # self.add_item(item["name"], icon=self.get_item_icon(i)) self.enable(len(self.items) > 0) if select_index is not None: print("selecting variant index", select_index) self.select_item(select_index) else: ConfigGroup.new_config()
def update_list(self, game_uuid): print("VariantsBrowser.update_list, game_uuid=", game_uuid) database = Database.get_instance() items = database.find_game_variants_new(game_uuid, have=0) # items = database.search_configurations(self.search) # FIXME: Merge code with # FSGameSystemContext.py:get_ordered_game_variants sortable_items = [] for i, variant in enumerate(items): name = variant["name"] # assert "\n" not in name # only show variant name (without game name) # name = name.split("\n", 1)[-1] game_database = fsgs.game_database(variant["database"]) variant["like_rating"], variant[ "work_rating"] = game_database.get_ratings_for_game( variant["uuid"]) variant[ "personal_rating"], ignored = database.get_ratings_for_game( variant["uuid"]) if variant["published"] == 0: primary_sort = 1 variant["name"] = "[UNPUBLISHED] " + variant["name"] else: primary_sort = 0 sort_key = ( primary_sort, 1000000 - variant["like_rating"], 1000000 - variant["work_rating"], name, ) sortable_items.append((sort_key, i, variant)) # print(sortable_items) self.items = [x[2] for x in sorted(sortable_items)] self.update() # self.set_items(self.items) # self.set_item_count(len(self.items)) self.select_item(None, signal=False) select_index = None list_uuid = LauncherSettings.get("game_list_uuid") if list_uuid: list_variant_uuid = database.get_variant_for_list_and_game( list_uuid, game_uuid) print("game list", list_uuid, "override variant", list_variant_uuid) else: list_variant_uuid = None if list_variant_uuid: # override variant selection from list if possible for i, variant in enumerate(self.items): print(variant["uuid"], variant["name"], list_variant_uuid) if variant["uuid"] == list_variant_uuid: select_index = i print("override select index", select_index) break if select_index is None: # default index selection for i, variant in enumerate(self.items): if variant["personal_rating"] == 5: if variant["have"] >= 3: select_index = i break else: # FIXME: Add warning here that the favorite variant # could not be selected. pass else: for i, variant in enumerate(self.items): if variant["have"] >= 3: select_index = i break else: for i, variant in enumerate(self.items): if variant["have"] >= 1: select_index = i break else: if len(self.items) > 0: select_index = 0 # self.clear() # for i, variant in enumerate(self.items): # self.add_item(variant["name"], icon=self.get_item_icon(i)) self.enable(len(self.items) > 0) if select_index is not None: print("selecting variant index", select_index) self.select_item(select_index) else: ConfigGroup.new_config()
def update_list(self, game_uuid): print("VariantsBrowser.update_list, game_uuid=", game_uuid) database = Database.get_instance() items = database.find_game_variants_new(game_uuid, have=0) # items = database.search_configurations(self.search) # FIXME: Merge code with # FSGameSystemContext.py:get_ordered_game_variants sortable_items = [] for i, variant in enumerate(items): name = variant["name"] # assert "\n" not in name # only show variant name (without game name) # name = name.split("\n", 1)[-1] game_database = fsgs.game_database(variant["database"]) variant["like_rating"], variant[ "work_rating" ] = game_database.get_ratings_for_game(variant["uuid"]) variant[ "personal_rating" ], ignored = database.get_ratings_for_game(variant["uuid"]) if variant["published"] == 0: primary_sort = 1 variant["name"] = "[UNPUBLISHED] " + variant["name"] else: primary_sort = 0 sort_key = ( primary_sort, 1000000 - variant["like_rating"], 1000000 - variant["work_rating"], name, ) sortable_items.append((sort_key, i, variant)) # print(sortable_items) self.items = [x[2] for x in sorted(sortable_items)] self.update() # self.set_items(self.items) # self.set_item_count(len(self.items)) self.select_item(None, signal=False) select_index = None list_uuid = LauncherSettings.get("game_list_uuid") if list_uuid: list_variant_uuid = database.get_variant_for_list_and_game( list_uuid, game_uuid ) print( "game list", list_uuid, "override variant", list_variant_uuid ) else: list_variant_uuid = None if list_variant_uuid: # override variant selection from list if possible for i, variant in enumerate(self.items): print(variant["uuid"], variant["name"], list_variant_uuid) if variant["uuid"] == list_variant_uuid: select_index = i print("override select index", select_index) break if select_index is None: # default index selection for i, variant in enumerate(self.items): if variant["personal_rating"] == 5: if variant["have"] >= 3: select_index = i break else: # FIXME: Add warning here that the favorite variant # could not be selected. pass else: for i, variant in enumerate(self.items): if variant["have"] >= 3: select_index = i break else: for i, variant in enumerate(self.items): if variant["have"] >= 1: select_index = i break else: if len(self.items) > 0: select_index = 0 # self.clear() # for i, variant in enumerate(self.items): # self.add_item(variant["name"], icon=self.get_item_icon(i)) self.enable(len(self.items) > 0) if select_index is not None: print("selecting variant index", select_index) self.select_item(select_index) else: ConfigGroup.new_config()
def __init__(self, parent): fsui.Panel.__init__(self, parent) Skin.set_background_color(self) self.layout = fsui.HorizontalLayout() vert_layout = fsui.VerticalLayout() self.layout.add(vert_layout, fill=True, expand=True) hor_layout = fsui.HorizontalLayout() vert_layout.add(hor_layout, fill=True) label_stand_in = fsui.Panel(self) tw, th = label_stand_in.measure_text("Games") label_stand_in.set_min_height(th) hor_layout.add(label_stand_in, margin_top=10, margin_bottom=10) hor_layout.add(NewButton(self), margin_left=10, margin_right=10) game_list_selector = GameListSelector(self) game_list_selector.set_min_width(250) game_list_selector.setMaximumWidth(250) game_list_selector.changed.connect(self.on_game_list_changed) hor_layout.add(game_list_selector, expand=False, margin_left=10) self.text_field = fsui.TextField(self, LauncherSettings.get("config_search")) self.text_field.on_changed = self.on_search_changed if VariantsBrowser.use_horizontal_layout(): # window is big enough to use fixed size # self.text_field.set_min_width(210) self.text_field.set_min_width(229) hor_layout.add( self.text_field, expand=False, margin=10, margin_top=0, margin_bottom=0, ) else: hor_layout.add( self.text_field, expand=True, margin=10, margin_top=0, margin_bottom=0, ) # self.refresh_button = IconButton(self, "refresh_button.png") # self.refresh_button.set_tooltip( # gettext("Refresh Game Configurations from Online Database")) # self.refresh_button.activated.connect(self.on_refresh_button) # hor_layout.add( # self.refresh_button, margin=10, margin_top=0, margin_bottom=0) self.configurations_browser = ConfigurationsBrowser(self) vert_layout.add(self.configurations_browser, fill=True, expand=3, margin=10) self.variants_panel = fsui.Panel(self) vert_layout.add( self.variants_panel, fill=True, expand=False, margin=10, margin_top=20, ) self.variants_panel.layout = fsui.HorizontalLayout() self.variants_browser = VariantsBrowser(self.variants_panel) # Do not use fill=True with the default OS X theme at least, # if you do the item will be rendered with the old Aqua look self.variants_panel.layout.add(self.variants_browser, fill=False, expand=True) # for rating in [1, 4, 5]: # button = RatingButton(self.variants_panel, rating) # self.variants_panel.layout.add(button, margin_left=5, fill=True) self.variants_panel.layout.add(RatingChoice(self.variants_panel), margin_left=5, fill=True) self.config_panel = fsui.Panel(self) vert_layout.add( self.config_panel, fill=True, expand=False, margin_bottom=10, margin_top=20, ) self.config_panel.layout = fsui.VerticalLayout() self.config_group = ConfigGroup(self.config_panel, new_button=False) self.config_panel.layout.add(self.config_group, fill=True, expand=True) LauncherSettings.add_listener(self) self.on_setting("parent_uuid", LauncherSettings.get("parent_uuid"))
def update_list(self, game_uuid): print("VariantsBrowser.update_list, game_uuid=", game_uuid) database = Database.get_instance() items = database.find_game_variants_new(game_uuid, have=0) # items = database.search_configurations(self.search) # FIXME: Merge code with FSGameSystemContext.py sortable_items = [] for i, variant in enumerate(items): name = variant["name"] name = name.replace("\nAmiga \u00b7 ", "\n") # print(name, variant[3]) # name = name.replace("\nCD32 \u00b7 ", "\n") # name = variant[1].replace("\n", " \u00b7 ") # only show variant name (without game name) name = name.split("\n", 1)[-1] game_database = fsgs.game_database(variant["database"]) variant["like_rating"], variant["work_rating"] = \ game_database.get_ratings_for_game(variant["uuid"]) variant["personal_rating"], ignored = \ database.get_ratings_for_game(variant["uuid"]) sort_key = (0, 1000000 - variant["like_rating"], 1000000 - variant["work_rating"], name) sortable_items.append((sort_key, i, variant)) # print(sortable_items) self.items = [x[2] for x in sorted(sortable_items)] self.update() # self.set_items(self.items) # self.set_item_count(len(self.items)) self.select_item(None, signal=False) select_index = None list_uuid = LauncherSettings.get("game_list_uuid") if list_uuid: list_variant_uuid = database.get_variant_for_list_and_game( list_uuid, game_uuid) print("game list", list_uuid, "override variant", list_variant_uuid) else: list_variant_uuid = None if list_variant_uuid: # override variant selection from list if possible for i, variant in enumerate(self.items): print(variant["uuid"], variant["name"], list_variant_uuid) if variant["uuid"] == list_variant_uuid: select_index = i print("override select index", select_index) break if select_index is None: # default index selection for i, variant in enumerate(self.items): if variant["personal_rating"] == 5: select_index = i break else: for i, variant in enumerate(self.items): if variant["have"] >= 3: select_index = i break else: for i, variant in enumerate(self.items): if variant["have"] >= 1: select_index = i break else: if len(self.items) > 0: select_index = 0 # self.clear() # for i, variant in enumerate(self.items): # self.add_item(variant["name"], icon=self.get_item_icon(i)) self.enable(len(self.items) > 0) if select_index is not None: print("selecting variant index", select_index) self.select_item(select_index) else: ConfigGroup.new_config()