home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / listings / v_08_02 / 8n02029a < prev    next >
Text File  |  1990-03-01  |  2KB  |  101 lines

  1. LISTING 3
  2.  
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <Mrm/MrmAppl.h>
  6.  
  7. void    s_error();
  8. void    set_window_title();
  9. void    GPcallback();
  10.  
  11. extern    void    new_buffer();
  12. extern    void    load_file();
  13. extern    void    save_file();
  14. extern    void    saveas_file();
  15. extern    void    exit_editor();
  16. extern    void    create_text_widget();
  17.  
  18. MrmHierarchy    s_MrmHierarchy;
  19. char        *vec[] = {"editor.uid"};
  20.  
  21. MRMRegisterArg    regvec[] = {
  22.             {"GPcallback", (caddr_t)GPcallback},
  23.             {"new_buffer", (caddr_t)new_buffer},
  24.             {"load_file", (caddr_t)load_file},
  25.             {"save_file", (caddr_t)save_file},
  26.             {"saveas_file", (caddr_t)saveas_file},
  27.             {"exit_editor", (caddr_t)exit_editor},
  28.             {"create_text_widget", (caddr_t)create_text_widget},
  29.         };
  30. MrmCount    regnum = sizeof(regvec) / sizeof(MRMRegisterArg);
  31.  
  32. #define    MAX_TITLE_LEN    128
  33. char    wintitle[MAX_TITLE_LEN];
  34.  
  35. Widget    toplevel;
  36.  
  37. void
  38. main(argc, argv)
  39.     int    argc;
  40.     char    *argv[];
  41. {
  42.     Widget    editormain;
  43.     char    *charptr;
  44.     MrmCode    class;
  45.  
  46.     MrmInitialize();
  47.     toplevel = XtInitialize("editor", "Editor", NULL, 0, &argc, argv);
  48.  
  49.     if (MrmOpenHierarchy(1, vec, NULL, &s_MrmHierarchy) != MrmSUCCESS)
  50.         s_error("can't open hierarchy");
  51.     if (MrmRegisterNames(regvec, regnum) != MrmSUCCESS)
  52.         s_error("can't register names");
  53.     if (MrmFetchWidget(s_MrmHierarchy, "editor_main",
  54.                    toplevel, &editormain, &class) != MrmSUCCESS)
  55.         s_error("can't fetch widget");
  56.  
  57.     XtManageChild(editormain);
  58.     XtRealizeWidget(toplevel);
  59.  
  60.     XFetchName(XtDisplay(toplevel), XtWindow(toplevel), &charptr);
  61.     strcpy(wintitle, charptr);
  62.     set_window_title("Untitled");
  63.  
  64.     XtMainLoop();
  65. }
  66.  
  67. void
  68. GPcallback(w, client_data, call_data)
  69.     Widget    w;
  70.     char *    client_data;
  71.     caddr_t    call_data;
  72. {
  73.     Widget dialogs;
  74.     MrmCode    class;
  75.  
  76.     if (MrmFetchWidget(s_MrmHierarchy, client_data, toplevel,
  77.                &dialogs, &class) != MrmSUCCESS)
  78.         s_error("can't fetch widget in GPcallback\n");
  79.     XtManageChild(dialogs);
  80. }
  81.  
  82. void
  83. set_window_title(s)
  84.     char *s;
  85. {
  86.     char    newtitle[MAX_TITLE_LEN];
  87.  
  88.     strcpy(newtitle, wintitle);
  89.     strcat(newtitle, " - ");
  90.     strcat(newtitle, s);
  91.     XStoreName(XtDisplay(toplevel), XtWindow(toplevel), newtitle);
  92. }
  93.  
  94. void
  95. s_error(s)
  96.     char *s;
  97. {
  98.     printf("%s\n", s);
  99.     exit(1);
  100. }
  101.