*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->HP-UX 11i man pages -> XmRedisplayWidget (3)              
Title
Content
Arch
Section
 

Contents


 XmRedisplayWidget(library call)             XmRedisplayWidget(library call)




 NAME    [Toc]    [Back]
      XmRedisplayWidget - Synchronously activates the expose method of a
      widget to draw its content

 SYNOPSIS    [Toc]    [Back]
      #include <Xm/Xm.h>
      voidXmRedisplayWidget(
      Widgetwidget);

 DESCRIPTION    [Toc]    [Back]
      This function is a convenience routine that hides the details of the
      Xt internals to the application programmer by calling the expose
      method of the given widget with a well formed Expose event and Region
      corresponding to the total area of the widget. If the widget doesn't
      have an Expose method, the function does nothing.

      This is primarily used in the context of X Printing if the programming
      model chosen by the application is synchronous; that is, it doesn't
      rely of X Print events for the driving of page layout but wants to
      completely control the sequence of rendering requests.

      XmRedisplayWidget doesn't clear the widget window prior to calling the
      expose method, since this is handled by calls to XpStartPage .

      widget    The widget to redisplay.

 RETURN VALUE    [Toc]    [Back]
      None.

 ERRORS/WARNINGS
      Not applicable

 EXAMPLES    [Toc]    [Back]
      In the following, a simple application wants to print the content of a
      multi-page text widget (similar to dtpad).

      PrintOKCallback(print_dialog...)
      /*-------------*/
      {
          pshell = XmPrintSetup (print_dialog, pbs->print_screen,
                                         "Print", NULL, 0);

          XpStartJob(XtDisplay(pshell), XPSpool);

          /**** here I realize the shell, get its size, create my widget
           hierarchy: a bulletin board, and then a text widget,
           that I stuff with the video text widget buffer */

          /* get the total number of pages to print */
          XtVaGetValues(ptext, XmNrows, &prows,
                               XmNtotalLines, n_lines, NULL);



                                    - 1 -       Formatted:  January 24, 2005






 XmRedisplayWidget(library call)             XmRedisplayWidget(library call)




          n_pages = n_lines / prows;

          /***** now print the pages in a loop */

          for (cur_page=0; cur_page != n_pages; cur_page++) {

                     XpStartPage(XtDisplay(pshell), XtWindow(pshell), False);
                     XmRedisplayWidget(ptext);  /* do the drawing */
                     XpEndPage(XtDisplay(pshell));

              XmTextScroll(ptext, prows);  /* get ready for next page */
          }

          /***** I'm done */
          XpEndJob(XtDisplay(pshell));

      }

      Of course, one could change the above code to include it in a fork()
      branch so that the main program is not blocked while printing is going
      on. Another way to achieve a "print-in-the-background" effect is to
      use an Xt workproc. Using the same sample application, that gives us:

      Boolean
      PrintOnePageWP(XtPointer npages) /* workproc */
      /*-------------*/
      {
          static int cur_page = 0;
          cur_page++;

          XpStartPage(XtDisplay(pshell), XtWindow(pshell), False);
          XmRedisplayWidget(ptext);  /* do the drawing */
          XpEndPage(XtDisplay(pshell));

          XmTextScroll(ptext, prows);  /*  get ready for next page */

          if (cur_page == n_pages) { /***** I'm done */
              XpEndJob(XtDisplay(pshell));

              XtDestroyWidget(pshell);
              XtCloseDisplay(XtDisplay(pshell));
          }

          return (cur_page == n_pages);
      }

      PrintOKCallback(...)
      /*-------------*/
      {
          pshell = XmPrintSetup (widget, pbs->print_screen,
                                         "Print", NULL, 0);



                                    - 2 -       Formatted:  January 24, 2005






 XmRedisplayWidget(library call)             XmRedisplayWidget(library call)




          XpStartJob(XtDisplay(pshell), XPSpool);

          /**** here I get the size of the shell, create my widget
                hierarchy: a bulletin board, and then a text widget,
                        that I stuff with the video text widget buffer */

          /* get the total number of pages to print */
          /* ... same code as above example */

          /***** print the pages in the background */
          XtAppAddWorkProc(app_context, PrintOnePageWP, n_pages);
      }

 SEE ALSO    [Toc]    [Back]
      XmPrintSetup(3), XmPrintShell(3)


                                    - 3 -       Formatted:  January 24, 2005
[ Back ]
      
      
 Similar pages
Name OS Title
drawfochlt IRIX draw the traversal highlight ring for a widget
sigwait OpenBSD synchronously accept a signal
sigwaitinfo HP-UX synchronously accept a signal
sigtimedwait HP-UX synchronously accept a signal
sigwait HP-UX synchronously accept a signal
XmActivateProtocol IRIX A VendorShell function that activates a protocol
XmActivateProtocol HP-UX A VendorShell function that activates a protocol
XmActivateProtocol Tru64 A VendorShell function that activates a protocol
XmImCloseXIM HP-UX An input manager function that releases the input method associated with a specified widget
XmImGetXIM HP-UX An input manager function that retrieves the input method associated with a specified widget
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service