/* Copyright (c) 1998 Alexander Yukhimets. All rights reserved. */
#include<string.h>
#include<stdio.h>
#include"axyftp.h"
#include"utils.h"
char* WXnewstring(char* orig){
char* ret;
if(orig==NULL)return NULL;
if((ret=strdup(orig))==NULL){
perror("AxY FTP");
exit(1);
}
return ret;
}
#ifdef BUILD_GTK
#include<gtk/gtk.h>
void WXsetLabel(WXwidget label,char* string){
gtk_label_set(GTK_LABEL(label),string);
}
void beep(){
gdk_beep();
}
void busy_cursor(int busy){
GdkCursor* cursor;
if(busy){
cursor=gdk_cursor_new(GDK_WATCH);
gdk_window_set_cursor((toplevel->window),cursor);
gdk_cursor_destroy(cursor);
} else {
cursor=gdk_cursor_new(GDK_TOP_LEFT_ARROW);
gdk_window_set_cursor((toplevel->window),cursor);
gdk_cursor_destroy(cursor);
}
}
void process_events(){
while (gtk_events_pending())gtk_main_iteration ();
}
GtkWidget* WXnameToWidget(GtkWidget* w,char* name){
GList *ch;
GtkWidget *ret;
if(strcmp(name,gtk_widget_get_name(w))==0) return w;
if(!GTK_IS_CONTAINER(w)) return NULL;
ch=gtk_container_children(GTK_CONTAINER(w));
while(ch!=NULL){
if((ret=WXnameToWidget(GTK_WIDGET(ch->data),name))!=NULL){
g_list_free(ch);
return ret;
} else {
ch=g_list_remove_link(ch,ch);
}
}
return NULL;
}
#elif defined BUILD_MOTIF
#include<Xm/Xm.h>
#include<X11/cursorfont.h>
void WXsetLabel(WXwidget label,char* string){
XmString xms;
xms=XmStringCreateLocalized(string);
XtVaSetValues(label,XmNlabelString,xms,NULL);
XmStringFree(xms);
}
void beep(){
XBell(XtDisplay(toplevel),100);
}
void busy_cursor(int busy){
Cursor cursor;
XSetWindowAttributes at;
if(busy){
cursor=XCreateFontCursor(XtDisplay(toplevel),XC_watch);
at.cursor=cursor;
} else {
at.cursor=None;
}
XChangeWindowAttributes(XtDisplay(toplevel),XtWindow(toplevel),CWCursor,&at);
XFlush(XtDisplay(toplevel));
}
void process_events(){
XEvent e;
/* XFlush(XtDisplay(toplevel));*/
XmUpdateDisplay(toplevel);
while(XEventsQueued(XtDisplay(toplevel),QueuedAfterFlush)){
XNextEvent(XtDisplay(toplevel),&e);
XtDispatchEvent(&e);
}
/* while(XCheckMaskEvent(XtDisplay(toplevel), ButtonPressMask |
ButtonReleaseMask | ButtonMotionMask |
PointerMotionMask | KeyPressMask, &e)){
XtDispatchEvent(&e);
}
*/
}
#else
#error Either BUILD_GTK or BUILD_MOTIF should be defined
#endif
syntax highlighted by Code2HTML, v. 0.9.1