Home > Store

Desktop KornShell Graphical Programming

Register your product to gain access to bonus material or receive a coupon.

Desktop KornShell Graphical Programming

Book

  • Sorry, this book is no longer in print.
Not for Sale

Description

  • Copyright 1995
  • Edition: 1st
  • Book
  • ISBN-10: 0-201-63375-2
  • ISBN-13: 978-0-201-63375-7

The creator of Desktop KornShell (dtksh) details how to use the worldwide standard scripting language for creating Motif applications. As a part of the Common Desktop Environment (CDE), a uniform graphical user interface environment adopted by all the major UNIX companies including Sun, HP, IBM, DEC, and Novell, the Desktop KornShell is an essential tool for all serious UNIX programmers.

This book provides you with a quick introduction to graphical programming and teaches you everything you need to know to create elegant, consistent graphical user interfaces using Desktop KornShell. Written by the creator of the original Desktop KornShell code, this definitive book includes an X Windows tutorial, a comprehensive reference, and a library of useful examples for building your graphical applications.

You will learn the fundamentals of the X Window System, graphical programming concepts, and how to use the X interfaces to program the Desktop KornShell. There are more than 140 programming examples, each demonstrating a particular graphical programming technique; they are also available on Addison-Wesley's ftp site (ftp.aw.com). Also included is a real-life application developed throughout the course of the book to illustrate such interface elements as context-sensitive help, cascading menus, forms, window manager interactions and icon bars.



0201633752B04062001

Downloads

Source Code

Click below for Source Code related to this title:
Source code

Sample Content

Table of Contents

Figures.
Tables.
Program Listings.
Preface.
Chapter 1. Introduction.
What Is the Desktop KornShell?
Applications Suitable for DTKSH.
Relationship to Other Tools.
Graphical Builder Tools.
Desktop KornShell History.

I. X PROGRAMMING TUTORIAL.


2. X Window Basics.
The Nature of X.
The Ingredients of an X Program.
Your First X Program.
Steps of an X Program.
Resource Commands.
More About Callbacks.
Widget States.

Chapter 3. Motif Widget Taxonomy.
Primitive Widgets.
Gadgets.
Composite Widgets.
Manager Widgets.

Chapter 4. The Standard Main Window.
Checkbook Application Requirements.
Creating the MainWindow Widget.
Creating the MenuBar and Pulldown Menus.
Adding the Work and Message Areas.
Setting the MainWindow Areas.
Scaffolding.
The Real Thing.

Chapter 5. The Standard Dialogs.
General Dialog Concepts.
The Message Dialogs.
The SelectionDialog.
The FileSelectionDialog.
The PromptDialog.
Next Steps.

Chapter 6. Prompting Using Custom Dialogs.
The Two-Column Dialog.
Prompting for Text.
Prompting for Integers.
Prompting for Real Numbers and Money.
Prompting for Dates.
Prompting for Yes/No Values.
Prompting for Multiple Choices.
The ENTER Key in TextFields.
A Complete Example.
Validation.
The User Is Always Right.

Chapter 7. Help Me!
On Being Helpful.
Help File Structure.
The CDE Help Widgets.
Creating Help Volumes and Topics.
A Complete Volume Example.
Compiling the Help Volume.
Testing the Help Volume.
Tying Help into the Application.
Providing Help Using the F1 Key.
Providing Pointer Location Help.
The MainWindow Help Menu.

Chapter 8. Resources and Resource Files.
Using Resource Files.
A Simple Example.
More Complex Specifications.
Setting Resources Via Command Line Options.
Order of Resource Defaults.
The Dtksh Standard Resource File.
A Resource File for the Checkbook Program.

Chapter 9. Widget Layout Using Managers.
Manager Widget General Concepts.
Common Manager Widget Problems.
The RowColumn Widget.
The BulletinBoard Widget.
The PanedWindow Widget.
The Form Widget.
The ScrolledWindow Widget.
A Better Dialog for Checkbook Entry.
Multiple Screen Dialogs.

