Changeset b424a7e320 in tspsg


Ignore:
Timestamp:
Aug 2, 2009, 9:47:45 PM (15 years ago)
Author:
Oleksii Serdiuk
Branches:
0.1.3.145-beta1-symbian, 0.1.4.170-beta2-bb10, appveyor, imgbot, master, readme
Children:
6b3d3c1bbb
Parents:
9aa0e521ed
Message:

+ Current file name is displayed in main application window header.

  • Created a method for prompt for unsaved changes to unify it throughout the code.
  • Some stylistic README changes.
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • README

    r9aa0e521ed rb424a7e320  
    55$URL$
    66
    7 This software is intended to generate and solve Travelling
    8 Salesman Problem (TSP) tasks. It uses Branch and Bound method
    9 for solving. An input is a number of cities and a matrix of
    10 city-to-city travel prices. The matrix can be populated with
    11 random values in a given range (useful for generating tasks).
    12 The result is an optimal route, its price, step-by-step matrices
    13 of solving and solving graph. The task can be saved in internal
    14 binary format and opened later. The result can be printed without
    15 the answer (only input matrix) or with it.
     7TSPSG is intended to generate and solve Travelling Salesman Problem
     8(TSP) tasks. It uses Branch and Bound method for solving. An input
     9is number of cities and matrix of city-to-city travel prices.
     10The matrix can be populated with random values in a given range
     11(useful for generating tasks). The result is an optimal route, its
     12price, step-by-step matrices of solving and solving graph. The task
     13can be saved in internal binary format and opened later. The result
     14can be printed without the answer (only input matrix) or with it.
    1615
    17 TSPSG may be useful for teachers to generate tasks for tests or
    18 just for regular users to solve TSPs. It is also may be used as an
    19 example of using Branch and bound method to solve particular task.
     16TSPSG may be useful for teachers to generate test tasks or just for
     17regular users to solve TSPs. Also, it may be used as an example of
     18using Branch and bound method to solve particular task.
    2019
    2120TSPSG is free software: you can redistribute it and/or modify it
  • i18n/en.ts

    r9aa0e521ed rb424a7e320  
    3333        <location filename="../src/tspmodel.cpp" line="152"/>
    3434        <location filename="../src/tspmodel.cpp" line="160"/>
    35         <location filename="../src/tspmodel.cpp" line="175"/>
    36         <location filename="../src/tspmodel.cpp" line="191"/>
    37         <location filename="../src/tspmodel.cpp" line="204"/>
    38         <location filename="../src/tspmodel.cpp" line="234"/>
    39         <location filename="../src/tspmodel.cpp" line="243"/>
     35        <location filename="../src/tspmodel.cpp" line="181"/>
     36        <location filename="../src/tspmodel.cpp" line="201"/>
     37        <location filename="../src/tspmodel.cpp" line="214"/>
     38        <location filename="../src/tspmodel.cpp" line="245"/>
     39        <location filename="../src/tspmodel.cpp" line="254"/>
    4040        <source>Task Load</source>
    4141        <translation type="unfinished"></translation>
     
    4343    <message>
    4444        <location filename="../src/tspmodel.cpp" line="152"/>
    45         <location filename="../src/tspmodel.cpp" line="175"/>
    46         <location filename="../src/tspmodel.cpp" line="191"/>
    47         <location filename="../src/tspmodel.cpp" line="204"/>
    48         <location filename="../src/tspmodel.cpp" line="234"/>
    49         <location filename="../src/tspmodel.cpp" line="243"/>
     45        <location filename="../src/tspmodel.cpp" line="181"/>
     46        <location filename="../src/tspmodel.cpp" line="201"/>
     47        <location filename="../src/tspmodel.cpp" line="214"/>
     48        <location filename="../src/tspmodel.cpp" line="245"/>
     49        <location filename="../src/tspmodel.cpp" line="254"/>
    5050        <source>Unable to load task:</source>
    5151        <translation type="unfinished"></translation>
     
    5858    </message>
    5959    <message>
    60         <location filename="../src/tspmodel.cpp" line="175"/>
     60        <location filename="../src/tspmodel.cpp" line="181"/>
    6161        <source>Unknown file format or file is corrupted.</source>
    6262        <translation type="unfinished"></translation>
    6363    </message>
    6464    <message>
    65         <location filename="../src/tspmodel.cpp" line="191"/>
    66         <location filename="../src/tspmodel.cpp" line="234"/>
     65        <location filename="../src/tspmodel.cpp" line="201"/>
     66        <location filename="../src/tspmodel.cpp" line="245"/>
    6767        <source>File version is newer than application supports.
    6868Please, try to update application.</source>
     
    7070    </message>
    7171    <message>
    72         <location filename="../src/tspmodel.cpp" line="204"/>
    73         <location filename="../src/tspmodel.cpp" line="243"/>
     72        <location filename="../src/tspmodel.cpp" line="214"/>
     73        <location filename="../src/tspmodel.cpp" line="254"/>
    7474        <source>Unexpected data read.
    7575File is possibly corrupted.</source>
     
    7777    </message>
    7878    <message>
    79         <location filename="../src/tspmodel.cpp" line="273"/>
    80         <location filename="../src/tspmodel.cpp" line="279"/>
    81         <location filename="../src/tspmodel.cpp" line="286"/>
    82         <location filename="../src/tspmodel.cpp" line="293"/>
    83         <location filename="../src/tspmodel.cpp" line="300"/>
    84         <location filename="../src/tspmodel.cpp" line="307"/>
    85         <location filename="../src/tspmodel.cpp" line="314"/>
    86         <location filename="../src/tspmodel.cpp" line="324"/>
     79        <location filename="../src/tspmodel.cpp" line="285"/>
     80        <location filename="../src/tspmodel.cpp" line="291"/>
     81        <location filename="../src/tspmodel.cpp" line="298"/>
     82        <location filename="../src/tspmodel.cpp" line="305"/>
     83        <location filename="../src/tspmodel.cpp" line="312"/>
     84        <location filename="../src/tspmodel.cpp" line="319"/>
     85        <location filename="../src/tspmodel.cpp" line="326"/>
     86        <location filename="../src/tspmodel.cpp" line="336"/>
    8787        <source>Task Save</source>
    8888        <translation type="unfinished"></translation>
    8989    </message>
    9090    <message>
    91         <location filename="../src/tspmodel.cpp" line="273"/>
     91        <location filename="../src/tspmodel.cpp" line="285"/>
    9292        <source>Unable to create task file.
    9393Error: %1
     
    9696    </message>
    9797    <message>
    98         <location filename="../src/tspmodel.cpp" line="279"/>
    99         <location filename="../src/tspmodel.cpp" line="286"/>
    100         <location filename="../src/tspmodel.cpp" line="293"/>
    101         <location filename="../src/tspmodel.cpp" line="300"/>
    102         <location filename="../src/tspmodel.cpp" line="307"/>
    103         <location filename="../src/tspmodel.cpp" line="314"/>
    104         <location filename="../src/tspmodel.cpp" line="324"/>
     98        <location filename="../src/tspmodel.cpp" line="291"/>
     99        <location filename="../src/tspmodel.cpp" line="298"/>
     100        <location filename="../src/tspmodel.cpp" line="305"/>
     101        <location filename="../src/tspmodel.cpp" line="312"/>
     102        <location filename="../src/tspmodel.cpp" line="319"/>
     103        <location filename="../src/tspmodel.cpp" line="326"/>
     104        <location filename="../src/tspmodel.cpp" line="336"/>
    105105        <source>Unable to save task.
    106106Error: %1</source>
     
    139139    <name>MainWindow</name>
    140140    <message>
    141         <location filename="../src/mainwindow.cpp" line="141"/>
    142         <location filename="../src/mainwindow.cpp" line="439"/>
    143         <location filename="../src/mainwindow.cpp" line="448"/>
     141        <location filename="../src/mainwindow.cpp" line="146"/>
     142        <location filename="../src/mainwindow.cpp" line="492"/>
     143        <location filename="../src/mainwindow.cpp" line="501"/>
    144144        <source>Language change</source>
    145145        <translation type="unfinished"></translation>
    146146    </message>
    147147    <message>
    148         <location filename="../src/mainwindow.cpp" line="141"/>
     148        <location filename="../src/mainwindow.cpp" line="146"/>
    149149        <source>Unable to load translation language.</source>
    150150        <translation type="unfinished"></translation>
    151151    </message>
    152152    <message>
    153         <location filename="../src/mainwindow.cpp" line="181"/>
    154         <source>New Task</source>
    155         <translation type="unfinished"></translation>
    156     </message>
    157     <message>
    158         <location filename="../src/mainwindow.cpp" line="181"/>
    159         <location filename="../src/mainwindow.cpp" line="195"/>
    160         <location filename="../src/mainwindow.cpp" line="462"/>
     153        <location filename="../src/mainwindow.cpp" line="192"/>
    161154        <source>Would you like to save changes in current task?</source>
    162155        <translation type="unfinished"></translation>
    163156    </message>
    164157    <message>
    165         <location filename="../src/mainwindow.cpp" line="195"/>
    166         <source>Task Open</source>
    167         <translation type="unfinished"></translation>
    168     </message>
    169     <message>
    170         <location filename="../src/mainwindow.cpp" line="202"/>
     158        <location filename="../src/mainwindow.cpp" line="170"/>
     159        <source>Travelling Salesman Problem</source>
     160        <translation type="unfinished"></translation>
     161    </message>
     162    <message>
     163        <location filename="../src/mainwindow.cpp" line="192"/>
     164        <source>Unsaved Changes</source>
     165        <translation type="unfinished"></translation>
     166    </message>
     167    <message>
     168        <location filename="../src/mainwindow.cpp" line="224"/>
    171169        <source>All Supported Formats</source>
    172170        <translation type="unfinished"></translation>
    173171    </message>
    174172    <message>
    175         <location filename="../src/mainwindow.cpp" line="203"/>
    176         <location filename="../src/mainwindow.cpp" line="204"/>
     173        <location filename="../src/mainwindow.cpp" line="225"/>
     174        <location filename="../src/mainwindow.cpp" line="226"/>
    177175        <source>%1 Task Files</source>
    178176        <translation type="unfinished"></translation>
    179177    </message>
    180178    <message>
    181         <location filename="../src/mainwindow.cpp" line="205"/>
    182         <location filename="../src/mainwindow.cpp" line="232"/>
    183         <location filename="../src/mainwindow.cpp" line="251"/>
     179        <location filename="../src/mainwindow.cpp" line="227"/>
     180        <location filename="../src/mainwindow.cpp" line="267"/>
     181        <location filename="../src/mainwindow.cpp" line="296"/>
    184182        <source>All Files</source>
    185183        <translation type="unfinished"></translation>
    186184    </message>
    187185    <message>
    188         <location filename="../src/mainwindow.cpp" line="230"/>
     186        <location filename="../src/mainwindow.cpp" line="263"/>
    189187        <source>HTML Files</source>
    190188        <translation type="unfinished"></translation>
    191189    </message>
    192190    <message>
    193         <location filename="../src/mainwindow.cpp" line="231"/>
     191        <location filename="../src/mainwindow.cpp" line="265"/>
    194192        <source>OpenDocument Files</source>
    195193        <translation type="unfinished"></translation>
    196194    </message>
    197195    <message>
    198         <location filename="../src/mainwindow.cpp" line="250"/>
     196        <location filename="../src/mainwindow.cpp" line="295"/>
    199197        <source>%1 Task File</source>
    200198        <translation type="unfinished"></translation>
    201199    </message>
    202200    <message>
    203         <location filename="../src/mainwindow.cpp" line="273"/>
     201        <location filename="../src/mainwindow.cpp" line="326"/>
    204202        <source>Settings Changed</source>
    205203        <translation type="unfinished"></translation>
    206204    </message>
    207205    <message>
    208         <location filename="../src/mainwindow.cpp" line="273"/>
     206        <location filename="../src/mainwindow.cpp" line="326"/>
    209207        <source>You have changed color settings.
    210208Do you wish to apply them to current solution text?</source>
     
    212210    </message>
    213211    <message>
    214         <location filename="../src/mainwindow.cpp" line="337"/>
     212        <location filename="../src/mainwindow.cpp" line="390"/>
    215213        <source>Data error</source>
    216214        <translation type="unfinished"></translation>
    217215    </message>
    218216    <message>
    219         <location filename="../src/mainwindow.cpp" line="337"/>
     217        <location filename="../src/mainwindow.cpp" line="390"/>
    220218        <source>Error in cell [Row %1; Column %2]: Invalid data format.</source>
    221219        <translation type="unfinished"></translation>
    222220    </message>
    223221    <message>
    224         <location filename="../src/mainwindow.cpp" line="350"/>
     222        <location filename="../src/mainwindow.cpp" line="403"/>
    225223        <source>Variant #%1</source>
    226224        <translation type="unfinished"></translation>
    227225    </message>
    228226    <message>
    229         <location filename="../src/mainwindow.cpp" line="351"/>
     227        <location filename="../src/mainwindow.cpp" line="404"/>
    230228        <source>Task:</source>
    231229        <translation type="unfinished"></translation>
    232230    </message>
    233231    <message>
    234         <location filename="../src/mainwindow.cpp" line="354"/>
    235         <location filename="../src/mainwindow.cpp" line="380"/>
     232        <location filename="../src/mainwindow.cpp" line="407"/>
     233        <location filename="../src/mainwindow.cpp" line="433"/>
    236234        <source>Solution of Variant #%1 task</source>
    237235        <translation type="unfinished"></translation>
    238236    </message>
    239237    <message>
    240         <location filename="../src/mainwindow.cpp" line="361"/>
     238        <location filename="../src/mainwindow.cpp" line="414"/>
    241239        <source>Step #%1</source>
    242240        <translation type="unfinished"></translation>
    243241    </message>
    244242    <message>
    245         <location filename="../src/mainwindow.cpp" line="364"/>
     243        <location filename="../src/mainwindow.cpp" line="417"/>
    246244        <source>This step has alternate candidates for branching.</source>
    247245        <translation type="unfinished"></translation>
    248246    </message>
    249247    <message>
    250         <location filename="../src/mainwindow.cpp" line="376"/>
     248        <location filename="../src/mainwindow.cpp" line="429"/>
    251249        <source>Optimal path:</source>
    252250        <translation type="unfinished"></translation>
    253251    </message>
    254252    <message>
    255         <location filename="../src/mainwindow.cpp" line="378"/>
     253        <location filename="../src/mainwindow.cpp" line="431"/>
    256254        <source>The price is &lt;b&gt;%1&lt;/b&gt; units.</source>
    257255        <translation type="unfinished"></translation>
    258256    </message>
    259257    <message>
    260         <location filename="../src/mainwindow.cpp" line="439"/>
     258        <location filename="../src/mainwindow.cpp" line="492"/>
    261259        <source>Language will be autodetected on next application start.</source>
    262260        <translation type="unfinished"></translation>
    263261    </message>
    264262    <message>
    265         <location filename="../src/mainwindow.cpp" line="448"/>
     263        <location filename="../src/mainwindow.cpp" line="501"/>
    266264        <source>You have language autodetection turned on.
    267265It needs to be off.
     
    270268    </message>
    271269    <message>
    272         <location filename="../src/mainwindow.cpp" line="462"/>
    273         <source>Application Close</source>
     270        <location filename="../src/mainwindow.cpp" line="506"/>
     271        <location filename="../src/mainwindow.h" line="76"/>
     272        <source>Untitled</source>
    274273        <translation type="unfinished"></translation>
    275274    </message>
  • i18n/ru.ts

    r9aa0e521ed rb424a7e320  
    3434        <location filename="../src/tspmodel.cpp" line="152"/>
    3535        <location filename="../src/tspmodel.cpp" line="160"/>
    36         <location filename="../src/tspmodel.cpp" line="175"/>
    37         <location filename="../src/tspmodel.cpp" line="191"/>
    38         <location filename="../src/tspmodel.cpp" line="204"/>
    39         <location filename="../src/tspmodel.cpp" line="234"/>
    40         <location filename="../src/tspmodel.cpp" line="243"/>
     36        <location filename="../src/tspmodel.cpp" line="181"/>
     37        <location filename="../src/tspmodel.cpp" line="201"/>
     38        <location filename="../src/tspmodel.cpp" line="214"/>
     39        <location filename="../src/tspmodel.cpp" line="245"/>
     40        <location filename="../src/tspmodel.cpp" line="254"/>
    4141        <source>Task Load</source>
    4242        <translation>Загрузка условия</translation>
     
    4444    <message>
    4545        <location filename="../src/tspmodel.cpp" line="152"/>
    46         <location filename="../src/tspmodel.cpp" line="175"/>
    47         <location filename="../src/tspmodel.cpp" line="191"/>
    48         <location filename="../src/tspmodel.cpp" line="204"/>
    49         <location filename="../src/tspmodel.cpp" line="234"/>
    50         <location filename="../src/tspmodel.cpp" line="243"/>
     46        <location filename="../src/tspmodel.cpp" line="181"/>
     47        <location filename="../src/tspmodel.cpp" line="201"/>
     48        <location filename="../src/tspmodel.cpp" line="214"/>
     49        <location filename="../src/tspmodel.cpp" line="245"/>
     50        <location filename="../src/tspmodel.cpp" line="254"/>
    5151        <source>Unable to load task:</source>
    5252        <translation>Невозможно загрузить условие:</translation>
     
    6060    </message>
    6161    <message>
    62         <location filename="../src/tspmodel.cpp" line="175"/>
     62        <location filename="../src/tspmodel.cpp" line="181"/>
    6363        <source>Unknown file format or file is corrupted.</source>
    6464        <translation>Неизвестный формат файла или файл поврежден.</translation>
    6565    </message>
    6666    <message>
    67         <location filename="../src/tspmodel.cpp" line="191"/>
    68         <location filename="../src/tspmodel.cpp" line="234"/>
     67        <location filename="../src/tspmodel.cpp" line="201"/>
     68        <location filename="../src/tspmodel.cpp" line="245"/>
    6969        <source>File version is newer than application supports.
    7070Please, try to update application.</source>
     
    7373    </message>
    7474    <message>
    75         <location filename="../src/tspmodel.cpp" line="204"/>
    76         <location filename="../src/tspmodel.cpp" line="243"/>
     75        <location filename="../src/tspmodel.cpp" line="214"/>
     76        <location filename="../src/tspmodel.cpp" line="254"/>
    7777        <source>Unexpected data read.
    7878File is possibly corrupted.</source>
     
    8181    </message>
    8282    <message>
    83         <location filename="../src/tspmodel.cpp" line="273"/>
    84         <location filename="../src/tspmodel.cpp" line="279"/>
    85         <location filename="../src/tspmodel.cpp" line="286"/>
    86         <location filename="../src/tspmodel.cpp" line="293"/>
    87         <location filename="../src/tspmodel.cpp" line="300"/>
    88         <location filename="../src/tspmodel.cpp" line="307"/>
    89         <location filename="../src/tspmodel.cpp" line="314"/>
    90         <location filename="../src/tspmodel.cpp" line="324"/>
     83        <location filename="../src/tspmodel.cpp" line="285"/>
     84        <location filename="../src/tspmodel.cpp" line="291"/>
     85        <location filename="../src/tspmodel.cpp" line="298"/>
     86        <location filename="../src/tspmodel.cpp" line="305"/>
     87        <location filename="../src/tspmodel.cpp" line="312"/>
     88        <location filename="../src/tspmodel.cpp" line="319"/>
     89        <location filename="../src/tspmodel.cpp" line="326"/>
     90        <location filename="../src/tspmodel.cpp" line="336"/>
    9191        <source>Task Save</source>
    9292        <translation>Сохранение условия</translation>
    9393    </message>
    9494    <message>
    95         <location filename="../src/tspmodel.cpp" line="273"/>
     95        <location filename="../src/tspmodel.cpp" line="285"/>
    9696        <source>Unable to create task file.
    9797Error: %1
     
    102102    </message>
    103103    <message>
    104         <location filename="../src/tspmodel.cpp" line="279"/>
    105         <location filename="../src/tspmodel.cpp" line="286"/>
    106         <location filename="../src/tspmodel.cpp" line="293"/>
    107         <location filename="../src/tspmodel.cpp" line="300"/>
    108         <location filename="../src/tspmodel.cpp" line="307"/>
    109         <location filename="../src/tspmodel.cpp" line="314"/>
    110         <location filename="../src/tspmodel.cpp" line="324"/>
     104        <location filename="../src/tspmodel.cpp" line="291"/>
     105        <location filename="../src/tspmodel.cpp" line="298"/>
     106        <location filename="../src/tspmodel.cpp" line="305"/>
     107        <location filename="../src/tspmodel.cpp" line="312"/>
     108        <location filename="../src/tspmodel.cpp" line="319"/>
     109        <location filename="../src/tspmodel.cpp" line="326"/>
     110        <location filename="../src/tspmodel.cpp" line="336"/>
    111111        <source>Unable to save task.
    112112Error: %1</source>
     
    146146    <name>MainWindow</name>
    147147    <message>
    148         <location filename="../src/mainwindow.cpp" line="141"/>
    149         <location filename="../src/mainwindow.cpp" line="439"/>
    150         <location filename="../src/mainwindow.cpp" line="448"/>
     148        <location filename="../src/mainwindow.cpp" line="146"/>
     149        <location filename="../src/mainwindow.cpp" line="492"/>
     150        <location filename="../src/mainwindow.cpp" line="501"/>
    151151        <source>Language change</source>
    152152        <translation>Смена языка</translation>
    153153    </message>
    154154    <message>
    155         <location filename="../src/mainwindow.cpp" line="141"/>
     155        <location filename="../src/mainwindow.cpp" line="146"/>
    156156        <source>Unable to load translation language.</source>
    157157        <translation>Невозможно загрузить перевод.</translation>
    158158    </message>
    159159    <message>
    160         <location filename="../src/mainwindow.cpp" line="202"/>
     160        <location filename="../src/mainwindow.cpp" line="170"/>
     161        <source>Travelling Salesman Problem</source>
     162        <translation>Задача коммивояжера</translation>
     163    </message>
     164    <message>
     165        <location filename="../src/mainwindow.cpp" line="192"/>
     166        <source>Unsaved Changes</source>
     167        <translation>Несохраненные изменения</translation>
     168    </message>
     169    <message>
     170        <location filename="../src/mainwindow.cpp" line="224"/>
    161171        <source>All Supported Formats</source>
    162172        <translation>Все поддерживаемые форматы</translation>
    163173    </message>
    164174    <message>
    165         <location filename="../src/mainwindow.cpp" line="205"/>
    166         <location filename="../src/mainwindow.cpp" line="232"/>
    167         <location filename="../src/mainwindow.cpp" line="251"/>
     175        <location filename="../src/mainwindow.cpp" line="227"/>
     176        <location filename="../src/mainwindow.cpp" line="267"/>
     177        <location filename="../src/mainwindow.cpp" line="296"/>
    168178        <source>All Files</source>
    169179        <translation>Все файлы</translation>
    170180    </message>
    171181    <message>
    172         <location filename="../src/mainwindow.cpp" line="203"/>
    173         <location filename="../src/mainwindow.cpp" line="204"/>
     182        <location filename="../src/mainwindow.cpp" line="225"/>
     183        <location filename="../src/mainwindow.cpp" line="226"/>
    174184        <source>%1 Task Files</source>
    175185        <translation>Файлы условий %1</translation>
    176186    </message>
    177187    <message>
    178         <location filename="../src/mainwindow.cpp" line="181"/>
    179         <source>New Task</source>
    180         <translation>Создать задачу</translation>
    181     </message>
    182     <message>
    183         <location filename="../src/mainwindow.cpp" line="181"/>
    184         <location filename="../src/mainwindow.cpp" line="195"/>
    185         <location filename="../src/mainwindow.cpp" line="462"/>
     188        <location filename="../src/mainwindow.cpp" line="192"/>
    186189        <source>Would you like to save changes in current task?</source>
    187190        <translation>Желаете сохранить изменения в текущей задаче?</translation>
    188191    </message>
    189192    <message>
    190         <location filename="../src/mainwindow.cpp" line="195"/>
    191         <source>Task Open</source>
    192         <translation>Открытие задания</translation>
    193     </message>
    194     <message>
    195         <location filename="../src/mainwindow.cpp" line="230"/>
     193        <location filename="../src/mainwindow.cpp" line="263"/>
    196194        <source>HTML Files</source>
    197195        <translation>Файлы HTML</translation>
    198196    </message>
    199197    <message>
    200         <location filename="../src/mainwindow.cpp" line="231"/>
     198        <location filename="../src/mainwindow.cpp" line="265"/>
    201199        <source>OpenDocument Files</source>
    202200        <translation>Файлы OpenDocument</translation>
    203201    </message>
    204202    <message>
    205         <location filename="../src/mainwindow.cpp" line="250"/>
     203        <location filename="../src/mainwindow.cpp" line="295"/>
    206204        <source>%1 Task File</source>
    207205        <translation>Файл условия %1</translation>
    208206    </message>
    209207    <message>
    210         <location filename="../src/mainwindow.cpp" line="273"/>
     208        <location filename="../src/mainwindow.cpp" line="326"/>
    211209        <source>Settings Changed</source>
    212210        <translation>Параметры изменены</translation>
    213211    </message>
    214212    <message>
    215         <location filename="../src/mainwindow.cpp" line="273"/>
     213        <location filename="../src/mainwindow.cpp" line="326"/>
    216214        <source>You have changed color settings.
    217215Do you wish to apply them to current solution text?</source>
     
    220218    </message>
    221219    <message>
    222         <location filename="../src/mainwindow.cpp" line="337"/>
     220        <location filename="../src/mainwindow.cpp" line="390"/>
    223221        <source>Data error</source>
    224222        <translation>Ошибка в данных</translation>
    225223    </message>
    226224    <message>
    227         <location filename="../src/mainwindow.cpp" line="337"/>
     225        <location filename="../src/mainwindow.cpp" line="390"/>
    228226        <source>Error in cell [Row %1; Column %2]: Invalid data format.</source>
    229227        <translation>Ошибка в ячейке [Строка %1; Колонка %2]: Неверный формат данных.</translation>
    230228    </message>
    231229    <message>
    232         <location filename="../src/mainwindow.cpp" line="350"/>
     230        <location filename="../src/mainwindow.cpp" line="403"/>
    233231        <source>Variant #%1</source>
    234232        <translation>Вариант №%1</translation>
    235233    </message>
    236234    <message>
    237         <location filename="../src/mainwindow.cpp" line="351"/>
     235        <location filename="../src/mainwindow.cpp" line="404"/>
    238236        <source>Task:</source>
    239237        <translation>Условие:</translation>
    240238    </message>
    241239    <message>
    242         <location filename="../src/mainwindow.cpp" line="354"/>
    243         <location filename="../src/mainwindow.cpp" line="380"/>
     240        <location filename="../src/mainwindow.cpp" line="407"/>
     241        <location filename="../src/mainwindow.cpp" line="433"/>
    244242        <source>Solution of Variant #%1 task</source>
    245243        <translation>Решение варианта №%1</translation>
    246244    </message>
    247245    <message>
    248         <location filename="../src/mainwindow.cpp" line="361"/>
     246        <location filename="../src/mainwindow.cpp" line="414"/>
    249247        <source>Step #%1</source>
    250248        <translation>Шаг №%1</translation>
    251249    </message>
    252250    <message>
    253         <location filename="../src/mainwindow.cpp" line="364"/>
     251        <location filename="../src/mainwindow.cpp" line="417"/>
    254252        <source>This step has alternate candidates for branching.</source>
    255253        <translation>У этого шага есть альтернативные кандидаты на ветвление.</translation>
    256254    </message>
    257255    <message>
    258         <location filename="../src/mainwindow.cpp" line="376"/>
     256        <location filename="../src/mainwindow.cpp" line="429"/>
    259257        <source>Optimal path:</source>
    260258        <translation>Оптимальный путь:</translation>
    261259    </message>
    262260    <message>
    263         <location filename="../src/mainwindow.cpp" line="378"/>
     261        <location filename="../src/mainwindow.cpp" line="431"/>
    264262        <source>The price is &lt;b&gt;%1&lt;/b&gt; units.</source>
    265263        <translation>Стоимость - &lt;b&gt;%1&lt;/b&gt; единиц.</translation>
    266264    </message>
    267265    <message>
    268         <location filename="../src/mainwindow.cpp" line="439"/>
     266        <location filename="../src/mainwindow.cpp" line="492"/>
    269267        <source>Language will be autodetected on next application start.</source>
    270268        <translation>Язык будет автоматически определен при следующем запуске приложения.</translation>
    271269    </message>
    272270    <message>
    273         <location filename="../src/mainwindow.cpp" line="448"/>
     271        <location filename="../src/mainwindow.cpp" line="501"/>
    274272        <source>You have language autodetection turned on.
    275273It needs to be off.
     
    280278    </message>
    281279    <message>
    282         <location filename="../src/mainwindow.cpp" line="462"/>
    283         <source>Application Close</source>
    284         <translation>Закрытие приложения</translation>
     280        <location filename="../src/mainwindow.cpp" line="506"/>
     281        <location filename="../src/mainwindow.h" line="76"/>
     282        <source>Untitled</source>
     283        <translation>Без имени</translation>
    285284    </message>
    286285    <message>
  • i18n/uk.ts

    r9aa0e521ed rb424a7e320  
    3434        <location filename="../src/tspmodel.cpp" line="152"/>
    3535        <location filename="../src/tspmodel.cpp" line="160"/>
    36         <location filename="../src/tspmodel.cpp" line="175"/>
    37         <location filename="../src/tspmodel.cpp" line="191"/>
    38         <location filename="../src/tspmodel.cpp" line="204"/>
    39         <location filename="../src/tspmodel.cpp" line="234"/>
    40         <location filename="../src/tspmodel.cpp" line="243"/>
     36        <location filename="../src/tspmodel.cpp" line="181"/>
     37        <location filename="../src/tspmodel.cpp" line="201"/>
     38        <location filename="../src/tspmodel.cpp" line="214"/>
     39        <location filename="../src/tspmodel.cpp" line="245"/>
     40        <location filename="../src/tspmodel.cpp" line="254"/>
    4141        <source>Task Load</source>
    4242        <translation>Завантаження умови</translation>
     
    4444    <message>
    4545        <location filename="../src/tspmodel.cpp" line="152"/>
    46         <location filename="../src/tspmodel.cpp" line="175"/>
    47         <location filename="../src/tspmodel.cpp" line="191"/>
    48         <location filename="../src/tspmodel.cpp" line="204"/>
    49         <location filename="../src/tspmodel.cpp" line="234"/>
    50         <location filename="../src/tspmodel.cpp" line="243"/>
     46        <location filename="../src/tspmodel.cpp" line="181"/>
     47        <location filename="../src/tspmodel.cpp" line="201"/>
     48        <location filename="../src/tspmodel.cpp" line="214"/>
     49        <location filename="../src/tspmodel.cpp" line="245"/>
     50        <location filename="../src/tspmodel.cpp" line="254"/>
    5151        <source>Unable to load task:</source>
    5252        <translation>Неможливо завантажити умову:</translation>
     
    6060    </message>
    6161    <message>
    62         <location filename="../src/tspmodel.cpp" line="175"/>
     62        <location filename="../src/tspmodel.cpp" line="181"/>
    6363        <source>Unknown file format or file is corrupted.</source>
    6464        <translation>Невідомий формат файлу або файл пошкоджено.</translation>
    6565    </message>
    6666    <message>
    67         <location filename="../src/tspmodel.cpp" line="191"/>
    68         <location filename="../src/tspmodel.cpp" line="234"/>
     67        <location filename="../src/tspmodel.cpp" line="201"/>
     68        <location filename="../src/tspmodel.cpp" line="245"/>
    6969        <source>File version is newer than application supports.
    7070Please, try to update application.</source>
     
    7373    </message>
    7474    <message>
    75         <location filename="../src/tspmodel.cpp" line="204"/>
    76         <location filename="../src/tspmodel.cpp" line="243"/>
     75        <location filename="../src/tspmodel.cpp" line="214"/>
     76        <location filename="../src/tspmodel.cpp" line="254"/>
    7777        <source>Unexpected data read.
    7878File is possibly corrupted.</source>
     
    8181    </message>
    8282    <message>
    83         <location filename="../src/tspmodel.cpp" line="273"/>
    84         <location filename="../src/tspmodel.cpp" line="279"/>
    85         <location filename="../src/tspmodel.cpp" line="286"/>
    86         <location filename="../src/tspmodel.cpp" line="293"/>
    87         <location filename="../src/tspmodel.cpp" line="300"/>
    88         <location filename="../src/tspmodel.cpp" line="307"/>
    89         <location filename="../src/tspmodel.cpp" line="314"/>
    90         <location filename="../src/tspmodel.cpp" line="324"/>
     83        <location filename="../src/tspmodel.cpp" line="285"/>
     84        <location filename="../src/tspmodel.cpp" line="291"/>
     85        <location filename="../src/tspmodel.cpp" line="298"/>
     86        <location filename="../src/tspmodel.cpp" line="305"/>
     87        <location filename="../src/tspmodel.cpp" line="312"/>
     88        <location filename="../src/tspmodel.cpp" line="319"/>
     89        <location filename="../src/tspmodel.cpp" line="326"/>
     90        <location filename="../src/tspmodel.cpp" line="336"/>
    9191        <source>Task Save</source>
    9292        <translation>Збереження умови</translation>
    9393    </message>
    9494    <message>
    95         <location filename="../src/tspmodel.cpp" line="273"/>
     95        <location filename="../src/tspmodel.cpp" line="285"/>
    9696        <source>Unable to create task file.
    9797Error: %1
     
    102102    </message>
    103103    <message>
    104         <location filename="../src/tspmodel.cpp" line="279"/>
    105         <location filename="../src/tspmodel.cpp" line="286"/>
    106         <location filename="../src/tspmodel.cpp" line="293"/>
    107         <location filename="../src/tspmodel.cpp" line="300"/>
    108         <location filename="../src/tspmodel.cpp" line="307"/>
    109         <location filename="../src/tspmodel.cpp" line="314"/>
    110         <location filename="../src/tspmodel.cpp" line="324"/>
     104        <location filename="../src/tspmodel.cpp" line="291"/>
     105        <location filename="../src/tspmodel.cpp" line="298"/>
     106        <location filename="../src/tspmodel.cpp" line="305"/>
     107        <location filename="../src/tspmodel.cpp" line="312"/>
     108        <location filename="../src/tspmodel.cpp" line="319"/>
     109        <location filename="../src/tspmodel.cpp" line="326"/>
     110        <location filename="../src/tspmodel.cpp" line="336"/>
    111111        <source>Unable to save task.
    112112Error: %1</source>
     
    578578    </message>
    579579    <message>
    580         <location filename="../src/mainwindow.cpp" line="141"/>
    581         <location filename="../src/mainwindow.cpp" line="439"/>
    582         <location filename="../src/mainwindow.cpp" line="448"/>
     580        <location filename="../src/mainwindow.cpp" line="146"/>
     581        <location filename="../src/mainwindow.cpp" line="492"/>
     582        <location filename="../src/mainwindow.cpp" line="501"/>
    583583        <source>Language change</source>
    584584        <translation>Зміна мови</translation>
    585585    </message>
    586586    <message>
    587         <location filename="../src/mainwindow.cpp" line="141"/>
     587        <location filename="../src/mainwindow.cpp" line="146"/>
    588588        <source>Unable to load translation language.</source>
    589589        <translation>Неможливо завантажити переклад.</translation>
    590590    </message>
    591591    <message>
    592         <location filename="../src/mainwindow.cpp" line="202"/>
     592        <location filename="../src/mainwindow.cpp" line="170"/>
     593        <source>Travelling Salesman Problem</source>
     594        <translation>Задача комівояжера</translation>
     595    </message>
     596    <message>
     597        <location filename="../src/mainwindow.cpp" line="192"/>
     598        <source>Unsaved Changes</source>
     599        <translation>Незбережені зміни</translation>
     600    </message>
     601    <message>
     602        <location filename="../src/mainwindow.cpp" line="224"/>
    593603        <source>All Supported Formats</source>
    594604        <translation>Усі підтримувані формати</translation>
    595605    </message>
    596606    <message>
    597         <location filename="../src/mainwindow.cpp" line="205"/>
    598         <location filename="../src/mainwindow.cpp" line="232"/>
    599         <location filename="../src/mainwindow.cpp" line="251"/>
     607        <location filename="../src/mainwindow.cpp" line="227"/>
     608        <location filename="../src/mainwindow.cpp" line="267"/>
     609        <location filename="../src/mainwindow.cpp" line="296"/>
    600610        <source>All Files</source>
    601611        <translation>Усі файли</translation>
    602612    </message>
    603613    <message>
    604         <location filename="../src/mainwindow.cpp" line="203"/>
    605         <location filename="../src/mainwindow.cpp" line="204"/>
     614        <location filename="../src/mainwindow.cpp" line="225"/>
     615        <location filename="../src/mainwindow.cpp" line="226"/>
    606616        <source>%1 Task Files</source>
    607617        <translation>Файли умов %1</translation>
    608618    </message>
    609619    <message>
    610         <location filename="../src/mainwindow.cpp" line="181"/>
    611         <source>New Task</source>
    612         <translation>Нова задача</translation>
    613     </message>
    614     <message>
    615         <location filename="../src/mainwindow.cpp" line="181"/>
    616         <location filename="../src/mainwindow.cpp" line="195"/>
    617         <location filename="../src/mainwindow.cpp" line="462"/>
     620        <location filename="../src/mainwindow.cpp" line="192"/>
    618621        <source>Would you like to save changes in current task?</source>
    619622        <translation>Бажаете зберегти зміни у поточній задачі?</translation>
    620623    </message>
    621624    <message>
    622         <location filename="../src/mainwindow.cpp" line="195"/>
    623         <source>Task Open</source>
    624         <translation>Відкриття завдання</translation>
    625     </message>
    626     <message>
    627         <location filename="../src/mainwindow.cpp" line="230"/>
     625        <location filename="../src/mainwindow.cpp" line="263"/>
    628626        <source>HTML Files</source>
    629627        <translation>Файли HTML</translation>
    630628    </message>
    631629    <message>
    632         <location filename="../src/mainwindow.cpp" line="231"/>
     630        <location filename="../src/mainwindow.cpp" line="265"/>
    633631        <source>OpenDocument Files</source>
    634632        <translation>Файли OpenDocument</translation>
    635633    </message>
    636634    <message>
    637         <location filename="../src/mainwindow.cpp" line="250"/>
     635        <location filename="../src/mainwindow.cpp" line="295"/>
    638636        <source>%1 Task File</source>
    639637        <translation>Файл умови %1</translation>
    640638    </message>
    641639    <message>
    642         <location filename="../src/mainwindow.cpp" line="273"/>
     640        <location filename="../src/mainwindow.cpp" line="326"/>
    643641        <source>Settings Changed</source>
    644642        <translation>Параметри змінено</translation>
    645643    </message>
    646644    <message>
    647         <location filename="../src/mainwindow.cpp" line="273"/>
     645        <location filename="../src/mainwindow.cpp" line="326"/>
    648646        <source>You have changed color settings.
    649647Do you wish to apply them to current solution text?</source>
     
    652650    </message>
    653651    <message>
    654         <location filename="../src/mainwindow.cpp" line="337"/>
     652        <location filename="../src/mainwindow.cpp" line="390"/>
    655653        <source>Data error</source>
    656654        <translation>Помилка у даних</translation>
    657655    </message>
    658656    <message>
    659         <location filename="../src/mainwindow.cpp" line="337"/>
     657        <location filename="../src/mainwindow.cpp" line="390"/>
    660658        <source>Error in cell [Row %1; Column %2]: Invalid data format.</source>
    661659        <translation>Помилка у комірці  [Рядок %1; Колонка %2]: Невірний формат даних.</translation>
    662660    </message>
    663661    <message>
    664         <location filename="../src/mainwindow.cpp" line="350"/>
     662        <location filename="../src/mainwindow.cpp" line="403"/>
    665663        <source>Variant #%1</source>
    666664        <translation>Варіант №%1</translation>
    667665    </message>
    668666    <message>
    669         <location filename="../src/mainwindow.cpp" line="351"/>
     667        <location filename="../src/mainwindow.cpp" line="404"/>
    670668        <source>Task:</source>
    671669        <translation>Умова:</translation>
    672670    </message>
    673671    <message>
    674         <location filename="../src/mainwindow.cpp" line="354"/>
    675         <location filename="../src/mainwindow.cpp" line="380"/>
     672        <location filename="../src/mainwindow.cpp" line="407"/>
     673        <location filename="../src/mainwindow.cpp" line="433"/>
    676674        <source>Solution of Variant #%1 task</source>
    677675        <translation>Розв&apos;язок варіанту №%1</translation>
    678676    </message>
    679677    <message>
    680         <location filename="../src/mainwindow.cpp" line="361"/>
     678        <location filename="../src/mainwindow.cpp" line="414"/>
    681679        <source>Step #%1</source>
    682680        <translation>Крок №%1</translation>
    683681    </message>
    684682    <message>
    685         <location filename="../src/mainwindow.cpp" line="364"/>
     683        <location filename="../src/mainwindow.cpp" line="417"/>
    686684        <source>This step has alternate candidates for branching.</source>
    687685        <translation>У цьому кроці є альтернативні кандидати на розгалудження.</translation>
    688686    </message>
    689687    <message>
    690         <location filename="../src/mainwindow.cpp" line="376"/>
     688        <location filename="../src/mainwindow.cpp" line="429"/>
    691689        <source>Optimal path:</source>
    692690        <translation>Оптимальний шлях:</translation>
    693691    </message>
    694692    <message>
    695         <location filename="../src/mainwindow.cpp" line="378"/>
     693        <location filename="../src/mainwindow.cpp" line="431"/>
    696694        <source>The price is &lt;b&gt;%1&lt;/b&gt; units.</source>
    697695        <translation>Вартість - &lt;b&gt;%1&lt;/b&gt; одиниць.</translation>
    698696    </message>
    699697    <message>
    700         <location filename="../src/mainwindow.cpp" line="439"/>
     698        <location filename="../src/mainwindow.cpp" line="492"/>
    701699        <source>Language will be autodetected on next application start.</source>
    702700        <translation>Мову буде автоматично визначено при наступному запуску додатку.</translation>
    703701    </message>
    704702    <message>
    705         <location filename="../src/mainwindow.cpp" line="448"/>
     703        <location filename="../src/mainwindow.cpp" line="501"/>
    706704        <source>You have language autodetection turned on.
    707705It needs to be off.
     
    712710    </message>
    713711    <message>
    714         <location filename="../src/mainwindow.cpp" line="462"/>
    715         <source>Application Close</source>
    716         <translation>Закриття додатку</translation>
     712        <location filename="../src/mainwindow.cpp" line="506"/>
     713        <location filename="../src/mainwindow.h" line="76"/>
     714        <source>Untitled</source>
     715        <translation>Без імені</translation>
    717716    </message>
    718717</context>
  • src/mainwindow.cpp

    r9aa0e521ed rb424a7e320  
    8787        connect(tspmodel,SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)),this,SLOT(dataChanged()));
    8888        connect(tspmodel,SIGNAL(layoutChanged()),this,SLOT(dataChanged()));
    89         if (QCoreApplication::arguments().count() > 1) {
    90                 tspmodel->loadTask(QCoreApplication::arguments().at(1));
     89        if ((QCoreApplication::arguments().count() > 1) && (tspmodel->loadTask(QCoreApplication::arguments().at(1)))) {
     90                setFileName(QCoreApplication::arguments().at(1));
    9191                setWindowModified(false);
    92         }
     92        } else
     93                setFileName();
    9394#ifdef Q_OS_WINCE
    9495        taskView->resizeColumnsToContents();
     
    164165}
    165166
     167void MainWindow::setFileName(QString fileName)
     168{
     169        this->fileName = fileName;
     170        setWindowTitle(QString("%1[*] - %2").arg(QFileInfo(fileName).completeBaseName()).arg(trUtf8("Travelling Salesman Problem")));
     171}
     172
    166173void MainWindow::spinCitiesValueChanged(int n)
    167174{
     
    179186}
    180187
     188bool MainWindow::maybeSave()
     189{
     190        if (!isWindowModified())
     191                return true;
     192int res = QMessageBox(QMessageBox::Warning,trUtf8("Unsaved Changes"),trUtf8("Would you like to save changes in current task?"),QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel,this).exec();
     193        if (res == QMessageBox::Save)
     194                return saveTask();
     195        else if (res == QMessageBox::Cancel)
     196                return false;
     197        else
     198                return true;
     199}
    181200
    182201void MainWindow::actionFileNewTriggered()
    183202{
    184         if (isWindowModified()) {
    185 int res = QMessageBox(QMessageBox::Warning,trUtf8("New Task"),trUtf8("Would you like to save changes in current task?"),QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel,this).exec();
    186                 if ((res == QMessageBox::Cancel) || ((res == QMessageBox::Yes) && !saveTask()))
    187                         return;
    188         }
     203        if (!maybeSave())
     204                return;
    189205        tspmodel->clear();
     206#ifdef Q_OS_WINCE
     207        taskView->resizeColumnsToContents();
     208        taskView->resizeRowsToContents();
     209#endif
     210        setFileName();
    190211        setWindowModified(false);
    191212        tabWidget->setCurrentIndex(0);
     
    196217void MainWindow::actionFileOpenTriggered()
    197218{
    198         if (isWindowModified()) {
    199 int res = QMessageBox(QMessageBox::Warning,trUtf8("Task Open"),trUtf8("Would you like to save changes in current task?"),QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel,this).exec();
    200                 if ((res == QMessageBox::Cancel) || ((res == QMessageBox::Yes) && !saveTask()))
    201                         return;
    202         }
     219        if (!maybeSave())
     220                return;
    203221QFileDialog od(this);
    204222        od.setAcceptMode(QFileDialog::AcceptOpen);
    205223        od.setFileMode(QFileDialog::ExistingFile);
    206224QStringList filters(trUtf8("All Supported Formats") + " (*.tspt *.zkt)");
    207         filters.append(QString(trUtf8("%1 Task Files")).arg("TSPSG") + " (*.tspt)");
    208         filters.append(QString(trUtf8("%1 Task Files")).arg("ZKomModRd") + " (*.zkt)");
     225        filters.append(trUtf8("%1 Task Files").arg("TSPSG") + " (*.tspt)");
     226        filters.append(trUtf8("%1 Task Files").arg("ZKomModRd") + " (*.zkt)");
    209227        filters.append(trUtf8("All Files") + " (*)");
    210228        od.setNameFilters(filters);
     
    212230                return;
    213231QStringList files = od.selectedFiles();
    214         if (files.size() < 1)
    215                 return;
    216         tspmodel->loadTask(files.first());
     232        if (files.empty())
     233                return;
     234        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
     235        if (!tspmodel->loadTask(files.first())) {
     236                QApplication::restoreOverrideCursor();
     237                return;
     238        }
     239        setFileName(files.first());
     240#ifdef Q_OS_WINCE
     241        taskView->resizeColumnsToContents();
     242        taskView->resizeRowsToContents();
     243#endif
     244        tabWidget->setCurrentIndex(0);
    217245        setWindowModified(false);
    218246        solutionText->clear();
    219247        enableSolutionActions(false);
     248        QApplication::restoreOverrideCursor();
    220249}
    221250
     
    264293QFileDialog sd(this);
    265294        sd.setAcceptMode(QFileDialog::AcceptSave);
    266 QStringList filters(QString(trUtf8("%1 Task File")).arg("TSPSG") + " (*.tspt)");
     295QStringList filters(trUtf8("%1 Task File").arg("TSPSG") + " (*.tspt)");
    267296        filters.append(trUtf8("All Files") + " (*)");
    268297        sd.setNameFilters(filters);
    269298        sd.setDefaultSuffix("tspt");
     299        if (fileName.endsWith(".tspt",Qt::CaseInsensitive))
     300                sd.selectFile(fileName);
     301        else
     302                sd.selectFile(QFileInfo(fileName).canonicalPath() + "/" + QFileInfo(fileName).completeBaseName() + ".tspt");
    270303        if (sd.exec() != QDialog::Accepted)
    271304                return false;
    272305QStringList files = sd.selectedFiles();
    273         if (files.size() < 1)
     306        if (files.empty())
    274307                return false;
     308        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
    275309        if (tspmodel->saveTask(files.first())) {
     310                setFileName(files.first());
    276311                setWindowModified(false);
     312                QApplication::restoreOverrideCursor();
    277313                return true;
    278         } else
    279                 return false;
     314        }
     315        QApplication::restoreOverrideCursor();
     316        return false;
    280317}
    281318
     
    351388                        row.append(tspmodel->index(r,c).data(Qt::UserRole).toDouble(&ok));
    352389                        if (!ok) {
    353                                 QMessageBox(QMessageBox::Critical,trUtf8("Data error"),QString(trUtf8("Error in cell [Row %1; Column %2]: Invalid data format.")).arg(r + 1).arg(c + 1),QMessageBox::Ok,this).exec();
     390                                QMessageBox(QMessageBox::Critical,trUtf8("Data error"),trUtf8("Error in cell [Row %1; Column %2]: Invalid data format.").arg(r + 1).arg(c + 1),QMessageBox::Ok,this).exec();
    354391                                return;
    355392                        }
     
    467504                        return;
    468505        }
     506bool untitled = (fileName == trUtf8("Untitled") + ".tspt");
    469507        if (loadLanguage(action->data().toString())) {
    470508                settings->setValue("Language",action->data().toString());
    471509                retranslateUi(this);
     510                if (untitled)
     511                        setFileName();
    472512        }
    473513}
     
    475515void MainWindow::closeEvent(QCloseEvent *event)
    476516{
    477         if (isWindowModified()) {
    478 int res = QMessageBox(QMessageBox::Warning,trUtf8("Application Close"),trUtf8("Would you like to save changes in current task?"),QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel,this).exec();
    479                 if ((res == QMessageBox::Cancel) || ((res == QMessageBox::Yes) && !saveTask())) {
    480                         event->ignore();
    481                         return;
    482                 }
     517        if (!maybeSave()) {
     518                event->ignore();
     519                return;
    483520        }
    484521        settings->setValue("NumCities",spinCities->value());
  • src/mainwindow.h

    r9aa0e521ed rb424a7e320  
    3838{
    3939        Q_OBJECT
     40
    4041public:
    4142        MainWindow(QWidget *parent = 0);
    4243        void closeEvent(QCloseEvent *);
     44
    4345private slots:
    4446        void actionFileNewTriggered();
     
    5860        void spinCitiesValueChanged(int);
    5961        void numCitiesChanged(int);
     62
    6063private:
    6164        QSettings *settings;
    6265        QPrinter *printer;
    6366        CTSPModel *tspmodel;
     67        QString fileName;
    6468        QActionGroup *groupSettingsLanguageList;
    6569        QStringList output;
     70        void enableSolutionActions(bool enable = true);
     71        void initDocStyleSheet();
    6672        bool loadLanguage(QString lang = "");
    6773        void loadLangList();
    68         void initDocStyleSheet();
     74        bool maybeSave();
     75        void outputMatrix(tMatrix, QStringList &, int nRow = -1, int nCol = -1);
     76        void setFileName(QString fileName = trUtf8("Untitled") + ".tspt");
    6977        bool saveTask();
    70         void outputMatrix(tMatrix, QStringList &, int nRow = -1, int nCol = -1);
    71         void enableSolutionActions(bool enable = true);
    7278};
    7379
  • src/tspmodel.cpp

    r9aa0e521ed rb424a7e320  
    154154}
    155155
    156 void CTSPModel::loadTask(QString fname)
     156bool CTSPModel::loadTask(QString fname)
    157157{
    158158QFile f(fname);
    159159        if (!f.open(QIODevice::ReadOnly)) {
    160160                QMessageBox(QMessageBox::Critical,trUtf8("Task Load"),QString(trUtf8("Unable to open task file.\nError: %1")).arg(f.errorString()),QMessageBox::Ok).exec();
    161                 return;
     161                return false;
    162162        }
    163163QDataStream ds(&f);
     
    166166        ds >> sig;
    167167        if (loadError(ds.status()))
    168                 return;
     168                return false;
    169169        ds.device()->reset();
    170170        if (sig == TSPT)
    171                 loadTSPT(&ds);
     171                if (!loadTSPT(&ds)) {
     172                        f.close();
     173                        return false;
     174                }
    172175        else if ((sig >> 16) == ZKT)
    173                 loadZKT(&ds);
    174         else
     176                if (!loadZKT(&ds)) {
     177                        f.close();
     178                        return false;
     179                }
     180        else {
    175181                QMessageBox(QMessageBox::Critical,trUtf8("Task Load"),trUtf8("Unable to load task:") + "\n" + trUtf8("Unknown file format or file is corrupted."),QMessageBox::Ok).exec();
     182                f.close();
     183                return false;
     184        }
    176185        f.close();
    177 }
    178 
    179 void CTSPModel::loadTSPT(QDataStream *ds)
     186        return true;
     187}
     188
     189bool CTSPModel::loadTSPT(QDataStream *ds)
    180190{
    181191        // Skipping signature
    182192        ds->skipRawData(sizeof(TSPT));
    183193        if (loadError(ds->status()))
    184                 return;
     194                return false;
    185195        // File version
    186196quint8 version;
    187197        *ds >> version;
    188198        if (loadError(ds->status()))
    189                 return;
     199                return false;
    190200        if (version > TSPT_VERSION) {
    191201                QMessageBox(QMessageBox::Critical,trUtf8("Task Load"),trUtf8("Unable to load task:") + "\n" + trUtf8("File version is newer than application supports.\nPlease, try to update application."),QMessageBox::Ok).exec();
    192                 return;
     202                return false;
    193203        }
    194204        // Skipping metadata
    195205        ds->skipRawData(TSPT_META_SIZE);
    196206        if (loadError(ds->status()))
    197                 return;
     207                return false;
    198208        // Cities number
    199209quint16 size;
    200210        *ds >> size;
    201211        if (loadError(ds->status()))
    202                 return;
     212                return false;
    203213        if (size < 3) {
    204214                QMessageBox(QMessageBox::Critical,trUtf8("Task Load"),trUtf8("Unable to load task:") + "\n" + trUtf8("Unexpected data read.\nFile is possibly corrupted."),QMessageBox::Ok).exec();
    205                 return;
     215                return false;
    206216        }
    207217        if (nCities != size)
     
    214224                                if (loadError(ds->status())) {
    215225                                        clear();
    216                                         return;
     226                                        return false;
    217227                                }
    218228                        }
    219229        emit dataChanged(index(0,0),index(nCities - 1,nCities - 1));
    220 }
    221 
    222 void CTSPModel::loadZKT(QDataStream *ds)
     230        return true;
     231}
     232
     233bool CTSPModel::loadZKT(QDataStream *ds)
    223234{
    224235        // Skipping signature
    225236        ds->skipRawData(sizeof(ZKT));
    226237        if (loadError(ds->status()))
    227                 return;
     238                return false;
    228239        // File version
    229240quint16 version;
    230241        ds->readRawData(reinterpret_cast<char *>(&version),2);
    231242        if (loadError(ds->status()))
    232                 return;
     243                return false;
    233244        if (version > ZKT_VERSION) {
    234245                QMessageBox(QMessageBox::Critical,trUtf8("Task Load"),trUtf8("Unable to load task:") + "\n" + trUtf8("File version is newer than application supports.\nPlease, try to update application."),QMessageBox::Ok).exec();
    235                 return;
     246                return false;
    236247        }
    237248        // Cities number
     
    239250        ds->readRawData(reinterpret_cast<char *>(&size),1);
    240251        if (loadError(ds->status()))
    241                 return;
     252                return false;
    242253        if ((size < 3) || (size > 5)) {
    243254                QMessageBox(QMessageBox::Critical,trUtf8("Task Load"),trUtf8("Unable to load task:") + "\n" + trUtf8("Unexpected data read.\nFile is possibly corrupted."),QMessageBox::Ok).exec();
    244                 return;
     255                return false;
    245256        }
    246257        if (nCities != size)
     
    254265                                if (loadError(ds->status())) {
    255266                                        clear();
    256                                         return;
     267                                        return false;
    257268                                }
    258269                                table[r][c] = val;
     
    261272                                if (loadError(ds->status())) {
    262273                                        clear();
    263                                         return;
     274                                        return false;
    264275                                }
    265276                        }
    266277        emit dataChanged(index(0,0),index(nCities - 1,nCities - 1));
     278        return true;
    267279}
    268280
  • src/tspmodel.h

    r9aa0e521ed rb424a7e320  
    3030{
    3131        Q_OBJECT
     32
    3233public:
    3334        CTSPModel(QObject *parent = 0);
     35        void clear();
     36        int columnCount(const QModelIndex &) const;
     37        QVariant data(const QModelIndex &, int) const;
     38        Qt::ItemFlags flags(const QModelIndex &) const;
     39        QVariant headerData(int, Qt::Orientation, int) const;
     40        bool loadTask(QString);
     41        quint16 numCities() const;
     42        void randomize();
    3443        int rowCount(const QModelIndex &) const;
    35         int columnCount(const QModelIndex &) const;
    36         QVariant headerData(int, Qt::Orientation, int) const;
    37         QVariant data(const QModelIndex &, int) const;
     44        bool saveTask(QString);
    3845        bool setData(const QModelIndex &, const QVariant &, int);
    39         Qt::ItemFlags flags(const QModelIndex &) const;
    40         quint16 numCities() const;
    4146        void setNumCities(int);
    42         void clear();
    43         void loadTask(QString);
    44         bool saveTask(QString);
    45         void randomize();
     47
    4648signals:
    4749        void numCitiesChanged(int);
     50
    4851private:
    4952        QSettings *settings;
    5053        QVector<QVector<double> > table;
    5154        quint16 nCities;
     55        bool loadError(QDataStream::Status);
     56        bool loadZKT(QDataStream *);
     57        bool loadTSPT(QDataStream *);
    5258        int rand(int, int) const;
    53         bool loadError(QDataStream::Status);
    54         void loadZKT(QDataStream *);
    55         void loadTSPT(QDataStream *);
    5659};
    5760
  • ui/mainwindow.ce.ui

    r9aa0e521ed rb424a7e320  
    1515  </property>
    1616  <property name="windowTitle">
    17    <string>Travelling salesman problem[*]</string>
     17   <string>Travelling Salesman Problem[*]</string>
    1818  </property>
    1919  <property name="windowIcon">
    2020   <iconset resource="../resources/tspsg.qrc">
    21     <normaloff>:/images/Icon.png</normaloff>:/images/Icon.png</iconset>
     21    <normaloff>:/images/icon.png</normaloff>:/images/icon.png</iconset>
    2222  </property>
    2323  <widget class="QWidget" name="centralwidget">
  • ui/mainwindow.ui

    r9aa0e521ed rb424a7e320  
    1212  </property>
    1313  <property name="windowTitle">
    14    <string>Travelling salesman problem[*]</string>
     14   <string>Travelling Salesman Problem</string>
    1515  </property>
    1616  <property name="windowIcon">
    1717   <iconset resource="../resources/tspsg.qrc">
    18     <normaloff>:/images/Icon.png</normaloff>:/images/Icon.png</iconset>
     18    <normaloff>:/images/icon.png</normaloff>:/images/icon.png</iconset>
    1919  </property>
    2020  <widget class="QWidget" name="centralwidget">
Note: See TracChangeset for help on using the changeset viewer.