Changes

Jump to: navigation, search

GUI

18,581 bytes added, 15:07, 17 May 2018
Created page with "'''Home * User Interface * Graphical User Interface''' border|right|thumb| Mac Hack [[Lawrence J. Krakauer#DEC340|display <ref..."
'''[[Main Page|Home]] * [[User Interface]] * Graphical User Interface'''

[[File:machackdisplay02.jpg|border|right|thumb| Mac Hack [[Lawrence J. Krakauer#DEC340|display]] <ref>[http://ljkrakauer.com/LJK/60s/resign.htm I resign] by [[Lawrence J. Krakauer]]</ref> <ref>[http://ljkrakauer.com/LJK/60s/chess1.htm Chess stories] by [[Lawrence J. Krakauer]]</ref> <ref>see also [http://projects.csail.mit.edu/video/history/aifilms/63-chess.mp4 63-chess.mp4] hosted by [https://www.csail.mit.edu/ MIT CSAIL]</ref>]]
'''Graphical User Interface''' (GUI),
a user interface where [https://en.wikipedia.org/wiki/Interaction interaction] between user and a (chess) program takes place. Opposed to the sequential nature of a pure text based [[CLI|command-line interface]], where a program prints its output and prompts for input, a [https://en.wikipedia.org/wiki/Graphical_user_interface graphical user interface] allows a more sophisticated, graphical presentation of the programs output, as well within its [https://en.wikipedia.org/wiki/Event-driven_architecture event-driven architecture] a more flexible user interaction not only by typing text commands, but using a [https://en.wikipedia.org/wiki/Pointing_device pointingdevice], a [https://en.wikipedia.org/wiki/Mouse_%28computing%29 mouse] or a pen or finger pointing on and touching a [https://en.wikipedia.org/wiki/Graphics_tablet graphics tablet] with its [https://en.wikipedia.org/wiki/Touchscreen touchscreen], for random and [https://en.wikipedia.org/wiki/Direct_manipulation direct manipulation] of graphical elements. A GUI dedicated to play chess typically has a graphical [[Chessboard|board]] and [[Chess Game|game]] representation, where the user may [[Entering Moves|enter moves]] by [https://en.wikipedia.org/wiki/Point-and-click clicking] and [https://en.wikipedia.org/wiki/Drag-and-drop dragging] a piece, quite similar to moving a piece on a "real" chess board.

=Historical Chess GUI=
[[FILE:IDIIOMGUI.jpg|none|border|text-bottom|link=http://www.flickr.com/photos/10261668@N05/sets/72157600922175252/]]
[[Chris Daly]] interacting with [[Daly CP]], 1970 <ref>Picture dated November 14, 1970, [https://sites.google.com/site/caroluschess/modern-history/chess-in-space Chess in Space - NASA 1970 First Chess Experiments] from [https://sites.google.com/site/caroluschess/home Carolus Chess]</ref> <ref>[http://www.flickr.com/photos/10261668@N05/sets/72157600922175252/ 14.Unique Computers: Flickr] by [[Steve Blincoe|Chewbanta]]</ref> on an [[Kenneth L. King#IDIIOM|IDIIOM]] <ref>[http://dl.acm.org/author_page.cfm?id=81100488426&coll=DL&dl=ACM&trk=0&cfid=94733554&cftoken=96327999 Don Bissell] ('''1998'''). ''[http://www.computer.org/portal/web/csdl/doi/10.1109/85.667292 Was the IDIIOM the First Stand-Alone CAD Platform?]'' [https://en.wikipedia.org/wiki/IEEE_Annals_of_the_History_of_Computing IEEE Annals of the History of Computing], Vol. 20, No. 2</ref>

=Playing Chess=
The sequential nature of the [[Chess Game|game of chess]], along with the both fundamental states of a chess engine while playing a game, that is calculating a move and [[Pondering|pondering]], should be appropriately indicated by the GUI, for instance to allow the interaction of entering moves only for the opponent side while pondering. There may be other modes than pure game playing, for instance to replay and analyze a game, allowing the user to click and drag the moves of the [[Game Notation|game notation]] [[Move List|move list]], which needs appropriate indication and ergonomic control.

=MVC=
{{MVC to include}}

=Chess GUI Issues=
Today, most programmers rely on external event driven GUI applications using [https://en.wikipedia.org/wiki/Standard_streams standard streams] or [https://en.wikipedia.org/wiki/Pipeline_%28Unix%29 pipelines] to communicate with the GUI via [[Protocols|protocols]] such as the [[Chess Engine Communication Protocol]] or the [[UCI|Universal Chess Interface]]. The external GUI application constitutes the [https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC] view and controller, and more or less even parts of a (redundant) game model (or even multi-game model), to make the GUI aware of its own game states to even make decisions on behalf of the engine, such as move selection from opening books and [[Endgame Tablebases|endgame tablebases]], draw claims and offers and to finally declare the game over. These game interacting features of the external GUI application in conjunction with certain protocols such as UCI by far exceeds what a pure chess user interface was initially designed for - controller and view only, enter legal moves and render the state of the game. Sharing code of external GUIs, with potential game decisive move selection, time allocation and draw claiming, by multiple engines in official [[Tournaments|tournaments]] is a heavily discussed topic <ref>[http://www.talkchess.com/forum/viewtopic.php?t=21168 What's the role of the GUI?] by Zlatnik, [[CCC]], May 15, 2008</ref> .

=Front End=
Beside a pure user versus engine game playing interface, modern general purpose Chess GUIs implement features and modes for multiple engine tournament play, and can be used as [https://en.wikipedia.org/wiki/Front_and_back_ends front end] for [[Chess Server|chess server]] and [[Databases|chess database]] back ends.

=Chess GUIs=
* [[APwin]]
* [[Aquarium]]
* [[Arena]]
* [[Chess Academy]]
* [[Chess Assistant]]
* [[Chess for Android]]
* [[Chess for Glass]]
* [[ChessBase (Database)]]
* [[ChessGUI]]
* [[Chess King]]
* [[ChessPartner|ChessPartner GUI]]
* [[Chess Wizard (GUI)|Chess Wizard]]
* [[ChessX]]
* [[Cute Chess]]
* [[Dreamer#DreamChess|DreamChess]]
* [[EBoard]]
* [[EchoBoard]]
* [[Fancy]]
* [[Fritz#FritzGUI|Fritz GUI]]
* [[Glaurung#GUI|Glaurung GUI]]
* [[glChess]]
* [[GNOME Chess]]
* [[Hiarcs Chess Explorer]]
* [[Jerry]]
* [[jose]]
* [[Kvetka]]
* [[LittleBlitzer]]
* [[Lucas Chess]]
* [[Mayura Chess Board]]
* [[Millennium Chess System]]
* [[PyChess]]
* [[SCID]]
* [[Scid vs. PC]]
* [[Scidb]]
* [[Shredder#GUI|Shredder GUI]]
* [[Tarrasch]]
* [[Uragano]]
* [[WinBoard]]
* [[XBoard]]

=GUI Shots=
{|
|-
| [[FILE:arena320.jpg|none|border|text-bottom|320px|link=http://www.playwitharena.com/]]
| [[FILE:CPsshot2.png|none|border|text-bottom|320px|link=http://sjeng.org/deepsjeng.html]]
|-
| [[Arena]] under [[Windows]] <ref>[http://www.playwitharena.com/ Free chess graphical user interface (GUI) Arena for chess engines]</ref>
| [[ChessPartner]] under [[Windows]] running [[Deep Sjeng]] <ref>[http://sjeng.org/deepsjeng.html Sjeng - chess, audio and misc. software]</ref>
|}

=GUI Elements=
A GUI consists of multiple [https://en.wikipedia.org/wiki/Graphical_user_interface_elements elements] or [https://en.wikipedia.org/wiki/GUI_widget widgets], based on a visual rectangular area called [https://en.wikipedia.org/wiki/Window_%28computing%29 window]. Windows have [[Recursion|recursive]] hierarchical relationships, that is a window may contain several child windows, which are usually restricted and clipped to the area of the parent window. The [https://en.wikipedia.org/wiki/Desktop_metaphor desktop metaphor] as root, and all child and grand child windows of one or more applications can be interpreted as a tree structure, traversed in a [[Depth-First|depth-first]] manner if looking up graphical coordinates or visible areas, as already mentioned by [[Mikhail Donskoy]] at the [[Advances in Computer Games 9]] conference in 1999 <ref>[[Mikhail Donskoy]] ('''2001'''). ''How the Computer-Chess Methods Help to Build Better User Interfaces.'' [[Advances in Computer Games 9]]</ref> .

A GUI application usually has one main- or frame-window, often sizable and movable, and child of the desktop. The main window further contains various standard child windows at its top and bottom areas, a caption bar, often configurable and dockable [https://en.wikipedia.org/wiki/Menu_bar menu]-, and/or [https://en.wikipedia.org/wiki/Toolbar toolbars], and [https://en.wikipedia.org/wiki/Status_bar status bar]. The [https://en.wikipedia.org/wiki/Look_and_feel look and feel] depends on the [https://en.wikipedia.org/wiki/Operating_system operating system] and its [https://en.wikipedia.org/wiki/Window_manager window manager], there are quite common techniques and standardizations, also encouraged by cross platform [https://en.wikipedia.org/wiki/Widget_toolkit widget toolkits].

==Main Window==
Beside its default child windows of the frame, the inner area also referred as [https://en.wikipedia.org/wiki/Workspace workspace], may contain one or more so called document windows, to reduce clutter and make the desktop easier to navigate with multiple applications. A main window applies either a [https://en.wikipedia.org/wiki/Single_document_interface single] (SDI), a [https://en.wikipedia.org/wiki/Multiple_document_interface multiple] (MDI) or a [https://en.wikipedia.org/wiki/Tab_%28GUI%29 tabbed document interface] (TDI). Further modeless and often [https://en.wikipedia.org/wiki/Tab_%28GUI%29 tabbed] tool-, output log or miscellaneous windows for various purposes may share the workspace or may be docked on the borders or various areas of the mainframe, also called an [https://en.wikipedia.org/wiki/Integrated_development_environment IDE-style interface].
<span id="Dialog"></span>
==Dialog Windows==
Another class of windows, [https://en.wikipedia.org/wiki/Dialog_box dialog boxes] apply [https://en.wikipedia.org/wiki/Modal_window modal] [https://en.wikipedia.org/wiki/Transaction transactions] like saving a document to a file. They contain all kinds of child widgets to enter data, and most often [https://en.wikipedia.org/wiki/Button_%28computing%29 buttons] to confirm (OK) or cancel the transaction. There are further [https://en.wikipedia.org/wiki/Tab_%28GUI%29 tabbed] dialogs and multi-page wizard or assistants with next, previous and finish buttons to guide users through a sequence of transactions which are dependent on each other or partly optional.

=Chess GUI Elements=
A document or model usually refers to a [[Chess Game|game of chess]] and its [[Game Notation|game notation]] as [[Move List|move-list]], whether still in progress or loaded from a [[Databases|database]].
<span id="GameWindow"></span>
==Game Window==
A game window, associated with the game document or model, is usually a frame around a board- and notation window, which represent two views of the same model.
<span id="BoardWindow"></span>
==Board Window==
A pure [[2D Graphics Board|2D board]] window should be [https://en.wikipedia.org/wiki/Isotropy isotropic] and quadratic. If the board window has keyboard [https://en.wikipedia.org/wiki/Focus_%28computing%29 focus], one may control a square [https://en.wikipedia.org/wiki/Cursor_%28computers%29 cursor] to select two squares to make a move, similar to clicking with the mouse.
* [[2D Graphics Board]]
* [[3D Graphics Board]]
<span id="NotationWindow"></span>
==Notation Window==
The notation window represents the [[Game Notation|game notation]] or score-sheet of the chess game, the [[Move List|list of moves]] of the game. It works like a multiple line [https://en.wikipedia.org/wiki/Text_box text box] or multiple column [https://en.wikipedia.org/wiki/Grid_view grid view] or [https://en.wikipedia.org/wiki/List_box list box] often scrollable and indicated by a vertical [https://en.wikipedia.org/wiki/Scrollbar scrollbar]. A [https://en.wikipedia.org/wiki/Cursor_%28computers%29 cursor] inside the notation window might be associated with a [[Ply|half-move index]] in the range from zero (before first half-move played, [[Initial Position|initial position]]), to N (after last half-move played, current game position), and determines the position displayed in the board window. If the game window has keyboard [https://en.wikipedia.org/wiki/Focus_%28computing%29 focus], it receives input of moves via move coordinates or [[Algebraic chess notation|algebraic notation]].

==Information Windows==
Information windows are associated with an engine actually playing or analyzing a game. It displays [[Search|search]] information like [[Principal variation|principal variations]] and associated [[Score|scores]], times and that like. It is often implemented as scrollable logging window, always appending text at top or bottom lines.

=Mobile GUIs=
* [[Chess for Android]]
* [[DroidFish]]
* [[PocketGrandmaster]]

=Operating Systems=
* [[Android]]
* [[Linux]]
* [[Mac OS]]
* [[MS-DOS]]
* [[Windows]]

=See also=
* [[Chess Game]]
* [[CLI|Command Line Interface]]
* [[CPW-Engine_com]]
* [[Graphics Programming]]
* [[InBetween]]
* [[Protocols]]

=Publications=
* [[Haiying Wang]] ('''1994'''). ''[https://era.library.ualberta.ca/files/2227mr67d An application-oriented user interface model and development system]''. Ph.D. thesis, [[University of Alberta]], [https://era.library.ualberta.ca/files/2227mr67d/NN11407.pdf pdf] » [[Abyss]]
* [[Mikhail Donskoy]] ('''2001'''). ''How the Computer-Chess Methods Help to Build Better User Interfaces.'' [[Advances in Computer Games 9]]
* [[Paul Fischer]] ('''2005'''). ''An Introduction to Graphical User Interfaces with Java Swing''. [https://en.wikipedia.org/wiki/Pearson_Education Pearson Education], [https://en.wikipedia.org/wiki/Addison-Wesley Addison-Wesley], [http://www.amazon.de/Introduction-Graphical-User-Interfaces-Swing/dp/0321220706 Amazon.de] » [[Java]]
* [[Oliver Vornberger]] ('''2006'''). ''[http://www-lehre.inf.uos.de/%7Ecg/2006/skript/skript.html Computergrafik]''. [http://www-lehre.inf.uos.de/%7Ecg/2006/PDF/skript.pdf pdf] (German)

=Forum Posts=
==2000 ...==
* [https://www.stmintz.com/ccc/index.php?id=356135 chess GUI under Linux] by [[Vasik Rajlich]], [[CCC]], March 23, 2004 » [[Linux]]
==2005 ...==
* [https://www.stmintz.com/ccc/index.php?id=487610 Programming models in graphical chess interfaces] by [[Federico Andrés Corigliano|Federico Corigliano]], [[CCC]], February 18, 2006
* [http://www.talkchess.com/forum/viewtopic.php?t=21168 What's the role of the GUI?] by Zlatnik, [[CCC]], May 15, 2008
* [http://www.talkchess.com/forum/viewtopic.php?t=21261 programming gui questions] by [[Uri Blass]], [[CCC]], May 20, 2008
* [http://www.talkchess.com/forum/viewtopic.php?t=25541 programming engine, programming GUI] by Eric Lang, [[CCC]], December 20, 2008
* [http://www.talkchess.com/forum/viewtopic.php?t=26783 GUI in Visual Basic] by [[Edmund Moshammer]], [[CCC]], February 28, 2009 » [[Basic]]
* [http://www.talkchess.com/forum/viewtopic.php?t=30793 OliThink GUI in Java... Complete source posted] by [[Oliver Brausch]], [[CCC]], November 25, 2009 » [[OliThink]], [[Java]]
==2010 ...==
* [http://www.talkchess.com/forum/viewtopic.php?t=31432 Which GUI toolkits are best?] by [[Michael Sherwin]], [[CCC]], January 02, 2010
* [http://www.talkchess.com/forum/viewtopic.php?t=32386 A Suggestion for GUI makers. Double-Click a Piece to Capture] by Zagalo Martini, [[CCC]], February 05, 2010
* [http://www.talkchess.com/forum/viewtopic.php?t=32952 Aquarium (other GUIs too?) and WB support => I am shocked] by [[Miguel A. Ballicora]], [[CCC]], February 27, 2010
* [http://www.talkchess.com/forum/viewtopic.php?t=39118 New opensource GUI on android for UCI engines] by [[Jean-Francois Romang]], [[CCC]], May 19, 2011
* [http://www.talkchess.com/forum/viewtopic.php?t=44450 Peer-to-peer GUI adapter] by [[Harm Geert Muller]], [[CCC]], July 15, 2012
* [http://www.talkchess.com/forum/viewtopic.php?t=50493 Most wanted missing features for a chess GUI] by [[Ben-Hur Carlos Vieira Langoni Junior|Ben-Hur Carlos Langoni]], [[CCC]], December 14, 2013
* [http://www.talkchess.com/forum/viewtopic.php?t=53674 To GUI developers and Linux engine packagers] by [[Harm Geert Muller]], [[CCC]], September 12, 2014 » [[Linux]]
==2015 ...==
* [http://www.open-chess.org/viewtopic.php?f=5&t=2933 Interfacing with a GUI] by ppyvabw, [[Computer Chess Forums|OpenChess Forum]], December 08, 2015
* [http://www.talkchess.com/forum/viewtopic.php?t=58687 Object model for chess GUI?] by [[Steve Maughan]], [[CCC]], December 25, 2015
* [http://www.talkchess.com/forum/viewtopic.php?t=60506 Linux Chess GUI that's good for engine matches/tournaments] by [[Shawn Chidester]], [[CCC]], June 16, 2016 » [[Linux]]
* [http://www.talkchess.com/forum/viewtopic.php?t=65485 Elements of the ULTIMATE Chess GUI?] by [[Brendan J. Norman]], [[CCC]], October 19, 2017
* [http://www.talkchess.com/forum/viewtopic.php?t=66811 Old chess GUIs] by [[Matthias Gemuh]], [[CCC]], March 12, 2018

=External Links=
==General==
* [https://en.wikipedia.org/wiki/Graphical_user_interface Graphical user interface from Wikipedia]
* [https://en.wikipedia.org/wiki/Desktop_environment Graphical desktop environment from Wikipedia]
* [https://en.wikipedia.org/wiki/Elements_of_graphical_user_interfaces Graphical user interface elements from Wikipedia]
* [https://en.wikipedia.org/wiki/History_of_the_graphical_user_interface History of the graphical user interface from Wikipedia]
* [https://en.wikipedia.org/wiki/Style_guide Style guide from Wikipedia]
* [https://en.wikipedia.org/wiki/IBM_Common_User_Access IBM Common User Access from Wikipedia]
* [https://en.wikipedia.org/wiki/X_Window_System X Window System from Wikipedia]
* [https://en.wikipedia.org/wiki/X_window_manager X window manager from Wikipedia]
* [https://en.wikipedia.org/wiki/GNOME GNOME from Wikipedia]
* [https://en.wikipedia.org/wiki/KDE KDE from Wikipedia]

==Computer Chess==
* [http://adamsccpages.blogspot.de/p/graphical-user-interfaces-for-computer.html Graphical User Interfaces for Computer Chess] by [[Adam Hair]]
* [http://computer-chess.org/doku.php?id=computer_chess:wiki:lists:gui_protocol_support_list GUI Protocol List] from [http://computer-chess.org/doku.php?id=home Computer-Chess Wiki] by [[Ron Murawski]]
* [http://www.septober.de/chess/index.htm Septober - Computerschach] by [[Herbert Marquardt]] (program list with screenshots)

==Web Development==
* [https://en.wikipedia.org/wiki/Ajax_%28programming%29 Ajax from Wikipedia]
* [https://en.wikipedia.org/wiki/Rich_Internet_application Rich Internet application from Wikipedia]
* [https://en.wikipedia.org/wiki/Rich_AJAX_Platform Rich AJAX Platform from Wikipedia]
* [https://en.wikipedia.org/wiki/Rich_client_platform Rich client platform from Wikipedia]
* [http://jtiscione.github.io/chessboard3js/play.html chessboard3.js] [[JavaScript]] [[GUI]] by [[Jason Tiscione]]

==Toolkits, Libraries and API==
{{Graphic and Widgets}}

=References=
<references />

'''[[User Interface|Up one Level]]'''

Navigation menu