1This is FET version 6.2.0 2 3 4Program description: 5 6 FET is free timetabling software (licensed under the GNU Affero General Public License version 3 or later). 7 This program aims to automatically generate the timetable of a school, high-school or university. 8 It may be used for other timetabling purposes. 9 10 FET can mean "Free Educational Timetabling" (the "E" in the middle may also stand for other words, based on your personal preference). 11 12 FET homepage: https://lalescu.ro/liviu/fet/ 13 14 15Requirements: 16 17 FET is created in the following environment: openSUSE Tumbleweed GNU/Linux distribution, Linux 5.14.9, Xfce 4.16, 18 Xfce Terminal Emulator 0.8.10, Midnight Commander 4.8.26, Krusader 2.7.2, Kate 21.08.1, KDiff3 0.9.98, grep 3.7, 19 sed 4.8, Thunar Bulk Rename 4.16.10, Qt 6.2.0, QMake 3.1, Qt Creator 5.0.1, GCC 11.2.1, Clang 13.0.0, Make 4.3, 20 GDB 10.1, Valgrind 3.17.0, Coverity Scan 2020.09, Cppcheck 2.6, SpeedCrunch 0.12, QCAD Community Edition 3.26.0.0, 21 Inkscape 1.1, GIMP 2.10.24, ImageMagick 7.1.0, tar 1.34, Gzip 1.11, bzip2 1.0.8, other great software (most of them are 22 free software, in the sense defined by The Free Software Foundation). 23 24 The executable version of FET for Windows is obtained in the following environment: Windows 10 operating system, 25 Command Prompt, Total Commander 10.00, Notepad, Python 3.9.7, ActivePerl 5.28, CMake 3.21.1, Ninja 1.10.2, Qt 6.2.0, 26 QMake 3.1, Qt Creator 5.0.1, MinGW 8.1.0, Microsoft Visual C++ 2019, 7-Zip 19.00. 27 28 FET is a C++ application and uses Qt, a C++ toolkit for cross-platform application development. 29 FET can be run on any platform supported by Qt (GNU/Linux, Windows, Mac OS X, and maybe others). 30 31 You will need a C++11 compliant C++ compiler to compile FET. 32 33 GNU/Linux, Mac OS X: 34 For running, you need only the archive of FET compiled for your operating system (which contains the necessary libraries). 35 For compiling, you will need this software: 36 Make 4.2.1 or similar (GNU Make). 37 GCC 11.2.1 or similar. 38 Qt 6.2.0 or compatible. Qt 5 should be fine (the authors also tried to maintain backwards source compatibility with Qt 4, 39 but beware that multiple generation on multiple threads is very slow with such an old Qt version). 40 QMake 3.1 or compatible (usually available with Qt). 41 42 Note: You need a C++11 compliant C++ compiler. You might be able to use the Clang C++ compiler or other C++ compiler instead of GCC. 43 44 Windows: 45 For running, you need only the archive of FET compiled for Windows (which contains the necessary dll-s). 46 For compiling, you need Qt and a compatible C++ compiler complying with the C++11 standard (MinGW is a possibility). 47 48 49Download: 50 51 You can download the latest version from the FET homepage, https://lalescu.ro/liviu/fet/ 52 53 54Getting - compiling - installing the GNU tools: Make and GCC: 55 56 GNU/Linux, maybe Mac OS X: Most probably, your platform has these installed by default or available on the internet 57 as precompiled packages. If you don't have them, please install them using YaST (on openSUSE), Adept Manager 58 (on Ubuntu) or other package manager. 59 To verify that you have the correct packages, write "make --version", "gcc --version" and 60 "g++ --version". 61 Advice from a user on Ubuntu: "sudo apt-get install build-essential" installs build libraries commonly used. 62 63 Maybe Mac OS X (from the user Darren McDonald): Install Xcode (the current version is 12.5.1) from the Mac App Store. (Once installed, you'll 64 need to open the Xcode app to finish the installation.) 65 66 Windows: you need a Qt compatible C++ compiler. 67 Maybe an easy option is the MinGW compiler, available optionally with the Qt distribution or on the Qt download page. 68 (You might also download MinGW from the internet. There might be more variants. One of them is on: http://mingw-w64.org/) 69 70 71Getting - compiling - installing Qt: 72 73 Qt homepage: https://www.qt.io/ 74 75 You will need Qt 6.2.0 or compatible to compile FET. Qt 5 should be fine (the authors also tried to maintain backwards source 76 compatibility with Qt 4, but beware that multiple generation on multiple threads is very slow with such an old Qt version). 77 You can get the corresponding version of Qt with your package manager or from the internet (preferably from the Qt homepage). 78 Qt can be used with the GNU (L)GPL or commercial license (The authors chose the GNU (L)GPL license). 79 80 GNU/Linux: It is possible to use YaST (or Adept Manager) or other package managers to get your version of Qt, pre-compiled. 81 Or you can download, (possibly) compile and install Qt from the internet (preferably from its homepage). 82 83 Windows - Download latest Qt from the internet (preferably from its homepage). There are available precompiled packages, but the authors chose 84 to compile Qt from the sources using the additional configure option "-schannel". This is done to ensure that SSL will work in FET using the 85 available SSL dll-s from Windows. For a faster Qt configuration, the authors download/compile/install only the qtbase component, 86 with a configure command which might look like: 87 "configure.bat -opensource -confirm-license -platform win32-g++ -schannel -opengl desktop -release -nomake examples -nomake tests -prefix C:\Qt\6.2.0". 88 (When we tried to use the recommended option "-opengl dynamic" we got a compiler error.) 89 Note that to be able to open ui files with Qt Designer or ts files with Qt Linguist you need to install the Qt component qttools 90 (or the whole Qt package). 91 92 Mac OS X: 93 Install Qt (the current version is 6.2.0) from https://www.qt.io. The default install location is /Users/YOURUSERNAME/Qt, and you can create 94 a (free) Qt account. [Update: if you're just using Qt for FET, you should select to "download for open source".] 95 96 Note about the Qt "QMAKESPEC" variable: advanced topic, read this if you get Qt errors about the environment not being set, or environment 97 variable QMAKESPEC not being set, or if the Qt environment is not set correctly: Qt needs to know the environment you are using. It is usually 98 something like: linux-g++, macx-g++ or win32-g++ (platform-compiler). You can find all the supported platforms in the directory "mkspecs" of Qt 99 (some usual locations are /usr/share/qt5/mkspecs or /usr/lib/qt5/mkspecs on GNU/Linux or C:\Qt\6.2.0\mkspecs on Windows). 100 It seems that Qt automatically finds the platform (there is a default configuration in the "default" subdirectory of the "mkspecs" directory, 101 which is created automatically when you install Qt). If the default configuration is not working or is wrong, you may need to set the 102 correct QMAKESPEC variable for your platform. Under Windows, you can create an environment variable QMAKESPEC equal to win32-g++ 103 (if you are using MinGW), under other platforms create an environment variable named QMAKESPEC equal with the correct platform-compiler 104 you are working on (for instance macx-g++ or linux-g++). 105 106 107Compiling FET: 108 109 You will need a C++11 compliant C++ compiler to compile FET. 110 111 Note: if after unpacking the tar.bz2 sources archive you obtain some files with incomplete/truncated file names in the sources directories, 112 you might need to use a better (un)packer (probably a recent version of the official tar and bzip2 should be fine). 113 For GNU/Linux and maybe Mac OS X, "tar -jxvf fet-v.v.v.tar.bz2" should work correctly. 114 For Windows, either use a modern good (un)packer, or, advice from a user: 115 1. download mingw-get-setup.exe from https://sourceforge.net/projects/mingw/files/ 116 2. run mingw-get-setup.exe 117 3. check msys-base to be installed, Apply Changes from Installation menu and close MinGW Installation Manager 118 4. run C:\MinGW\msys\1.0\msys.bat 119 5. $ cd to the directory where the .tar.bz2 file is 120 6. $ tar -jxvf fet-v.v.v.bz2 121 122 Note2: compilation takes long (maybe even 1 hour, if you are using an older computer). The file 123 rules.cpp takes the longest time to compile, maybe even 1 minute or more. 124 125 Note3 (old, probably deprecated): the following situation may appear under GNU/Linux, but it could be met also on other platforms. 126 Depending on your Qt installation, it may happen that the FET intermediary files and executables are very large (~100 MB for the fet executable 127 instead of ~10 MB). It is not sure if this affects the FET speed and performance, but anyway it is unpleasant. In this case, you may want to 128 modify some files in your system (Qt files) to improve this. You need to change some Qt configuration files and recompile FET from the beginning 129 (remove any temporary files with make distclean or unpack FET sources again, in an empty location). 130 Notations: mkspecs is a directory and QMAKE_CFLAGS_RELEASE and QMAKE_CXXFLAGS_RELEASE are two sections (text on two lines) contained in a file 131 in a subdirectory of mkspecs (some possible location for these are given in this paragraph, shortly below). 132 If mkspecs files for your platform contain the -g flag (text) in the QMAKE_CFLAGS_RELEASE or QMAKE_CXXFLAGS_RELEASE sections, you need to remove 133 this flag. If they do not contain -g flag in these sections, then you don't need to remove anything (and most probably the intermediary files and fet 134 executable will have normal size). 135 More details about where can you find the mkspecs files: under openSUSE GNU/Linux, it seems that for newer versions of Qt (>=4.7.1), the problem 136 is no longer present. In the past, the location of this minor problem was in the file /usr/share/qt5/mkspecs/common/g++.conf, at lines 10 and 25, 137 you needed to remove the "-g" flag from the QMAKE_CFLAGS_RELEASE and QMAKE_CXXFLAGS_RELEASE sections (root access needed to make this change). 138 Under Fedora GNU/Linux for the same problem, a user reported that you need to modify /usr/lib/qt4/mkspecs/common/g++.conf 139 and /usr/lib/qt4/mkspecs/linux-g++/qmake.conf (remove the -g flag from QMAKE_CFLAGS_RELEASE and QMAKE_CXXFLAGS_RELEASE sections). 140 (The mkspecs directory contains more subdirectories, in the form platform-compiler, you need to search for your corresponding directories/files. 141 For instance, GNU/Linux with GCC compiler is named "linux-g++", and you may also need to modify the "common" section). 142 Another solution, by another user: the addition of the lines 143 "linux-g++*: QMAKE_CXXFLAGS_RELEASE -= -g" 144 and 145 "linux-g++*: QMAKE_CFLAGS_RELEASE -= -g" 146 (without quotes) in the files src/src.pro and src/src-cl.pro (you can add them at the end of these files, or in another proper location). 147 148 Note NMkJobs: advice from a user: if you have a multiple core computer, you may be able to split the compilation into more threads, with the -j option for the 149 make command, so that the compilation is faster. This option creates a number of compilation threads equal with the number specified along with the -j option. 150 Under GNU/Linux or Mac OS X, just write "make -j 2" if you have dual core or "make -j 4" if you have quad core (in case you have quad core and you want 151 to keep a core free for other tasks, write "make -j 3"). This is proven to work under GNU/Linux and Mac OS X. Under Windows it depends on the C++ compiler (you 152 may try it to see if it works). 153 154 Currently FET can be compiled with a C++ compiler, using Qt version 6.2.0 or compatible. 155 156 Note NUseSystemLocale: If you want FET to autodetect the system locale language, type <<qmake fet.pro "DEFINES+=USE_SYSTEM_LOCALE">> 157 or simply <<qmake "DEFINES+=USE_SYSTEM_LOCALE">>. This will work if you recompile from the beginning all the FET package (remove 158 all the intermediary files and recompile), and also if you did not use FET on this machine or if you remove the settings file/registry entry for FET 159 (otherwise FET will retain the language which was already saved in its settings). 160 161 Note4: If you get an error like this: 162 In file included from ../../Qt5.3.2/5.3/gcc_64/include/QtGui/qopenglcontext.h:62:0, 163 from ../../Qt5.3.2/5.3/gcc_64/include/QtGui/QtGui:32, 164 from ../../Qt5.3.2/5.3/gcc_64/include/QtWidgets/QtWidgetsDepends:3, 165 from ../../Qt5.3.2/5.3/gcc_64/include/QtWidgets/QtWidgets:3, 166 from engine/import.cpp:35: 167 ../../Qt5.3.2/5.3/gcc_64/include/QtGui/qopengl.h:110:21: fatal error: GL/gl.h: No such file or directory 168 # include <GL/gl.h> 169 ^ 170 compilation terminated. 171 you may need to install additional packages before compiling FET. For instance, under openSUSE GNU/Linux you may need to install Mesa-devel. 172 As reported by a user, on Mint GNU/Linux he needed to install mesa-common-dev and libgl1-mesa-dev. 173 174 Note 5: If you only want to compile the command-line version, open the file fet.pro with a text editor and from the second line remove the 175 text "src/src.pro ". 176 177 178 GNU/Linux: 179 - You will need Qt 6.2.0 or compatible to compile this program. 180 - type "qmake fet.pro" or simply "qmake". You have to use QMake from Qt 6 series (this command is executed very fast, so don't worry if you 181 get immediate return from it) 182 See also notes NUseSystemLocale and Note4 above. 183 - type "make" (this takes a long time, maybe even 1 hour). See also note NMkJobs above ("make -j 16" for instance will be much faster on a 16 threads processor). 184 To remove the compiled objects/executable: "make clean" and/or "make distclean". 185 186 187 Mac OS X: 188 3 Variants: 189 190 1. First variant, if you use the GCC compiler: 191 - You will need Qt 6.2.0 or compatible to compile this program. 192 - type "qmake fet.pro" or simply "qmake". You have to use QMake from Qt 6 series. 193 (this command is executed very fast, so don't worry if you get immediate return from it) 194 - IMPORTANT: you might need to write: "qmake -spec macx-g++ fet.pro", if "qmake fet.pro" 195 does not produce a correct makefile. 196 See also notes NUseSystemLocale and Note4 above. 197 - type "make" (this takes a long time, maybe even 1 hour). See also note NMkJobs above ("make -j 16" for instance will be much faster on a 16 threads processor). 198 To remove the compiled objects/executable: "make clean" and/or "make distclean". 199 200 2. Another variant: 201 - Type "qmake fet.pro" and then "xcodebuild". 202 203 3. Another variant, if you use the Clang C++ compiler (which seems to be the default for Qt 6.2.0 on Mac): 204 It seems that you need to type: 205 /Users/YOURUSERNAME/Qt/6.2.0/macos/bin/qmake -r -spec /Users/YOURUSERNAME/Qt/6.2.0/macos/mkspecs/macx-clang 206 (the -r parameter might not be necessary.) 207 Then "make" (this takes a long time, maybe even 1 hour). See also note NMkJobs above ("make -j 16" for instance will be much faster on a 16 threads processor). 208 To remove the compiled objects/executable: "make clean" and/or "make distclean". 209 Please see: https://lalescu.ro/liviu/fet/forum/index.php?topic=2488.msg13425#msg13425 (and also see the whole topic there.) 210 211 212 Windows: MinGW C++ compiler: you need Qt 6.2.0 or compatible, and MinGW. 213 You might use other C++ compilers if you want, please see the Qt documentation. 214 for other variants. Any C++ compiler that supports Qt should be good. 215 You need to run "qmake fet.pro" or "qmake" (this command is executed very fast, so don't worry if you get 216 immediate return from it) and then, if you are using MinGW, "mingw32-make" (this takes a long time, maybe even 1 hour) 217 in a command line in the FET directory. 218 See also note NUseSystemLocale above. 219 See also Note4 above. 220 See also note NMkJobs above ("make -j 16" for instance will be much faster on a 16 threads processor). 221 (You can use the command line prompt of Windows or the Qt command line prompt shortcut in the Qt shortcuts menu.) 222 Then, you can remove the directories "src" and "tmp", to save up space, if you want. 223 You will need to copy the dll-s in the same directories as in the official FET archive for Windows. 224 225 226Installing FET: 227 228 GNU/Linux, and maybe Mac OS X: 229 Type "make install" with root permissions. 230 231 Mac OS X: The user Darren McDonald reported that one can obtain a universal Mac OS X executable with: 232 cd /Users/YOURUSERNAME/Qt/6.2.0/macos/bin/ 233 ./macdeployqt /Users/YOURUSERNAME/Downloads/fet-v.v.v/fet.app 234 235 Windows: 236 Move the FET directory to a place of your choice. 237 238 239Running FET: 240 Note: The FET main window contains a menu with the items: File, Data, Statistics, Advanced, 241 Timetable, Settings, Help. Everything is right if you have that. Optionally, on the main window there may be a toolbox 242 containing shortcuts (if selected by the user in the settings. By default it is selected). 243 244 To run FET in interface mode, you just need to run the executable named fet or fet.exe. 245 246 GNU/Linux, and maybe Mac OS X: 247 - If you installed FET with "make install": 248 Run the FET executable from the directory /usr/bin/ (it should be /usr/bin/fet for the interface version or /usr/bin/fet-cl for command line), 249 or use the FET shortcut (/usr/share/applications/fet.desktop). 250 - If you did not install FET with "make install": 251 chdir to the directory where the fet executable is (for instance, "cd ~/fet-v.v.v/") and run it with "./fet" or with the suitable command 252 for your platform. Alternatively, you may run the executable named fet from the fet-v.v.v directory, using another method. The fet executable 253 will be located inside the fet-v.v.v directory after a successful compilation. 254 255 Note for Mac OS X about using translations: If you want to use FET in a language other than the default, you'll need to move the translation files 256 into the appropriate location. The files you need to move can be found in /Users/YOURUSERNAME/Downloads/fet-v.v.v/translations — you'll want to 257 move all of the files ending with .qm to a new location. Open a new Finder window and right-click on the FET.app you've just created in 258 /Users/YOURUSERNAME/Downloads, and select Show Package Contents. Then open the Contents folder, and finally open the MacOS folder within Contents. 259 This is where you should move the .qm files. Once these have been moved, you switch FET languages within the FET app as usual. 260 261 Windows: 262 Run the executable fet.exe (its location is inside the fet-v.v.v directory, you can find it there if you have FET precompiled for Windows or after you compiled it). 263 264 Command line version usage: fet-cl --inputfile=FILE [other options] 265 FILE is the input file, for instance "data.fet" 266 267 Other options are: 268 269 --outputdir=DIR 270 DIR is the path to results directory, without trailing slash or backslash (default is current working path). Make sure you have write 271 permissions there. 272 273 --timelimitseconds=TLS 274 TLS is an integer representing the time limit, in seconds, after which the program will stop the generation (default 2000000000, which is 275 practically infinite). 276 277 --htmllevel=LEVEL 278 LEVEL is an integer from 0 to 7 and represents the detail level for the generated HTML timetables (default 2, larger values have more 279 details/facilities and larger file sizes). 280 281 --language=LANG 282 LANG is one of: ar, ca, cs, da, de, el, en_GB, en_US, es, eu, fa, fr, gl, he, hu, id, it, ja, lt, mk, ms, nl, pl, pt_BR, ro, ru, si, sk, 283 sq, sr, tr, uk, uz, vi, zh_CN, zh_TW (default en_US). 284 285 --writetimetableconflicts=WT1 286 --writetimetablesstatistics=WT2 287 --writetimetablesxml=WT3 288 --writetimetablesdayshorizontal=WT4 289 --writetimetablesdaysvertical=WT5 290 --writetimetablestimehorizontal=WT6 291 --writetimetablestimevertical=WT7 292 --writetimetablessubgroups=WT8 293 --writetimetablesgroups=WT9 294 --writetimetablesyears=WT10 295 --writetimetablesteachers=WT11 296 --writetimetablesteachersfreeperiods=WT12 297 --writetimetablesrooms=WT13 298 --writetimetablessubjects=WT14 299 --writetimetablesactivitytags=WT15 300 --writetimetablesactivities=WT16 301 WT1 to WT16 are either true or false and represent whether you want the corresponding timetables to be written on the disk (default true). 302 303 --printactivitytags=PAT 304 PAT is either true or false and represets if you want activity tags to be present in the final HTML timetables (default true). 305 306 --printnotavailable=PNA 307 PNA is either true or false and represents if you want -x- (for true) or --- (for false) in the generated timetables for the not available 308 slots (default true). 309 310 --printbreak=PB 311 PB is either true or false and represents if you want -X- (for true) or --- (for false) in the generated timetables for the break slots 312 (default true). 313 314 --sortsubgroups=SS 315 SS is either true or false and represents if you want the timetables of the subgroups to be sorted alphabetically by subgroup name 316 (default false).\n" 317 318 --dividetimeaxisbydays=DTAD 319 DTAD is either true or false, represents if you want the HTML timetables with time-axis divided by days (default false). 320 321 --duplicateverticalheaders=DVH 322 DVH is either true or false, represents if you want the HTML timetables to duplicate vertical headers to the right of the tables, for 323 easier reading (default false). 324 325 --printsimultaneousactivities=PSA 326 PSA is either true or false, represents if you want the HTML timetables to show related activities which have constraints with same 327 starting time (default false). (for instance, if A1 (T1, G1) and A2 (T2, G2) have constraint activities same starting time, then in T1's 328 timetable will appear also A2, at the same slot as A1). 329 330 --randomseeds10=s10 --randomseeds11=s11 --randomseeds12=s12 --randomseeds20=s20 --randomseeds21=s21 --randomseeds22=s22 331 where you need to specify all the 6 random seed components, and s10, s11, and s12 are integers from minimum 0 to maximum 4294967086, 332 not all 3 zero, and s20, s21, and s22 are integers from minimum 0 to maximum 4294944442, not all 3 zero (you can get the same timetable 333 if the input file is identical, if the FET version is the same (or if the generation algorithm did not change), and if all the 6 random seed 334 components are respectively equal). 335 336 --warnifusingnotperfectconstraints=WNP 337 WNP is either true or false, represents whether you want a message box to be shown, with a warning, if the input file contains not perfect 338 constraints (activity tag max / min hours daily or students max gaps per day / real day) (default true). 339 340 --warnifusingstudentsminhoursdailywithallowemptydays=WSMHDAED 341 SMHDAEDP is either true or false, represents whether you want a message box to be shown, with a warning, if the input file contains nonstandard 342 constraints students min hours daily with allow empty days (default true). 343 344 --warnifusinggroupactivitiesininitialorder=WGA 345 WGA is either true or false, represents whether you want a message box to be shown, with a warning, if the input file contains nonstandard 346 timetable generation options to group activities in the initial order (default true). 347 348 --warnsubgroupswiththesameactivities=WSSA 349 WSSA is either true or false, represents whether you want a message box to be show, with a warning, if your input file contains subgroups 350 which have the same activities (default true). 351 352 --printdetailedtimetables=PDT 353 PDT is either true or false, represents whether you want to show the detailed (true) or less detailed (false) years and groups timetables (default true). 354 355 --printdetailedteachersfreeperiodstimetables=PDTFP 356 PDTFP is either true or false, represents whether you want to show the detailed (true) or less detailed (false) teachers free periods 357 timetables (default true). 358 359 --exportcsv=ECSV 360 ECSV is either true or false, represents whether you want to export the CSV file and timetables (default false). 361 362 --overwritecsv=OCSV 363 OCSV is either true or false, represents whether you want to overwrite old CSV files, if they exist (default false). 364 365 --firstlineisheadingcsv=FLHCSV 366 FLHCSV is either true or false, represents whether you want the heading of the CSV files to be header (true) or data (false). The default 367 value is true. 368 369 --quotescsv=QCSV 370 QCSV is one value from the set [doublequotes|singlequotes|none] (write a single value from these three exactly as it is written here). 371 The default value is doublequotes. 372 373 --fieldseparatorcsv=FSCSV 374 FSCSV is one value from the set [comma|semicolon|verticalbar] (write a single value from these three exactly as it is written here). 375 The default value is comma. 376 377 --showvirtualrooms=SVR 378 SVR is either true or false, represents whether you want to show virtual rooms in the timetables (default false). 379 380 --warnifusingactivitiesnotfixedtimefixedspacevirtualroomsrealrooms=WANFTFS 381 WANFTFS is either true or false, represents whether you want the program to issue a warning if you are using activites which are not 382 fixed in time, but are fixed in space in a virtual room, specifying also the real rooms (which is not recommended) (default true). 383 384 --warnifusingmaxhoursdailywithlessthan100percentweight=WMHDWLT100PW 385 WMHDWLT100PW is either true or false, represents whether you want the program to issue a warning if you are using constraints of type 386 teacher(s)/students (set) max hours daily with a weight less than 100% (default true). 387 388 --verbose=VBS 389 VBS is either true or false, represents whether you want additional generation messages and other messages to be shown on the command 390 line (default false). 391 392 Run "fet-cl --help" to get usage information. 393 394 Run "fet-cl --version" to get version information. 395 396 You can ask the FET command line process to stop the timetable generation, by sending it the SIGTERM (or SIGBREAK, on Windows) signal. FET will then 397 write the current timetable and the highest stage timetable and exit. (If you send the FET command line the SIGINT signal it will stop immediately, 398 without writing the timetable.) 399 400 The result of the operation is logged in the file outputdir/logs/result.txt. 401 402 Also, you have in logs the initial order of activities and a list of maximum placed number of activities. If your timetable is impossible, say it stops 403 at maximum n placed activities, look at the n+1-st activity in the initial order, for it or its students/teachers may be the problem. 404 405 For the command line version, probably the most useful output to use internally in an application might be the activities_timetable.xml. 406 You have of course also the xml timetables for students and teachers and the nicely formatted HTML timetables to present directly. 407 408 You'll get a console output to help you with data, along with the files in the directory outputdir/logs/. 409 410 If you are a programmer, in the file src/engine/messageboxes.cpp you'll find the implementation of the various messages. You 411 can modify these functions, catching them in your program. Also, you can catch the end of the program (successful or unsuccessful) in 412 the file src/interface/fet.cpp, in the command-line code part. 413 414 If you want to be completely independent from Qt, using only standard C++, you can remove all the Qt includes and 415 reimplement the used Qt classes QString, QList, QSet, QHash, and maybe others (only the member functions which are necessary). Or just get 416 the corresponding code from Qt (Please review the Qt licensing options, in this case. Currently, they include GNU (L)GPL and commercial). 417 The program should have independence of a particular implementation of QSet and QHash so, if you reimplement these two containers, 418 any order of elements should lead to the same generation results. Contrary behavior should be reported as a bug. 419 420 421Languages (translations): 422 423 The translation files which the FET executable needs in order to be able to run in other languages are ending in .qm (like fet_**.qm) 424 and they are located in the "translations" directory in the FET distribution. 425 426 FET will search for translations (fet_**.qm files) in the following order: 427 1) directly in the directory where the fet executable is, 428 2) the directory "translations" in the directory where fet executable is, 429 3) the directory /usr/share/fet/translations (under GNU/Linux or Mac OS X). 430 431 So, on: 432 Windows: if fet.exe is in C:\fet-v.v.v, fet will search for the file fet_**.qm in 433 C:\fet-v.v.v and then in C:\fet-v.v.v\translations 434 GNU/Linux: if the fet executable is in ~/fet-v.v.v, fet will search for the file fet_**.qm in 435 ~/fet-v.v.v, then in ~/fet-v.v.v/translations and then in /usr/share/fet/translations 436 Mac OS X: the operation is approximately similar to the one for GNU/Linux. 437 The difference is that it seems that the fet application on Mac OS X contains in turn other directories (application directories), 438 so FET will search for the translations inside these application directories, not in the fet-v.v.v directory. The GNU/Linux style fet executable 439 seems to be located in fet-v.v.v/fet.app/Contents/MacOS, so FET will search for the file fet_**.qm in the directory 440 fet-v.v.v/fet.app/Contents/MacOS, then in the directory fet-v.v.v/fet.app/Contents/MacOS/translations, 441 then in the directory /usr/share/fet/translations. 442 Please see also the Mac OS X note from the section "Running FET". 443 More notes for the Mac OS X platform, from a user: copying the translations/ directory into the directory fet.app/Contents/MacOS/ is 444 possible from the command line in X11 xterm (but it is not possible with the finder program, because the file extension ".app" is 445 exclusive for applications, so the program finder interprets a directory with the extension ".app" as an application). 446 447 What to do if you get stuck with an unknown language: in each language, the submenu (Settings->)Language is translated also in English 448 (like: Limba/Language in Romanian). You can select the US English language (en_US abbreviation) and then close and restart FET (press the middle button 449 from the dialog that appears after trying to close FET, so that FET will exit without saving the current file). 450 Another solution: modify the FET settings on your operating system: 451 - Under GNU/Linux, and maybe Mac OS X, usually in your $HOME/.config directory you'll find a directory "fet", 452 containing file "fettimetabling.conf". Edit that file - the line beginning with language, instead of language=... (for instance, language=ro), 453 make it language=en_US (case sensitive). 454 - Under Windows: run regedit.exe (Registry Editor), search key "fet". You will find a section "fet" with sub-section "fettimetabling". 455 Modify the value name language (from, for instance, ro, or other language) to have the value data en_US (5 characters, case sensitive). 456 Another solution: simply remove the translation files (or move them so they are not available to the fet executable) and start FET. It will report 457 that the custom language is not found and it will revert to en_US. 458 459 460Documentation: 461 462 Some hints in the directory "fet-v.v.v/doc/" (under GNU/Linux or Mac OS X, they may be found in usr/share/doc/fet/ directory). 463 Some other hints in the program Help menu. 464 You may find more documentation on the FET homepage. 465 466 467Input files: 468 469 You can open a few sample input files in "fet-v.v.v/examples/" directory 470 (under GNU/Linux or Mac OS X, they may be found in /usr/share/fet/examples/) 471 472 473Uninstalling FET: 474 475 GNU/Linux, and maybe Mac OS X: type "make uninstall" with root permissions. Then, 476 477 GNU/Linux and Windows: 478 Remove the directory fet-v.v.v. Also, you may want to remove the directory with the fet results (default: $HOME/fet-results). 479 This will leave the settings of FET on your system. FET stores its settings in your operating system's dedicated section. 480 If you really want to get rid of everything FET created, read below. 481 482 To completely remove stored FET settings from your operating system: 483 484 GNU/Linux: 485 Usually, in your $HOME/.config directory you will find a directory "fet" containing the file "fettimetabling.conf". 486 Remove the directory "fet" and its contents. 487 488 Mac OS X: It seems that the configuration file might be: $HOME/Library/Preferences/com.fet.fettimetabling.plist 489 490 Windows: 491 Run regedit.exe (Registry Editor), search for the key "fet". You will find a section "fet" with the subsection "fettimetabling". 492 Remove the "fet" section and its contents. 493 494 495Feed-back / help: 496 497 You are encouraged to express your opinion about this program, to send your data files, for the purpose of testing or 498 for inclusion into examples, and also to report possible bugs and suggestions. See the FET homepage for contact information. 499 500 501Copyright (C) 2002-2021 Liviu Lalescu, Volker Dirr. 502