Chapter10. Providing Feedback During Long Callbacks.
General Concepts.
Changing the Pointer to a Busy Cursor.
Displaying a WorkingDialog.
Progress Indicators.
Following a Logfile.
Using WorkProcs to Break Up a Task.

Chapter 11. Decoration Widgets.
The Separator Widget.
The Label Widget and Gadget.
The Frame Widget. CHAPTER = Chapter 12. Button, Button.
The PushButton Widget and Gadget.
Creating a Button Bar 8 The ArrowButton Widget and Gadget.
The ToggleButton Widget and Gadget.
RadioButtons 8 CheckBoxes.
The DrawnButton Widget.

Chapter 13. Menu, Please.
PullDown Menus.
Advanced Uses of XUmenusystem.
Adding and Removing Menu Items.
Creating PulldownMenus Without Xumenusystem.
Tear-Off Menus.
Accelerators.
Option Menus.
Popup Menus.

Chapter 14. The Scale Widget.
Creating the Scale Widget.
Scale Widget Children.
Scale Callbacks.
Other Scale Widget Resources.
Scale Widget Pitfalls.

Chapter 15. The List Widget.
Creating List Widgets.
List Widget Selection Models.
Modifying the List Items.
Querying the List.
List Widget Callbacks.
Example: The Double List.
Limitations of the List Widget.

Chapter 16. Text and TextField Widgets.
General Features of Text Widgets.
Creating Text Widgets.
Text Widget Appearance Resources.
Text Widget Behavior Resources.
Modifying Text.
The Text Selection and Insertion Point.
Text Widget Command Example.
Searching for Text.
Changing the View.
Text Widget Callbacks.
Highlighting Areas of Text.
Limitations of the Text Widget.

II. ADVANCED PROGRAMMING. Chapter 17. Traditional X Commands.

Command Mapping General Concepts.
Exceptions for Convenience
Resource Mappings.
Call Data Variables.
Event Handlers.
Translations.

Chapter 18. Xlib: Low-Level Graphics.
Xlib General Concepts.
Widgets Used for Drawing.
Drawing Points.
Drawing Lines.
Drawing Rectangles.
Drawing Polygons.
Drawing Circles and Arcs.
Drawing Strings.
Copying and Clearing Areas.
Details, Details.

Chapter 19. Events, Translations, Etc.
General Concepts.
Using Translations.
Event Handlers.
Window Manager Protocols.
Input Handlers.
Timers.

Chapter 20. The Workspace Manager.
Workspace General Concepts.
Querying the Workspace Manager.
Modifying Occupied Workspaces.
Other Workspace Commands.
Common Mistakes.
Workspace Example.

Chapter 21. The Session Manager.
Session Manager General Concepts.
Registering Interest with the Session Manager.
Saving State.
Restoring State.
A Complete Example.
Debugging Considerations.

Chapter 22. Message Catalogs.
Message Catalog General Concepts.
Creating Message Catalogs.
Using Catalogs in a Program.
Using Internationalized String Notation.
Other Considerations.

Chapter 23. Attaching C Code.
Shared Library General Concepts.
Compilation on Different Operating Systems.
Creating New Dtksh Built-in Commands.
Accessing the KornShell Environment.
Using X from Attached Code.
Attached Code Caveats and Pitfalls.
Registering New Widgets.

Chapter 24. Nongraphical Interfaces.
The Action/Invocation Mechanism.
The Data Type Database.
Tooltalk.

III. UTILITIES AND APPLICATIONS.


25. Checkbook Application.
Techniques Illustrated.
Source Code.

Chapter 26. Stock Chart Display.
Techniques Illustrated.
Source Code.

Chapter 27. The X Utilities.
Techniques Illustrated.
Source Code.

IV. REFERENCES.


KornShell Language Review.
Cast of Characters.
Basic Definitions.
Comments.
Command Execution.
Variables.
Conditional Statements.
The Case Statement.
Looping Statements.
Redirection After Compound Commands.
Functions.
Aliases.
Other Built-in Commands.

