Previous 199869 Revisions Next

r29298 Saturday 5th April, 2014 at 11:02:10 UTC by Nathan Woods
Reenabling softlist code in new_menus; likely doesn't work yet
[/shelves/new_menus/src/emu/ui]emenubar.c emenubar.h swlist.c swlist.h

shelves/new_menus/src/emu/ui/swlist.c
r29297r29298
3030//  ctor
3131//-------------------------------------------------
3232
33ui_menu_software_parts::ui_menu_software_parts(running_machine &machine, render_container *container, const software_list_device *swlist, const software_list *swl, const software_info *info, device_image_interface *image)
34    : ui_menu(machine, container)
33ui_menu_software_parts::ui_menu_software_parts(running_machine &machine, render_container *container, device_image_interface *image, software_list_device *swlist, software_info *info, const char *interface, software_part **part)
34   : ui_menu(machine, container)
3535{
36   m_image = image;
3637   m_swlist = swlist;
37   m_software_list = swl;
3838   m_info = info;
39   m_image = image;
39   m_interface = interface;
40   m_selected_part = part;
4041}
4142
4243
4344//-------------------------------------------------
44//  dtor
45//-------------------------------------------------
46
47ui_menu_software_parts::~ui_menu_software_parts()
48{
49}
50
51
52//-------------------------------------------------
5345//  populate
5446//-------------------------------------------------
5547
r29297r29298
5749{
5850   for (const software_part *swpart = m_info->first_part(); swpart != NULL; swpart = swpart->next())
5951   {
60      if (swpart->matches_interface(NULL))   // FIXME
52      if (swpart->matches_interface(m_interface))
6153      {
6254         software_part_menu_entry *entry = (software_part_menu_entry *) m_pool_alloc(sizeof(*entry));
6355         // check if the available parts have specific part_id to be displayed (e.g. "Map Disc", "Bonus Disc", etc.)
r29297r29298
7971
8072void ui_menu_software_parts::handle()
8173{
82#if 0
8374   // process the menu
8475   const ui_menu_event *event = process(0);
8576
r29297r29298
9081
9182      // load the image
9283      astring image_name;
93      image_name.printf("%s:%s:%s", m_swlist->list_name(), m_info->shortname, entry->part->name);
84      image_name.printf("%s:%s:%s", m_swlist->list_name(), m_info->shortname(), entry->part->name());
9485      m_image->load(image_name);
9586
9687      // and exit
9788      ui_menu::stack_pop(machine());
9889   }
99#endif
10090}
10191
10292
r29297r29298
10898//  ctor
10999//-------------------------------------------------
110100
111ui_menu_software_list::ui_menu_software_list(running_machine &machine, render_container *container, const software_list_device *swlist, device_image_interface *image)
112   : ui_menu(machine, container)
101ui_menu_software_list::ui_menu_software_list(running_machine &machine, render_container *container, device_image_interface *image, software_list_device *swlist, const char *interface, astring &result)
102   : ui_menu(machine, container), m_result(result)
113103{
114   m_swlist = swlist;
115104   m_image = image;
105   m_swlist = swlist;
106   m_interface = interface;
116107   m_entrylist = NULL;
117108   m_ordered_by_shortname = true;
118109}
r29297r29298
133124
134125void ui_menu_software_list::select_entry(entry_info *entry)
135126{
136   // TEMPORARILY DISABLING
137#if 0
138   const struct software_list *swl;
139   const software_info *swi;
140   const software_part *swp;
127   software_info *swi;
128   software_part *swp;
141129
142   swl = software_list_open(machine().options(), m_swlist->list_name(), false, NULL);
143   swi = software_list_find(swl, entry->short_name, NULL);
130   swi = m_swlist->find(entry->short_name);
144131
145   if (swinfo_has_multiple_parts(swi, m_image->image_interface()))
132   if (swi->has_multiple_parts(m_interface))
146133    {
147134      // multi part software; need to spawn another menu
148      ui_menu::stack_push(auto_alloc_clear(machine(), ui_menu_software_parts(machine(), container, m_swlist, swl, swi, m_image)));
135      ui_menu::stack_push(auto_alloc_clear(machine(), ui_menu_software_parts(machine(), container, m_image, m_swlist, swi, m_interface, &swp)));
149136   }
150137   else
151138   {
152139      // single part software; just get the part
153      swp = software_find_part(swi, NULL, NULL);
140      swp = swi->first_part();
154141
155142      // and load it
156143      astring image_name;
157      image_name.printf("%s:%s:%s", m_swlist->list_name(), swi->shortname, swp->name);
144      image_name.printf("%s:%s:%s", m_swlist->list_name(), swi->shortname(), swp->name());
158145      m_image->load(image_name);
159
160      // and dispose of the list
161      software_list_close(swl);
162146   }
163#endif
164147}
165148
166149//-------------------------------------------------
r29297r29298
208191ui_menu_software_list::entry_info *ui_menu_software_list::append_software_entry(const software_info *swinfo)
209192{
210193   entry_info *entry = NULL;
211#if 0
212194   entry_info **entryptr;
213195   bool entry_updated = FALSE;
214196
r29297r29298
240222      entry->next = *entryptr;
241223      *entryptr = entry;
242224   }
243#endif
225
244226   return entry;
245227}
246228
r29297r29298
251233
252234void ui_menu_software_list::populate()
253235{
254#if 0
255236   // build up the list of entries for the menu
256237   for (const software_info *swinfo = m_swlist->first_software_info(); swinfo != NULL; swinfo = swinfo->next())
257238      append_software_entry(swinfo);
r29297r29298
262243   // append all of the menu entries
263244   for (entry_info *entry = m_entrylist; entry != NULL; entry = entry->next)
264245      item_append(entry->short_name, entry->long_name, 0, entry);
265#endif
266246}
267247
268248
shelves/new_menus/src/emu/ui/swlist.h
r29297r29298
1919class ui_menu_software_parts : public ui_menu {
2020public:
2121   enum { T_ENTRY, T_FMGR };
22   ui_menu_software_parts(running_machine &machine, render_container *container, const software_list_device *swlist, const software_list *swl, const software_info *info, device_image_interface *image);
23   virtual ~ui_menu_software_parts();
22   ui_menu_software_parts(running_machine &machine, render_container *container, device_image_interface *image, software_list_device *swlist, software_info *info, const char *interface, software_part **part);
2423   virtual void populate();
2524   virtual void handle();
2625
r29297r29298
3130   };
3231
3332   // variables
34   const software_list_device *   m_swlist;
35   const software_list *         m_software_list;
36   const software_info   *         m_info;
37   device_image_interface *      m_image;
33   device_image_interface *m_image;
34   software_list_device *   m_swlist;
35   software_info *         m_info;
36   const char *         m_interface;
37   software_part **      m_selected_part;
3838};
3939
4040
r29297r29298
4242
4343class ui_menu_software_list : public ui_menu {
4444public:
45   ui_menu_software_list(running_machine &machine, render_container *container, const software_list_device *swlist, device_image_interface *image);
45   ui_menu_software_list(running_machine &machine, render_container *container, device_image_interface *image, software_list_device *swlist, const char *interface, astring &result);
4646   virtual ~ui_menu_software_list();
4747   virtual void populate();
4848   virtual void handle();
r29297r29298
5656   };
5757
5858   // variables
59   const software_list_device *   m_swlist; // currently selected list
6059   device_image_interface *      m_image;
60   software_list_device *         m_swlist; // currently selected list
61   const char *               m_interface;
62   astring &                  m_result;
6163   entry_info *               m_entrylist;
6264   char                     m_filename_buffer[1024];
6365   bool                     m_ordered_by_shortname;
shelves/new_menus/src/emu/ui/emenubar.c
r29297r29298
242242   // first do "original system" softlists, then do compatible ones
243243   for (int typenum = 0; typenum < ARRAY_LENGTH(types); typenum++)
244244   {
245      for (const software_list_device *swlist = softlist_iter.first(); swlist != NULL; swlist = softlist_iter.next())
245      for (software_list_device *swlist = softlist_iter.first(); swlist != NULL; swlist = softlist_iter.next())
246246      {
247247         if ((swlist->list_type() == types[typenum]) && is_softlist_relevant(swlist, image->image_interface(), description))
248248         {
r29297r29298
505505//  is_softlist_relevant
506506//-------------------------------------------------
507507
508bool ui_emu_menubar::is_softlist_relevant(const software_list_device *swlist, const char *interface, astring &list_description)
508bool ui_emu_menubar::is_softlist_relevant(software_list_device *swlist, const char *interface, astring &list_description)
509509{
510510   bool result = false;
511511
512#if 0
513   const software_list *list = software_list_open(machine().options(), swlist->list_name(), false, NULL);
514   if (list != NULL)
512   for (software_info *swinfo = swlist->first_software_info(); swinfo != NULL; swinfo = swinfo->next())
515513   {
516      for (const software_info *swinfo = software_list_find(list, "*", NULL); swinfo != NULL; swinfo = software_list_find(list, "*", swinfo))
514      software_part *part = swinfo->find_part(NULL, NULL);
515      if (part->matches_interface(interface))
517516      {
518         const software_part *part = software_find_part(swinfo, NULL, NULL);
519         if (softlist_contain_interface(interface, part->interface_))
520         {
521            list_description.printf("%s...", list->description);
522            result = true;
523            break;
524         }
517         list_description.printf("%s...", swlist->description());
518         result = true;
519         break;
525520      }
526      software_list_close(list);
527521   }
528#endif
522
529523   return result;
530524}
531525
r29297r29298
558552//  select_from_software_list
559553//-------------------------------------------------
560554
561void ui_emu_menubar::select_from_software_list(device_image_interface *image, const software_list_device *swlist)
555void ui_emu_menubar::select_from_software_list(device_image_interface *image, software_list_device *swlist)
562556{
563   ui_menu::stack_push(auto_alloc_clear(machine(), ui_menu_software_list(machine(), container(), swlist, image)));
557   astring result;
558   ui_menu::stack_push(auto_alloc_clear(machine(), ui_menu_software_list(machine(), container(), image, swlist, NULL, result)));
564559}
565560
566561
shelves/new_menus/src/emu/ui/emenubar.h
r29297r29298
3838   void build_help_menu();
3939
4040   // miscellaneous
41   bool is_softlist_relevant(const software_list_device *swlist, const char *interface, astring &list_description);
41   bool is_softlist_relevant(software_list_device *swlist, const char *interface, astring &list_description);
4242   void set_ui_handler(UINT32 (*callback)(running_machine &, render_container *, UINT32), UINT32 param);
4343   void select_new_game();
44   void select_from_software_list(device_image_interface *image, const software_list_device *swlist);
44   void select_from_software_list(device_image_interface *image, software_list_device *swlist);
4545   void tape_control(cassette_image_device *image);
4646   void bitbanger_control(bitbanger_device *image);
4747   void load(device_image_interface *image);

Previous 199869 Revisions Next


© 1997-2024 The MAME Team