comparison libinterp/corefcn/graphics.cc @ 18571:ca1648b2e673 gui-release

set default toolkit when registering toolkits (bug #41665). * graphics.in.h, graphics.cc (gtk_manager::gtk_manager): Don't set default toolkit. (gtk_manager::do_register_toolkit): Set default toolkit here. (gtk_manager::do_unregister_toolkit): If removing default toolkit, reset it using same rules as in do_register_toolkit.
author Michael C. Grant <mcg@cvxr.com> and John W. Eaton <jwe@octave.org>
date Mon, 10 Mar 2014 10:46:37 -0500
parents 2e7cad6f180c
children cd83730e5e38 bd1fd4ed3d67
comparison
equal deleted inserted replaced
18569:4daf647c86c3 18571:ca1648b2e673
9582 return retval; 9582 return retval;
9583 } 9583 }
9584 9584
9585 gtk_manager *gtk_manager::instance = 0; 9585 gtk_manager *gtk_manager::instance = 0;
9586 9586
9587 gtk_manager::gtk_manager (void)
9588 : dtk (), available_toolkits (), loaded_toolkits ()
9589 {
9590 #if defined (HAVE_QT)
9591 dtk = display_info::display_available () ? "qt" : "gnuplot";
9592 #elif defined (HAVE_FLTK)
9593 dtk = display_info::display_available () ? "fltk" : "gnuplot";
9594 #else
9595 dtk = "gnuplot";
9596 #endif
9597 }
9598
9599 void 9587 void
9600 gtk_manager::create_instance (void) 9588 gtk_manager::create_instance (void)
9601 { 9589 {
9602 instance = new gtk_manager (); 9590 instance = new gtk_manager ();
9603 9591
9636 } 9624 }
9637 else 9625 else
9638 retval = pl->second; 9626 retval = pl->second;
9639 9627
9640 return retval; 9628 return retval;
9629 }
9630
9631 void
9632 gtk_manager::do_register_toolkit (const std::string& name)
9633 {
9634 if (dtk.empty () || name == "qt"
9635 || (name == "fltk"
9636 && available_toolkits.find ("qt") == available_toolkits.end ()))
9637 dtk = name;
9638
9639 available_toolkits.insert (name);
9640 }
9641
9642 void
9643 gtk_manager::do_unregister_toolkit (const std::string& name)
9644 {
9645 available_toolkits.erase (name);
9646
9647 if (dtk == name)
9648 {
9649 if (available_toolkits.empty ())
9650 dtk.clear ();
9651 else
9652 {
9653 const_available_toolkits_iterator pa = available_toolkits.begin ();
9654
9655 dtk = *pa++;
9656
9657 while (pa != available_toolkits.end ())
9658 {
9659 std::string name = *pa++;
9660
9661 if (name == "qt"
9662 || (name == "fltk"
9663 && available_toolkits.find ("qt") == available_toolkits.end ()))
9664 dtk = name;
9665 }
9666 }
9667 }
9641 } 9668 }
9642 9669
9643 DEFUN (available_graphics_toolkits, , , 9670 DEFUN (available_graphics_toolkits, , ,
9644 "-*- texinfo -*-\n\ 9671 "-*- texinfo -*-\n\
9645 @deftypefn {Built-in Function} {} available_graphics_toolkits ()\n\ 9672 @deftypefn {Built-in Function} {} available_graphics_toolkits ()\n\