Chapter 29. KornShell Style Guide.
Comment Conventions.
Sections of the Program.
Function Layout.
Variable Naming Conventions.
Indentation.
Quoting Conventions.

Chapter 30. KornShell Editing Reference.
Emacs Editing Commands.
Miscellaneous.
Vi Editing Commands.

Chapter 31. KornShell Command Reference.
Command Summary.
Alphabetical List of Commands.

Chapter 32. Desktop KornShell Built-in Commands.
Obtaining More Information.
Symbolic Parameters.
Alphabetical List of Commands.

Chapter 33. XU Library Reference.
Simple Aliases.
Widget Creation Commands.
Alphabetical List of Functions.

Chapter 34. Motif Widget Reference.
Standard Sections.
The ApplicationShell Widget.
The Composite Class.
The Constraint Class.
The Core Class.
The ArrowButton Widget and Gadget.
The BulletinBoard Widget.
The BulletinBoardDialog.
The CascadeButton Widget and Gadget.
The CheckBox Widget.
The Command Widget.
The DialogShell Widget.
The DrawingArea Widget.
The DrawnButton Widget.
The FileSelectionBox Widget.
The FileSelectionDialog Widget.
The Form Widget.
The Frame Widget.
The Gadget Class.
The Label Widget and Gadget.
The List Widget.
The MainWindow Widget.
The Manager Class.
The MenuShell Widget.
The MessageBox Widget.
The PanedWindow Widget.
The Primitive Class.
The PushButton Widget and Gadget.
The RowColumn Widget.
The Scale Widget.
The ScrollBar Widget.
The ScrolledWindow Widget.
The SelectionBox Widget.
The Separator Widget and Gadget.
The TextField Widget.
The Text Widget.
The ToggleButton Widget and Gadget.

Appendixes.
Bibliography.
Index. 0201633752T04062001

Preface

In early 1991, I wrote the first prototypes of a tool that would eventually evolve into the Desktop KornShell (dtksh for short). After a year or so I thought I was finished, having written a couple of versions of the tool itself, some manual page entries, and seven example programs. Then people started using the tool, and I learned a harsh reality: writing the tool itself is only a small fraction of the work. Writing manual page entries for every language feature is not enough either - that limits your audience to people who like reading manual pages, a dying breed. Writing a short tutorial gets you a little farther - now there will be a handful of people who can muddle through, but they won't be very happy.

What one has to do is write examples that cover virtually every feature in the language and also write a comprehensive tutorial. Undertaking such a project requires that one talk to many dtksh users to find out what they had trouble learning, and for what purposes they are using dtksh, and understanding the most common problems they are likely to encounter. Well, here it is!

Book Organization

Chapter 1 provides an introduction to Desktop KornShell, explaining typical uses, comparing it with other tools, and providing a glimpse into how the language works. Chapters 2 through 34 are organized into four major parts:

Part I: X Programming Tutorial
This part assumes you know nothing about X programming; it teaches you to use dtksh with a simplified set of programming utilities that is available free on the Internet (details are given later in this preface). This part of the book is meant to be read in chapter order; concepts build on each other in tutorial fashion.

Part II: Advanced Programming
This part goes deeper into X programming with dtksh. It uses the traditional X interfaces instead of the simplified utilities of Part I. Some chapters in this part assume you are a C language programmer, some chapters assume you are an expert X programmer. The presumed knowledge level is stated in the introduction to each chapter. You can skip around in this section; the ordering of most chapters is unimportant.

Part III: Utilities and Applications
Several larger programs are presented in this part of the book. Each chapter begins with an overview of the requirements of the application. Strategies to implement the requirements are discussed. Finally, the complete dtksh code that implements the application is presented.

Part IV: Reference
This part of the book contains chapters that are meant mainly as reference materials. Many of the chapters in this part are not meant to be read page for page; they contain alphabetical summaries of commands and are meant to be used as a reference during program development. The first two chapters are an exception: Chapter 28, KornShell Language Review, and Chapter 29, KornShell Style Guide. Those two chapters are tutorial in nature and contain information about the base KornShell language used for dtksh.

