Author: gs
Date: Wed May 30 14:58:15 2007
New Revision: 38207
URL: http://svn.opensuse.org/viewcvs/yast?rev=38207&view=rev
Log:
add NCPackageSelectorPlugin
Added:
trunk/ncurses/src/NCPackageSelectorPlugin.cc
trunk/ncurses/src/NCPackageSelectorPlugin.h
Added: trunk/ncurses/src/NCPackageSelectorPlugin.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ncurses/src/NCPackageSelectorPlugin.cc?rev=38207&view=auto
==============================================================================
--- trunk/ncurses/src/NCPackageSelectorPlugin.cc (added)
+++ trunk/ncurses/src/NCPackageSelectorPlugin.cc Wed May 30 14:58:15 2007
@@ -0,0 +1,187 @@
+/*---------------------------------------------------------------------\
+| |
+| __ __ ____ _____ ____ |
+| \ \ / /_ _/ ___|_ _|___ \ |
+| \ V / _` \___ \ | | __) | |
+| | | (_| |___) || | / __/ |
+| |_|\__,_|____/ |_| |_____| |
+| |
+| core system |
+| (c) SuSE Linux AG |
+\----------------------------------------------------------------------/
+
+ File: NCPackageSelectorPlugin.cc
+
+ Author: Gabriele Mohr
+
+
+/-*/
+
+#include "NCPackageSelectorPlugin.h"
+
+#include
+#include "NCPackageSelectorStart.h"
+#include "NCPkgTable.h"
+
+#define y2log_component "ncurses-ui"
+
+#define PLUGIN_BASE_NAME "ncurses_pkg"
+
+
+NCPackageSelectorPlugin::NCPackageSelectorPlugin()
+ : YPackageSelectorPlugin( PLUGIN_BASE_NAME )
+{
+ if ( success() )
+ {
+ y2milestone( "Loaded %s plugin successfully from %s",
+ PLUGIN_BASE_NAME, pluginLibFullPath().c_str() );
+ }
+}
+
+
+NCPackageSelectorPlugin::~NCPackageSelectorPlugin()
+{
+ // NOP
+}
+
+///////////////////////////////////////////////////////////////////
+//
+//
+// METHOD NAME : NCPackageSelectorPlugin::createPackageSelector
+// METHOD TYPE : YWidget
+//
+// DESCRIPTION : Create NCPackageSelectorStart which reads the layout
+// term of the package selection dialog, creates the widget
+// tree and creates the NCPackageSelector.
+//
+YWidget * NCPackageSelectorPlugin::createPackageSelector( YWidget * parent,
+ YWidgetOpt & opt )
+{
+ YWidget * w = 0;
+ try
+ {
+ w = new NCPackageSelectorStart ( dynamic_cast(parent), opt,
+ YD_HORIZ );
+ }
+ catch (const std::exception & e)
+ {
+ UIERR << "Caught a std::exception: " << e.what () << endl;
+ }
+ catch (...)
+ {
+ UIERR << "Caught an unspecified exception" << endl;
+ }
+ return w;
+}
+
+///////////////////////////////////////////////////////////////////
+//
+//
+// METHOD NAME : NCPackageSelectorPluign::createPkgSpecial
+// METHOD TYPE : YWidget
+//
+// DESCRIPTION : creates special widgets used for the package selection
+// dialog (which do not have a corresponding widget in qt-ui)
+//
+YWidget * NCPackageSelectorPlugin::createPkgSpecial( YWidget *parent,
+ YWidgetOpt &opt,
+ const YCPString &subwidget )
+{
+ YCPString pkgTable( "pkgTable" );
+
+ YWidget * w = 0;
+ if ( subwidget->compare( pkgTable ) == YO_EQUAL )
+ {
+ NCDBG << "Creating a NCPkgTable" << endl;
+ try
+ {
+ w = new NCPkgTable( dynamic_cast( parent ), opt );
+ }
+ catch (const std::exception & e)
+ {
+ UIERR << "Caught a std::exception: " << e.what () << endl;
+ }
+ catch (...)
+ {
+ UIERR << "Caught an unspecified exception" << endl;
+ }
+ }
+ else
+ {
+ NCERR << "PkgSpecial( " << subwidget->toString() << " ) not found - take default `Label" << endl;
+ w = new NCLabel( dynamic_cast( parent ), opt, subwidget );
+ }
+
+ return w;
+}
+
+///////////////////////////////////////////////////////////////////
+//
+//
+// METHOD NAME : NCPackageSelectorPLugin::runPkgSelection
+// METHOD TYPE : void
+//
+// DESCRIPTION : Implementation of UI builtin RunPkgSelection() which
+// has to be called after OpenDialog( `PackageSelector() ).
+//
+YCPValue NCPackageSelectorPlugin::runPkgSelection( YDialog * dialog,
+ YWidget * selector )
+{
+ NCPackageSelectorStart * ncSelector = 0;
+
+ if ( !dialog )
+ {
+ UIERR << "ERROR package selection: No dialog existing." << endl;
+ return YCPVoid();
+ }
+ if ( !selector )
+ {
+ UIERR << "ERROR package selection: No package selector existing." << endl;
+ return YCPVoid();
+ }
+
+ ncSelector = dynamic_cast( selector );
+
+ bool result = true;
+
+ // start event loop
+ NCursesEvent event = NCursesEvent::cancel;
+
+ if ( ncSelector )
+ {
+ try
+ {
+ ncSelector->showDefaultList();
+ NCDialog * ncd = static_cast( dialog );
+
+ do
+ {
+ event = ncd->userInput();
+ result = ncSelector->handleEvent( event );
+ NCDBG << "Result: " << (result?"true":"false") << endl;
+ }
+ while ( event != NCursesEvent::cancel && result == true );
+ }
+ catch (const std::exception & e)
+ {
+ UIERR << "Caught a std::exception: " << e.what () << endl;
+ }
+ catch (...)
+ {
+ UIERR << "Caught an unspecified exception" << endl;
+ }
+ }
+ else
+ {
+ UIERR << "No NCPackageSelectorStart existing" << endl;
+ }
+
+ if ( !event.result.isNull() )
+ {
+ UIMIL << "Return value: " << event.result->toString() << endl;
+ return event.result;
+ }
+ else
+ return YCPVoid();
+}
+
Added: trunk/ncurses/src/NCPackageSelectorPlugin.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ncurses/src/NCPackageSelectorPlugin.h?rev=38207&view=auto
==============================================================================
--- trunk/ncurses/src/NCPackageSelectorPlugin.h (added)
+++ trunk/ncurses/src/NCPackageSelectorPlugin.h Wed May 30 14:58:15 2007
@@ -0,0 +1,74 @@
+/*---------------------------------------------------------------------\
+| |
+| __ __ ____ _____ ____ |
+| \ \ / /_ _/ ___|_ _|___ \ |
+| \ V / _` \___ \ | | __) | |
+| | | (_| |___) || | / __/ |
+| |_|\__,_|____/ |_| |_____| |
+| |
+| core system |
+| (c) SuSE Linux AG |
+\----------------------------------------------------------------------/
+
+ File: NCPackageSelectorPlugin.h
+
+ Author: Gabriele Mohr
+
+/-*/
+
+// -*- c++ -*-
+
+#ifndef NCPackageSelectorPlugin_h
+#define NCPackageSelectorPlugin_h
+
+#include
+#include
+
+#include
+
+
+/**
+ * Simplified access to the ncurses UI's package selector plugin.
+ **/
+class NCPackageSelectorPlugin: public YPackageSelectorPlugin
+{
+public:
+
+ /**
+ * Constructor: Load the plugin library for the Qt package selector.
+ **/
+ NCPackageSelectorPlugin();
+
+ /**
+ * Destructor. Calls dlclose() which will unload the plugin library if it
+ * is no longer used, i.e. if the reference count dlopen() uses reaches 0.
+ **/
+ virtual ~NCPackageSelectorPlugin();
+
+ /**
+ * Create a package selector.
+ * Implemented from YPackageSelectorPlugin.
+ *
+ * This might return 0 if the plugin lib could not be loaded or if the
+ * appropriate symbol could not be located in the plugin lib.
+ **/
+ virtual YWidget * createPackageSelector( YWidget * parent,
+ YWidgetOpt & opt );
+
+ /**
+ * Fills the PackageSelector widget (runs the package selection).
+ */
+ virtual YCPValue runPkgSelection( YDialog *currentDialog,
+ YWidget * packageSelector );
+
+ /**
+ * Create a special widget
+ */
+ virtual YWidget * createPkgSpecial( YWidget *parent,
+ YWidgetOpt &opt,
+ const YCPString &subwidget );
+};
+
+
+
+#endif // NCPackageSelectorPlugin_h
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org