1# Copyright (C) 2014 Fulvio Benini 2# 3# This file is part of Scid (Shane's Chess Information Database). 4# 5# Scid is free software: you can redistribute it and/or modify 6# it under the terms of the GNU General Public License as published by 7# the Free Software Foundation. 8# 9# Scid is distributed in the hope that it will be useful, 10# but WITHOUT ANY WARRANTY; without even the implied warranty of 11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12# GNU General Public License for more details. 13# 14# You should have received a copy of the GNU General Public License 15# along with Scid. If not, see <http://www.gnu.org/licenses/>. 16 17namespace eval ERROR { 18 proc getErrorMsg {} { 19 if {! [info exists ::ERROR::msg($::errorCode)] } { 20 return "Unknown error: $::errorCode\n\n$::errorInfo" 21 } 22 regexp {(.*?)while executing.*} $::errorInfo -> extra 23 return "$::ERROR::msg($::errorCode)\n\n$extra" 24 } 25 26 proc MessageBox { {extra ""} {title "ERROR"} } { 27 tk_messageBox -icon warning -type ok -parent . \ 28 -title "$title" -message "$extra\n[getErrorMsg]" 29 } 30 31 set UserCancel 2 32 set BadArg 3 33 set FileOpen 101 34 set FileWrite 102 35 set FileRead 103 36 set FileSeek 104 37 set BadMagic 105 38 set FileNotOpen 106 39 set FileInUse 107 40 set FileMode 108 41 set FileVersion 109 42 set OldScidVersion 110 43 set FileReadOnly 111 44 set CompactRemove 121 45 set MallocFailed 151 46 set CorruptData 152 47 set Corrupt 152 48 set Full 201 49 set NameNotFound 202 50 set NotFound 202 51 set NameExists 203 52 set Exists 203 53 set NameBaseEmpty 204 54 set Empty 204 55 set NoMatchFound 205 56 set NameDataLoss 206 57 set NameTooLong 207 58 set NameLimit 208 59 set OffsetLimit 209 60 set GameLengthLimit 210 61 set NumGamesLimit 211 62 set InvalidFEN 301 63 set InvalidMove 302 64 set PieceCount 303 65 set Game 400 66 set EndOfMoveList 401 67 set StartOfMoveList 402 68 set NoVariation 403 69 set EmptyVariation 404 70 set VariationLimit 405 71 set Decode 406 72 set GameFull 407 73 set PGNTag 501 74 set BufferFull 601 75 set BufferRead 602 76 set CodecUnsupFeat 701 77 78} 79 80 81#TODO: improve and translate the messages 82after idle { 83 set ::ERROR::msg($::ERROR::UserCancel) \ 84 "Operation canceled." 85 set ::ERROR::msg($::ERROR::BadArg) \ 86 "Wrong parameters." 87 set ::ERROR::msg($::ERROR::FileOpen) \ 88 "Error: can not open file." 89 set ::ERROR::msg($::ERROR::FileWrite) \ 90 "Error writing file." 91 set ::ERROR::msg($::ERROR::FileRead) \ 92 "Error: can not read file." 93 set ::ERROR::msg($::ERROR::FileSeek) \ 94 "Error: can not seek in file." 95 set ::ERROR::msg($::ERROR::BadMagic) \ 96 "Error: bad magic (corrupted file?)." 97 set ::ERROR::msg($::ERROR::FileNotOpen) \ 98 "Error: the file is not open." 99 set ::ERROR::msg($::ERROR::FileInUse) \ 100 "Error: the file is already in use." 101 set ::ERROR::msg($::ERROR::FileMode) \ 102 "Error: file mode." 103 set ::ERROR::msg($::ERROR::FileVersion) \ 104 "Database version newer than Scid; please upgrade Scid." 105 set ::ERROR::msg($::ERROR::OldScidVersion) \ 106 "Old format Scid file, now out of date." 107 set ::ERROR::msg($::ERROR::FileReadOnly) \ 108 $::tr(ErrReadOnly) 109 110 set ::ERROR::msg(CompactCreate) \ 111 "A temporary database from a previous unsuccessfully compact operation already exists.\nPlease remove the files with suffix __COMPACT__ and retry.\n" 112 set ::ERROR::msg($::ERROR::CompactRemove) \ 113 "A compacted database has been successfully created with suffix __COMPACT__.\nHowever Scid could not remove the original database (due to insufficient privileges or because a file is opened in another program).\nPlease rename it manually.\n" 114 set ::ERROR::msg($::ERROR::CorruptData) \ 115 "Error while processing data: corrupted.\n" 116 set ::ERROR::msg($::ERROR::Full) \ 117 "Error: insufficient space" 118 set ::ERROR::msg($::ERROR::NameDataLoss) \ 119 "Some names (player, event, site or round) are missing and have been replaced by \"?\"\nCompact the database to make the changes permanent." 120 set ::ERROR::msg($::ERROR::NameTooLong) \ 121 "The entered values are too long" 122 set ::ERROR::msg($::ERROR::NameLimit) \ 123 "The maximum number of different names allowed by this database type has been reached" 124 set ::ERROR::msg($::ERROR::OffsetLimit) \ 125 "The maximum space for games allowed by this database type has been reached" 126 set ::ERROR::msg($::ERROR::GameLengthLimit) \ 127 "The maximum length for a game allowed by this database type has been reached" 128 set ::ERROR::msg($::ERROR::NumGamesLimit) \ 129 "The maximum number of games allowed by this database type has been reached" 130 131 set ::ERROR::msg($::ERROR::CodecUnsupFeat) \ 132 "The requested function is not supported by this type of database." 133} 134