How to Use This Book

There are two main audiences for this book: experienced shell programmers who want to learn X graphics programming, and experienced C (or C++) language X programmers. The following sections outline the needs of these different types of readers and suggest ways to use this book to meet those needs.

Notice that I didn't mention people who know neither shell programming nor X. That was deliberate. No book can be all things to all people, and this one is no exception. Teaching shell programming from scratch is out of bounds for this book. That subject really requires a book of its own, and there are several excellent ones already out there (see the Bibliography). So, if you know absolutely nothing about shell programming, I advise you to start with a more basic tutorial before continuing here.

Experienced Shell Programmers

These people can write shell scripts in their sleep, but they may know little or nothing about X Window and Motif programming. They're often system administrators, integrators, or even sophisticated end users. They may need to learn KornShell features if they are primarily Bourne shell or csh programmers. Even if they are already familiar with KornShell, they probably need to learn the new KornShell-93 features since those are the latest innovations. They usually need a lot of tutorial information on graphics programming. Finally, they want examples - lots of examples.

Readers who are knowledgeable in some shell other than KornShell should carefully study Chapter 28, KornShell Language Review. KornShell is syntactically different from csh, and has many extensions beyond Bourne shell.

Readers who are KornShell programmers should still scan Chapter 28, KornShell Language Review, looking for the KornShell-93 New Feature symbol shown here. It denotes parts of the KornShell language that are new with the latest version (on which dtksh is based). Some of these features are highly useful for graphics programming. Chapter 31, KornShell Command Reference, also uses this icon to highlight commands that are new or changed in KornShell-93.

The shell-knowledgeable reader should then read the X and Motif tutorial chapters (in Part I). These chapters do not assume any prior X experience and should be absorbed carefully. If possible, a system with dtksh installed should be nearby so the reader can experiment with the example programs. Nothing can substitute for hands-on experience when learning graphics programming. The example programs can be obtained over the Internet, so you don't have to type them in (see later section on Obtaining the Example Programs).

A first-time X programmer can skip Part II on first reading. These chapters contain advanced material and sometimes assume the reader is X and C literate.

Experienced X Programmers

These people usually know how to write shell scripts too, but they may not be used to thinking of the shell language as a powerful graphical programming language. They might need some refresher material on shell programming. They don't need tutorials on basic X terminology or concepts, but they do need to know how X Window functions were mapped into the dtksh language from the C language, and they need to know what features in X are not currently supported by dtksh. And they too want examples - lots of examples.

These readers should study Chapter 28, KornShell Language Review, especially if they are not experts in shell programming or use a shell other than KornShell. If they are very fond of the traditional X function names and arguments, such readers should probably skip right over Part I of this book (which presents a simplified interface) and proceed to Part II. Part II begins with Chapter 17, Traditional X Commands, which is a summary of how the X functions are provided by dtksh.

Typeface Conventions

This book follows these typeface conventions:

  • A computer typeface font is used in the programming examples. In the main body of text, this font is also used to denote dtksh functions, built-in commands, and other programming elements.

  • A computer typeface italic font is used to denote parts of a command that the programmer can choose. Words using this font are merely placeholders; the programmer would not type them in literally. For example, the following specification

    typeset options variable=value

    indicates that typeset and = are literal strings, whereas options, variable, and value are symbolic and could vary. Also note the usual use of brackets to indicate optional items in syntax summaries.

Other Conventions

References to books in the Bibliography are presented in brackets, and give the last names of each author and the year. The Bibliography at the end of the book lists entries alphabetically by first author. For example:

See Bolsky and Korn 1995 for more details on KornShell programming.

Technical and historical notes, parenthetical remarks, and anecdotes are presented using an indented paragraph in a small typeface. For example:

The main body of the text presents tutorial material; there are times, however, when technical fine points need to be presented for completeness. Instead of using footnotes, this book uses an indented, small-font paragraph for these items. You can skip them if you are not interested in such details.

