diff --git a/src/Main_Window.cpp b/src/Main_Window.cpp
index 1fecc0a..7416c6d 100644
--- a/src/Main_Window.cpp
+++ b/src/Main_Window.cpp
@@ -1658,8 +1658,6 @@ void Main_Window::Update_VM_Port_Number()
void Main_Window::Update_Info_Text( int info_mode )
{
- #define INFO_TEXT_INDENT 25
-
Virtual_Machine *tmp_vm = Get_Current_VM();
if( tmp_vm == NULL && info_mode == 0 )
@@ -1668,1301 +1666,8 @@ void Main_Window::Update_Info_Text( int info_mode )
"Cannot Find VM!" );
return;
}
-
- ui.VM_Information_Text->clear();
-
- if( info_mode != 0 )
- {
- // This is for the Tab Info background color
- QPalette qpal;
- ui.VM_Information_Text->setHtml( "
"
- ""
- "" );
-
- QTextCursor cursor = ui.VM_Information_Text->textCursor();
- QTextCharFormat format = QTextCharFormat();
-
- QTextCharFormat bold_format = format;
- bold_format.setFontWeight( QFont::Bold );
-
- if ( calculateContrast(palette().color(QPalette::Window),palette().color(QPalette::Link)) > 3.0 )
- bold_format.setForeground( qpal.color(QPalette::Link) );
- else
- bold_format.setForeground( qpal.color(QPalette::WindowText) );
-
- QTextTableFormat table_format;
-
- table_format.setAlignment( Qt::AlignLeft );
- table_format.setCellPadding( 0 );
- table_format.setCellSpacing( 0 );
-
- QVector constraints;
- constraints << QTextLength( QTextLength::FixedLength, INFO_TEXT_INDENT ) << QTextLength( QTextLength::FixedLength, 220 );
- table_format.setColumnWidthConstraints(constraints);
-
- if( info_mode == 1 ) cursor.insertText( tr("You must create a new virtual machine"), bold_format );
- else if( info_mode == 2 ) cursor.insertText( tr("This VM uses the emulator \"%1\" that is not installed.\n"
- "The VM cannot work!").arg( (tmp_vm->Get_Machine_Accelerator() == VM::TCG) ? "TCG" : "KVM" ), bold_format );
-
- cursor.insertBlock();
-
- return;
- }
-
- // This is for the Tab Info background color
- QPalette qpal;
- ui.VM_Information_Text->setHtml( ""
- ""
- "" );
-
- QTextCursor cursor = ui.VM_Information_Text->textCursor();
- QTextCharFormat format = QTextCharFormat();
- QTextFrame *topFrame = cursor.currentFrame();
-
- // Use Scrennshot in Save Mode
- if( Settings.value("Info/Show_Screenshot_in_Save_Mode", "no").toString() == "yes" )
- {
- // Find Full Size Screenshot
- QString img_path = QDir::toNativeSeparators( Settings.value("VM_Directory", "~").toString() +
- Get_FS_Compatible_VM_Name(tmp_vm->Get_Machine_Name()) + "_screenshot" );
-
- if( ! QFile::exists(img_path) )
- {
- AQDebug( "void Main_Window::Update_Info_Text( int info_mode )",
- "Screenshot Path is Empty!" );
- }
- else
- {
- cursor.insertHtml( "width() -50) +
- "\" src=\"" + img_path + "\">" );
-
- return;
- }
- }
-
- QTextCharFormat bold_format = format;
- bold_format.setFontWeight( QFont::Bold );
- if ( calculateContrast(palette().color(QPalette::Window),palette().color(QPalette::Link)) > 3.0 )
- bold_format.setForeground( qpal.color(QPalette::Link) );
- else
- bold_format.setForeground( qpal.color(QPalette::WindowText) );
- QTextTableFormat table_format;
-
- table_format.setAlignment( Qt::AlignLeft );
- table_format.setCellPadding( 0 );
- table_format.setCellSpacing( 0 );
-
- QVector constraints;
- constraints << QTextLength( QTextLength::FixedLength, INFO_TEXT_INDENT )
- << QTextLength( QTextLength::FixedLength, 220 )
- << QTextLength( QTextLength::VariableLength, 250 );
- table_format.setColumnWidthConstraints(constraints);
-
- // Vairables
- QTextTable *table;
- QTextFrame *frame;
- QTextFrameFormat frame_format;
- QTextTableCell cell;
- QTextCursor cell_cursor;
-
- // Machine State
- if( Settings.value("Info/Machine_Details", "yes").toString() == "yes" )
- {
-
- cursor.insertText( tr("Machine"), bold_format );
- cursor.insertBlock();
-
- table = cursor.insertTable( 1, 3, table_format );
- frame = cursor.currentFrame();
-
- frame_format = frame->frameFormat();
- frame_format.setBorder( 0 );
- frame->setFrameFormat( frame_format );
-
- if( Settings.value("Info/Machine_Name", "yes").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Name:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui.Edit_Machine_Name->text(), format );
- table->insertRows( table->rows(), 1 );
- }
-
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("State:"), format );
-
- QString state_text = tmp_vm->Get_State_Text();
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( state_text, format );
- table->insertRows( table->rows(), 1 );
- }
- else
- {
- // this code is mainly here to prevent a segfault
- // it's a temporary hack, since all of the code in this method
- // should really be refactored/rewritten.
-
- table = cursor.insertTable( 1, 3, table_format );
- frame = cursor.currentFrame();
-
- frame_format = frame->frameFormat();
- frame_format.setBorder( 0 );
- frame->setFrameFormat( frame_format );
- }
-
- // General Tab
- if( Settings.value("Info/Machine_Accelerator", "yes").toString() == "yes" ||
- Settings.value("Info/Emulator_Version", "no").toString() == "yes" ||
- Settings.value("Info/Computer_Type", "yes").toString() == "yes" ||
- Settings.value("Info/Machine_Type", "no").toString() == "yes" ||
- Settings.value("Info/Boot_Priority", "yes").toString() == "yes" ||
- Settings.value("Info/CPU_Type", "no").toString() == "yes" ||
- Settings.value("Info/Number_of_CPU", "yes").toString() == "yes" ||
- Settings.value("Info/Video_Card", "yes").toString() == "yes" ||
- Settings.value("Info/Keyboard_Layout", "no").toString() == "yes" ||
- Settings.value("Info/Memory_Size", "yes").toString() == "yes" ||
- Settings.value("Info/Use_Sound", "yes").toString() == "yes" ||
- Settings.value("Info/Fullscreen", "yes").toString() == "yes" ||
- Settings.value("Info/Snapshot", "yes").toString() == "yes" ||
- Settings.value("Info/Localtime", "yes").toString() == "yes" )
- {
- cursor.setPosition( topFrame->lastPosition() );
- cursor.insertText( tr("General"), bold_format );
- cursor.insertBlock();
-
- table = cursor.insertTable( 1, 3, table_format );
-
- frame = cursor.currentFrame();
- frame->setFrameFormat( frame_format );
-
- if( Settings.value("Info/Machine_Accelerator", "yes").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Accelerator:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui.CB_Machine_Accelerator->currentText(), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/Computer_Type", "yes").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Architecture:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui.CB_Computer_Type->currentText(), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/Machine_Type", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Machine Type:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui_arch.CB_Machine_Type->currentText(), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/Boot_Priority", "yes").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Boot Priority:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui.CB_Boot_Priority->currentText(), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/CPU_Type", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("CPU Type:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui_arch.CB_CPU_Type->currentText(), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/Number_of_CPU", "yes").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Number of CPU:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui.CB_CPU_Count->currentText(), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/Video_Card", "yes").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Video Card:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui.CB_Video_Card->currentText(), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/Keyboard_Layout", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Keyboard Layout:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui.CB_Keyboard_Layout->currentText(), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/Memory_Size", "yes").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Memory Size:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( QString::number(ui.Memory_Size->value()), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/Use_Sound", "yes").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Use Sound:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
-
- if( ui.CH_sb16->isChecked() || ui.CH_es1370->isChecked() || ui.CH_Adlib->isChecked() ||
- ui.CH_AC97->isChecked() || ui.CH_GUS->isChecked() || ui.CH_PCSPK->isChecked() ||
- ui.CH_HDA->isChecked() || ui.CH_cs4231a->isChecked() )
- {
- cell_cursor.insertText( tr("Yes"), format );
- }
- else
- {
- cell_cursor.insertText( tr("No"), format );
- }
-
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/Fullscreen", "yes").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Fullscreen Mode:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui.CH_Fullscreen->isChecked() ? tr("Yes") : tr("No"), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/Snapshot", "yes").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Use Snapshot Mode:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui.CH_Snapshot->isChecked() ? tr("Yes") : tr("No"), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/Localtime", "yes").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Use Local Time:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui.CH_Local_Time->isChecked() ? tr("Yes") : tr("No"), format );
- table->insertRows( table->rows(), 1 );
- }
- }
-
- // FDD/CD/HDD
- if( (Settings.value("Info/Show_FDD", "yes").toString() == "yes" &&
- (tmp_vm->Get_FD0().Get_Enabled() ||
- tmp_vm->Get_FD1().Get_Enabled() ||
- tmp_vm->Get_Storage_Devices_List().count() > 0)) ||
-
- (Settings.value("Info/Show_CD", "yes").toString() == "yes" &&
- (tmp_vm->Get_CD_ROM().Get_Enabled() ||
- tmp_vm->Get_Storage_Devices_List().count() > 0)) ||
-
- (Settings.value("Info/Show_HDD", "yes").toString() == "yes" &&
- (tmp_vm->Get_HDA().Get_Enabled() ||
- tmp_vm->Get_HDB().Get_Enabled() ||
- tmp_vm->Get_HDC().Get_Enabled() ||
- tmp_vm->Get_HDD().Get_Enabled() ||
- tmp_vm->Get_Storage_Devices_List().count() > 0)) )
- {
- cursor.setPosition( topFrame->lastPosition() );
- cursor.insertText( tr("Devices"), bold_format );
- cursor.insertBlock();
-
- table = cursor.insertTable( 1, 3, table_format );
-
- frame = cursor.currentFrame();
- frame->setFrameFormat( frame_format );
-
- if( true /*Settings.value("Use_Device_Manager", "no").toString() == "yes"*/ )
- {
- QFileInfo fi;
-
- if( Settings.value("Info/Show_FDD", "yes").toString() == "yes" )
- {
- if( tmp_vm->Get_FD0().Get_Enabled() )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Floppy 1:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
-
- fi = QFileInfo( tmp_vm->Get_FD0().Get_File_Name() );
-
- cell_cursor.insertText( fi.fileName(), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( tmp_vm->Get_FD1().Get_Enabled() )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Floppy 2:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- fi = QFileInfo( tmp_vm->Get_FD1().Get_File_Name() );
-
- cell_cursor.insertText( fi.fileName(), format );
- table->insertRows( table->rows(), 1 );
- }
- }
-
- if( Settings.value("Info/Show_CD", "yes").toString() == "yes" )
- {
- if( tmp_vm->Get_CD_ROM().Get_Enabled() )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("CD/DVD-ROM:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- fi = QFileInfo( tmp_vm->Get_CD_ROM().Get_File_Name() );
-
- cell_cursor.insertText( fi.fileName(), format );
- table->insertRows( table->rows(), 1 );
- }
- }
-
- if( Settings.value("Info/Show_HDD", "yes").toString() == "yes" )
- {
- if( tmp_vm->Get_HDA().Get_Enabled() )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Primary Master (HDA):"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- fi = QFileInfo( tmp_vm->Get_HDA().Get_File_Name() );
- cell_cursor.insertText( fi.fileName(), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( tmp_vm->Get_HDB().Get_Enabled() )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Primary Slave (HDB):"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- fi = QFileInfo( tmp_vm->Get_HDB().Get_File_Name() );
- cell_cursor.insertText( fi.fileName(), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( tmp_vm->Get_HDC().Get_Enabled() )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Secondary Master (HDC):"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- fi = QFileInfo( tmp_vm->Get_HDC().Get_File_Name() );
- cell_cursor.insertText( fi.fileName(), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( tmp_vm->Get_HDD().Get_Enabled() )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Secondary Slave (HDD):"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- fi = QFileInfo( tmp_vm->Get_HDD().Get_File_Name() );
- cell_cursor.insertText( fi.fileName(), format );
- table->insertRows( table->rows(), 1 );
- }
- }
- }
- }
-
- // Network
- if( Settings.value("Info/Network_Cards", "yes").toString() == "yes" &&
- ((tmp_vm->Use_Nativ_Network() == false && tmp_vm->Get_Network_Cards_Count() > 0) ||
- (tmp_vm->Use_Nativ_Network() == true && tmp_vm->Get_Network_Cards_Nativ().count() > 0)) )
- {
- cursor.setPosition( topFrame->lastPosition() );
- cursor.insertText( tr("Network"), bold_format );
- cursor.insertBlock();
-
- table = cursor.insertTable( 1, 3, table_format );
-
- frame = cursor.currentFrame();
- frame->setFrameFormat( frame_format );
-
- if( ui.CH_Use_Network->isChecked() == false )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Use Network:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("No"), format );
- table->insertRows( table->rows(), 1 );
- }
- else
- {
- if( tmp_vm->Use_Nativ_Network() == false )
- {
- for( int nx = 0; nx < tmp_vm->Get_Network_Cards_Count(); ++nx )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Card: ") + QString::number(nx+1), format );
-
- QString con_mode = "";
-
- switch( tmp_vm->Get_Network_Card(nx).Get_Net_Mode() )
- {
- case VM::Net_Mode_Usermode:
- con_mode = tr("User mode network stack");
- break;
-
- case VM::Net_Mode_Tuntap:
- con_mode = tr("TUN/TAP Interface");
- break;
-
- case VM::Net_Mode_Tuntapfd:
- con_mode = tr("TUN/TAP Interface");
- break;
-
- case VM::Net_Mode_Tcplisten:
- con_mode = tr("TCP Socket");
- break;
-
- case VM::Net_Mode_Tcpfd:
- con_mode = tr("TCP Socket");
- break;
-
- case VM::Net_Mode_Tcpconnect:
- con_mode = tr("VLAN");
- break;
-
- case VM::Net_Mode_Multicast:
- con_mode = tr("UDP multicast socket");
- break;
-
- case VM::Net_Mode_Multicastfd:
- con_mode = tr("UDP multicast socket");
- break;
-
- default:
- con_mode = tr("No Connection");
- break;
- }
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( con_mode, format );
- table->insertRows( table->rows(), 1 );
- }
- }
- else
- {
- QList nativ_Cards = tmp_vm->Get_Network_Cards_Nativ();
-
- for( int ix = 0; ix < nativ_Cards.count(); ix++ )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Item %1").arg(ix+1), format );
-
- QString con_mode = "";
-
- switch( nativ_Cards[ix].Get_Network_Type() )
- {
- case VM::Net_Mode_Nativ_NIC:
- con_mode = tr( "NIC" );
- break;
-
- case VM::Net_Mode_Nativ_User:
- con_mode = tr( "User" );
- break;
-
- case VM::Net_Mode_Nativ_Chanel:
- con_mode = tr( "Channel" );
- break;
-
- case VM::Net_Mode_Nativ_TAP:
- con_mode = tr( "TAP" );
- break;
-
- case VM::Net_Mode_Nativ_Socket:
- con_mode = tr( "Socket" );
- break;
-
- case VM::Net_Mode_Nativ_MulticastSocket:
- con_mode = tr( "Multicast Socket" );
- break;
-
- case VM::Net_Mode_Nativ_VDE:
- con_mode = tr( "VDE" );
- break;
-
- case VM::Net_Mode_Nativ_Dump:
- con_mode = tr( "Dump" );
- break;
-
- default:
- con_mode = tr( "Unknown Type Item" );
- break;
- }
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( con_mode, format );
- table->insertRows( table->rows(), 1 );
- }
- }
- }
- }
-
- // Network Redirections
- if( Settings.value("Info/Redirections", "no").toString() == "yes" )
- {
- if( tmp_vm->Get_Use_Redirections() ||
- tmp_vm->Get_Network_Redirections_Count() < 1 )
- {
- for( int rx = 0; rx < tmp_vm->Get_Network_Redirections_Count(); ++rx )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Redirection ") + QString::number(rx+1) + ":", format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText(
- tmp_vm->Get_Network_Redirection(rx).Get_Protocol() + " " +
- QString::number(tmp_vm->Get_Network_Redirection(rx).Get_Host_Port()) + ":" +
- tmp_vm->Get_Network_Redirection(rx).Get_Guest_IP() + ":" +
- QString::number(tmp_vm->Get_Network_Redirection(rx).Get_Guest_Port()), format );
- table->insertRows( table->rows(), 1 );
- }
- }
- else
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Use Redirections:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("No"), format );
- table->insertRows( table->rows(), 1 );
- }
- }
-
- // Ports Tab
- if( (Settings.value("Info/Serial_Port", "yes").toString() == "yes" && tmp_vm->Get_Serial_Ports().count() > 0) ||
- (Settings.value("Info/Parallel_Port", "yes").toString() == "yes" && tmp_vm->Get_Parallel_Ports().count() > 0) ||
- (Settings.value("Info/USB_Port", "yes").toString() == "yes" && tmp_vm->Get_USB_Ports().count() > 0) )
- {
- cursor.setPosition( topFrame->lastPosition() );
- cursor.insertText( tr("Ports"), bold_format );
- cursor.insertBlock();
-
- table = cursor.insertTable( 1, 3, table_format );
-
- frame = cursor.currentFrame();
- frame->setFrameFormat( frame_format );
-
- if( Settings.value("Info/Serial_Port", "yes").toString() == "yes" )
- {
- for( int ix = 0; ix < tmp_vm->Get_Serial_Ports().count(); ix++ )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Serial Port %1:").arg(ix), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
-
- switch( tmp_vm->Get_Serial_Ports()[ix].Get_Port_Redirection() )
- {
- case VM::PR_Default:
- cell_cursor.insertText( tr("Default"), format );
- break;
-
- case VM::PR_vc:
- cell_cursor.insertText( tr("vc"), format );
- break;
-
- case VM::PR_pty:
- cell_cursor.insertText( tr("pty"), format );
- break;
-
- case VM::PR_none:
- cell_cursor.insertText( tr("none"), format );
- break;
-
- case VM::PR_null:
- cell_cursor.insertText( tr("null"), format );
- break;
-
- case VM::PR_dev:
- cell_cursor.insertText( tr("dev"), format );
- break;
-
- case VM::PR_host_port:
- cell_cursor.insertText( tr("host_port"), format );
- break;
-
- case VM::PR_file:
- cell_cursor.insertText( tr("file"), format );
- break;
-
- case VM::PR_stdio:
- cell_cursor.insertText( tr("stdio"), format );
- break;
-
- case VM::PR_pipe:
- cell_cursor.insertText( tr("pipe"), format );
- break;
-
- case VM::PR_udp:
- cell_cursor.insertText( tr("udp"), format );
- break;
-
- case VM::PR_tcp:
- cell_cursor.insertText( tr("tcp"), format );
- break;
-
- case VM::PR_telnet:
- cell_cursor.insertText( tr("telnet"), format );
- break;
-
- case VM::PR_unix:
- cell_cursor.insertText( tr("unix"), format );
- break;
-
- default:
- cell_cursor.insertText( tr("Default"), format );
- break;
- }
-
- table->insertRows( table->rows(), 1 );
- }
- }
-
- if( Settings.value("Info/Parallel_Port", "yes").toString() == "yes" )
- {
- for( int ix = 0; ix < tmp_vm->Get_Parallel_Ports().count(); ix++ )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Parallel Port %1:").arg(ix), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
-
- switch( tmp_vm->Get_Parallel_Ports()[ix].Get_Port_Redirection() )
- {
- case VM::PR_Default:
- cell_cursor.insertText( tr("Default"), format );
- break;
-
- case VM::PR_vc:
- cell_cursor.insertText( tr("vc"), format );
- break;
-
- case VM::PR_pty:
- cell_cursor.insertText( tr("pty"), format );
- break;
-
- case VM::PR_none:
- cell_cursor.insertText( tr("none"), format );
- break;
-
- case VM::PR_null:
- cell_cursor.insertText( tr("null"), format );
- break;
-
- case VM::PR_dev:
- cell_cursor.insertText( tr("dev"), format );
- break;
-
- case VM::PR_host_port:
- cell_cursor.insertText( tr("host_port"), format );
- break;
-
- case VM::PR_file:
- cell_cursor.insertText( tr("file"), format );
- break;
-
- case VM::PR_stdio:
- cell_cursor.insertText( tr("stdio"), format );
- break;
-
- case VM::PR_pipe:
- cell_cursor.insertText( tr("pipe"), format );
- break;
-
- case VM::PR_udp:
- cell_cursor.insertText( tr("udp"), format );
- break;
-
- case VM::PR_tcp:
- cell_cursor.insertText( tr("tcp"), format );
- break;
-
- case VM::PR_telnet:
- cell_cursor.insertText( tr("telnet"), format );
- break;
-
- case VM::PR_unix:
- cell_cursor.insertText( tr("unix"), format );
- break;
-
- default:
- cell_cursor.insertText( tr("Default"), format );
- break;
- }
-
- table->insertRows( table->rows(), 1 );
- }
- }
-
- if( Settings.value("Info/USB_Port", "yes").toString() == "yes" )
- {
- for( int ix = 0; ix < tmp_vm->Get_USB_Ports().count(); ix++ )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("USB Port %1:").arg(ix), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tmp_vm->Get_USB_Ports()[ix].Get_Manufacturer_Name() + " " +
- tmp_vm->Get_USB_Ports()[ix].Get_Product_Name(), format );
- table->insertRows( table->rows(), 1 );
- }
- }
- }
-
- // Other Tab
- if( Settings.value("Info/Linux_Boot", "no").toString() == "yes" ||
- Settings.value("Info/ROM_File", "no").toString() == "yes" ||
- Settings.value("Info/MTDBlock", "no").toString() == "yes" ||
- Settings.value("Info/SD_Image", "no").toString() == "yes" ||
- Settings.value("Info/PFlash", "no").toString() == "yes" ||
- Settings.value("Info/VNC", "no").toString() == "yes" ||
- Settings.value("Info/SPICE", "no").toString() == "yes" ||
- Settings.value("Info/Acceleration", "no").toString() == "yes" )
- {
- cursor.setPosition( topFrame->lastPosition() );
- cursor.insertText( tr("Other"), bold_format );
- cursor.insertBlock();
-
- table = cursor.insertTable( 1, 3, table_format );
-
- frame = cursor.currentFrame();
- frame->setFrameFormat( frame_format );
-
- // Acceleration
- if( Settings.value("Info/Acceleration", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Acceleration:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
-
- //FIXME //or remove?
- cell_cursor.insertText( tr("Use If Possible"), format );
-
- table->insertRows( table->rows(), 1 );
- }
-
- // VNC
- if( Settings.value("Info/VNC", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("VNC Port:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
-
- if ( tmp_vm->Use_VNC() )
- cell_cursor.insertText( QString::number( ui.SB_VNC_Display->value() + 5900 ) , format );
- else
- cell_cursor.insertText( QString::number( Settings.value("First_VNC_Port", "5910").toInt() + tmp_vm->Get_Embedded_Display_Port() ) , format );
-
- table->insertRows( table->rows(), 1 );
- }
-
- // SPICE
- if( Settings.value("Info/SPICE", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("SPICE Port:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( QString::number(tmp_vm->Get_SPICE().Get_Port()) , format );
- table->insertRows( table->rows(), 1 );
- }
-
- // Linux Boot
- if( Settings.value("Info/Linux_Boot", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Use Linux Boot:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui.CH_Use_Linux_Boot->isChecked() ? tr("Yes") : tr("No"), format );
- table->insertRows( table->rows(), 1 );
-
- if( ui.CH_Use_Linux_Boot->isChecked() )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Kernel bzImage:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- QFileInfo lb_tmp = QFileInfo( ui.Edit_Linux_bzImage_Path->text() );
- cell_cursor.insertText( lb_tmp.fileName(), format );
- table->insertRows( table->rows(), 1 );
-
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Initrd File:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- lb_tmp = QFileInfo( ui.Edit_Linux_Initrd_Path->text() );
- cell_cursor.insertText( lb_tmp.fileName(), format );
- table->insertRows( table->rows(), 1 );
-
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Kernel ComLine:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui.Edit_Linux_Command_Line->text(), format );
- table->insertRows( table->rows(), 1 );
- }
- }
-
- QFileInfo im_info;
-
- // ROM File
- if( Settings.value("Info/ROM_File", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("ROM File:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
-
- if( ui.CH_ROM_File->isChecked() )
- {
- im_info = QFileInfo( ui.Edit_ROM_File->text() );
- cell_cursor.insertText( im_info.fileName(), format );
- }
- else
- {
- cell_cursor.insertText( tr("No"), format );
- }
-
- table->insertRows( table->rows(), 1 );
- }
-
- // On-Board Flash Image
- if( Settings.value("Info/MTDBlock", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("On-Board Flash Image:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
-
- if( ui.CH_MTDBlock->isChecked() )
- {
- im_info = QFileInfo( ui.Edit_MTDBlock_File->text() );
- cell_cursor.insertText( im_info.fileName(), format );
- }
- else
- {
- cell_cursor.insertText( tr("No"), format );
- }
-
- table->insertRows( table->rows(), 1 );
- }
-
- // SD Card Image
- if( Settings.value("Info/SD_Image", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("SD Card Image:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
-
- if( ui.CH_SD_Image->isChecked() )
- {
- im_info = QFileInfo( ui.Edit_SD_Image_File->text() );
- cell_cursor.insertText( im_info.fileName(), format );
- }
- else
- {
- cell_cursor.insertText( tr("No"), format );
- }
-
- table->insertRows( table->rows(), 1 );
- }
-
- // Parallel Flash Image
- if( Settings.value("Info/PFlash", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Parallel Flash Image:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
-
- if( ui.CH_PFlash->isChecked() )
- {
- im_info = QFileInfo( ui.Edit_PFlash_File->text() );
- cell_cursor.insertText( im_info.fileName(), format );
- }
- else
- {
- cell_cursor.insertText( tr("No"), format );
- }
-
- table->insertRows( table->rows(), 1 );
- }
- }
-
- // Advanced Tab
- if( Settings.value("Info/RTC_TD_Hack", "no").toString() == "yes" ||
- Settings.value("Info/Win2K_Hack", "no").toString() == "yes" ||
- Settings.value("Info/No_Shutdown", "no").toString() == "yes" ||
- Settings.value("Info/No_Reboot", "no").toString() == "yes" ||
- Settings.value("Info/Start_CPU", "no").toString() == "yes" ||
- Settings.value("Info/Check_Boot_on_FDD", "no").toString() == "yes" ||
- Settings.value("Info/ACPI", "no").toString() == "yes" ||
- (Settings.value("Info/Start_Date", "no").toString() == "yes" && ui_ao.CH_Start_Date->isChecked()) ||
- Settings.value("Info/No_Frame", "no").toString() == "yes" ||
- Settings.value("Info/Alt_Grab", "no").toString() == "yes" ||
- Settings.value("Info/No_Quit", "no").toString() == "yes" ||
- Settings.value("Info/Portrait", "no").toString() == "yes" ||
- Settings.value("Info/Curses", "no").toString() == "yes" ||
- Settings.value("Info/Show_Cursor", "no").toString() == "yes" ||
- (Settings.value("Info/Init_Graphical_Mode", "no").toString() == "yes" && ui.CH_Init_Graphic_Mode->isChecked()) )
- {
- cursor.setPosition( topFrame->lastPosition() );
- cursor.insertText( tr("Advanced"), bold_format );
- cursor.insertBlock();
-
- table = cursor.insertTable( 1, 3, table_format );
-
- frame = cursor.currentFrame();
- frame->setFrameFormat( frame_format );
-
- if( Settings.value("Info/RTC_TD_Hack", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("RTC TD Hack:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui_ao.CH_RTC_TD_Hack->isChecked() ? tr("Yes") : tr("No"), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/Win2K_Hack", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Windows 2000 Hack:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui_ao.CH_Win2K_Hack->isChecked() ? tr("Yes") : tr("No"), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/No_Shutdown", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("No Shutdown:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui_ao.CH_No_Shutdown->isChecked() ? tr("Yes") : tr("No"), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/No_Reboot", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("No Reboot:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui_ao.CH_No_Reboot->isChecked() ? tr("Yes") : tr("No"), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/Start_CPU", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Start CPU at Startup:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui_ao.CH_Start_CPU->isChecked() ? tr("Yes") : tr("No"), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/Check_Boot_on_FDD", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Check Boot Sector on FDD:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui_ao.CH_FDD_Boot->isChecked() ? tr("Yes") : tr("No"), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/ACPI", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Enable ACPI:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui_ao.CH_ACPI->isChecked() ? tr("Yes") : tr("No"), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/Start_Date", "no").toString() == "yes" &&
- ui_ao.CH_Start_Date->isChecked() )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Start Date:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui_ao.DTE_Start_Date->text(), format );
- table->insertRows( table->rows(), 1 );
- }
-
- // Advanced -> QEMU Window Options
- if( Settings.value("Info/No_Frame", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("No Frame:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui.CH_No_Frame->isChecked() ? tr("Yes") : tr("No"), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/Alt_Grab", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Alt Grab:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui.CH_Alt_Grab->isChecked() ? tr("Yes") : tr("No"), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/No_Quit", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("No Quit:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui.CH_No_Quit->isChecked() ? tr("Yes") : tr("No"), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/Portrait", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Portrait Mode:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui.CH_Portrait->isChecked() ? tr("Yes") : tr("No"), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/Curses", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Curses:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui.CH_Curses->isChecked() ? tr("Yes") : tr("No"), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/Show_Cursor", "no").toString() == "yes" )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Show Cursor:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( ui.CH_Show_Cursor->isChecked() ? tr("Yes") : tr("No"), format );
- table->insertRows( table->rows(), 1 );
- }
-
- if( Settings.value("Info/Init_Graphical_Mode", "no").toString() == "yes" &&
- ui.CH_Init_Graphic_Mode->isChecked() )
- {
- cell = table->cellAt( table->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( tr("Initial Graphical Mode:"), format );
-
- cell = table->cellAt( table->rows()-1, 2 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( QString("%1x%2x%3").arg(ui.SB_InitGM_Width->text())
- .arg(ui.SB_InitGM_Height->text())
- .arg(ui.CB_InitGM_Depth->currentText()) , format );
- table->insertRows( table->rows(), 1 );
- }
- }
-
- // Show_QEMU_Arguments
- if( Settings.value("Info/Show_QEMU_Args", "no").toString() == "yes" )
- {
- cursor.setPosition( topFrame->lastPosition() );
- cursor.insertText( tr("QEMU Arguments"), bold_format );
- cursor.insertBlock();
-
- QTextTableFormat table_format2;
-
- table_format2.setAlignment( Qt::AlignLeft );
- table_format2.setCellPadding( 0 );
- table_format2.setCellSpacing( 0 );
-
- QVector constraints2;
- constraints2 << QTextLength( QTextLength::FixedLength, INFO_TEXT_INDENT )
- << QTextLength( QTextLength::VariableLength, 500 )
- << QTextLength( QTextLength::FixedLength, 10 );
- table_format2.setColumnWidthConstraints( constraints2 );
-
- QTextTable *table2 = cursor.insertTable( 1, 3, table_format2 );
-
- frame = cursor.currentFrame();
- QTextFrameFormat frame_format2 = frame->frameFormat();
- frame_format2.setBorder( 0 );
- frame->setFrameFormat( frame_format2 );
-
- cell = table2->cellAt( table2->rows()-1, 1 );
- cell_cursor = cell.firstCursorPosition();
- cell_cursor.insertText( Get_QEMU_Args().replace(" -"," \\\n -"), format );
- }
-
- // Move the cursor to the top
- ui.VM_Information_Text->moveCursor(QTextCursor::Start);
- ui.VM_Information_Text->ensureCursorVisible();
+ ui.VM_Information_Text->setHtml(tmp_vm->GenerateHTMLInfoText(info_mode));
}
void Main_Window::Update_Disabled_Controls()
@@ -5400,53 +4105,7 @@ void Main_Window::Set_Boot_Order( const QList &list )
disconnect( ui.CB_Boot_Priority, SIGNAL(currentIndexChanged(int)),
this, SLOT(CB_Boot_Priority_currentIndexChanged(int)) );
- QStringList bootStr;
-
- for( int ix = 0; ix < list.count(); ix++ )
- {
- if( list[ix].Enabled )
- {
- switch( list[ix].Type )
- {
- case VM::Boot_From_FDA:
- bootStr << "FDA";
- break;
-
- case VM::Boot_From_FDB:
- bootStr << "FDB";
- break;
-
- case VM::Boot_From_CDROM:
- bootStr << "CDROM";
- break;
-
- case VM::Boot_From_HDD:
- bootStr << "HDD";
- break;
-
- case VM::Boot_From_Network1:
- bootStr << "Net1";
- break;
-
- case VM::Boot_From_Network2:
- bootStr << "Net2";
- break;
-
- case VM::Boot_From_Network3:
- bootStr << "Net3";
- break;
-
- case VM::Boot_From_Network4:
- bootStr << "Net4";
- break;
-
- default:
- AQWarning( "void Main_Window::Set_Boot_Order( QList &list )",
- "Incorrect boot device type!" );
- break;
- }
- }
- }
+ QStringList bootStr = VM::Boot_Order_To_String_List(list);
// Clear old string
if( ui.CB_Boot_Priority->count() >= 5 ) ui.CB_Boot_Priority->removeItem( 5 );
diff --git a/src/VM.cpp b/src/VM.cpp
index 92a198d..b8bb466 100644
--- a/src/VM.cpp
+++ b/src/VM.cpp
@@ -43,6 +43,13 @@
#include
#include
+//GenerateHTMLInfo
+#include
+#include
+#include
+#include
+//GenerateHTMLInfo
+
#include "VM.h"
#include "Utils.h"
#include "Emulator_Control_Window.h"
@@ -113,8 +120,7 @@ Virtual_Machine::Virtual_Machine( const Virtual_Machine &vm )
this->Keyboard_Layout = vm.Get_Keyboard_Layout();
this->Boot_Order_List = vm.Get_Boot_Order_List();
this->Show_Boot_Menu = vm.Get_Show_Boot_Menu();
- this->Video_Card = vm.Get_Video_Card();
- this->KQEMU_Mode = vm.Get_KQEMU_Mode();
+ this->Video_Card = vm.Get_Video_Card();
this->Audio_Card = vm.Get_Audio_Cards();
@@ -354,8 +360,7 @@ void Virtual_Machine::Shared_Constructor()
Show_Boot_Menu = true;
- Video_Card = "";
- KQEMU_Mode = VM::KQEMU_Default;
+ Video_Card = "";
Audio_Card = VM::Sound_Cards();
Remove_RAM_Size_Limitation = false;
Memory_Size = 128;
@@ -461,8 +466,7 @@ bool Virtual_Machine::operator==( const Virtual_Machine &vm ) const
this->SMP == vm.Get_SMP() &&
this->Keyboard_Layout == vm.Get_Keyboard_Layout() &&
this->Show_Boot_Menu == vm.Get_Show_Boot_Menu() &&
- this->Video_Card == vm.Get_Video_Card() &&
- this->KQEMU_Mode == vm.Get_KQEMU_Mode() &&
+ this->Video_Card == vm.Get_Video_Card() &&
this->Audio_Card == vm.Get_Audio_Cards() &&
this->Memory_Size == vm.Get_Memory_Size() &&
this->Remove_RAM_Size_Limitation == vm.Get_Remove_RAM_Size_Limitation() &&
@@ -689,8 +693,7 @@ Virtual_Machine &Virtual_Machine::operator=( const Virtual_Machine &vm )
this->Keyboard_Layout = vm.Get_Keyboard_Layout();
this->Boot_Order_List = vm.Get_Boot_Order_List();
this->Show_Boot_Menu = vm.Get_Show_Boot_Menu();
- this->Video_Card = vm.Get_Video_Card();
- this->KQEMU_Mode = vm.Get_KQEMU_Mode();
+ this->Video_Card = vm.Get_Video_Card();
this->Audio_Card = vm.Get_Audio_Cards();
this->Memory_Size = vm.Get_Memory_Size();
this->Remove_RAM_Size_Limitation = vm.Get_Remove_RAM_Size_Limitation();
@@ -1083,37 +1086,6 @@ bool Virtual_Machine::Create_VM_File( const QString &file_name, bool template_mo
Dom_Text = New_Dom_Document.createTextNode( Video_Card );
Dom_Element.appendChild( Dom_Text );
- // KQEMU Mode ( Acceleration )
- Dom_Element = New_Dom_Document.createElement( "KQEMU_Mode" );
- VM_Element.appendChild( Dom_Element );
-
- switch( KQEMU_Mode )
- {
- case VM::KQEMU_Disabled:
- Dom_Text = New_Dom_Document.createTextNode( "Disabled" );
- break;
-
- case VM::KQEMU_Enabled:
- Dom_Text = New_Dom_Document.createTextNode( "Enabled" );
- break;
-
- case VM::KQEMU_Full:
- Dom_Text = New_Dom_Document.createTextNode( "Full" );
- break;
-
- case VM::KQEMU_Default:
- Dom_Text = New_Dom_Document.createTextNode( "Default" );
- break;
-
- default:
- AQWarning( "bool Virtual_Machine::Create_VM_File( const QString &file_name, bool template_mode )",
- "Use Default KQEMU Mode: Enabled" );
- Dom_Text = New_Dom_Document.createTextNode( "Enabled" );
- break;
- }
-
- Dom_Element.appendChild( Dom_Text );
-
// Audio Cards
Dom_Element = New_Dom_Document.createElement( "Audio_Cards" );
@@ -3790,32 +3762,6 @@ bool Virtual_Machine::Load_VM( const QString &file_name )
// Video Card
Video_Card = Child_Element.firstChildElement("Video_Card").text();
- // KQEMU Mode ( Acseleration )
- QString tmp_str = Child_Element.firstChildElement("KQEMU_Mode").text();
-
- if( tmp_str == "Enabled" )
- {
- KQEMU_Mode = VM::KQEMU_Enabled;
- }
- else if( tmp_str == "Disabled" )
- {
- KQEMU_Mode = VM::KQEMU_Disabled;
- }
- else if( tmp_str == "Full" )
- {
- KQEMU_Mode = VM::KQEMU_Full;
- }
- else if( tmp_str == "Default" )
- {
- KQEMU_Mode = VM::KQEMU_Default;
- }
- else
- {
- KQEMU_Mode = VM::KQEMU_Enabled;
- AQWarning( "bool Virtual_Machine::Load_VM( const QString &file_name )",
- "KQEMU_Mode Invalid! Use Default!" );
- }
-
// Audio Cards
Second_Element = Child_Element.firstChildElement( "Audio_Cards" );
@@ -4125,7 +4071,7 @@ bool Virtual_Machine::Load_VM( const QString &file_name )
tmp_card.Set_Card_Model(
Second_Element.firstChildElement( "Card_Model" ).text() );
- tmp_str = Second_Element.firstChildElement( "Network_Mode" ).text();
+ QString tmp_str = Second_Element.firstChildElement( "Network_Mode" ).text();
// Network Mode
if( tmp_str == "None" )
@@ -4384,7 +4330,7 @@ bool Virtual_Machine::Load_VM( const QString &file_name )
Second_Element = Child_Element.firstChildElement( "Serial_Port_" + QString::number(px) );
- tmp_str = Second_Element.firstChildElement( "Port_Redirection" ).text();
+ QString tmp_str = Second_Element.firstChildElement( "Port_Redirection" ).text();
if( tmp_str == "vc" )
tmp_port.Set_Port_Redirection( VM::PR_vc );
@@ -4437,7 +4383,7 @@ bool Virtual_Machine::Load_VM( const QString &file_name )
Second_Element = Child_Element.firstChildElement( "Parallel_Port_" + QString::number(px) );
- tmp_str = Second_Element.firstChildElement( "Port_Redirection" ).text();
+ QString tmp_str = Second_Element.firstChildElement( "Port_Redirection" ).text();
if( tmp_str == "vc" )
tmp_port.Set_Port_Redirection( VM::PR_vc );
@@ -5352,25 +5298,6 @@ QStringList Virtual_Machine::Build_QEMU_Args()
Args << Video_Card;
else if( ! Video_Card.isEmpty() ) // QEMU 0.10 style
Args << "-vga" << Video_Card;
-
- // Acseleration Mode
- if( (Current_Emulator_Devices.PSO_KVM == false || Current_Emulator_Devices.PSO_Enable_KVM == false) &&
- Current_Emulator_Devices.PSO_Kernel_KQEMU == true )
- {
- switch( KQEMU_Mode )
- {
- case VM::KQEMU_Disabled:
- Args << "-no-kqemu";
- break;
-
- case VM::KQEMU_Full:
- Args << "-kernel-kqemu";
- break;
-
- default:
- break;
- }
- }
// Accelerator
Args << "-machine";
@@ -7771,16 +7698,6 @@ void Virtual_Machine::Set_Video_Card( const QString &card )
Video_Card = card;
}
-VM::Acseleration_Mode Virtual_Machine::Get_KQEMU_Mode() const
-{
- return KQEMU_Mode;
-}
-
-void Virtual_Machine::Set_KQEMU_Mode( VM::Acseleration_Mode mode )
-{
- KQEMU_Mode = mode;
-}
-
const QString &Virtual_Machine::Get_Additional_Args() const
{
return Additional_Args;
@@ -9148,4 +9065,1305 @@ void Virtual_Machine::Execute_Emu_Ctl_Command( const QString &com )
"Run: " + com );
}
+QString Virtual_Machine::GenerateHTMLInfoText(int info_mode)
+{
+ QTextEdit textedit;
+
+ #define INFO_TEXT_INDENT 25
+
+ if( info_mode != 0 )
+ {
+ // This is for the Tab Info background color
+ QPalette qpal;
+ textedit.setHtml( ""
+ ""
+ "" );
+
+ QTextCursor cursor = textedit.textCursor();
+ QTextCharFormat format = QTextCharFormat();
+
+ QTextCharFormat bold_format = format;
+ bold_format.setFontWeight( QFont::Bold );
+
+ if ( calculateContrast(qApp->palette().color(QPalette::Window),qApp->palette().color(QPalette::Link)) > 3.0 )
+ bold_format.setForeground( qpal.color(QPalette::Link) );
+ else
+ bold_format.setForeground( qpal.color(QPalette::WindowText) );
+
+ QTextTableFormat table_format;
+
+ table_format.setAlignment( Qt::AlignLeft );
+ table_format.setCellPadding( 0 );
+ table_format.setCellSpacing( 0 );
+
+ QVector constraints;
+ constraints << QTextLength( QTextLength::FixedLength, INFO_TEXT_INDENT ) << QTextLength( QTextLength::FixedLength, 220 );
+ table_format.setColumnWidthConstraints(constraints);
+
+ if( info_mode == 1 ) cursor.insertText( tr("You must create a new virtual machine"), bold_format );
+ else if( info_mode == 2 ) cursor.insertText( tr("This VM uses the emulator \"%1\" that is not installed.\n"
+ "The VM cannot work!").arg( (Get_Machine_Accelerator() == VM::TCG) ? "TCG" : "KVM" ), bold_format );
+
+ cursor.insertBlock();
+
+ return textedit.toHtml();
+ }
+
+ // This is for the Tab Info background color
+ QPalette qpal;
+ textedit.setHtml( ""
+ ""
+ "" );
+
+ QTextCursor cursor = textedit.textCursor();
+ QTextCharFormat format = QTextCharFormat();
+ QTextFrame *topFrame = cursor.currentFrame();
+
+ // Use Scrennshot in Save Mode
+ if( Settings.value("Info/Show_Screenshot_in_Save_Mode", "no").toString() == "yes" )
+ {
+ // Find Full Size Screenshot
+ QString img_path = QDir::toNativeSeparators( Settings.value("VM_Directory", "~").toString() +
+ Get_FS_Compatible_VM_Name(Get_Machine_Name()) + "_screenshot" );
+
+ if( ! QFile::exists(img_path) )
+ {
+ AQDebug( "void Main_Window::Update_Info_Text( int info_mode )",
+ "Screenshot Path is Empty!" );
+ }
+ else
+ {
+ /*cursor.insertHtml( "width() -50) +
+ "\" src=\"" + img_path + "\">" );*/
+ cursor.insertHtml( "" );
+
+ return textedit.toHtml();
+ }
+ }
+
+ QTextCharFormat bold_format = format;
+ bold_format.setFontWeight( QFont::Bold );
+ if ( calculateContrast(qApp->palette().color(QPalette::Window),qApp->palette().color(QPalette::Link)) > 3.0 )
+ bold_format.setForeground( qpal.color(QPalette::Link) );
+ else
+ bold_format.setForeground( qpal.color(QPalette::WindowText) );
+
+ QTextTableFormat table_format;
+
+ table_format.setAlignment( Qt::AlignLeft );
+ table_format.setCellPadding( 0 );
+ table_format.setCellSpacing( 0 );
+
+ QVector constraints;
+ constraints << QTextLength( QTextLength::FixedLength, INFO_TEXT_INDENT )
+ << QTextLength( QTextLength::FixedLength, 220 )
+ << QTextLength( QTextLength::VariableLength, 250 );
+ table_format.setColumnWidthConstraints(constraints);
+
+ // Vairables
+ QTextTable *table;
+ QTextFrame *frame;
+ QTextFrameFormat frame_format;
+ QTextTableCell cell;
+ QTextCursor cell_cursor;
+
+ // Machine State
+ if( Settings.value("Info/Machine_Details", "yes").toString() == "yes" )
+ {
+
+ cursor.insertText( tr("Machine"), bold_format );
+ cursor.insertBlock();
+
+ table = cursor.insertTable( 1, 3, table_format );
+ frame = cursor.currentFrame();
+
+ frame_format = frame->frameFormat();
+ frame_format.setBorder( 0 );
+ frame->setFrameFormat( frame_format );
+
+ if( Settings.value("Info/Machine_Name", "yes").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Name:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Get_Machine_Name(), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("State:"), format );
+
+ QString state_text = Get_State_Text();
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( state_text, format );
+ table->insertRows( table->rows(), 1 );
+ }
+ else
+ {
+ // this code is mainly here to prevent a segfault
+ // it's a temporary hack, since all of the code in this method
+ // should really be refactored/rewritten.
+
+ table = cursor.insertTable( 1, 3, table_format );
+ frame = cursor.currentFrame();
+
+ frame_format = frame->frameFormat();
+ frame_format.setBorder( 0 );
+ frame->setFrameFormat( frame_format );
+ }
+
+ // General Tab
+ if( Settings.value("Info/Machine_Accelerator", "yes").toString() == "yes" ||
+ Settings.value("Info/Emulator_Version", "no").toString() == "yes" ||
+ Settings.value("Info/Computer_Type", "yes").toString() == "yes" ||
+ Settings.value("Info/Machine_Type", "no").toString() == "yes" ||
+ Settings.value("Info/Boot_Priority", "yes").toString() == "yes" ||
+ Settings.value("Info/CPU_Type", "no").toString() == "yes" ||
+ Settings.value("Info/Number_of_CPU", "yes").toString() == "yes" ||
+ Settings.value("Info/Video_Card", "yes").toString() == "yes" ||
+ Settings.value("Info/Keyboard_Layout", "no").toString() == "yes" ||
+ Settings.value("Info/Memory_Size", "yes").toString() == "yes" ||
+ Settings.value("Info/Use_Sound", "yes").toString() == "yes" ||
+ Settings.value("Info/Fullscreen", "yes").toString() == "yes" ||
+ Settings.value("Info/Snapshot", "yes").toString() == "yes" ||
+ Settings.value("Info/Localtime", "yes").toString() == "yes" )
+ {
+ cursor.setPosition( topFrame->lastPosition() );
+ cursor.insertText( tr("General"), bold_format );
+ cursor.insertBlock();
+
+ table = cursor.insertTable( 1, 3, table_format );
+
+ frame = cursor.currentFrame();
+ frame->setFrameFormat( frame_format );
+
+ if( Settings.value("Info/Machine_Accelerator", "yes").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Accelerator:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( VM::Accel_To_String(Get_Machine_Accelerator()).toUpper(), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/Computer_Type", "yes").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Architecture:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Get_Computer_Type(), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/Machine_Type", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Machine Type:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Get_Machine_Type(), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/Boot_Priority", "yes").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Boot Priority:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( VM::Boot_Order_To_String_List(Get_Boot_Order_List()).join("/"), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/CPU_Type", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("CPU Type:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Get_CPU_Type(), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/Number_of_CPU", "yes").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Number of CPU:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( QString::number(Get_SMP_CPU_Count()), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/Video_Card", "yes").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Video Card:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Get_Video_Card(), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/Keyboard_Layout", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Keyboard Layout:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Get_Keyboard_Layout(), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/Memory_Size", "yes").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Memory Size:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( QString::number(Get_Memory_Size()), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/Use_Sound", "yes").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Use Sound:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+
+ if( Get_Audio_Cards().isEnabled() )
+ {
+ cell_cursor.insertText( tr("Yes"), format );
+ }
+ else
+ {
+ cell_cursor.insertText( tr("No"), format );
+ }
+
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/Fullscreen", "yes").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Fullscreen Mode:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Use_Fullscreen_Mode() ? tr("Yes") : tr("No"), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/Snapshot", "yes").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Use Snapshot Mode:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Use_Snapshot_Mode() ? tr("Yes") : tr("No"), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/Localtime", "yes").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Use Local Time:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Use_Local_Time() ? tr("Yes") : tr("No"), format );
+ table->insertRows( table->rows(), 1 );
+ }
+ }
+
+ // FDD/CD/HDD
+ if( (Settings.value("Info/Show_FDD", "yes").toString() == "yes" &&
+ (Get_FD0().Get_Enabled() ||
+ Get_FD1().Get_Enabled() ||
+ Get_Storage_Devices_List().count() > 0)) ||
+
+ (Settings.value("Info/Show_CD", "yes").toString() == "yes" &&
+ (Get_CD_ROM().Get_Enabled() ||
+ Get_Storage_Devices_List().count() > 0)) ||
+
+ (Settings.value("Info/Show_HDD", "yes").toString() == "yes" &&
+ (Get_HDA().Get_Enabled() ||
+ Get_HDB().Get_Enabled() ||
+ Get_HDC().Get_Enabled() ||
+ Get_HDD().Get_Enabled() ||
+ Get_Storage_Devices_List().count() > 0)) )
+ {
+ cursor.setPosition( topFrame->lastPosition() );
+ cursor.insertText( tr("Devices"), bold_format );
+ cursor.insertBlock();
+
+ table = cursor.insertTable( 1, 3, table_format );
+
+ frame = cursor.currentFrame();
+ frame->setFrameFormat( frame_format );
+
+ if( true /*Settings.value("Use_Device_Manager", "no").toString() == "yes"*/ )
+ {
+ QFileInfo fi;
+
+ if( Settings.value("Info/Show_FDD", "yes").toString() == "yes" )
+ {
+ if( Get_FD0().Get_Enabled() )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Floppy 1:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+
+ fi = QFileInfo( Get_FD0().Get_File_Name() );
+
+ cell_cursor.insertText( fi.fileName(), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Get_FD1().Get_Enabled() )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Floppy 2:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ fi = QFileInfo( Get_FD1().Get_File_Name() );
+
+ cell_cursor.insertText( fi.fileName(), format );
+ table->insertRows( table->rows(), 1 );
+ }
+ }
+
+ if( Settings.value("Info/Show_CD", "yes").toString() == "yes" )
+ {
+ if( Get_CD_ROM().Get_Enabled() )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("CD/DVD-ROM:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ fi = QFileInfo( Get_CD_ROM().Get_File_Name() );
+
+ cell_cursor.insertText( fi.fileName(), format );
+ table->insertRows( table->rows(), 1 );
+ }
+ }
+
+ if( Settings.value("Info/Show_HDD", "yes").toString() == "yes" )
+ {
+ if( Get_HDA().Get_Enabled() )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Primary Master (HDA):"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ fi = QFileInfo( Get_HDA().Get_File_Name() );
+ cell_cursor.insertText( fi.fileName(), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Get_HDB().Get_Enabled() )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Primary Slave (HDB):"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ fi = QFileInfo( Get_HDB().Get_File_Name() );
+ cell_cursor.insertText( fi.fileName(), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Get_HDC().Get_Enabled() )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Secondary Master (HDC):"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ fi = QFileInfo( Get_HDC().Get_File_Name() );
+ cell_cursor.insertText( fi.fileName(), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Get_HDD().Get_Enabled() )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Secondary Slave (HDD):"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ fi = QFileInfo( Get_HDD().Get_File_Name() );
+ cell_cursor.insertText( fi.fileName(), format );
+ table->insertRows( table->rows(), 1 );
+ }
+ }
+ }
+ }
+
+ // Network
+ if( Settings.value("Info/Network_Cards", "yes").toString() == "yes" &&
+ ((Use_Nativ_Network() == false && Get_Network_Cards_Count() > 0) ||
+ (Use_Nativ_Network() == true && Get_Network_Cards_Nativ().count() > 0)) )
+ {
+ cursor.setPosition( topFrame->lastPosition() );
+ cursor.insertText( tr("Network"), bold_format );
+ cursor.insertBlock();
+
+ table = cursor.insertTable( 1, 3, table_format );
+
+ frame = cursor.currentFrame();
+ frame->setFrameFormat( frame_format );
+
+ if( Get_Use_Network() == false )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Use Network:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("No"), format );
+ table->insertRows( table->rows(), 1 );
+ }
+ else
+ {
+ if( Use_Nativ_Network() == false )
+ {
+ for( int nx = 0; nx < Get_Network_Cards_Count(); ++nx )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Card: ") + QString::number(nx+1), format );
+
+ QString con_mode = "";
+
+ switch( Get_Network_Card(nx).Get_Net_Mode() )
+ {
+ case VM::Net_Mode_Usermode:
+ con_mode = tr("User mode network stack");
+ break;
+
+ case VM::Net_Mode_Tuntap:
+ con_mode = tr("TUN/TAP Interface");
+ break;
+
+ case VM::Net_Mode_Tuntapfd:
+ con_mode = tr("TUN/TAP Interface");
+ break;
+
+ case VM::Net_Mode_Tcplisten:
+ con_mode = tr("TCP Socket");
+ break;
+
+ case VM::Net_Mode_Tcpfd:
+ con_mode = tr("TCP Socket");
+ break;
+
+ case VM::Net_Mode_Tcpconnect:
+ con_mode = tr("VLAN");
+ break;
+
+ case VM::Net_Mode_Multicast:
+ con_mode = tr("UDP multicast socket");
+ break;
+
+ case VM::Net_Mode_Multicastfd:
+ con_mode = tr("UDP multicast socket");
+ break;
+
+ default:
+ con_mode = tr("No Connection");
+ break;
+ }
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( con_mode, format );
+ table->insertRows( table->rows(), 1 );
+ }
+ }
+ else
+ {
+ QList nativ_Cards = Get_Network_Cards_Nativ();
+
+ for( int ix = 0; ix < nativ_Cards.count(); ix++ )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Item %1").arg(ix+1), format );
+
+ QString con_mode = "";
+
+ switch( nativ_Cards[ix].Get_Network_Type() )
+ {
+ case VM::Net_Mode_Nativ_NIC:
+ con_mode = tr( "NIC" );
+ break;
+
+ case VM::Net_Mode_Nativ_User:
+ con_mode = tr( "User" );
+ break;
+
+ case VM::Net_Mode_Nativ_Chanel:
+ con_mode = tr( "Channel" );
+ break;
+
+ case VM::Net_Mode_Nativ_TAP:
+ con_mode = tr( "TAP" );
+ break;
+
+ case VM::Net_Mode_Nativ_Socket:
+ con_mode = tr( "Socket" );
+ break;
+
+ case VM::Net_Mode_Nativ_MulticastSocket:
+ con_mode = tr( "Multicast Socket" );
+ break;
+
+ case VM::Net_Mode_Nativ_VDE:
+ con_mode = tr( "VDE" );
+ break;
+
+ case VM::Net_Mode_Nativ_Dump:
+ con_mode = tr( "Dump" );
+ break;
+
+ default:
+ con_mode = tr( "Unknown Type Item" );
+ break;
+ }
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( con_mode, format );
+ table->insertRows( table->rows(), 1 );
+ }
+ }
+ }
+ }
+
+ // Network Redirections
+ if( Settings.value("Info/Redirections", "no").toString() == "yes" )
+ {
+ if( Get_Use_Redirections() ||
+ Get_Network_Redirections_Count() < 1 )
+ {
+ for( int rx = 0; rx < Get_Network_Redirections_Count(); ++rx )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Redirection ") + QString::number(rx+1) + ":", format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText(
+ Get_Network_Redirection(rx).Get_Protocol() + " " +
+ QString::number(Get_Network_Redirection(rx).Get_Host_Port()) + ":" +
+ Get_Network_Redirection(rx).Get_Guest_IP() + ":" +
+ QString::number(Get_Network_Redirection(rx).Get_Guest_Port()), format );
+ table->insertRows( table->rows(), 1 );
+ }
+ }
+ else
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Use Redirections:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("No"), format );
+ table->insertRows( table->rows(), 1 );
+ }
+ }
+
+ // Ports Tab
+ if( (Settings.value("Info/Serial_Port", "yes").toString() == "yes" && Get_Serial_Ports().count() > 0) ||
+ (Settings.value("Info/Parallel_Port", "yes").toString() == "yes" && Get_Parallel_Ports().count() > 0) ||
+ (Settings.value("Info/USB_Port", "yes").toString() == "yes" && Get_USB_Ports().count() > 0) )
+ {
+ cursor.setPosition( topFrame->lastPosition() );
+ cursor.insertText( tr("Ports"), bold_format );
+ cursor.insertBlock();
+
+ table = cursor.insertTable( 1, 3, table_format );
+
+ frame = cursor.currentFrame();
+ frame->setFrameFormat( frame_format );
+
+ if( Settings.value("Info/Serial_Port", "yes").toString() == "yes" )
+ {
+ for( int ix = 0; ix < Get_Serial_Ports().count(); ix++ )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Serial Port %1:").arg(ix), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+
+ switch( Get_Serial_Ports()[ix].Get_Port_Redirection() )
+ {
+ case VM::PR_Default:
+ cell_cursor.insertText( tr("Default"), format );
+ break;
+
+ case VM::PR_vc:
+ cell_cursor.insertText( tr("vc"), format );
+ break;
+
+ case VM::PR_pty:
+ cell_cursor.insertText( tr("pty"), format );
+ break;
+
+ case VM::PR_none:
+ cell_cursor.insertText( tr("none"), format );
+ break;
+
+ case VM::PR_null:
+ cell_cursor.insertText( tr("null"), format );
+ break;
+
+ case VM::PR_dev:
+ cell_cursor.insertText( tr("dev"), format );
+ break;
+
+ case VM::PR_host_port:
+ cell_cursor.insertText( tr("host_port"), format );
+ break;
+
+ case VM::PR_file:
+ cell_cursor.insertText( tr("file"), format );
+ break;
+
+ case VM::PR_stdio:
+ cell_cursor.insertText( tr("stdio"), format );
+ break;
+
+ case VM::PR_pipe:
+ cell_cursor.insertText( tr("pipe"), format );
+ break;
+
+ case VM::PR_udp:
+ cell_cursor.insertText( tr("udp"), format );
+ break;
+
+ case VM::PR_tcp:
+ cell_cursor.insertText( tr("tcp"), format );
+ break;
+
+ case VM::PR_telnet:
+ cell_cursor.insertText( tr("telnet"), format );
+ break;
+
+ case VM::PR_unix:
+ cell_cursor.insertText( tr("unix"), format );
+ break;
+
+ default:
+ cell_cursor.insertText( tr("Default"), format );
+ break;
+ }
+
+ table->insertRows( table->rows(), 1 );
+ }
+ }
+
+ if( Settings.value("Info/Parallel_Port", "yes").toString() == "yes" )
+ {
+ for( int ix = 0; ix < Get_Parallel_Ports().count(); ix++ )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Parallel Port %1:").arg(ix), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+
+ switch( Get_Parallel_Ports()[ix].Get_Port_Redirection() )
+ {
+ case VM::PR_Default:
+ cell_cursor.insertText( tr("Default"), format );
+ break;
+
+ case VM::PR_vc:
+ cell_cursor.insertText( tr("vc"), format );
+ break;
+
+ case VM::PR_pty:
+ cell_cursor.insertText( tr("pty"), format );
+ break;
+
+ case VM::PR_none:
+ cell_cursor.insertText( tr("none"), format );
+ break;
+
+ case VM::PR_null:
+ cell_cursor.insertText( tr("null"), format );
+ break;
+
+ case VM::PR_dev:
+ cell_cursor.insertText( tr("dev"), format );
+ break;
+
+ case VM::PR_host_port:
+ cell_cursor.insertText( tr("host_port"), format );
+ break;
+
+ case VM::PR_file:
+ cell_cursor.insertText( tr("file"), format );
+ break;
+
+ case VM::PR_stdio:
+ cell_cursor.insertText( tr("stdio"), format );
+ break;
+
+ case VM::PR_pipe:
+ cell_cursor.insertText( tr("pipe"), format );
+ break;
+
+ case VM::PR_udp:
+ cell_cursor.insertText( tr("udp"), format );
+ break;
+
+ case VM::PR_tcp:
+ cell_cursor.insertText( tr("tcp"), format );
+ break;
+
+ case VM::PR_telnet:
+ cell_cursor.insertText( tr("telnet"), format );
+ break;
+
+ case VM::PR_unix:
+ cell_cursor.insertText( tr("unix"), format );
+ break;
+
+ default:
+ cell_cursor.insertText( tr("Default"), format );
+ break;
+ }
+
+ table->insertRows( table->rows(), 1 );
+ }
+ }
+
+ if( Settings.value("Info/USB_Port", "yes").toString() == "yes" )
+ {
+ for( int ix = 0; ix < Get_USB_Ports().count(); ix++ )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("USB Port %1:").arg(ix), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Get_USB_Ports()[ix].Get_Manufacturer_Name() + " " +
+ Get_USB_Ports()[ix].Get_Product_Name(), format );
+ table->insertRows( table->rows(), 1 );
+ }
+ }
+ }
+
+ // Other Tab
+ if( Settings.value("Info/Linux_Boot", "no").toString() == "yes" ||
+ Settings.value("Info/ROM_File", "no").toString() == "yes" ||
+ Settings.value("Info/MTDBlock", "no").toString() == "yes" ||
+ Settings.value("Info/SD_Image", "no").toString() == "yes" ||
+ Settings.value("Info/PFlash", "no").toString() == "yes" ||
+ Settings.value("Info/VNC", "no").toString() == "yes" ||
+ Settings.value("Info/SPICE", "no").toString() == "yes" ||
+ Settings.value("Info/Acceleration", "no").toString() == "yes" )
+ {
+ cursor.setPosition( topFrame->lastPosition() );
+ cursor.insertText( tr("Other"), bold_format );
+ cursor.insertBlock();
+
+ table = cursor.insertTable( 1, 3, table_format );
+
+ frame = cursor.currentFrame();
+ frame->setFrameFormat( frame_format );
+
+ // Acceleration
+ if( Settings.value("Info/Acceleration", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Acceleration:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+
+ //FIXME //or remove?
+ cell_cursor.insertText( tr("Use If Possible"), format );
+
+ table->insertRows( table->rows(), 1 );
+ }
+
+ // VNC
+ if( Settings.value("Info/VNC", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("VNC Port:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+
+ if ( Use_VNC() )
+ cell_cursor.insertText( QString::number( Get_VNC_Display_Number() + 5900 ) , format );
+ else
+ cell_cursor.insertText( QString::number( Settings.value("First_VNC_Port", "5910").toInt() + Get_Embedded_Display_Port() ) , format );
+
+ table->insertRows( table->rows(), 1 );
+ }
+
+ // SPICE
+ if( Settings.value("Info/SPICE", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("SPICE Port:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( QString::number(Get_SPICE().Get_Port()) , format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ // Linux Boot
+ if( Settings.value("Info/Linux_Boot", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Use Linux Boot:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Get_Use_Linux_Boot() ? tr("Yes") : tr("No"), format );
+ table->insertRows( table->rows(), 1 );
+
+ if( Get_Use_Linux_Boot() )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Kernel bzImage:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ QFileInfo lb_tmp = QFileInfo( Get_bzImage_Path() );
+ cell_cursor.insertText( lb_tmp.fileName(), format );
+ table->insertRows( table->rows(), 1 );
+
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Initrd File:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ lb_tmp = QFileInfo( Get_Initrd_Path() );
+ cell_cursor.insertText( lb_tmp.fileName(), format );
+ table->insertRows( table->rows(), 1 );
+
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Kernel ComLine:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Get_Kernel_ComLine() , format );
+ table->insertRows( table->rows(), 1 );
+ }
+ }
+
+ QFileInfo im_info;
+
+ // ROM File
+ if( Settings.value("Info/ROM_File", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("ROM File:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+
+ if( Get_Use_ROM_File() )
+ {
+ im_info = QFileInfo( Get_ROM_File() );
+ cell_cursor.insertText( im_info.fileName(), format );
+ }
+ else
+ {
+ cell_cursor.insertText( tr("No"), format );
+ }
+
+ table->insertRows( table->rows(), 1 );
+ }
+
+ // On-Board Flash Image
+ if( Settings.value("Info/MTDBlock", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("On-Board Flash Image:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+
+ if( Use_MTDBlock_File() )
+ {
+ im_info = QFileInfo( Get_MTDBlock_File() );
+ cell_cursor.insertText( im_info.fileName(), format );
+ }
+ else
+ {
+ cell_cursor.insertText( tr("No"), format );
+ }
+
+ table->insertRows( table->rows(), 1 );
+ }
+
+ // SD Card Image
+ if( Settings.value("Info/SD_Image", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("SD Card Image:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+
+ if( Use_SecureDigital_File() )
+ {
+ im_info = QFileInfo( Get_SecureDigital_File() );
+ cell_cursor.insertText( im_info.fileName(), format );
+ }
+ else
+ {
+ cell_cursor.insertText( tr("No"), format );
+ }
+
+ table->insertRows( table->rows(), 1 );
+ }
+
+ // Parallel Flash Image
+ if( Settings.value("Info/PFlash", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Parallel Flash Image:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+
+ if( Use_PFlash_File() )
+ {
+ im_info = QFileInfo( Get_PFlash_File() );
+ cell_cursor.insertText( im_info.fileName(), format );
+ }
+ else
+ {
+ cell_cursor.insertText( tr("No"), format );
+ }
+
+ table->insertRows( table->rows(), 1 );
+ }
+ }
+
+ // Advanced Tab
+ if( Settings.value("Info/RTC_TD_Hack", "no").toString() == "yes" ||
+ Settings.value("Info/Win2K_Hack", "no").toString() == "yes" ||
+ Settings.value("Info/No_Shutdown", "no").toString() == "yes" ||
+ Settings.value("Info/No_Reboot", "no").toString() == "yes" ||
+ Settings.value("Info/Start_CPU", "no").toString() == "yes" ||
+ Settings.value("Info/Check_Boot_on_FDD", "no").toString() == "yes" ||
+ Settings.value("Info/ACPI", "no").toString() == "yes" ||
+ (Settings.value("Info/Start_Date", "no").toString() == "yes" && Use_Start_Date()) ||
+ Settings.value("Info/No_Frame", "no").toString() == "yes" ||
+ Settings.value("Info/Alt_Grab", "no").toString() == "yes" ||
+ Settings.value("Info/No_Quit", "no").toString() == "yes" ||
+ Settings.value("Info/Portrait", "no").toString() == "yes" ||
+ Settings.value("Info/Curses", "no").toString() == "yes" ||
+ Settings.value("Info/Show_Cursor", "no").toString() == "yes" ||
+ (Settings.value("Info/Init_Graphical_Mode", "no").toString() == "yes" && Get_Init_Graphic_Mode().Get_Enabled() ) )
+ {
+ cursor.setPosition( topFrame->lastPosition() );
+ cursor.insertText( tr("Advanced"), bold_format );
+ cursor.insertBlock();
+
+ table = cursor.insertTable( 1, 3, table_format );
+
+ frame = cursor.currentFrame();
+ frame->setFrameFormat( frame_format );
+
+ if( Settings.value("Info/RTC_TD_Hack", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("RTC TD Hack:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Use_RTC_TD_Hack() ? tr("Yes") : tr("No"), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/Win2K_Hack", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Windows 2000 Hack:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Use_Win2K_Hack() ? tr("Yes") : tr("No"), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/No_Shutdown", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("No Shutdown:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Use_No_Shutdown() ? tr("Yes") : tr("No"), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/No_Reboot", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("No Reboot:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Use_No_Reboot() ? tr("Yes") : tr("No"), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/Start_CPU", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Start CPU at Startup:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Use_Start_CPU() ? tr("Yes") : tr("No"), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/Check_Boot_on_FDD", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Check Boot Sector on FDD:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Use_Check_FDD_Boot_Sector() ? tr("Yes") : tr("No"), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/ACPI", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Enable ACPI:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Use_ACPI() ? tr("Yes") : tr("No"), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/Start_Date", "no").toString() == "yes" &&
+ Use_Start_Date() )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Start Date:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Get_Start_Date().toString(), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ // Advanced -> QEMU Window Options
+ if( Settings.value("Info/No_Frame", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("No Frame:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Use_No_Frame() ? tr("Yes") : tr("No"), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/Alt_Grab", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Alt Grab:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Use_Alt_Grab() ? tr("Yes") : tr("No"), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/No_Quit", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("No Quit:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Use_No_Quit() ? tr("Yes") : tr("No"), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/Portrait", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Portrait Mode:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Use_Portrait() ? tr("Yes") : tr("No"), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/Curses", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Curses:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Use_Curses() ? tr("Yes") : tr("No"), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/Show_Cursor", "no").toString() == "yes" )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Show Cursor:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Use_Show_Cursor() ? tr("Yes") : tr("No"), format );
+ table->insertRows( table->rows(), 1 );
+ }
+
+ if( Settings.value("Info/Init_Graphical_Mode", "no").toString() == "yes" &&
+ Get_Init_Graphic_Mode().Get_Enabled() )
+ {
+ cell = table->cellAt( table->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( tr("Initial Graphical Mode:"), format );
+
+ cell = table->cellAt( table->rows()-1, 2 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( QString("%1x%2x%3").arg(Get_Init_Graphic_Mode().Get_Width())
+ .arg(Get_Init_Graphic_Mode().Get_Height())
+ .arg(Get_Init_Graphic_Mode().Get_Depth()) , format );
+ table->insertRows( table->rows(), 1 );
+ }
+ }
+
+ // Show_QEMU_Arguments
+ if( Settings.value("Info/Show_QEMU_Args", "no").toString() == "yes" )
+ {
+ cursor.setPosition( topFrame->lastPosition() );
+ cursor.insertText( tr("QEMU Arguments"), bold_format );
+ cursor.insertBlock();
+
+ QTextTableFormat table_format2;
+
+ table_format2.setAlignment( Qt::AlignLeft );
+ table_format2.setCellPadding( 0 );
+ table_format2.setCellSpacing( 0 );
+
+ QVector constraints2;
+ constraints2 << QTextLength( QTextLength::FixedLength, INFO_TEXT_INDENT )
+ << QTextLength( QTextLength::VariableLength, 500 )
+ << QTextLength( QTextLength::FixedLength, 10 );
+ table_format2.setColumnWidthConstraints( constraints2 );
+
+ QTextTable *table2 = cursor.insertTable( 1, 3, table_format2 );
+
+ frame = cursor.currentFrame();
+ QTextFrameFormat frame_format2 = frame->frameFormat();
+ frame_format2.setBorder( 0 );
+ frame->setFrameFormat( frame_format2 );
+
+ cell = table2->cellAt( table2->rows()-1, 1 );
+ cell_cursor = cell.firstCursorPosition();
+ cell_cursor.insertText( Build_QEMU_Args_For_Tab_Info().join(" ").replace(" -"," \\\n -"), format );
+ }
+
+ // Move the cursor to the top
+ textedit.moveCursor(QTextCursor::Start);
+ textedit.ensureCursorVisible();
+
+ return textedit.toHtml();
+}
+
//===========================================================================
diff --git a/src/VM.h b/src/VM.h
index ecd98df..578fcf6 100644
--- a/src/VM.h
+++ b/src/VM.h
@@ -80,6 +80,8 @@ class Virtual_Machine: public QObject
bool Load_VM( const QString &file_name );
bool Save_VM();
bool Save_VM( const QString &file_name );
+
+ QString GenerateHTMLInfoText( int info_mode = 0 );
QStringList Build_QEMU_Args(); // build all args for QEMU
QStringList Build_QEMU_Args_For_Tab_Info();
@@ -169,9 +171,6 @@ class Virtual_Machine: public QObject
const QString &Get_Video_Card() const;
void Set_Video_Card( const QString &card );
- VM::Acseleration_Mode Get_KQEMU_Mode() const;
- void Set_KQEMU_Mode( VM::Acseleration_Mode mode );
-
VM::Sound_Cards Get_Audio_Cards() const;
void Set_Audio_Cards( VM::Sound_Cards card );
@@ -512,8 +511,7 @@ class Virtual_Machine: public QObject
QString Keyboard_Layout; // language en, ru, jp...
QList Boot_Order_List; // New boot order
bool Show_Boot_Menu; // Enable interactive boot menu
- QString Video_Card; // std vga, cirus logic
- VM::Acseleration_Mode KQEMU_Mode; // acceleration mode
+ QString Video_Card; // std vga, cirus logic
VM::Sound_Cards Audio_Card; // sb16, es1370
bool Remove_RAM_Size_Limitation; // true - limitation off
int Memory_Size; // RAM Size
diff --git a/src/VM_Devices.h b/src/VM_Devices.h
index e0537ba..3c4c6a7 100644
--- a/src/VM_Devices.h
+++ b/src/VM_Devices.h
@@ -95,6 +95,18 @@ class VM
{
Audio_sb16 = Audio_es1370 = Audio_Adlib = Audio_PC_Speaker = Audio_GUS = Audio_AC97 = Audio_HDA = Audio_cs4231a = false;
}
+
+ bool isEnabled()
+ {
+ return ( Audio_sb16 ||
+ Audio_es1370 ||
+ Audio_Adlib ||
+ Audio_PC_Speaker ||
+ Audio_GUS ||
+ Audio_AC97 ||
+ Audio_HDA ||
+ Audio_cs4231a );
+ }
bool operator==( const Sound_Cards &v ) const
{
@@ -122,9 +134,6 @@ class VM
};
- // KQEMU module mode
- enum Acseleration_Mode { KQEMU_Disabled, KQEMU_Enabled, KQEMU_Full, KQEMU_Default };
-
// SMP Settings
class SMP_Options
{
@@ -178,6 +187,55 @@ class VM
Boot_Device Type;
};
+ static QStringList Boot_Order_To_String_List(QList list)
+ {
+ QStringList bootStr;
+ for( int ix = 0; ix < list.count(); ix++ )
+ {
+ if( list[ix].Enabled )
+ {
+ switch( list[ix].Type )
+ {
+ case VM::Boot_From_FDA:
+ bootStr << "FDA";
+ break;
+
+ case VM::Boot_From_FDB:
+ bootStr << "FDB";
+ break;
+
+ case VM::Boot_From_CDROM:
+ bootStr << "CDROM";
+ break;
+
+ case VM::Boot_From_HDD:
+ bootStr << "HDD";
+ break;
+
+ case VM::Boot_From_Network1:
+ bootStr << "Net1";
+ break;
+
+ case VM::Boot_From_Network2:
+ bootStr << "Net2";
+ break;
+
+ case VM::Boot_From_Network3:
+ bootStr << "Net3";
+ break;
+
+ case VM::Boot_From_Network4:
+ bootStr << "Net4";
+ break;
+
+ default:
+ break;
+ }
+ }
+ }
+ return bootStr;
+ }
+
// Kilobyte, Megabyte, Gigabyte
enum Size_Suffix { Size_Suf_Kb, Size_Suf_Mb, Size_Suf_Gb };
diff --git a/src/VM_Wizard_Window.cpp b/src/VM_Wizard_Window.cpp
index 6971a36..2882e2d 100644
--- a/src/VM_Wizard_Window.cpp
+++ b/src/VM_Wizard_Window.cpp
@@ -250,6 +250,8 @@ void VM_Wizard_Window::on_Button_Next_clicked()
ui.Wizard_Pages->setCurrentWidget( ui.Finish_Page );
ui.Button_Next->setText( tr("&Finish") );
ui.Label_Page->setText( tr("Finish!") );
+ Create_New_VM(true);
+ ui.VM_Information_Text->setHtml(New_VM->GenerateHTMLInfoText());
}
else if( ui.Finish_Page == ui.Wizard_Pages->currentWidget() )
{
@@ -451,7 +453,7 @@ bool VM_Wizard_Window::Load_OS_Templates()
else return true;
}
-bool VM_Wizard_Window::Create_New_VM()
+bool VM_Wizard_Window::Create_New_VM(bool simulate)
{
// Icon
QString icon_path = Find_OS_Icon( ui.Edit_VM_Name->text() );
@@ -490,26 +492,30 @@ bool VM_Wizard_Window::Create_New_VM()
QString hd_path = Settings.value( "VM_Directory", "~" ).toString() + VM_File_Name;
- Create_New_HDD_Image( hd_path + "_HDA.img", hd_size );
+ if ( ! simulate )
+ Create_New_HDD_Image( hd_path + "_HDA.img", hd_size );
New_VM->Set_HDA( VM_HDD(true, hd_path + "_HDA.img") );
// Other HDD's
if( New_VM->Get_HDB().Get_Enabled() )
{
- Create_New_HDD_Image( hd_path + "_HDB.img", New_VM->Get_HDB().Get_Virtual_Size() );
+ if ( ! simulate )
+ Create_New_HDD_Image( hd_path + "_HDB.img", New_VM->Get_HDB().Get_Virtual_Size() );
New_VM->Set_HDB( VM_HDD(true, hd_path + "_HDB.img") );
}
if( New_VM->Get_HDC().Get_Enabled() )
{
- Create_New_HDD_Image( hd_path + "_HDC.img", New_VM->Get_HDC().Get_Virtual_Size() );
+ if ( ! simulate )
+ Create_New_HDD_Image( hd_path + "_HDC.img", New_VM->Get_HDC().Get_Virtual_Size() );
New_VM->Set_HDC( VM_HDD(true, hd_path + "_HDC.img") );
}
if( New_VM->Get_HDD().Get_Enabled() )
{
- Create_New_HDD_Image( hd_path + "_HDD.img", New_VM->Get_HDD().Get_Virtual_Size() );
+ if ( ! simulate )
+ Create_New_HDD_Image( hd_path + "_HDD.img", New_VM->Get_HDD().Get_Virtual_Size() );
New_VM->Set_HDD( VM_HDD(true, hd_path + "_HDD.img") );
}
}
@@ -588,9 +594,12 @@ bool VM_Wizard_Window::Create_New_VM()
tmp_emul.Set_Name( "" );
New_VM->Set_Emulator( tmp_emul );
- // Create New VM XML File
- New_VM->Create_VM_File( Settings.value("VM_Directory", "~").toString() + VM_File_Name + ".aqemu", false );
-
+ if ( ! simulate )
+ {
+ // Create New VM XML File
+ New_VM->Create_VM_File( Settings.value("VM_Directory", "~").toString() + VM_File_Name + ".aqemu", false );
+ }
+
return true;
}
diff --git a/src/VM_Wizard_Window.h b/src/VM_Wizard_Window.h
index ab01369..565340e 100644
--- a/src/VM_Wizard_Window.h
+++ b/src/VM_Wizard_Window.h
@@ -44,7 +44,7 @@ class VM_Wizard_Window: public QDialog
private slots:
void on_KVM_toggled(bool toggled);
bool Load_OS_Templates();
- bool Create_New_VM();
+ bool Create_New_VM(bool simulate = false);
QString Find_OS_Icon( const QString os_name );
void on_Button_Back_clicked();
diff --git a/src/VM_Wizard_Window.ui b/src/VM_Wizard_Window.ui
index fa8b46a..6e83fd2 100644
--- a/src/VM_Wizard_Window.ui
+++ b/src/VM_Wizard_Window.ui
@@ -720,8 +720,8 @@
0
0
- 578
- 122
+ 126
+ 308
@@ -1245,7 +1245,7 @@ p, li { white-space: pre-wrap; }
6
- -
+
-
Qt::Vertical
@@ -1261,7 +1261,7 @@ p, li { white-space: pre-wrap; }
- -
+
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
@@ -1280,6 +1280,13 @@ p, li { white-space: pre-wrap; }
+ -
+
+
+ true
+
+
+