1. Field of the Invention
The present invention relates to a technique for controlling a user interface.
2. Description of the Related Art
To use a driver of a printing device, a user opens a graphical user interface (GUI) to set up print settings so that printing may be executed in a desired manner. The print settings may be set up using conventional controls (GUI components) such as buttons, comboboxes, radio buttons, and icons for enabling the user to check multiple print settings, for example. The controls are accommodated within a certain area (region). From the perspective of the user, the controls are displayed on a screen that accepts setup instructions.
The arrangement of such controls may be customized by an administrator or a general user. In this respect, a technique is known that involves conforming the size of all controls to a fixed size or an integer multiple thereof so that the controls may be seamlessly arranged (see e.g. Japanese Laid-Open Patent Publication No. 2009-169462).
In the conventional method of arranging the controls as described above, controls for each group of settings such as “Custom Settings” and “Detail Settings” are arranged within a confined area where the controls are allowed to be arranged.
Thus, although controls can be freely arranged within the confined area, because the controls are treated equally, arrangement properties cannot be individually assigned to the controls to distinguish between controls that are desirably fixed and controls that may be freely moved, for example. As a result, when controls are added or removed through customization or according to the specification of the printing device, for example, the arrangement of controls may become complicated, and a uniform user interface may not be achieved. Also, with respect to customizing the user interface according to preferences and characteristics of a particular user, changing the arrangement of all controls may not be necessary. That is, enabling partial changes to the arrangement of controls may often bring satisfaction to a variety of users without forcing each individual user to customize the user interface.
Further, when a user performs operations using a GUI, the user is unable to dynamically switch between displaying and not displaying a control arranged within a certain area, for example.
In light of the above, there is a demand for a technique for facilitating the arrangement of controls.
According to one embodiment of the present invention, an information processing program product including a computer-readable medium storing a program executable by a computer is provided, the program when executed causing the computer to implement the functions of a receiving unit configured to receive a screen display instruction to display a screen for accepting an instruction, an area information storage unit configured to store area information relating to a plurality of areas of the screen including at least one set of area information for each of the plurality of areas, a display information storage unit configured to store display information associated with each of the plurality of areas, and a display unit configured to display the screen based on the area information stored in the area information storage unit and the display information stored in the display information storage unit. The program further causes the computer to implement the functions of an association information storage unit configured to store a display switching instruction in association with corresponding area information of the area information stored in the area information storage unit, an acquisition unit configured to acquire the corresponding area information associated with the display switching instruction based on the association information when the display switching instruction is accepted via the screen displayed by the display unit, and a display control unit configured to switch display of the screen based on the corresponding area information acquired by the acquisition unit.
According to an aspect of the present invention, the arrangement of controls may be facilitated.
In the following, embodiments of the present invention are described with reference to the accompanying drawings. Note that although a printer driver is described below as an illustrative example, the present invention may be applied to any information processing program that enables a user to manipulate and configure settings through a user interface. Also, although a multifunction peripheral (MFP) is described below as an example of a peripheral device to be controlled, the present invention may be applied to control various other types of peripheral devices as well.
<System Configuration>
The input unit 21 may include a keyboard and mouse, for example, and is used to input various signals. The output unit 22 may include a display device, for example, and is used to display various windows and data. The drive unit 23 may be used to write information on the storage medium 24 or read information from the storage medium 24, for example. The storage medium 24 may be any of various types of storage media including a CD-ROM (Compact Disk Read Only Memory), a flexible disk, a magneto-optical disk, a ROM, and a semiconductor memory such as a flash memory, for example.
The secondary storage unit 25 is used to store files and data necessary for processing and may include a hard disk drive, for example. The main storage unit 26 is used as an information processing workspace to temporarily store programs and data. The main memory may include a semiconductor memory, for example. The processing unit 27 is used to perform various types of arithmetic processing and may include a CPU (Central Processing Unit), for example. The interface unit 28 may include a modem, a LAN card, or a USB interface (I/F), for example, and is used to establish connection with the peripheral device 3 via the network 4 or the data transmission line 5.
A printer driver is software for operating the peripheral device 3 from the information processing apparatus 2. The printer driver acts as an interface for enabling an OS (operating system) of the information processing apparatus 2 to control the peripheral device 3. The printer driver may be stored in the storage medium 24 and distributed or downloaded via the network 4, for example.
When the storage medium 24 storing the printer driver is loaded in the drive unit 23, the printer driver may be installed in the secondary storage unit 25 from the storage medium 24 via the drive unit 23. When the printer driver is downloaded from the network 4, the printer driver may be installed in the secondary storage unit 25 via the interface unit 28.
The main storage unit 26 reads the printer driver from the secondary storage unit 25 upon being started and stores the printer driver in the main storage unit 26. The processing unit 27 executes various processes described below according to the printer driver stored in the main storage unit 26.
The printer driver 203 includes an area configuration 204, a function plate configuration 205, an area switching table 206, and a user operation/configuration 207 as data to be used for processing. Also, the printer driver 203 includes an area arrangement unit 208, a display/non-display configuration unit 209, a function plate arrangement unit 210, a UI generation display unit 211, an area switching unit 212, and a user operation/configuration acquisition unit 213 as functional units. Note that in
The area configuration 204 describes (defines) the arrangement of areas in which function plates corresponding to various types of controls are arranged. Note that the area configuration 204 may be written as a separate section within the same file as the function plate configuration 205, or the area configuration 204 may be provided as a separate file.
The function plate configuration 205 describes (defines) the arrangement of the function plates within the areas. Note that a standard size for the function plate is determined so that a user interfaces for setting up functions may be uniformly arranged.
The area configuration 204 and the function plate configuration 205 may be customized by editing settings using a general-purpose editor or a dedicated editor, for example.
The area switching table 206 includes information associating various modes (area modes) relating to the display of areas of a user interface with identification information of the area configuration 204 and the function plate configuration 205 to be used for generating the user interface (e.g. path information if the corresponding configurations are distinguished by files). The modes may include a mode for enlarging one or more predetermined areas, a mode for diminishing one or more predetermined areas, a mode for displaying some areas and not displaying other areas, and a mode for changing an area to be displayed, for example.
The user operation/configuration 207 may hold information relating to operations on the user interface performed by the user or settings set up by the user. The user operation/configuration 207 also includes information on a current mode (area mode).
The area arrangement unit 208 reads the area configuration 204 and generates area information describing an arrangement of areas in a predetermined format.
The display/non-display configuration unit 209 generates display configuration information for each function plate. In a case where an area for displaying a function plate is not displayed, the display/non-display configuration unit 209 generates display configuration information for not displaying the function plate.
The function plate arrangement unit 210 reads the function plate configuration 205 and generates function plate information describing an arrangement of function plates within an area in a predetermined format. When a function plate is added to an area through customization by the user, for example, the function plate arrangement unit 210 arranges the added function plate within the area according to its display order. Also, the function plate arrangement unit 210 deletes function plates that cannot be set up owing to the status or specification of the peripheral device 3 being controlled. Further, depending on whether the relevant area is designated as an area to be optimized, the function plate arrangement unit 210 may optimize the arrangement of the function plates.
The UI generation display unit 211 actually generates and displays the controls based on the area information generated by area arrangement unit 208, the function plate information generated by the function plate arrangement unit 210, and the display configuration information generated by the display/non-display configuration unit 209.
In a case where the area configuration 204 includes a plurality of area configurations and a mode change is detected, the area switching unit 212 acquires a corresponding area configuration to be used to regenerate a user interface in response to the mode change based on the association information of the area switching table 206, and prompts the UI generation display unit 211 to regenerate the user interface and display the regenerated user interface. Note that the UI generation display unit 211 may regenerate the entire user interface based on the acquired area configuration or regenerate only a portion of the user interface that includes changes, for example.
The user operation/configuration acquisition unit 213 acquires operations on the user interface performed by the user or settings set up by the user and stores the operations or settings in the user operation/configuration 207.
<Information/Data>
The area configuration 204 and the function plate configuration 205 of the present embodiment correspond to resources in this respect. However, in the present embodiment, the area configuration 204 and the function plate configuration 205 corresponding to resources are not provided inside the program along with the source code, but are provided outside the program. That is, as illustrated in
Note that in a case where the area configuration may be switched according to different modes, the area configuration data may include multiple subsets of data. For example, the area configuration data for area B may include a data set for a large area mode and another data set for a small area mode.
Note that in a case where the function plate configuration 205 includes only one set of function plate configuration data as illustrated in
The area configuration data includes coordinate information indicating where and how an area is to be arranged on a screen. Note that one user interface may be built by preparing one set of area configuration data for each of the areas.
The function plate configuration data includes information on the functions to be arranged in a user interface, for example. Note that because a function plate is arranged within an area, the function plate cannot be arranged on a screen if its corresponding area is not arranged on the screen.
Note that although the area configuration data, and the function plate configuration data are divided into separate files in the examples of
The area configuration and the function plate configuration are typically written in a format having a hierarchical structure. Examples of formats having a hierarchical structure include XML and Lua. The area configuration and the function plate configuration may be read and distinguished from one another by parsing the file including the configuration data (i.e. analyzing text written according to a formal grammar and having a complicated structure). Note that the above format and logic for reading the area configuration and the function plate configuration may be implemented not only in the case where the area configuration data and the function plate configuration data are arranged in a single file but also where the data are arranged into separate files.
In the following, examples of user interfaces and examples of the area configuration and the function plate configuration are described.
In
The “expand” button is used by the user to input an instruction for expanding the area of the “Custom Setting List” (area B). However, it is undesirable to have the position of the “expand” button shifted when the area of the “Custom Setting List” is expanded. Accordingly, the area D is arranged in view of such preference to fix the position of the “expand” button. Also, the “Color/Black and white” list box and the “Copies” button are for setting up essential print settings as opposed to other optional print settings. Thus, it is undesirable to have the positions of these buttons shifted when controls are added or deleted as a result of customization or owing to the specification of the printing device, for example. Accordingly, the area D is arranged in view of such preference to fix the positions of the “Color/Black and white” list box and the “Copies” button. On the other hand, the elements in the area C including the “Job Type” list box, the “Details” button, the “Original Size” list box, the “Orientation” list box, and the “Printout Paper Size” are preferably rearranged (optimized) to improve their overall appearance when a control is added or removed, for example.
Note that many users use a number of predetermined combinations of print settings most of the time and rarely use new print settings. For such users, the area C of
“Type” describes the type of the object being described. This item specifies not only the area but also the type of function plate. Also, known control types such as combobox, listbox, and groupbox may be specified by this item. “Name” describes the name of an area or a function plate. “Params” describes where an area or a function plate is to be arranged and may include a position (x, y), an order, a width, and a height, for example.
Note that the “name” may also be used as an ID for obtaining a label to be displayed on the actual control. For example, assuming the name is “punch” (“Name”: “punch”) and a corresponding label is “” in Japanese and “Punch” in English, the name “punch” may be used as an ID to search a language file as illustrated in
<Operations>
In
In turn, the area arrangement unit 208 reads the area configuration 204 to generate area information describing an arrangement of an area in a predetermined format (step S2), and sends a response including the generated area information to the UI generation display unit 211 corresponding to the sender of the area information request (step S3).
Then, the UI generation display unit 211 sends a function plate information request to the function plate arrangement unit 210 (step S4).
In turn, the function plate arrangement unit 210 reads the function plate configuration 205 to generate function plate information describing an arrangement of a function plate within an area in a predetermined format (step S5), and sends a response including the generated function plate information to the UI generation display unit 211 (step S6).
Then, the UI generation display unit 211 passes the area information and the function plate information to the display/non-display configuration unit 209 and requests the display/non-display configuration unit 209 to make a display/non-display determination (step S7).
In turn, the display/non-display configuration unit 209 makes a display/non-display determination to generate display configuration information indicating the display/non-display determination result (step S8), and sends a response including the generated display configuration information to the UI generation display unit 211 (step S9).
Then, the UI generation display unit 211 generates a user interface based on the area information, the function plate information, and the display configuration information, and displays the generated user interface (step S10).
In
Then, the UI generation display unit 211 sends a request for display configuration information to the display/non-display determination unit to acquire the display configuration information determining the function plate to be displayed (step S14).
Then, the UI generation display unit 211 generates a user interface based on the display configuration information indicating the display/non-display determination result (step S15) and displays the generated user interface (step S16).
In
Then, the UI generation display unit 211 prompts the function plate arrangement unit 210 to arrange function plates based on the area information and the function plate information according to the “type” (step S24).
Then, the UI generation display unit 211 generates a user interface (step S25) and displays the generated user interface (step S26).
In the following, function plate arrangement operations of the function plate arrangement unit 210 (step S5 of
As described above,
When a function plate is removed, the display within the area C may be optimized accordingly (e.g. by adjusting the spacing of the function plates). That is, based on predetermined rules, the function plate arrangement unit 210 may determine whether the appearance of the corresponding area may be improved by moving the function plates and rearrange the function plates based on the determination result. Note that although the user may perceive the “Color/Black and white” list box and the “Copies” button as function plates belonging to the area C, these function plates belong to the area D and therefore do not move into the area C.
By allocating the function plates to multiple areas as described above, the positions of certain function plates may be fixed while the positions of certain other function plates may be optimized, for example. That is, by configuring function plates that are desirably fixed and function plates that are desirably optimized into separate areas, a flexible arrangement of the function plates may be enabled, for example.
In the following, exemplary process operations for optimizing the positions of function plates (controls) by adjusting the spacing of the function plates are described with reference to
In this case, the function plate arrangement unit 210 arranges the function plates from the upper left side according to their display order based on the value of the “order” described in the “params” of each function plate and according to the “width” and “height” of the function plates. For example, in a case where the second function plate (plate 2) is a control for setting up a punch function (“Punch”) and the peripheral device 3 does not include a finisher such that the punch function cannot be used, the second function plate (plate 2) has to be removed because this function plate cannot be used.
When the second function plate is removed, a space is created between the first plate (plate 1) and the third plate (plate 3) and user convenience may be compromised as a result. Accordingly, in the present example, the third plate (plate 3) is moved up to the position where the second plate (plate 2) was originally located. Similarly, the fourth plate (plate 4) is moved up to the position where the third plate was originally located. However, the display of a function plate having a long width such as the fifth plate (plate 5) may be cut off if it is placed at the position where the fourth function plate (plate 4) was originally located. This can be determined based on the width of the area H and the width and x-coordinate value of plate 5. Accordingly, when it is determined that a function plate cannot be moved based on a comparison of the width and height of the function plate and the width and height of a location to which the function plate is to be moved, the function plate is not moved.
In the present example, when the second function plate is removed, the third function plate and the fourth function plate are respectively moved up to where the second function plate and the third function plate were originally located, but the fifth function plate is not moved. Because the function plates have to be displayed according to their display order, when the fifth function plate is not moved, the sixth function plate and subsequent function plates are not moved either.
In the following, the display/non-display determination by the display/non-display configuration unit 209 (e.g. step S8 of
In the following, process operations by the area switching unit 212 are described.
In
The UI generation display unit 211 receiving the notification of the file paths performs the process steps illustrated in
As described above in connection with
The area arrangement unit 208 determines the position and size of the area B and lays out the area B accordingly. Note that because the area C is no longer displayed, the function plates arranged on the area C are not displayed. As a result of expanding the area B, the contents of the “Custom Setting List” included in the area B may be displayed across a wider area.
When the “collapse” button included in the area D of
According to an aspect of the present embodiment, the area display mode as illustrated in
Note that in the case where the “expand” button and the “collapse” button are used as in the above-described embodiment, the area mode may only be switched between two modes for displaying the screen as illustrated in
In the following, examples of switching user interfaces using external files are described with reference to
Administrators and general users have different objectives with respect to a printer driver. For example, from the standpoint of reducing TCO (total cost of ownership), administrators may wish to encourage users to use black and white printing because black and white printing is generally cheaper than color printing. Further, administrators may wish to encourage users to use functions such as double side printing and combining. On the other hand, general users often do not pay attention to print settings and may wish to be able to easily select the print settings set up by the administrator rather than selecting detailed settings themselves. In view of the above, in the present embodiment, areas are configured to enable switching between two types of user interfaces and optimizing the arrangement of functions. A first user interface of the two user interfaces may be configured to enable detailed setup of the printer driver to enable administrators to easily set up print settings such as black and white printing, double side printing, and combining, for example. A second user interface of the two user interfaces may omit screens displaying detailed print settings to enable users to easily select print settings set up by the administrators and enable designation of such print settings in one step, for example.
In a case where an IT (information technology) administrator wishes to have users select only essential functions in order to reduce the TCO, the IT (information technology) administrator may wish to switch configuration files according to the user, for example. As described above in connection with
In
The authority reading program 6 reads a corresponding configuration file based on its determination of the user authority and writes the corresponding configuration file as a UI configuration file. Each time a user interface is to be built, the printer driver 203 reads the UI configuration file, generates a user interface based on the read UI configuration file, and displays the generated user interface.
In
Each time a user interface is to be built, the printer driver 203 reads the admin/user switch information, reads the corresponding configuration file, generates a user interface based on the read configuration file, and displays the generated user interface.
In the following, an example in which the area configuration and the function plate configuration are provided outside the printer driver is described.
Printer drivers include the so-called “Point and Print” function that may be used in a server/client environment. For example, the Point and Print function may be used in the case of using a queue (mechanism for storing print jobs that have been generated) of a printer driver of a server at the client side. In this case, the Point and Print function copies only information inside the printer driver of the server to the client side. Accordingly, a mechanism is needed for enabling use of an area configuration file and a function plate configuration file provided outside the printer driver.
That is, because the Point and Print function is a mechanism for synchronizing a specific file and a registry identified as the printer driver at the server side with the client side, an external file (area configuration file, function plate configuration file) that is not provided within the printer driver may not be carried over to the client side by simply using the Point and Print function. As a result, the user interface may not be dynamically switched at the client side. Therefore, a special mechanism is desired at the client side.
Also, the printer driver 203 of the information processing apparatus 2 at the client side includes a configuration read/write unit 214 in addition to the area arrangement unit 208 and the function plate arrangement unit 210. Note that the area configuration 204 and the function plate configuration 205 are not held at the client side. When configuration data is written in a printer driver data 215 of the registry of the OS 202, the configuration read/write unit 214 of the printer driver 203 reads the configuration data. When configuration data is not written in the printer driver data 215 or the configuration read/write unit 214 is explicitly instructed to read some other area configuration and function plate configuration, the configuration read/write unit 214 reads and writes configuration data as instructed. The configuration read/write unit 214 may be implemented by adding a function of reading an external file in response to an explicit instruction to the device properties of the printer driver 203, for example.
The printer driver data 77 at the server side and the printer driver data 215 at the client side are synchronized by the Point and Print function. The configuration read/write unit 74 at the server side reads the area configuration 75 and the function plate configuration 76 and writes the read configuration data in the printer driver data 77 of the registry of the OS such that the contents of the printer driver data 77 may be synchronized with the printer driver data 215 at the client side. The configuration read/write unit 214 at the client side reads the contents of the printer driver data 215, and the area arrangement unit 208 and the function plate arrangement unit 210 respectively perform area arrangement and function plate arrangement according to the configuration data read by the configuration read/write unit 214. In this way, the user interface configuration data held outside the printer driver may be read and the user interface may be dynamically switched.
As described above, according to an aspect of the present embodiment, by allowing a plurality of areas to be arranged for a group of setting objects, customization of each area may be enabled, and the arrangement of multiple setting objects within one area may be dynamically switched in real time to thereby improve user convenience.
Although the present invention has been described above with reference to certain illustrative embodiments, the present invention is not limited to these embodiments, and numerous variations and modifications may be made without departing from the scope of the present invention.
Note that the user operation/configuration acquisition unit 213 of
The area configuration 204 of
The function plate configuration 205 of
The UI generation display unit 211 of
The area switching table 206 of
The area switching unit 212 of
The UI generation display unit 211 of
The present invention can be implemented in any convenient form, for example, using dedicated hardware, or a mixture of dedicated hardware and software. The present invention may be implemented as computer software implemented by one or more networked processing apparatuses. The network can comprise any conventional terrestrial or wireless communications network, such as the Internet. The processing apparatuses can comprise any suitably programmed apparatuses such as a general purpose computer, personal digital assistant, mobile telephone (such as a WAP or 3G-compliant phone) and so on. Since the present invention can be implemented as software, each and every aspect of the present invention thus encompasses computer software implementable on a programmable device. The computer software can be provided to the programmable device using any non-transitory storage medium for storing processor readable code such as a floppy disk, a hard disk, a CD ROM, a magnetic tape device or a solid state memory device. The non-transitory storage medium can comprise any computer-readable medium except for a transitory, propagating signal.
The hardware platform includes any desired hardware resources including, for example, a central processing unit (CPU), a random access memory (RAM), and a hard disk drive (HDD). The CPU may include processors of any desired type and number. The RAM may include any desired volatile or nonvolatile memory. The HDD may include any desired nonvolatile memory capable of recording a large amount of data. The hardware resources may further include an input device, an output device, and a network device in accordance with the type of the apparatus. The HDD may be provided external to the apparatus as long as the HDD is accessible from the apparatus. In this case, the CPU, for example, the cache memory of the CPU, and the RAM may operate as a physical memory or a primary memory of the apparatus, while the HDD may operate as a secondary memory of the apparatus.
The present application is based on and claims the benefit of priority of Japanese Patent Application No. 2013-192241 filed on Sep. 17, 2013, and Japanese Patent Application No. 2014-153608 filed on Jul. 29, 2014, the entire contents of which are hereby incorporated by reference.
Number | Date | Country | Kind |
---|---|---|---|
2013-192241 | Sep 2013 | JP | national |
2014-153608 | Jul 2014 | JP | national |