libyui
3.0.13
Main Page
Classes
Files
File List
All
Classes
Functions
Variables
Enumerations
Friends
YUILoader.h
1
/*
2
Copyright (C) 2000-2012 Novell, Inc
3
This library is free software; you can redistribute it and/or modify
4
it under the terms of the GNU Lesser General Public License as
5
published by the Free Software Foundation; either version 2.1 of the
6
License, or (at your option) version 3.0 of the License. This library
7
is distributed in the hope that it will be useful, but WITHOUT ANY
8
WARRANTY; without even the implied warranty of MERCHANTABILITY or
9
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
10
License for more details. You should have received a copy of the GNU
11
Lesser General Public License along with this library; if not, write
12
to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
13
Floor, Boston, MA 02110-1301 USA
14
*/
15
16
17
/*-/
18
19
File: YUILoader.h
20
21
Author: Stefan Hundhammer <sh@suse.de>
22
23
/-*/
24
25
26
#ifndef YUILoader_h
27
#define YUILoader_h
28
29
30
#include <string>
31
32
#include "YUI.h"
33
#include "YExternalWidgets.h"
34
35
36
37
#define YUIPlugin_Qt "qt"
38
#define YUIPlugin_NCurses "ncurses"
39
#define YUIPlugin_Gtk "gtk"
40
41
42
/**
43
* Class to load one of the concrete UI plug-ins: Qt, NCurses, Gtk.
44
**/
45
class
YUILoader
46
{
47
public
:
48
/**
49
* Load any of the available UI plug-ins in this order:
50
* - Qt if $DISPLAY is set
51
* - NCurses if stdout is a tty
52
**/
53
static
void
loadUI
(
bool
withThreads =
false
);
54
55
/**
56
* Load a UI plug-in. 'name' is one of the YUIPlugin_ -defines above.
57
*
58
* This might throw exceptions.
59
**/
60
static
void
loadPlugin
(
const
std::string & name,
bool
withThreads =
false
);
61
62
static
bool
pluginExists(
const
std::string & pluginBaseName );
63
64
/**
65
* Load the given External Widgets plugin followed by its graphical extension implementation
66
* in the following order in the same way as loadUI:
67
* - Qt, Gtk or NCurses
68
*
69
* 'name' is the user defined plugin name, graphical extension implementations have to
70
* be called 'name'-qt, 'name'-gtk and 'name'-ncurses. Following this rule plugin
71
* file names are as libyui-XX-YY.so.VER where:
72
* XX is the user defined name
73
* YY is the UI used (ncurses, gtk, qt)
74
* VER is the libyui so version
75
* 'symbol' is the function symbol to be loaded, e.g. YExternalWidgets* 'symbol'(void)
76
* (e.g. default YExternalWidgets* createExternalWidgets(const char *)
77
* see createEWFunction_t definition)
78
**/
79
static
void
loadExternalWidgets
(
const
std::string & name,
const
std::string & symbol=
"_Z21createExternalWidgetsPKc"
);
80
81
private
:
82
YUILoader
() {}
83
~
YUILoader
() {}
84
85
/**
86
* Used by loadExternalWidgets to load the graphical plugin specialization.
87
*
88
* 'name' is the original plugin name (e.g. the one passed to loadExternalWidgets)
89
* 'plugin_name' is the graphical plugin specialization name (e.g. 'name'-[gtk|ncurses|qt])
90
* 'symbol' is the function symbol to be loaded and executed (e.g. the one passed loadExternalWidgets)
91
* This might throw exceptions:
92
* YUIPluginException if the plugin has not been loaded
93
* specific exception can be thrown by funtion invoked (param symbol)
94
**/
95
static
void
loadExternalWidgetsPlugin(
const
std::string& name,
const
std::string& plugin_name,
const
std::string& symbol );
96
};
97
98
99
/**
100
* Every UI plug-in has to provide a function
101
*
102
* YUI * createUI( bool withThreads )
103
*
104
* that creates a UI of that specific type upon the first call and returns that
105
* singleton for all subsequent calls.
106
**/
107
typedef
YUI
* (*createUIFunction_t)( bool );
108
109
/**
110
* Every WE extension plug-in has to provide a function
111
*
112
* YExternalWidgets * createWE( )
113
*
114
* that creates a WE of that specific type upon the first call and returns that
115
* singleton for all subsequent calls.
116
**/
117
typedef
YExternalWidgets
* (*createEWFunction_t)(
const
char
* );
118
119
#endif // YUILoader_h
src
YUILoader.h
Generated by
1.8.3.1