@@ -940,42 +940,79 @@ void MainWindow::on_Determinization_advanced_example_4_triggered()
940
940
}
941
941
void MainWindow::on_action_save_triggered ()
942
942
{
943
- QFile file (" /tmp/test.txt" );
943
+ if (activeConversion == none)
944
+ {
945
+ showStatusMessage (tr (" ERROR: No conversion selected!" ));
946
+ return ;
947
+ }
948
+ QString filename = " " ;
949
+ if ((filename = QFileDialog::getSaveFileName (this ,tr (" Save conversion" ))) == " " )
950
+ return ;
951
+
952
+ QFile file (filename);
944
953
file.open (QIODevice::WriteOnly);
945
954
QDataStream out (&file); // we will serialize the data into the file
946
955
out << activeConversion << mode;
947
956
switch (activeConversion)
948
957
{
949
- case none:
950
- break ;
951
958
case RE_to_FA:
952
- out << *reg_exp_algorithm->re ;
959
+ {
960
+ // In play mode does not make sence to save output fa
961
+ if (mode == Algorithm::PLAY_MODE)
962
+ {
963
+ out << reg_exp_algorithm->re ->regexp ;
964
+ }
965
+ else
966
+ {
967
+ out << *reg_exp_algorithm->re ;
968
+ }
969
+ }
953
970
break ;
954
971
case REMOVE_EPSILON:
972
+ if (mode == Algorithm::PLAY_MODE)
973
+ {
974
+ out << remove_epsilon_algorithm->FA ;
975
+ }
976
+ else
977
+ {
955
978
out << remove_epsilon_algorithm->FA << remove_epsilon_algorithm->non_epsilon_FA ;
979
+ }
956
980
break ;
957
981
case DFA:
958
- out << DFA_algorithm->FA << DFA_algorithm->DFA ;
982
+ if (mode == Algorithm::PLAY_MODE)
983
+ {
984
+ out << DFA_algorithm->FA ;
985
+ }
986
+ else
987
+ {
988
+ out << DFA_algorithm->FA << DFA_algorithm->DFA ;
989
+ }
990
+ break ;
991
+ // This should never happend
992
+ case none:
959
993
break ;
960
994
}
961
995
file.close ();
962
996
}
963
997
964
998
void MainWindow::on_action_open_file_triggered ()
965
999
{
966
- QFile read (" /tmp/test.txt" );
1000
+ QString filename = " " ;
1001
+ if ((filename = QFileDialog::getOpenFileName (this , tr (" Open conversion" )))==" " )
1002
+ return ;
1003
+
1004
+ QFile read (filename);
967
1005
read.open (QIODevice::ReadOnly);
968
1006
QDataStream in (&read); // read the data serialized from the file
969
1007
FiniteAutomata FA;
970
1008
//
971
- Conversions conversion;
1009
+ Conversions conversion = none;
1010
+ Algorithm::modes tmp_mode = Algorithm::NONE;
1011
+
972
1012
in >> conversion;
973
- in >> mode ;
974
- switch (mode )
1013
+ in >> tmp_mode ;
1014
+ switch (tmp_mode )
975
1015
{
976
- case Algorithm::NONE:
977
-
978
- break ;
979
1016
case Algorithm::CHECK_MODE:
980
1017
on_action_check_mode_triggered ();
981
1018
break ;
@@ -985,44 +1022,64 @@ void MainWindow::on_action_open_file_triggered()
985
1022
case Algorithm::STEP_MODE:
986
1023
on_action_step_mode_triggered ();
987
1024
break ;
1025
+ case Algorithm::NONE:
1026
+ showStatusMessage (tr (" ERROR: Input file in wrong format!" ));
1027
+ return ;
1028
+ break ;
988
1029
}
1030
+ mode = tmp_mode;
989
1031
990
1032
switch (conversion)
991
1033
{
992
- case none:
993
- qDebug () << " Conversion: none" ;
994
- break ;
995
1034
case RE_to_FA:
996
1035
{
997
- qDebug () << " Conversion: RE_to_FA" ;
998
- RegExp re;
999
- in >> re;
1000
- prepareREtoFA (new RegExp (re));
1036
+ if (mode == Algorithm::PLAY_MODE)
1037
+ {
1038
+ QString regexp_str;
1039
+ in >> regexp_str;
1040
+ prepareREtoFA (new RegExp (regexp_str));
1041
+ }
1042
+ else
1043
+ {
1044
+ RegExp re;
1045
+ in >> re;
1046
+ prepareREtoFA (new RegExp (re));
1047
+ }
1001
1048
}
1002
1049
break ;
1003
1050
case REMOVE_EPSILON:
1004
1051
{
1005
- qDebug () << " Conversion: REMOVE_EPSILON" ;
1006
1052
FiniteAutomata in_FA;
1007
- FiniteAutomata out_FA;
1008
- in >> in_FA >> out_FA;
1053
+ in >> in_FA;
1009
1054
prepareRemoveEpsilon ();
1010
1055
remove_epsilon_algorithm->setInputFA (in_FA);
1011
- remove_epsilon_algorithm->setOutputFA (out_FA);
1056
+ if (mode != Algorithm::PLAY_MODE)
1057
+ {
1058
+ FiniteAutomata out_FA;
1059
+ in >> out_FA;
1060
+ remove_epsilon_algorithm->setOutputFA (out_FA);
1061
+ }
1012
1062
}
1013
1063
break ;
1014
1064
case DFA:
1015
- qDebug () << " Conversion: DFA " ;
1065
+ {
1016
1066
FiniteAutomata in_FA;
1017
- FiniteAutomata out_FA;
1018
- in >> in_FA >> out_FA;
1067
+ in >> in_FA;
1019
1068
prepareDFA ();
1020
1069
DFA_algorithm->setInputFA (in_FA);
1021
- DFA_algorithm->setOutputFA (out_FA);
1070
+ if (mode != Algorithm::PLAY_MODE)
1071
+ {
1072
+ FiniteAutomata out_FA;
1073
+ in >> out_FA;
1074
+ DFA_algorithm->setOutputFA (out_FA);
1075
+ }
1076
+ }
1077
+ break ;
1078
+ case none:
1079
+ showStatusMessage (tr (" ERROR: Input file in wrong format!" ));
1080
+ return ;
1022
1081
break ;
1023
1082
}
1024
-
1025
- qDebug () << FA;
1026
1083
}
1027
1084
1028
1085
QDataStream& operator >>(QDataStream& in, MainWindow::Conversions& e)
0 commit comments