summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBastian Wissler2009-07-23 15:37:08 +0200
committerBastian Wissler2009-07-23 15:37:08 +0200
commit51972107d096be71abc57b0227c5714d8b1dc813 (patch)
treea9c5923efb6f08802949d3e48e399586235ea2e4
parentvmchooser binary: (diff)
downloadvmchooser-51972107d096be71abc57b0227c5714d8b1dc813.tar.gz
vmchooser-51972107d096be71abc57b0227c5714d8b1dc813.tar.xz
vmchooser-51972107d096be71abc57b0227c5714d8b1dc813.zip
vmchooser binary:
* added an option to support selecting an image via command line "--default|-d" -> just specify a part of the display name (short_description). Attention: If you use this feature, it will disable the saved session feature git-svn-id: http://svn.openslx.org/svn/openslx/openslx-src-tools/vmchooser/trunk@3032 95ad53e4-c205-0410-b2fa-d234c58c8868
-rw-r--r--vmchooser/SWindow.cxx22
-rw-r--r--vmchooser/inc/SWindow.h24
-rw-r--r--vmchooser/main.cxx20
3 files changed, 48 insertions, 18 deletions
diff --git a/vmchooser/SWindow.cxx b/vmchooser/SWindow.cxx
index fedd762..fe7855c 100644
--- a/vmchooser/SWindow.cxx
+++ b/vmchooser/SWindow.cxx
@@ -35,7 +35,11 @@ SWindow::SWindow(int w, int h, char* p)
: fltk::Window(w,h,p),
go(w/3 + 10, h-40, (2*w)/3 - 20 , 30, "START"),
exit_btn(10, h-40, w/3 -10, 30, "EXIT"),
- sel(10,10, w-20, h-50)
+ sel(10,10, w-20, h-50),
+ ent(NULL),
+ entgroup(NULL),
+ lin_entgroup(NULL),
+ lin_ent(NULL)
{
// sel.indented(1);
begin();
@@ -199,7 +203,7 @@ void SWindow::free_entries()
* WARNING: this->ent and/or this->lin_ent
* has to assigned before WARNING
******************************************************/
-void SWindow::unfold_entries(bool lin_entries, bool vm_entries) {
+void SWindow::unfold_entries(bool lin_entries, bool vm_entries, char* defsession) {
int ind = 0;
if(lin_entries) {
sel.goto_index(ind);
@@ -226,6 +230,10 @@ void SWindow::unfold_entries(bool lin_entries, bool vm_entries) {
//sel.indented(false);
char* prename = readSession();
+ DataEntry* dp = NULL;
+ if(defsession) {
+ prename = defsession;
+ }
if ( prename == '\0' ) {
return;
} else {
@@ -233,7 +241,12 @@ void SWindow::unfold_entries(bool lin_entries, bool vm_entries) {
Item* it = (Item*) sel.next();
while( it ) {
- if(! strcmp(prename,it->label()) ) {
+ dp = (DataEntry*) it->user_data();
+ if(!dp) {
+ it = (Item*) sel.next();
+ continue;
+ }
+ if( dp->short_description.find(prename) != string::npos ) {
sel.select_only_this(0);
curr = it;
return;
@@ -294,7 +307,8 @@ const char** SWindow::get_symbol(DataEntry* dat) {
}
return linux_32_xpm;
}
- return xp_32_xpm;
+
+ return linux_32_xpm;
}
diff --git a/vmchooser/inc/SWindow.h b/vmchooser/inc/SWindow.h
index ad8b63e..845e72d 100644
--- a/vmchooser/inc/SWindow.h
+++ b/vmchooser/inc/SWindow.h
@@ -25,7 +25,7 @@ class SWindow : public fltk::Window {
private:
// ReturnButton to start the session
fltk::ReturnButton go;
-
+
// Button to exit
fltk::Button exit_btn;
@@ -43,13 +43,13 @@ private:
// Arrays with data from .xml and .desktop files
DataEntry** ent;
DataEntry** lin_ent;
-
-
+
+
int width;
int height;
-
-
-
+
+
+
/**
* ctor with some reasonable default values
@@ -62,8 +62,8 @@ public:
static SWindow instance(w,h);
return &instance;
}
-
-
+
+
int pathsize;
char* pname; /* Holds the current absolute path */
@@ -75,7 +75,7 @@ public:
static void cb_select(fltk::Widget*, void* w) {
((SWindow*)w)->cb_select();
};
-
+
static void cb_exit(fltk::Widget*, void* w) {
exit(0);
}
@@ -85,12 +85,12 @@ public:
void set_entries(DataEntry** ent);
void set_lin_entries(DataEntry** ent);
-
+
const char** get_symbol(DataEntry* dat);
void free_entries();
- void unfold_entries(bool,bool);
-
+ void unfold_entries(bool,bool,char* defsession=0);
+
void sort_entries();
};
diff --git a/vmchooser/main.cxx b/vmchooser/main.cxx
index 8e8b2ea..579e938 100644
--- a/vmchooser/main.cxx
+++ b/vmchooser/main.cxx
@@ -33,6 +33,7 @@ int main(int argc, char** argv) {
AnyOption* opt = new AnyOption();
char* xmlpath = NULL;
char* lsesspath = NULL;
+ char* dsession = NULL;
int width=0, height=0;
//opt->setVerbose();
@@ -40,6 +41,7 @@ int main(int argc, char** argv) {
opt->addUsage("");
opt->addUsage("SessionChooser Usage: vmchooser [OPTS|image.xml]");
+ opt->addUsage("\t{-d |--default=} name of session to select (part of)");
opt->addUsage("\t{-p |--path=} path to vmware (.xml) files");
opt->addUsage("\t{-l |--lpath=} path to linux session (.desktop) files");
opt->addUsage("\t{-s |--size=} [widthxheight]");
@@ -50,6 +52,7 @@ int main(int argc, char** argv) {
opt->setFlag("help",'h');
opt->setFlag("version",'v');
+ opt->setOption("default", 'd');
opt->setOption("path", 'p');
opt->setOption("lpath", 'l');
opt->setOption("size",'s');
@@ -87,6 +90,14 @@ int main(int argc, char** argv) {
}
+ if(opt->getValue('d')!=NULL) {
+ dsession = opt->getValue('d');
+ }
+
+ if(opt->getValue("default")!= NULL) {
+ dsession = opt->getValue("default");
+ }
+
if(opt->getValue('p')!=NULL) {
xmlpath = opt->getValue('p');
}
@@ -103,7 +114,7 @@ int main(int argc, char** argv) {
/* VERSION */
if(opt->getFlag('v') || opt->getFlag("version")) {
// just print out version information - helps testing
- cout << "virtual machine chooser 0.0.10"<< endl;
+ cout << "virtual machine chooser 0.0.11"<< endl;
delete opt;
return 0;
@@ -182,7 +193,12 @@ int main(int argc, char** argv) {
vm_entries = true;
}
- win.unfold_entries(lin_entries, vm_entries);
+ if(dsession) {
+ win.unfold_entries(lin_entries, vm_entries, dsession);
+ }
+ else {
+ win.unfold_entries(lin_entries, vm_entries);
+ }
win.show(); // argc,argv
win.border(false);
free(xmlpath);