Obtaining the Example Programs

Most readers want examples because that's the easiest way to learn. This book has literally hundreds of examples to satisfy this need. Some examples are short - perhaps only one or two lines - and some span several pages. But whether short or long, each one is included to illustrate directly and concretely a point made nearby in the main text.

The tutorial chapters (Part I) illustrate every Motif graphical object with one or more example programs. The chapters in Part III contain several longer examples that show commonly used techniques for combining several graphical objects.

You can obtain the source code for all these examples without cost if you have access to the Internet. Just use the ftp program to contact the Addison-Wesley anonymous file server as follows:

  • ftp to the machine aw.com

  • Log in as anonymous. Give your email address as the password.

  • Change to the directory containing information about this book:
    cd /aw.prof.computing.series/pend.dtksh

  • Prepare for binary transmission:
    binary

  • Execute the command:
    mget examples.tar.Z

  • Use quit to exit ftp. You are now back at the UNIX shell prompt.

  • Use the UNIX uncompress command on the file:
    uncompress examples.tar.Z

  • Use the UNIX tar command to unpack the directory:
    tar xfv examples.tar

After following this procedure, you will have a directory called dtksh.examples. See the README file in that directory for further instructions.

If you do not understand how to use the ftp program or the other programs mentioned, ask your system administrator for help or consult UNIX documentation.

A Note on Examples

Every figure and program listing in this book that references an example program contains the name of that program; in this way you can easily figure out which program to run as you follow the text. Before running examples in Part I of this book, you need to set and export the environment variable XUTILDIR to be a full path to the dtksh.examples directory you unpacked. For example, if you unpacked the tar file in your $HOME directory, then you would do the following:
XUTILDIR=$HOME/dtksh.examples
export XUTILDIR

Acknowledgments

This book was a massive effort, requiring the same amount of time to write as the gestational period of the woolly mammoth. Coincidentally, the weight of a newborn woolly mammoth is approximately the same as the weight of the paper used to print the dozens of drafts of this book, which were tirelessly and thoroughly reviewed by many dedicated professionals. Without their help, this project would long since have become extinct.

Foremost, I must give credit to my wife Victoria. Besides having to put up with a husband who set up an entire computer center in the kitchen for 17 months (including two computers, a laser printer, and a dozen thick reference manuals strewn on every available horizontal surface), she provided me with constant support and encouragement.

David Korn, inventor of the KornShell, was instrumental in making dtksh a reality. He was amazingly responsive to requests for features and changes to the KornShell-93 architecture, many of which were directly for the benefit of dtksh. In addition, he answered many questions about KornShell architecture and provided me with valuable comments on this book, as well as prerelease versions of his own book on KornShell-93 Bolsky and Korn 1995. David also introduced me to John Wait at Addison-Wesley, who, it turns out, was the ideal editor for this work.

Betty Dall, lead engineer of the Common Desktop Environment Motif toolkit subsystem, provided insightful comments on the early versions of this manuscript and invaluable technical advice. In addition, she wrote and formatted most of Chapter 34, Motif Widget Reference, when my wrists (and wits!) started to give out near the end of this project.

David L. Beckedorf, of DLB Research, Inc., was one of the most thorough reviewers I have ever come across. His suggestions ranged from pure grammatical corrections, to fine points of word usage, to highly technical suggestions about X Window System programming. David is a multitalented individual, to be sure.

Bill Baker, of Novell, Inc., tested every single one of the more than 100 example programs to make sure they did what I claimed they did.

Other very useful comments were provided by Louis Iacona, Hok Chun Lee, Terri Laird, Steve Humphrey, Steve Zwaska, Joe Veach, Donald McMinds, Hao Wei Liu, Eric Wallengren, and Ming Gao.

