/* Copyright (c) 1998 Alexander Yukhimets. All rights reserved. */
#include"axyftp.h"
#include"utils.h"
#include"multi.h"
#include"functions.h"
#include"dirlist.h"
#include"dirname.h"
#include"little_dialogs.h"
#include"buttonbar.h"
#ifdef BUILD_GTK
#include<gtk/gtk.h>
void activate_cb(GtkWidget* w){
char* strlabel;
gtk_label_get(GTK_LABEL(GTK_BUTTON(w)->child),&strlabel);
if(strcmp(strlabel,"connect")==0){
gtk_widget_show(appdata.session);
gtk_grab_add(appdata.session);
} else if(strcmp(strlabel,"help")==0){
show_help(1);
} else if(strcmp(strlabel,"logWnd")==0){
show_log();
} else if(strcmp(strlabel,"about")==0){
gtk_widget_show(appdata.about);
} else if(strcmp(strlabel,"exit")==0){
exit(0);
} else if(strcmp(strlabel,"options")==0){
gtk_widget_show(appdata.options);
gtk_grab_add(appdata.options);
} else if(strcmp(strlabel,"disconnect")==0){
if(!appdata.job){
busy_cursor(TRUE);
process_events();
appdata.job=2;
end_session();
clear_dirlist(appdata.remote.table);
clear_dirname(appdata.remote.combo);
gtk_entry_set_text(GTK_ENTRY(appdata.remote.text),"");
gtk_label_set(GTK_LABEL(GTK_BUTTON(w)->child),"connect");
busy_cursor(FALSE);
appdata.job=0;
}
} else if(strcmp(strlabel,"cancel")==0){
if(appdata.job)appdata.interrupt=1;
if(appdata.jump_on_cancel){
siglongjmp(jmp_down_env,1);
}
}
}
GtkWidget* create_buttonbar(GtkWidget* parent){
GtkWidget *buttonbar;
GtkWidget *connect,*cancel,*logwnd,*help,*options,*about,*exit;
buttonbar=gtk_hbox_new(TRUE,0);
gtk_widget_show(buttonbar);
connect=gtk_button_new_with_label("connect");
gtk_box_pack_start(GTK_BOX(buttonbar),connect,TRUE,TRUE,0);
gtk_widget_show(connect);
gtk_widget_set_usize(connect,0,gtkfontheight*1.5);
gtk_signal_connect(GTK_OBJECT(connect),"clicked",
GTK_SIGNAL_FUNC(activate_cb),NULL);
appdata.conbutton=connect;
cancel=gtk_button_new_with_label("cancel");
gtk_box_pack_start(GTK_BOX(buttonbar),cancel,TRUE,TRUE,0);
gtk_widget_show(cancel);
gtk_widget_set_usize(cancel,0,gtkfontheight*1.5);
gtk_signal_connect(GTK_OBJECT(cancel),"clicked",
GTK_SIGNAL_FUNC(activate_cb),NULL);
logwnd=gtk_button_new_with_label("logWnd");
gtk_box_pack_start(GTK_BOX(buttonbar),logwnd,TRUE,TRUE,0);
gtk_widget_show(logwnd);
gtk_widget_set_usize(logwnd,0,gtkfontheight*1.5);
gtk_signal_connect(GTK_OBJECT(logwnd),"clicked",
GTK_SIGNAL_FUNC(activate_cb),NULL);
help=gtk_button_new_with_label("help");
gtk_box_pack_start(GTK_BOX(buttonbar),help,TRUE,TRUE,0);
gtk_widget_show(help);
gtk_widget_set_usize(help,0,gtkfontheight*1.5);
gtk_signal_connect(GTK_OBJECT(help),"clicked",
GTK_SIGNAL_FUNC(activate_cb),NULL);
options=gtk_button_new_with_label("options");
gtk_box_pack_start(GTK_BOX(buttonbar),options,TRUE,TRUE,0);
gtk_widget_show(options);
gtk_widget_set_usize(options,0,gtkfontheight*1.5);
gtk_signal_connect(GTK_OBJECT(options),"clicked",
GTK_SIGNAL_FUNC(activate_cb),NULL);
about=gtk_button_new_with_label("about");
gtk_box_pack_start(GTK_BOX(buttonbar),about,TRUE,TRUE,0);
gtk_widget_show(about);
gtk_widget_set_usize(about,0,gtkfontheight*1.5);
gtk_signal_connect(GTK_OBJECT(about),"clicked",
GTK_SIGNAL_FUNC(activate_cb),NULL);
exit=gtk_button_new_with_label("exit");
gtk_box_pack_start(GTK_BOX(buttonbar),exit,TRUE,TRUE,0);
gtk_widget_show(exit);
gtk_widget_set_usize(exit,0,gtkfontheight*1.5);
gtk_signal_connect(GTK_OBJECT(exit),"clicked",
GTK_SIGNAL_FUNC(activate_cb),NULL);
return buttonbar;
}
#elif defined BUILD_MOTIF
#include<Xm/Xm.h>
#include<Xm/Form.h>
#include<Xm/PushB.h>
#include<Xm/TextF.h>
void activate_cb(Widget,XtPointer,XtPointer);
void activate_cb(Widget w,XtPointer app,XtPointer call){
XmPushButtonCallbackStruct *cbs;
XmString xmlabel;
char* strlabel;
cbs=(XmPushButtonCallbackStruct*)call;
XtVaGetValues(w,XmNlabelString,&xmlabel,NULL);
if(XmStringGetLtoR(xmlabel,XmFONTLIST_DEFAULT_TAG,&strlabel)){
if(strcmp(strlabel,"connect")==0){
XtManageChild(appdata.session);
} else if(strcmp(strlabel,"help")==0){
show_help(1);
} else if(strcmp(strlabel,"logWnd")==0){
show_log();
} else if(strcmp(strlabel,"about")==0){
XtManageChild(appdata.about);
} else if(strcmp(strlabel,"exit")==0){
exit(0);
} else if(strcmp(strlabel,"options")==0){
XtManageChild(appdata.options);
} else if(strcmp(strlabel,"disconnect")==0){
XmString l;
if(!appdata.job){
busy_cursor(True);
process_events();
appdata.job=2;
end_session();
clear_dirlist(appdata.remote.table);
clear_dirname(appdata.remote.combo);
XmTextFieldSetString(appdata.remote.text,"");
l=XmStringCreateLocalized("connect");
XtVaSetValues(w,XmNlabelString,l,NULL);
XmStringFree(l);
busy_cursor(False);
appdata.job=0;
}
} else if(strcmp(strlabel,"cancel")==0){
if(appdata.job)appdata.interrupt=1;
if(appdata.jump_on_cancel){
siglongjmp(jmp_down_env,1);
}
}
XtFree(strlabel);
}
}
Widget create_buttonbar(Widget parent){
Arg args[10];
Cardinal n;
Widget buttonbar;
Widget connect,cancel,logwnd,help,options,about,exit;
XmString label;
Dimension height;
n=0;
XtSetArg(args[n],XmNfractionBase,7);n++;
buttonbar=XmCreateForm(parent,"buttonbar",args,n);
XtManageChild(buttonbar);
n=0;
label=XmStringCreateLocalized("connect");
XtSetArg(args[n],XmNhighlightThickness,0);n++;
XtSetArg(args[n],XmNfillOnArm,False);n++;
XtSetArg(args[n],XmNlabelString,label);n++;
XtSetArg(args[n],XmNtopAttachment,XmATTACH_FORM);n++;
XtSetArg(args[n],XmNbottomAttachment,XmATTACH_FORM);n++;
XtSetArg(args[n],XmNleftAttachment,XmATTACH_FORM);n++;
XtSetArg(args[n],XmNrightAttachment,XmATTACH_POSITION);n++;
XtSetArg(args[n],XmNrightPosition,1);n++;
connect=XmCreatePushButton(buttonbar,"connect",args,n);
XtManageChild(connect);XmStringFree(label);
XtAddCallback(connect,XmNactivateCallback,activate_cb,NULL);
XtVaGetValues(connect,XmNheight,&height,NULL);
height=height*7/8;
XtVaSetValues(connect,XmNheight,height,NULL);
n=0;
label=XmStringCreateLocalized("cancel");
XtSetArg(args[n],XmNhighlightThickness,0);n++;
XtSetArg(args[n],XmNfillOnArm,False);n++;
XtSetArg(args[n],XmNheight,height);n++;
XtSetArg(args[n],XmNlabelString,label);n++;
XtSetArg(args[n],XmNtopAttachment,XmATTACH_FORM);n++;
XtSetArg(args[n],XmNbottomAttachment,XmATTACH_FORM);n++;
XtSetArg(args[n],XmNleftAttachment,XmATTACH_WIDGET);n++;
XtSetArg(args[n],XmNleftWidget,connect);n++;
XtSetArg(args[n],XmNrightAttachment,XmATTACH_POSITION);n++;
XtSetArg(args[n],XmNrightPosition,2);n++;
cancel=XmCreatePushButton(buttonbar,"cancel",args,n);
XtManageChild(cancel);XmStringFree(label);
XtAddCallback(cancel,XmNactivateCallback,activate_cb,NULL);
n=0;
label=XmStringCreateLocalized("logWnd");
XtSetArg(args[n],XmNhighlightThickness,0);n++;
XtSetArg(args[n],XmNfillOnArm,False);n++;
XtSetArg(args[n],XmNheight,height);n++;
XtSetArg(args[n],XmNlabelString,label);n++;
XtSetArg(args[n],XmNtopAttachment,XmATTACH_FORM);n++;
XtSetArg(args[n],XmNbottomAttachment,XmATTACH_FORM);n++;
XtSetArg(args[n],XmNleftAttachment,XmATTACH_WIDGET);n++;
XtSetArg(args[n],XmNleftWidget,cancel);n++;
XtSetArg(args[n],XmNrightAttachment,XmATTACH_POSITION);n++;
XtSetArg(args[n],XmNrightPosition,3);n++;
logwnd=XmCreatePushButton(buttonbar,"logWnd",args,n);
XtManageChild(logwnd);XmStringFree(label);
XtAddCallback(logwnd,XmNactivateCallback,activate_cb,NULL);
n=0;
label=XmStringCreateLocalized("help");
XtSetArg(args[n],XmNhighlightThickness,0);n++;
XtSetArg(args[n],XmNfillOnArm,False);n++;
XtSetArg(args[n],XmNheight,height);n++;
XtSetArg(args[n],XmNlabelString,label);n++;
XtSetArg(args[n],XmNtopAttachment,XmATTACH_FORM);n++;
XtSetArg(args[n],XmNbottomAttachment,XmATTACH_FORM);n++;
XtSetArg(args[n],XmNleftAttachment,XmATTACH_WIDGET);n++;
XtSetArg(args[n],XmNleftWidget,logwnd);n++;
XtSetArg(args[n],XmNrightAttachment,XmATTACH_POSITION);n++;
XtSetArg(args[n],XmNrightPosition,4);n++;
help=XmCreatePushButton(buttonbar,"help",args,n);
XtManageChild(help);XmStringFree(label);
XtAddCallback(help,XmNactivateCallback,activate_cb,NULL);
n=0;
label=XmStringCreateLocalized("options");
XtSetArg(args[n],XmNhighlightThickness,0);n++;
XtSetArg(args[n],XmNfillOnArm,False);n++;
XtSetArg(args[n],XmNheight,height);n++;
XtSetArg(args[n],XmNlabelString,label);n++;
XtSetArg(args[n],XmNtopAttachment,XmATTACH_FORM);n++;
XtSetArg(args[n],XmNbottomAttachment,XmATTACH_FORM);n++;
XtSetArg(args[n],XmNleftAttachment,XmATTACH_WIDGET);n++;
XtSetArg(args[n],XmNleftWidget,help);n++;
XtSetArg(args[n],XmNrightAttachment,XmATTACH_POSITION);n++;
XtSetArg(args[n],XmNrightPosition,5);n++;
options=XmCreatePushButton(buttonbar,"options",args,n);
XtManageChild(options);XmStringFree(label);
XtAddCallback(options,XmNactivateCallback,activate_cb,NULL);
n=0;
label=XmStringCreateLocalized("about");
XtSetArg(args[n],XmNhighlightThickness,0);n++;
XtSetArg(args[n],XmNfillOnArm,False);n++;
XtSetArg(args[n],XmNheight,height);n++;
XtSetArg(args[n],XmNlabelString,label);n++;
XtSetArg(args[n],XmNtopAttachment,XmATTACH_FORM);n++;
XtSetArg(args[n],XmNbottomAttachment,XmATTACH_FORM);n++;
XtSetArg(args[n],XmNleftAttachment,XmATTACH_WIDGET);n++;
XtSetArg(args[n],XmNleftWidget,options);n++;
XtSetArg(args[n],XmNrightAttachment,XmATTACH_POSITION);n++;
XtSetArg(args[n],XmNrightPosition,6);n++;
about=XmCreatePushButton(buttonbar,"about",args,n);
XtManageChild(about);XmStringFree(label);
XtAddCallback(about,XmNactivateCallback,activate_cb,NULL);
n=0;
label=XmStringCreateLocalized("exit");
XtSetArg(args[n],XmNhighlightThickness,0);n++;
XtSetArg(args[n],XmNfillOnArm,False);n++;
XtSetArg(args[n],XmNheight,height);n++;
XtSetArg(args[n],XmNlabelString,label);n++;
XtSetArg(args[n],XmNtopAttachment,XmATTACH_FORM);n++;
XtSetArg(args[n],XmNbottomAttachment,XmATTACH_FORM);n++;
XtSetArg(args[n],XmNleftAttachment,XmATTACH_WIDGET);n++;
XtSetArg(args[n],XmNleftWidget,about);n++;
XtSetArg(args[n],XmNrightAttachment,XmATTACH_FORM);n++;
exit=XmCreatePushButton(buttonbar,"cancel",args,n);
XtManageChild(exit);XmStringFree(label);
XtAddCallback(exit,XmNactivateCallback,activate_cb,NULL);
appdata.conbutton=connect;
return buttonbar;
}
#else
#error Either BUILD_GTK ot BUILD_MOTIF should be defined
#endif
syntax highlighted by Code2HTML, v. 0.9.1