/* Copyright (c) 1998 Alexander Yukhimets. All rights reserved. */
#include"axyftp.h"
#include"status.h"
#ifdef BUILD_GTK
#include<gtk/gtk.h>
void append_status(char* start){
int len;
if(start==NULL) return;
len=strlen(start);
if(len && start[--len]=='\r'){
start[len]='\n';
start[len+1]='\0';
}
if(len && start[--len]=='\r'){
start[len]='\n';
start[len+1]='\0';
}
gtk_text_set_point(GTK_TEXT(appdata.status),
gtk_text_get_length(GTK_TEXT(appdata.status)));
gtk_text_insert(GTK_TEXT(appdata.status),NULL,NULL,NULL,start,-1);
}
GtkWidget* create_status(GtkWidget *parent){
GtkWidget *statusb,*box,*text,*texta,*scroll;
GtkStyle *ns;
gint i;
statusb=gtk_frame_new(NULL);
gtk_frame_set_shadow_type(GTK_FRAME(statusb),GTK_SHADOW_ETCHED_OUT);
gtk_container_border_width(GTK_CONTAINER(statusb),3);
gtk_widget_show(statusb);
box=gtk_hbox_new(FALSE,2);
gtk_container_border_width(GTK_CONTAINER(box),6);
gtk_container_add(GTK_CONTAINER(statusb),box);
gtk_widget_show(box);
texta=gtk_alignment_new(0,0.5,1,0);
gtk_box_pack_start(GTK_BOX(box),texta,TRUE,TRUE,3);
gtk_widget_show(texta);
text=gtk_text_new(NULL,NULL);
appdata.status=text;
gtk_text_set_editable(GTK_TEXT(text),FALSE);
/*gtk_widget_set_sensitive(text,FALSE);*/
gtk_widget_set_usize(text,100,gtkfontheight*3+2);
gtk_container_add(GTK_CONTAINER(texta),text);
gtk_widget_show(text);
scroll=gtk_vscrollbar_new(GTK_TEXT(text)->vadj);
gtk_box_pack_end(GTK_BOX(box),scroll,FALSE,FALSE,3);
gtk_widget_show(scroll);
ns=style_full_copy(gtk_widget_get_style(text));
for(i=0;i<5;i++){
ns->base[i].pixel=ns->bg[GTK_STATE_NORMAL].pixel;
ns->base[i].red=ns->bg[GTK_STATE_NORMAL].red;
ns->base[i].green=ns->bg[GTK_STATE_NORMAL].green;
ns->base[i].blue=ns->bg[GTK_STATE_NORMAL].blue;
}
ns->klass->xthickness=0;
ns->klass->ythickness=0;
gtk_widget_set_style(text,ns);
return statusb;
}
#elif defined BUILD_MOTIF
#include<Xm/Xm.h>
#include<Xm/List.h>
#include<Xm/ScrolledW.h>
#include<Xm/Text.h>
#include<Xm/Label.h>
#include<Xm/Frame.h>
#include<string.h>
void append_status(char* start){
int len;
if(start==NULL) return;
len=strlen(start);
if(len && start[--len]=='\r'){
start[len]='\n';
start[len+1]='\0';
}
if(len && start[--len]=='\r'){
start[len]='\n';
start[len+1]='\0';
}
len=XmTextGetLastPosition(appdata.status);
XmTextInsert(appdata.status,len,start);
len+=strlen(start);
XmTextSetInsertionPosition(appdata.status,len);
XmTextShowPosition(appdata.status,len);
XmUpdateDisplay(toplevel);
return;
}
Widget create_status(Widget parent){
Arg args[10];
Cardinal n;
Widget status,text;
Pixel bg;
n=0;
XtSetArg(args[n],XmNshadowType,XmSHADOW_ETCHED_OUT);n++;
XtSetArg(args[n],XmNmarginWidth,3);n++;
XtSetArg(args[n],XmNmarginHeight,3);n++;
status=XmCreateFrame(parent,"_status",args,n);
XtManageChild(status);
XtVaGetValues(status,XmNbackground,&bg,NULL);
n=0;
XtSetArg(args[n],XmNchildType,XmFRAME_WORKAREA_CHILD);n++;
XtSetArg(args[n],XmNhighlightThickness,0);n++;
XtSetArg(args[n],XmNeditable,False);n++;
XtSetArg(args[n],XmNscrollHorizontal,False);n++;
XtSetArg(args[n],XmNcursorPositionVisible,False);n++;
XtSetArg(args[n],XmNeditMode,XmMULTI_LINE_EDIT);n++;
XtSetArg(args[n],XmNverifyBell,False);n++;
XtSetArg(args[n],XmNwordWrap,True);n++;
XtSetArg(args[n],XmNrows,3);n++;
text=XmCreateScrolledText(status,"status",args,n);
XtManageChild(text);
XtVaSetValues(text,XmNshadowThickness,0,XmNbackground,bg,NULL);
appdata.status=text;
return status;
}
#else
#error Either BUILD_GTK or BUILD_MOTIF should be defined
#endif
syntax highlighted by Code2HTML, v. 0.9.1