The people at Addison-Wesley were terrific. John Wait took a chance on a new author and patiently answered my frequent questions about how to go about producing this book. His assistant, Kathleen Duff, was quick to offer assistance and support when I needed a fax, overnight delivery, or a contact for advice. Mike Hendrickson kept me on schedule and approved my weird production requests (Bookmark ribbons in the spine? Michelangelo cover art? No problem!). Marty Rabinowitz and the other folks in the production department offered sage advice on formatting. Lorretta Palagi and Hope Steele did a great job copy editing, and W. Richard Stevens provided advice culled from his vast writing experience.

I was fortunate indeed to find this group of talented people willing to spend so much time helping me produce this work. Any errors are, of course, solely my responsibility.

Readers are encouraged to send any suggestions or comments for future revisions of this work to me using electronic mail at the address shown below.

J. Stephen Pendergrast, Jr.
stevepe@aw.com.

May 1995



0201633752P04062001

Updates

Submit Errata

More Information

InformIT Promotional Mailings & Special Offers

I would like to receive exclusive offers and hear about products from InformIT and its family of brands. I can unsubscribe at any time.

Overview


Pearson Education, Inc., 221 River Street, Hoboken, New Jersey 07030, (Pearson) presents this site to provide information about products and services that can be purchased through this site.

This privacy notice provides an overview of our commitment to privacy and describes how we collect, protect, use and share personal information collected through this site. Please note that other Pearson websites and online products and services have their own separate privacy policies.

Collection and Use of Information


To conduct business and deliver products and services, Pearson collects and uses personal information in several ways in connection with this site, including:

Questions and Inquiries

For inquiries and questions, we collect the inquiry or question, together with name, contact details (email address, phone number and mailing address) and any other additional information voluntarily submitted to us through a Contact Us form or an email. We use this information to address the inquiry and respond to the question.

Online Store

For orders and purchases placed through our online store on this site, we collect order details, name, institution name and address (if applicable), email address, phone number, shipping and billing addresses, credit/debit card information, shipping options and any instructions. We use this information to complete transactions, fulfill orders, communicate with individuals placing orders or visiting the online store, and for related purposes.

Surveys

Pearson may offer opportunities to provide feedback or participate in surveys, including surveys evaluating Pearson products, services or sites. Participation is voluntary. Pearson collects information requested in the survey questions and uses the information to evaluate, support, maintain and improve products, services or sites, develop new products and services, conduct educational research and for other purposes specified in the survey.

Contests and Drawings

Occasionally, we may sponsor a contest or drawing. Participation is optional. Pearson collects name, contact information and other information specified on the entry form for the contest or drawing to conduct the contest or drawing. Pearson may collect additional personal information from the winners of a contest or drawing in order to award the prize and for tax reporting purposes, as required by law.

Newsletters

If you have elected to receive email newsletters or promotional mailings and special offers but want to unsubscribe, simply email information@informit.com.

Service Announcements

On rare occasions it is necessary to send out a strictly service related announcement. For instance, if our service is temporarily suspended for maintenance we might send users an email. Generally, users may not opt-out of these communications, though they can deactivate their account information. However, these communications are not promotional in nature.

Customer Service

We communicate with users on a regular basis to provide requested services and in regard to issues relating to their account we reply via email or phone in accordance with the users' wishes when a user submits their information through our Contact Us form.

Other Collection and Use of Information


Application and System Logs

Pearson automatically collects log data to help ensure the delivery, availability and security of this site. Log data may include technical information about how a user or visitor connected to this site, such as browser type, type of computer/device, operating system, internet service provider and IP address. We use this information for support purposes and to monitor the health of the site, identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents and appropriately scale computing resources.

Web Analytics

Pearson may use third party web trend analytical services, including Google Analytics, to collect visitor information, such as IP addresses, browser types, referring pages, pages visited and time spent on a particular site. While these analytical services collect and report information on an anonymous basis, they may use cookies to gather web trend information. The information gathered may enable Pearson (but not the third party web trend services) to link information with application and system log data. Pearson uses this information for system administration and to identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents, appropriately scale computing resources and otherwise support and deliver this site and its services.

