diff libgui/graphics/Canvas.cc @ 27620:45bb5bbaf291

don't use singleton pattern for resource manager in GUI Move ownership of the resource_manager object to the base_qobject class. Store reference to resource_manager object as a member variable in most objects that need to access it. Eliminate static member functions in resource_managar class. Provide a get_resource_manager method in the base_qboject class and a global __get_resource_manager__ function for those instances where we can't easily provide local access to the resource_manager object. There are many changes to many files, but most are straightforward.
author John W. Eaton <jwe@octave.org>
date Fri, 01 Nov 2019 18:16:49 -0400
parents f844b1f03dcc
children 8b6e928e0705
line wrap: on
line diff
--- a/libgui/graphics/Canvas.cc	Sat Nov 02 15:24:14 2019 -0400
+++ b/libgui/graphics/Canvas.cc	Fri Nov 01 18:16:49 2019 -0400
@@ -72,6 +72,17 @@
     m_redrawBlocked = block;
   }
 
+  static QCursor
+  make_cursor (const QString& name, int hot_x  = -1, int hot_y = -1)
+  {
+    octave::resource_manager& rmgr
+      = octave::__get_resource_manager__ ("make_cursor");
+
+    QIcon icon = rmgr.icon (name);
+
+    return QCursor (icon.pixmap (22, 22), hot_x, hot_y);
+  }
+
   void
   Canvas::setCursor (MouseMode mode, std::string fallback,
                      QImage cdata, Matrix hotspot)
@@ -89,24 +100,15 @@
               if (fallback == "arrow")
                 cursor = Qt::ArrowCursor;
               else if (fallback == "botl")
-                cursor = QCursor (octave::resource_manager::icon
-                                  ("bottom_left_corner").pixmap (22,22),
-                                  5, 16);
+                cursor = make_cursor ("bottom_left_corner", 5, 16);
               else if (fallback == "botr")
-                cursor = QCursor (octave::resource_manager::icon
-                                  ("bottom_right_corner").pixmap (22, 22),
-                                  16, 16);
+                cursor = make_cursor ("bottom_right_corner", 16, 16);
               else if (fallback == "bottom")
-                cursor = QCursor (octave::resource_manager::icon
-                                  ("bottom_side").pixmap (22, 22),
-                                  11, 16);
+                cursor = make_cursor ("bottom_side", 11, 16);
               else if (fallback == "circle")
-                cursor = QCursor (octave::resource_manager::icon
-                                  ("circle").pixmap (22, 22),
-                                  10, 10);
+                cursor = make_cursor ("circle", 10, 10);
               else if (fallback == "cross" || fallback == "crosshair")
-                cursor = QCursor (octave::resource_manager::icon
-                                  ("cross").pixmap (22, 22), 10, 10);
+                cursor = make_cursor ("cross", 10, 10);
               else if (fallback == "custom")
                 {
                   if (hotspot(0) > cdata.width () || hotspot(0) < 1.0
@@ -118,31 +120,21 @@
                                     static_cast<int> (hotspot(0) - 1));
                 }
               else if (fallback == "fleur")
-                cursor = QCursor (octave::resource_manager::icon
-                                  ("fleur").pixmap (22, 22), 10, 4);
+                cursor = make_cursor ("fleur", 10, 4);
               else if (fallback == "hand")
-                cursor = QCursor (octave::resource_manager::icon
-                                  ("hand2").pixmap (22, 22), 7, 3);
+                cursor = make_cursor ("hand2", 7, 3);
               else if (fallback == "ibeam")
                 cursor = Qt::IBeamCursor;
               else if (fallback == "left")
-                cursor = QCursor (octave::resource_manager::icon
-                                  ("left_side").pixmap (22, 22), 4, 10);
+                cursor = make_cursor ("left_side", 4, 10);
               else if (fallback == "right")
-                cursor = QCursor (octave::resource_manager::icon
-                                  ("right_side").pixmap (22, 22),
-                                  17, 10);
+                cursor = make_cursor ("right_side", 17, 10);
               else if (fallback == "top")
-                cursor = QCursor (octave::resource_manager::icon
-                                  ("top_side").pixmap (22, 22), 11, 4);
+                cursor = make_cursor ("top_side", 11, 4);
               else if (fallback == "topl")
-                cursor = QCursor (octave::resource_manager::icon
-                                  ("top_left_corner").pixmap (22, 22),
-                                  4, 4);
+                cursor = make_cursor ("top_left_corner", 4, 4);
               else if (fallback == "topr")
-                cursor = QCursor (octave::resource_manager::icon
-                                  ("top_right_corner").pixmap (22, 22),
-                                  16, 4);
+                cursor = make_cursor ("top_right_corner", 16, 4);
               else if (fallback == "watch")
                 cursor = Qt::BusyCursor;
             }
@@ -152,13 +144,11 @@
             break;
 
           case PanMode:
-            cursor = QCursor (octave::resource_manager::icon ("figure-pan")
-                              .pixmap (22, 22));
+            cursor = make_cursor ("figure-pan");
             break;
 
           case RotateMode:
-            cursor = QCursor (octave::resource_manager::icon ("figure-rotate")
-                              .pixmap (22, 22));
+            cursor = make_cursor ("figure-rotate");
             break;
 
           case TextMode:
@@ -166,13 +156,11 @@
             break;
 
           case ZoomInMode:
-            cursor = QCursor (octave::resource_manager::icon ("figure-zoom-in")
-                              .pixmap (22, 22), 9, 9);
+            cursor = make_cursor ("figure-zoom-in", 9, 9);
             break;
 
           case ZoomOutMode:
-            cursor = QCursor (octave::resource_manager::icon ("figure-zoom-out")
-                              .pixmap (22, 22), 9, 9);
+            cursor = make_cursor ("figure-zoom-out", 9, 9);
             break;
 
           default: