libyui-gtk  2.44.9
YGPackageSelectorPluginStub.cc
1 /********************************************************************
2  * YaST2-GTK - http://en.opensuse.org/YaST2-GTK *
3  ********************************************************************/
4 
5 #include "YGUI.h"
6 #include "YGPackageSelectorPluginIf.h"
7 
8 #define PLUGIN_BASE_NAME "gtk-pkg"
9 #include <YPackageSelectorPlugin.h>
10 #include <YDialog.h>
11 #include <YEvent.h>
12 #include <string.h>
13 
14 class YGPackageSelectorPluginStub : public YPackageSelectorPlugin
15 {
17 
18 public:
20  : YPackageSelectorPlugin (PLUGIN_BASE_NAME)
21  {
22  if (success())
23  yuiMilestone() << "Loaded " << PLUGIN_BASE_NAME
24  << " plugin successfully from " << pluginLibFullPath() << std::endl;
25  impl = (YGPackageSelectorPluginIf *) locateSymbol ("PSP");
26  if (!impl)
27  yuiError() << "Plugin " << PLUGIN_BASE_NAME
28  << " does not provide PSP symbol" << std::endl;
29  }
30 
31  static YGPackageSelectorPluginStub *get()
32  {
33  static YGPackageSelectorPluginStub *plugin = 0;
34  if (!plugin)
35  // deliberately keep plugin open
36  plugin = new YGPackageSelectorPluginStub();
37  return plugin;
38  }
39 
40  virtual YPackageSelector *createPackageSelector (YWidget *parent, long modeFlags)
41  {
42  if (!impl)
43  YUI_THROW (YUIPluginException (PLUGIN_BASE_NAME));
44  return impl->createPackageSelector (parent, modeFlags);
45  }
46 
47  virtual YWidget *createPatternSelector (YWidget *parent, long modeFlags)
48  {
49  if (!impl)
50  YUI_THROW (YUIPluginException (PLUGIN_BASE_NAME));
51  return impl->createPatternSelector (parent, modeFlags);
52  }
53 
54  virtual YWidget *createSimplePatchSelector (YWidget *parent, long modeFlags)
55  {
56  if (!impl)
57  YUI_THROW (YUIPluginException (PLUGIN_BASE_NAME));
58  return impl->createSimplePatchSelector (parent, modeFlags);
59  }
60 };
61 
62 // YWidgetFactory
63 
64 YPackageSelector* YGWidgetFactory::createPackageSelector (YWidget* parent, long modeFlags)
65 {
66  YGPackageSelectorPluginStub *plugin = YGPackageSelectorPluginStub::get();
67  if (plugin)
68  return plugin->createPackageSelector (parent, modeFlags);
69  return NULL;
70 }
71 
72 // YOptionalWidgetFactory
73 
74 YWidget* YGOptionalWidgetFactory::createPatternSelector (YWidget* parent, long modeFlags)
75 {
76  YGPackageSelectorPluginStub *plugin = YGPackageSelectorPluginStub::get();
77  if (plugin)
78  return plugin->createPatternSelector (parent, modeFlags);
79  return NULL;
80 }
81 
82 YWidget* YGOptionalWidgetFactory::createSimplePatchSelector (YWidget* parent, long modeFlags)
83 {
84  YGPackageSelectorPluginStub *plugin = YGPackageSelectorPluginStub::get();
85  if (plugin)
86  return plugin->createSimplePatchSelector (parent, modeFlags);
87  return NULL;
88 }
89