Cookies and Related Technologies

This site uses cookies and similar technologies to personalize content, measure traffic patterns, control security, track use and access of information on this site, and provide interest-based messages and advertising. Users can manage and block the use of cookies through their browser. Disabling or blocking certain cookies may limit the functionality of this site.

Do Not Track

This site currently does not respond to Do Not Track signals.

Security


Pearson uses appropriate physical, administrative and technical security measures to protect personal information from unauthorized access, use and disclosure.

Children


This site is not directed to children under the age of 13.

Marketing


Pearson may send or direct marketing communications to users, provided that

  • Pearson will not use personal information collected or processed as a K-12 school service provider for the purpose of directed or targeted advertising.
  • Such marketing is consistent with applicable law and Pearson's legal obligations.
  • Pearson will not knowingly direct or send marketing communications to an individual who has expressed a preference not to receive marketing.
  • Where required by applicable law, express or implied consent to marketing exists and has not been withdrawn.

Pearson may provide personal information to a third party service provider on a restricted basis to provide marketing solely on behalf of Pearson or an affiliate or customer for whom Pearson is a service provider. Marketing preferences may be changed at any time.

Correcting/Updating Personal Information


If a user's personally identifiable information changes (such as your postal address or email address), we provide a way to correct or update that user's personal data provided to us. This can be done on the Account page. If a user no longer desires our service and desires to delete his or her account, please contact us at customer-service@informit.com and we will process the deletion of a user's account.

Choice/Opt-out


Users can always make an informed choice as to whether they should proceed with certain services offered by InformIT. If you choose to remove yourself from our mailing list(s) simply visit the following page and uncheck any communication you no longer want to receive: www.informit.com/u.aspx.

Sale of Personal Information


Pearson does not rent or sell personal information in exchange for any payment of money.

While Pearson does not sell personal information, as defined in Nevada law, Nevada residents may email a request for no sale of their personal information to NevadaDesignatedRequest@pearson.com.

Supplemental Privacy Statement for California Residents


California residents should read our Supplemental privacy statement for California residents in conjunction with this Privacy Notice. The Supplemental privacy statement for California residents explains Pearson's commitment to comply with California law and applies to personal information of California residents collected in connection with this site and the Services.

Sharing and Disclosure


Pearson may disclose personal information, as follows:

  • As required by law.
  • With the consent of the individual (or their parent, if the individual is a minor)
  • In response to a subpoena, court order or legal process, to the extent permitted or required by law
  • To protect the security and safety of individuals, data, assets and systems, consistent with applicable law
  • In connection the sale, joint venture or other transfer of some or all of its company or assets, subject to the provisions of this Privacy Notice
  • To investigate or address actual or suspected fraud or other illegal activities
  • To exercise its legal rights, including enforcement of the Terms of Use for this site or another contract
  • To affiliated Pearson companies and other companies and organizations who perform work for Pearson and are obligated to protect the privacy of personal information consistent with this Privacy Notice
  • To a school, organization, company or government agency, where Pearson collects or processes the personal information in a school setting or on behalf of such organization, company or government agency.

Links


This web site contains links to other sites. Please be aware that we are not responsible for the privacy practices of such other sites. We encourage our users to be aware when they leave our site and to read the privacy statements of each and every web site that collects Personal Information. This privacy statement applies solely to information collected by this web site.

Requests and Contact


Please contact us about this Privacy Notice or if you have any requests or questions relating to the privacy of your personal information.

Changes to this Privacy Notice


We may revise this Privacy Notice through an updated posting. We will identify the effective date of the revision in the posting. Often, updates are made to provide greater clarity or to comply with changes in regulatory requirements. If the updates involve material changes to the collection, protection, use or disclosure of Personal Information, Pearson will provide notice of the change through a conspicuous notice on this site or other appropriate way. Continued use of the site after the effective date of a posted revision evidences acceptance. Please contact us if you have questions or concerns about the Privacy Notice or any objection to any revisions.

Last Update: November 17, 2020