home *** CD-ROM | disk | FTP | other *** search
- /*
- * schedule.c : The schedule editor window
- *
- * $Id: schedule.c,v 1.1 90/11/07 11:23:13 ferguson Exp $
- */
- #include <X11/Intrinsic.h>
- #include <X11/Shell.h>
- #include <X11/StringDefs.h>
- #include <X11/Xaw/Form.h>
- #include <X11/Xaw/Command.h>
- #include <X11/Xaw/Cardinals.h>
- #include "widgets.h"
- #include "month.h"
- #include "day.h"
- #include "db.h"
- #include "date-strings.h"
-
- extern int appointsChanged;
-
- /*
- * Functions defined in this file
- */
- void createPopupSchedule();
- static void dismissSchedProc(), applySchedProc();
-
- /*
- * Data defined in this file
- */
- static Widget schedulePopupShell;
- static DayFormData *scheduleDayFormDatas[7];
- static void dismissSchedProc(),applySchedProc();
-
- /* - - - - - - - - */
-
- void
- createPopupSchedule()
- {
- Widget form,dismiss,apply,w;
- Arg args[1];
- int dow,i;
- char *s;
-
- schedulePopupShell = XtCreatePopupShell("schedulePopupShell",
- topLevelShellWidgetClass,toplevel,NULL,ZERO);
- form = XtCreateManagedWidget("popupForm",formWidgetClass,schedulePopupShell,
- NULL,ZERO);
- dismiss = XtCreateManagedWidget("dismissSchedButton",commandWidgetClass,
- form,NULL,ZERO);
- apply = XtCreateManagedWidget("applySchedButton",commandWidgetClass,form,
- NULL,ZERO);
- XtAddCallback(dismiss,"callback",dismissSchedProc,NULL);
- XtAddCallback(apply,"callback",applySchedProc,NULL);
- w = NULL;
- for (dow=0; dow < 7; dow++) {
- scheduleDayFormDatas[dow] = createDayFormData(form);
- XtSetArg(args[0],XtNfromHoriz,w);
- XtSetValues(scheduleDayFormDatas[dow]->form,args,ONE);
- XtSetArg(args[0],XtNlabel,longDayStr[dow]);
- XtSetValues(scheduleDayFormDatas[dow]->date,args,ONE);
- w = scheduleDayFormDatas[dow]->form;
- for (i=0; i < 22; i++)
- if ((s=lookupScheduleDow(i,dow)) != NULL) {
- XtSetArg(args[0],XtNstring,s);
- XtSetValues(scheduleDayFormDatas[dow]->items[i]->text,args,ONE);
- }
- }
- XtPopup(schedulePopupShell,XtGrabNone);
- }
-
- static void
- dismissSchedProc(w,client_data,call_data)
- Widget w;
- caddr_t client_data,call_data;
- {
- XtPopdown(schedulePopupShell);
- XtDestroyWidget(schedulePopupShell);
- }
-
- static void
- applySchedProc(w,client_data,call_data)
- Widget w;
- caddr_t client_data,call_data;
- {
- Arg args[1];
- char *new,*old;
- int dow,i;
-
- XtSetArg(args[0],XtNstring,&new);
- for (dow=0; dow < 7; dow++)
- for (i=0; i < 22; i++) {
- XtGetValues(scheduleDayFormDatas[dow]->items[i]->text,args,ONE);
- old = lookupScheduleDow(i,dow);
- if (new != old) {
- if (*new == '\0')
- deleteScheduleDow(i,dow,new);
- else
- addScheduleDow(i,dow,new);
- appointsChanged = True;
- }
- }
- /* refresh display */
- }
-