diff options
| author | Michael Meskes <meskes@debian.org> | 2011-11-15 12:34:57 +0100 |
|---|---|---|
| committer | Michael Meskes <meskes@debian.org> | 2011-11-15 12:34:57 +0100 |
| commit | 9822fe88ca8cc3ef4c3c35e28e6b795f4fc96a53 (patch) | |
| tree | 05f00fc29a0037b188d0767b1ef828ee557f7bca /src/VBox/Frontends | |
| parent | 1cf00a61132b69bc7e27254fdd74bf105d2da28c (diff) | |
| download | virtualbox-9822fe88ca8cc3ef4c3c35e28e6b795f4fc96a53.tar.gz | |
Imported Upstream version 4.1.6-dfsgupstream/4.1.6-dfsg
Diffstat (limited to 'src/VBox/Frontends')
12 files changed, 186 insertions, 121 deletions
diff --git a/src/VBox/Frontends/VBoxManage/VBoxManage.h b/src/VBox/Frontends/VBoxManage/VBoxManage.h index 1f949d138..594e6e1bd 100644 --- a/src/VBox/Frontends/VBoxManage/VBoxManage.h +++ b/src/VBox/Frontends/VBoxManage/VBoxManage.h @@ -188,11 +188,11 @@ extern int handleGuestProperty(HandlerArg *a); extern int handleGuestControl(HandlerArg *a); /* VBoxManageVMInfo.cpp */ -void showSnapshots(ComPtr<ISnapshot> &rootSnapshot, - ComPtr<ISnapshot> ¤tSnapshot, - VMINFO_DETAILS details, - const com::Bstr &prefix = "", - int level = 0); +HRESULT showSnapshots(ComPtr<ISnapshot> &rootSnapshot, + ComPtr<ISnapshot> ¤tSnapshot, + VMINFO_DETAILS details, + const com::Bstr &prefix = "", + int level = 0); int handleShowVMInfo(HandlerArg *a); HRESULT showVMInfo(ComPtr<IVirtualBox> virtualBox, ComPtr<IMachine> machine, diff --git a/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp b/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp index 4679258f1..2f0ddde0b 100644 --- a/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp +++ b/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp @@ -445,6 +445,7 @@ void printUsage(USAGECATEGORY u64Cmd, PRTSTREAM pStrm) " edit <uuid>|<name>|--current\n" " [--name <name>]\n" " [--description <desc>] |\n" + " list [--details|--machinereadable]\n" " showvminfo <uuid>|<name>\n" "\n"); @@ -542,12 +543,12 @@ void printUsage(USAGECATEGORY u64Cmd, PRTSTREAM pStrm) "VBoxManage convertfromraw <filename> <outputfile>\n" " [--format VDI|VMDK|VHD]\n" " [--variant Standard,Fixed,Split2G,Stream,ESX]\n" - " [--uuid <uuid>\n>" + " [--uuid <uuid>\n" #ifndef RT_OS_WINDOWS "VBoxManage convertfromraw stdin <outputfile> <bytes>\n" " [--format VDI|VMDK|VHD]\n" " [--variant Standard,Fixed,Split2G,Stream,ESX]\n" - " [--uuid <uuid>\n>" + " [--uuid <uuid>\n" #endif "\n"); diff --git a/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp b/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp index 618697df2..48b37506e 100644 --- a/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp +++ b/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp @@ -47,17 +47,17 @@ using namespace com; // funcs /////////////////////////////////////////////////////////////////////////////// -void showSnapshots(ComPtr<ISnapshot> &rootSnapshot, - ComPtr<ISnapshot> ¤tSnapshot, - VMINFO_DETAILS details, - const Bstr &prefix /* = ""*/, - int level /*= 0*/) +HRESULT showSnapshots(ComPtr<ISnapshot> &rootSnapshot, + ComPtr<ISnapshot> ¤tSnapshot, + VMINFO_DETAILS details, + const Bstr &prefix /* = ""*/, + int level /*= 0*/) { /* start with the root */ Bstr name; Bstr uuid; - rootSnapshot->COMGETTER(Name)(name.asOutParam()); - rootSnapshot->COMGETTER(Id)(uuid.asOutParam()); + CHECK_ERROR2_RET(rootSnapshot,COMGETTER(Name)(name.asOutParam()), hrcCheck); + CHECK_ERROR2_RET(rootSnapshot,COMGETTER(Id)(uuid.asOutParam()), hrcCheck); if (details == VMINFO_MACHINEREADABLE) { /* print with hierarchical numbering */ @@ -76,8 +76,9 @@ void showSnapshots(ComPtr<ISnapshot> &rootSnapshot, } /* get the children */ + HRESULT hrc = S_OK; SafeIfaceArray <ISnapshot> coll; - rootSnapshot->COMGETTER(Children)(ComSafeArrayAsOutParam(coll)); + CHECK_ERROR2_RET(rootSnapshot,COMGETTER(Children)(ComSafeArrayAsOutParam(coll)), hrcCheck); if (!coll.isNull()) { for (size_t index = 0; index < coll.size(); ++index) @@ -94,10 +95,13 @@ void showSnapshots(ComPtr<ISnapshot> &rootSnapshot, } /* recursive call */ - showSnapshots(snapshot, currentSnapshot, details, newPrefix, level + 1); + HRESULT hrc2 = showSnapshots(snapshot, currentSnapshot, details, newPrefix, level + 1); + if (FAILED(hrc2)) + hrc = hrc2; } } } + return hrc; } static void makeTimeStr(char *s, int cb, int64_t millies) diff --git a/src/VBox/Frontends/VBoxManage/VBoxManageSnapshot.cpp b/src/VBox/Frontends/VBoxManage/VBoxManageSnapshot.cpp index dbb2e47cb..12886922e 100644 --- a/src/VBox/Frontends/VBoxManage/VBoxManageSnapshot.cpp +++ b/src/VBox/Frontends/VBoxManage/VBoxManageSnapshot.cpp @@ -156,6 +156,51 @@ void DumpMediumWithChildren(ComPtr<IMedium> &pCurrentStateMedium, } while (0); } + +/** + * Handles the 'snapshot myvm list' sub-command. + * @returns Exit code. + * @param pArgs The handler argument package. + * @param rptrMachine Reference to the VM (locked) we're operating on. + */ +static RTEXITCODE handleSnapshotList(HandlerArg *pArgs, ComPtr<IMachine> &rptrMachine) +{ + static const RTGETOPTDEF g_aOptions[] = + { + { "--details", 'D', RTGETOPT_REQ_NOTHING }, + { "--machinereadable", 'M', RTGETOPT_REQ_NOTHING }, + }; + + VMINFO_DETAILS enmDetails = VMINFO_STANDARD; + + int c; + RTGETOPTUNION ValueUnion; + RTGETOPTSTATE GetState; + RTGetOptInit(&GetState, pArgs->argc, pArgs->argv, g_aOptions, RT_ELEMENTS(g_aOptions), 2 /*iArg*/, 0 /*fFlags*/); + while ((c = RTGetOpt(&GetState, &ValueUnion))) + { + switch (c) + { + case 'D': enmDetails = VMINFO_FULL; break; + case 'M': enmDetails = VMINFO_MACHINEREADABLE; break; + default: return errorGetOpt(USAGE_SNAPSHOT, c, &ValueUnion); + } + } + + /* See showVMInfo. */ + ComPtr<ISnapshot> ptrSnapshot; + CHECK_ERROR2_RET(rptrMachine, FindSnapshot(Bstr().raw(), ptrSnapshot.asOutParam()), RTEXITCODE_FAILURE); + if (ptrSnapshot) + { + ComPtr<ISnapshot> ptrCurrentSnapshot; + CHECK_ERROR2_RET(rptrMachine,COMGETTER(CurrentSnapshot)(ptrCurrentSnapshot.asOutParam()), RTEXITCODE_FAILURE); + HRESULT hrc = showSnapshots(ptrSnapshot, ptrCurrentSnapshot, enmDetails); + if (FAILED(hrc)) + return RTEXITCODE_FAILURE; + } + return RTEXITCODE_SUCCESS; +} + /** * Implementation for "VBoxManage snapshot ... dump". This goes thru the machine's * medium attachments and calls DumpMediumWithChildren() for each hard disk medium found, @@ -225,16 +270,16 @@ int handleSnapshot(HandlerArg *a) /* the first argument must be the VM */ Bstr bstrMachine(a->argv[0]); - ComPtr<IMachine> pMachine; + ComPtr<IMachine> ptrMachine; CHECK_ERROR(a->virtualBox, FindMachine(bstrMachine.raw(), - pMachine.asOutParam())); - if (!pMachine) + ptrMachine.asOutParam())); + if (!ptrMachine) return 1; do { /* we have to open a session for this task (new or shared) */ - rc = pMachine->LockMachine(a->session, LockType_Shared); + rc = ptrMachine->LockMachine(a->session, LockType_Shared); ComPtr<IConsole> console; CHECK_ERROR_BREAK(a->session, COMGETTER(Console)(console.asOutParam())); @@ -356,12 +401,12 @@ int handleSnapshot(HandlerArg *a) if (fRestoreCurrent) { - CHECK_ERROR_BREAK(pMachine, COMGETTER(CurrentSnapshot)(pSnapshot.asOutParam())); + CHECK_ERROR_BREAK(ptrMachine, COMGETTER(CurrentSnapshot)(pSnapshot.asOutParam())); } else { // restore or delete snapshot: then resolve cmd line argument to snapshot instance - CHECK_ERROR_BREAK(pMachine, FindSnapshot(Bstr(a->argv[2]).raw(), + CHECK_ERROR_BREAK(ptrMachine, FindSnapshot(Bstr(a->argv[2]).raw(), pSnapshot.asOutParam())); } @@ -403,12 +448,12 @@ int handleSnapshot(HandlerArg *a) if ( !strcmp(a->argv[2], "--current") || !strcmp(a->argv[2], "-current")) { - CHECK_ERROR_BREAK(pMachine, COMGETTER(CurrentSnapshot)(snapshot.asOutParam())); + CHECK_ERROR_BREAK(ptrMachine, COMGETTER(CurrentSnapshot)(snapshot.asOutParam())); } else { - CHECK_ERROR_BREAK(pMachine, FindSnapshot(Bstr(a->argv[2]).raw(), - snapshot.asOutParam())); + CHECK_ERROR_BREAK(ptrMachine, FindSnapshot(Bstr(a->argv[2]).raw(), + snapshot.asOutParam())); } /* parse options */ @@ -461,16 +506,18 @@ int handleSnapshot(HandlerArg *a) ComPtr<ISnapshot> snapshot; - CHECK_ERROR_BREAK(pMachine, FindSnapshot(Bstr(a->argv[2]).raw(), - snapshot.asOutParam())); + CHECK_ERROR_BREAK(ptrMachine, FindSnapshot(Bstr(a->argv[2]).raw(), + snapshot.asOutParam())); /* get the machine of the given snapshot */ - ComPtr<IMachine> pMachine2; - snapshot->COMGETTER(Machine)(pMachine2.asOutParam()); - showVMInfo(a->virtualBox, pMachine2, VMINFO_NONE, console); + ComPtr<IMachine> ptrMachine2; + snapshot->COMGETTER(Machine)(ptrMachine2.asOutParam()); + showVMInfo(a->virtualBox, ptrMachine2, VMINFO_NONE, console); } + else if (!strcmp(a->argv[1], "list")) + rc = handleSnapshotList(a, ptrMachine) == RTEXITCODE_SUCCESS ? S_OK : E_FAIL; else if (!strcmp(a->argv[1], "dump")) // undocumented parameter to debug snapshot info - DumpSnapshot(pMachine); + DumpSnapshot(ptrMachine); else { errorSyntax(USAGE_SNAPSHOT, "Invalid parameter '%s'", Utf8Str(a->argv[1]).c_str()); diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts index 726cd6987..b402f9092 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts @@ -52,10 +52,6 @@ <translation>Eine Neuinstallation behebt möglicherweise das Problem.</translation> </message> <message> - <source>The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing<br/><br/> <font color=blue>'/etc/init.d/vboxdrv setup'</font><br/><br/>as root. Users of Ubuntu, Fedora or Mandriva should install the DKMS package first. This package keeps track of Linux kernel changes and recompiles the vboxdrv kernel module if necessary.</source> - <translation>Der VirtualBox Kerntreiber für Linux (vboxdrv) ist entweder nicht geladen oder auf das Gerät /dev/vboxdrv konnte nicht zugegriffen werden. Richten Sie das Kernmodul neu ein, indem Sie<br/><br/><font color=blue>'/etc/init.d/vboxdrv setup'</font><br/><br/>mit Root-Rechten ausführen. Falls Sie eine Linux-Distribution von Ubuntu, Fedora oder Mandriva verweden, sollten Sie das Paket DKMS zuerst installieren. Dieses compiliert die Kernmodule nach einem Kernupgrade automatisch neu.</translation> - </message> - <message> <source>Make sure the kernel module has been loaded successfully.</source> <translation>Stellen Sie sicher, dass das Kernmodul erfolgreich geladen wurde.</translation> </message> @@ -87,6 +83,10 @@ <source>This error means that the kernel driver was either not able to allocate enough memory or that some mapping operation failed.</source> <translation>Diese Fehlermeldung bedeutet, dass der Kerntreiber entweder nicht ausreichend Speicher anfordern konnte oder dass eine Mapping-Operation fehlgeschlagen ist.</translation> </message> + <message> + <source>The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing<br/><br/> <font color=blue>'/etc/init.d/vboxdrv setup'</font><br/><br/>as root. If it is available in your distribution, you should install the DKMS package first. This package keeps track of Linux kernel changes and recompiles the vboxdrv kernel module if necessary.</source> + <translation>Der VirtualBox Kerntreiber für Linux (vboxdrv) ist entweder nicht geladen oder auf das Gerät /dev/vboxdrv konnte nicht zugegriffen werden. Richten Sie das Kernmodul neu ein, indem Sie<br/><br/><font color=blue>'/etc/init.d/vboxdrv setup'</font><br/><br/>mit Root-Rechten ausführen. Falls Sie eine Linux-Distribution von Ubuntu, Fedora oder Mandriva verweden, sollten Sie das Paket DKMS zuerst installieren. Dieses compiliert die Kernmodule nach einem Kernupgrade automatisch neu.</translation> + </message> </context> <context> <name>QIArrowSplitter</name> @@ -4387,6 +4387,10 @@ <translation>Herunterladen</translation> </message> <message> + <source><p>You have version %1 of the <b><nobr>%2</nobr></b> installed.</p><p>You should download and install version %3 of this extension pack from Oracle!</p></source> + <translation><p>Sie haben Version %1 des <b><nobr>%2</nobr></b> installiert.</p><p>Sie sollten Version %3 dieses Zusatzpaketes von Oracle herunterladen und installieren!</p></translation> + </message> + <message> <source><p>Are you sure you want to download the <b><nobr>%1</nobr></b> from <nobr><a href="%2">%2</a></nobr> (size %3 bytes)?</p></source> <translation><p>Möchten Sie wirklich das <b><nobr>%1</nobr></b> von <nobr><a href="%2">%2</a></nobr> (Größe %3 Byte) herunterladen?</p></translation> </message> @@ -4407,6 +4411,11 @@ <source><p>Failed to download the <b><nobr>%1</nobr></b> from <nobr><a href="%2">%2</a>.</nobr></p><p>%3</p></source> <translation><p>Das <b><nobr>%1</nobr><b> konnte nicht von <nobr><a href="%2">%2</a></nobr> heruntergeladen werden</p><p>%3</p></translation> </message> + <message> + <source>Ok</source> + <comment>extension pack</comment> + <translation></translation> + </message> </context> <context> <name>UIMiniProcessWidgetUserManual</name> @@ -5043,42 +5052,6 @@ <source>Never</source> <translation>Nie</translation> </message> - <message> - <source>Chec&k</source> - <translation type="obsolete">&Überprüfen</translation> - </message> - <message> - <source>&Close</source> - <translation type="obsolete">&Schließen</translation> - </message> - <message> - <source>VirtualBox Update Wizard</source> - <translation type="obsolete">VirtualBox aktualisieren</translation> - </message> - <message> - <source>Check for Updates</source> - <translation type="obsolete">Auf neue Version überprüfen</translation> - </message> - <message> - <source>Cancel</source> - <translation type="obsolete">Abbrechen</translation> - </message> - <message> - <source>Summary</source> - <translation type="obsolete">Zusammenfassung</translation> - </message> - <message> - <source><p>A new version of VirtualBox has been released! Version <b>%1</b> is available at <a href="http://www.virtualbox.org/">virtualbox.org</a>.</p><p>You can download this version using the link:</p><p><a href=%2>%3</a></p></source> - <translation type="obsolete"><p>Eine neue Version von VirtualBox ist verfügbar! Version <b>%1</b> ist auf <a href="http://www.virtualbox.org/">virtualbox.org</a> verfügbar.</p><p>Sie können diese Version von der folgenden Adresse herunterladen:</p><p><a href=%2>%3</a></p></translation> - </message> - <message> - <source><p>Unable to obtain the new version information due to the following network error:</p><p><b>%1</b></p></source> - <translation type="obsolete"><p>Die Überprüfung auf eine neue Version konnte aufgrund des folgenden Netzwerkfehlers nicht durchgeführt werden:</p><p><b>%1</b></p></translation> - </message> - <message> - <source>You are already running the most recent version of VirtualBox.</source> - <translation type="obsolete">Sie haben bereits die neueste Version von VirtualBox installiert.</translation> - </message> </context> <context> <name>UIVMCloseDialog</name> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sr.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sr.ts index 197708919..b12ab79b5 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sr.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sr.ts @@ -9120,7 +9120,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>C&ase Sensitive</source> - <translation>пази слова</translation> + <translation>Пази на слова</translation> </message> <message> <source>Perform case sensitive search (when checked)</source> @@ -9128,7 +9128,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>String not found</source> - <translation>Ништа нажено</translation> + <translation>Ништа није нађено</translation> </message> </context> <context> diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sv.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sv.ts index 3c659de6c..8148f594e 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sv.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sv.ts @@ -208,11 +208,11 @@ </message> <message> <source>Copy all errors to the clipboard</source> - <translation type="unfinished"></translation> + <translation>Kopiera alla fel till urklipp</translation> </message> <message> <source>Copy</source> - <translation type="unfinished">Kopiera</translation> + <translation>Kopiera</translation> </message> </context> <context> @@ -715,7 +715,7 @@ </message> <message> <source>Linked Base for %1 and %2</source> - <translation type="unfinished"></translation> + <translation>Länkad bas för %1 och %2</translation> </message> </context> <context> @@ -746,7 +746,7 @@ </message> <message> <source>When checked a new unique MAC address will be assigned to all configured network cards.</source> - <translation type="unfinished"></translation> + <translation>När kryssad kommer en ny unik MAC-adress att tilldelas till alla konfigurerade nätverkskort.</translation> </message> </context> <context> @@ -785,11 +785,11 @@ </message> <message> <source>Full Clone</source> - <translation type="unfinished"></translation> + <translation>Fullständig klon</translation> </message> <message> <source>Linked Clone</source> - <translation type="unfinished"></translation> + <translation>Länkad klon</translation> </message> <message> <source><p>Please select the type of the clone.</p><p>If you choose <b>Full Clone</b> an exact copy (including all virtual disk images) of the original VM will be created. If you select <b>Linked Clone</b>, a new VM will be created, but the virtual disk images will point to the virtual disk images of original VM.</p></source> @@ -804,35 +804,35 @@ <name>UICloneVMWizardPage3</name> <message> <source>Current machine state</source> - <translation type="unfinished">Aktuellt maskintillstånd</translation> + <translation>Aktuellt maskintillstånd</translation> </message> <message> <source>Current machine and all child states</source> - <translation type="unfinished">Tillstånd för aktuell maskin och alla barn</translation> + <translation>Tillstånd för aktuell maskin och alla barn</translation> </message> <message> <source>All states</source> - <translation type="unfinished">Alla tillstånd</translation> + <translation>Alla tillstånd</translation> </message> <message> <source>Cloning Configuration</source> - <translation type="unfinished">Kloningskonfiguration</translation> + <translation>Kloningskonfiguration</translation> </message> <message> <source>Please choose which parts of the virtual machine should be cloned.</source> - <translation type="unfinished">Välj vilka delar av den virtuella maskinen som ska klonas.</translation> + <translation>Välj vilka delar av den virtuella maskinen som ska klonas.</translation> </message> <message> <source>If you select <b>Current machine state</b>, only the current state of the virtual machine is cloned.</source> - <translation type="unfinished">Om du väljer <b>Aktuellt maskintillstånd</b> kommer endast det aktuella tillståndet för den virtuella maskinen att klonas.</translation> + <translation>Om du väljer <b>Aktuellt maskintillstånd</b> kommer endast det aktuella tillståndet för den virtuella maskinen att klonas.</translation> </message> <message> <source>If you select <b>Current machine and all child states</b> the current state of the virtual machine and any states of child snapshots are cloned.</source> - <translation type="unfinished">Om du väljer <b>Tillstånd för aktuell maskin och alla barn</b> kommer det aktuella tillståndet för den virtuella maskinen och alla tillstånd för barnögonblicksbilder att klonas.</translation> + <translation>Om du väljer <b>Tillstånd för aktuell maskin och alla barn</b> kommer det aktuella tillståndet för den virtuella maskinen och alla tillstånd för barnögonblicksbilder att klonas.</translation> </message> <message> <source>If you select <b>All states</b>, the current machine state and all snapshots are cloned.</source> - <translation type="unfinished">Om du väljer <b>Alla tillstånd</b> kommer tillståndet för den aktuella maskinen och alla ögonblicksbilder att klonas.</translation> + <translation>Om du väljer <b>Alla tillstånd</b> kommer tillståndet för den aktuella maskinen och alla ögonblicksbilder att klonas.</translation> </message> </context> <context> @@ -1212,7 +1212,7 @@ <name>UIDownloaderExtensionPack</name> <message> <source>Select folder to save %1 to</source> - <translation type="unfinished"></translation> + <translation>Välj mapp att spara %1 till</translation> </message> </context> <context> @@ -2336,23 +2336,23 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Left Shift</source> - <translation type="unfinished">Vänster skift</translation> + <translation>Vänster Skift</translation> </message> <message> <source>Right Shift</source> - <translation type="unfinished">Höger skift</translation> + <translation>Höger Skift</translation> </message> <message> <source>Left Ctrl</source> - <translation type="unfinished">Vänster Ctrl</translation> + <translation>Vänster Ctrl</translation> </message> <message> <source>Right Ctrl</source> - <translation type="unfinished">Höger Ctrl</translation> + <translation>Höger Ctrl</translation> </message> <message> <source>Left Alt</source> - <translation type="unfinished">Vänster Alt</translation> + <translation>Vänster Alt</translation> </message> <message> <source>Right Alt</source> @@ -4319,7 +4319,7 @@ serial ports</comment> </message> <message> <source>&Port Count:</source> - <translation type="unfinished"></translation> + <translation>&Portantal:</translation> </message> <message> <source>Selects the port count of the SATA storage controller currently selected in the Storage Tree. This must be at least one more than the highest port number you need to use.</source> @@ -6163,33 +6163,33 @@ serial ports</comment> </message> <message> <source>Can't find snapshot named <b>%1</b>.</source> - <translation type="unfinished"></translation> + <translation>Kan inte hitta ögonblicksbild med namnet <b>%1</b>.</translation> </message> <message> <source><p>Failed to save the downloaded file as <nobr><b>%1</b>.</nobr></p></source> - <translation type="unfinished"><p>Misslyckades med att spara den hämtade filen som <nobr><b>%1</b>.</nobr></p></translation> + <translation><p>Misslyckades med att spara den hämtade filen som <nobr><b>%1</b>.</nobr></p></translation> </message> <message> <source><p>You have an old version (%1) of the <b><nobr>%2</nobr></b> installed.</p><p>Do you wish to download latest one from the Internet?</p></source> - <translation type="unfinished"></translation> + <translation><p>Du har en gammal version (%1) av <b><nobr>%2</nobr></b> installerad.</p><p>Vill du hämta den senaste från Internet?</p></translation> </message> <message> <source>Download</source> <comment>extension pack</comment> - <translation type="unfinished">Hämta</translation> + <translation>Hämta</translation> </message> <message> <source><p>Are you sure you want to download the <b><nobr>%1</nobr></b> from <nobr><a href="%2">%2</a></nobr> (size %3 bytes)?</p></source> - <translation type="unfinished"></translation> + <translation><p>Är du säker på att du vill hämta <b><nobr>%1</nobr></b> från <nobr><a href="%2">%2</a></nobr> (storlek %3 byte)?</p></translation> </message> <message> <source><p>The <b><nobr>%1</nobr></b> has been successfully downloaded from <nobr><a href="%2">%2</a></nobr> and saved locally as <nobr><b>%3</b>.</nobr></p><p>Do you wish to install this extension pack?</p></source> - <translation type="unfinished"></translation> + <translation><p><b><nobr>%1</nobr></b> har nu hämtats från <nobr><a href="%2">%2</a></nobr> och sparats lokalt som <nobr><b>%3</b>.</nobr></p><p>Vill du installera detta tilläggspaket nu?</p></translation> </message> <message> <source>Install</source> <comment>extension pack</comment> - <translation type="unfinished">Installera</translation> + <translation>Installera</translation> </message> <message> <source><p>The <b><nobr>%1</nobr></b> has been successfully downloaded from <nobr><a href="%2">%2</a></nobr> but can't be saved locally as <nobr><b>%3</b>.</nobr></p><p>Please choose another location for that file.</p></source> @@ -6238,22 +6238,22 @@ serial ports</comment> <name>UIMiniProgressWidgetAdditions</name> <message> <source>Cancel the VirtualBox Guest Additions CD image download</source> - <translation type="unfinished">Avbryt hämtning av cd-avbildning för VirtualBox Gästtillägg</translation> + <translation>Avbryt hämtning av cd-avbildning för VirtualBox Gästtillägg</translation> </message> <message> <source>Downloading the VirtualBox Guest Additions CD image from <nobr><b>%1</b>...</nobr></source> - <translation type="unfinished">Hämtar ner cd-avbildning för VirtualBox Gästtillägg från <nobr><b>%1</b>...</nobr></translation> + <translation>Hämtar ner cd-avbildning för VirtualBox Gästtillägg från <nobr><b>%1</b>...</nobr></translation> </message> </context> <context> <name>UIMiniProgressWidgetExtension</name> <message> <source>Cancel the <nobr><b>%1</b></nobr> download</source> - <translation type="unfinished"></translation> + <translation>Avbryt hämtning av <nobr><b>%1</b></nobr></translation> </message> <message> <source>Downloading the <nobr><b>%1</b></nobr> from <nobr><b>%2</b>...</nobr></source> - <translation type="unfinished"></translation> + <translation>Hämtar <nobr><b>%1</b></nobr> från <nobr><b>%2</b>...</nobr></translation> </message> </context> <context> @@ -6570,19 +6570,19 @@ serial ports</comment> </message> <message> <source>Please type the name of the new virtual disk file into the box below or click on the folder icon to select a different folder to create the file in.</source> - <translation type="unfinished"></translation> + <translation>Ange namnet för den nya virtuella diskfilen i rutan nedan eller klicka på mappikonen för att välja en annan mapp att skapa filen i.</translation> </message> <message> <source>H&DD (Parallels Hard Disk)</source> - <translation type="unfinished"></translation> + <translation>H&DD (Parallels-hårddisk)</translation> </message> <message> <source>Q&ED (QEMU enhanced disk)</source> - <translation type="unfinished"></translation> + <translation>Q&ED (QEMU utökad disk)</translation> </message> <message> <source>&QCOW (QEMU Copy-On-Write)</source> - <translation type="unfinished"></translation> + <translation>&QCOW (QEMU Copy-On-Write)</translation> </message> </context> <context> @@ -6975,11 +6975,11 @@ serial ports</comment> </message> <message> <source>Start-up &Disk</source> - <translation type="unfinished"></translation> + <translation>Uppstarts&disk</translation> </message> <message> <source>The recommended size of the start-up disk is <b>%1</b>.</source> - <translation type="unfinished"></translation> + <translation>Rekommenderad storlek för uppstartsdisken är <b>%1</b>.</translation> </message> </context> <context> @@ -7024,7 +7024,7 @@ serial ports</comment> <message> <source>Start-up Disk</source> <comment>summary</comment> - <translation type="unfinished"></translation> + <translation>Uppstartsdisk</translation> </message> </context> <context> diff --git a/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp b/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp index fe5dc163f..d824ac957 100644 --- a/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp +++ b/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp @@ -1799,6 +1799,19 @@ bool UIMessageCenter::proposeDownloadExtensionPack(const QString &strExtPackName tr("Download", "extension pack")); } +bool UIMessageCenter::requestUserDownloadExtensionPack(const QString &strExtPackName, const QString &strExtPackVersion, const QString &strVBoxVersion) +{ + return message(mainWindowShown(), Info, + tr("<p>You have version %1 of the <b><nobr>%2</nobr></b> installed.</p>" + "<p>You should download and install version %3 of this extension pack from Oracle!</p>") + .arg(strExtPackVersion).arg(strExtPackName).arg(strVBoxVersion), + 0, /* Auto-confirm Id */ + QIMessageBox::Ok | QIMessageBox::Default, + 0, + 0, + tr("Ok", "extension pack")); +} + bool UIMessageCenter::confirmDownloadExtensionPack(const QString &strExtPackName, const QString &strURL, qulonglong uSize) { QLocale loc(VBoxGlobal::languageId()); diff --git a/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h b/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h index 602b54812..381a043d5 100644 --- a/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h +++ b/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h @@ -310,6 +310,7 @@ public: void warnAboutUserManualCantBeSaved(const QString &strURL, const QString &strTarget); bool proposeDownloadExtensionPack(const QString &strExtPackName, const QString &strExtPackVersion); + bool requestUserDownloadExtensionPack(const QString &strExtPackName, const QString &strExtPackVersion, const QString &strVBoxVersion); bool confirmDownloadExtensionPack(const QString &strExtPackName, const QString &strURL, qulonglong uSize); bool proposeInstallExtentionPack(const QString &strExtPackName, const QString &strFrom, const QString &strTo); void warnAboutExtentionPackCantBeSaved(const QString &strExtPackName, const QString &strFrom, const QString &strTo); diff --git a/src/VBox/Frontends/VirtualBox/src/main.cpp b/src/VBox/Frontends/VirtualBox/src/main.cpp index a26fe221e..f3422e4aa 100644 --- a/src/VBox/Frontends/VirtualBox/src/main.cpp +++ b/src/VBox/Frontends/VirtualBox/src/main.cpp @@ -76,8 +76,8 @@ QString g_QStrHintLinuxNoDriver = QApplication::tr( "there is a permission problem with /dev/vboxdrv. Please reinstall the kernel " "module by executing<br/><br/>" " <font color=blue>'/etc/init.d/vboxdrv setup'</font><br/><br/>" - "as root. Users of Ubuntu, Fedora or Mandriva should install the DKMS " - "package first. This package keeps track of Linux kernel changes and " + "as root. If it is available in your distribution, you should install the " + "DKMS package first. This package keeps track of Linux kernel changes and " "recompiles the vboxdrv kernel module if necessary." ); diff --git a/src/VBox/Frontends/VirtualBox/src/net/UIUpdateManager.cpp b/src/VBox/Frontends/VirtualBox/src/net/UIUpdateManager.cpp index 001a320f0..959f1ba06 100644 --- a/src/VBox/Frontends/VirtualBox/src/net/UIUpdateManager.cpp +++ b/src/VBox/Frontends/VirtualBox/src/net/UIUpdateManager.cpp @@ -135,7 +135,8 @@ void UIUpdateManager::checkIfUpdateIsNecessaryForExtensionPack(bool /* fForceCal return; /* Get VirtualBox version: */ - VBoxVersion vboxVersion(vboxGlobal().vboxVersionStringNormalized()); + QString strVBoxVersion(vboxGlobal().vboxVersionStringNormalized()); + VBoxVersion vboxVersion(strVBoxVersion); /* Get extension pack version: */ QString strExtPackVersion(extPack.GetVersion().remove(VBOX_BUILD_PUBLISHER)); VBoxVersion extPackVersion(strExtPackVersion); @@ -144,9 +145,19 @@ void UIUpdateManager::checkIfUpdateIsNecessaryForExtensionPack(bool /* fForceCal !(extPackVersion < vboxVersion) /* Ext Pack version more or equal to VBox version */) return; - /* Ask the user about extension pack downloading: */ - if (!msgCenter().proposeDownloadExtensionPack(UI_ExtPackName, strExtPackVersion)) + if (strExtPackVersion.contains("ENTERPRISE")) + { + /* Inform the user that he should update the extension pack: */ + msgCenter().requestUserDownloadExtensionPack(UI_ExtPackName, strExtPackVersion, strVBoxVersion); + /* Never try to download here! */ return; + } + else + { + /* Ask the user about extension pack downloading: */ + if (!msgCenter().proposeDownloadExtensionPack(UI_ExtPackName, strExtPackVersion)) + return; + } /* Run downloader for VirtualBox extension pack: */ UIDownloaderExtensionPack::download(this); diff --git a/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsExtension.cpp b/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsExtension.cpp index 21ae06120..8a46566e0 100644 --- a/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsExtension.cpp +++ b/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsExtension.cpp @@ -49,8 +49,13 @@ public: /* Name: */ setText(1, m_data.m_strName); - /* Version: */ - setText(2, QString("%1r%2").arg(m_data.m_strVersion).arg(m_data.m_strRevision)); + /* Version, Revision, Edition: */ + QString strVersion(m_data.m_strVersion.section(QRegExp("[-_]"), 0, 0)); + QString strAppend; + /* workaround for http://qt.gitorious.org/qt/qt/commit/7fc63dd0ff368a637dcd17e692b9d6b26278b538this */ + if (m_data.m_strVersion.contains(QRegExp("[-_]"))) + strAppend = m_data.m_strVersion.section(QRegExp("[-_]"), 1, -1, QString::SectionIncludeLeadingSep); + setText(2, QString("%1r%2%3").arg(strVersion).arg(m_data.m_strRevision).arg(strAppend)); /* Tool-tip: */ QString strTip = m_data.m_strDescription; @@ -135,7 +140,12 @@ UIGlobalSettingsExtension::UIGlobalSettingsExtension() QString strPackName = extPackFile.GetName(); QString strPackDescription = extPackFile.GetDescription(); - QString strPackVersion = QString("%1r%2").arg(extPackFile.GetVersion()).arg(extPackFile.GetRevision()); + QString strVersion(extPackFile.GetVersion().section(QRegExp("[-_]"), 0, 0)); + QString strAppend; + /* workaround for http://qt.gitorious.org/qt/qt/commit/7fc63dd0ff368a637dcd17e692b9d6b26278b538this */ + if (extPackFile.GetVersion().contains(QRegExp("[-_]"))) + strAppend = extPackFile.GetVersion().section(QRegExp("[-_]"), 1, -1, QString::SectionIncludeLeadingSep); + QString strPackVersion = QString("%1r%2%3").arg(strVersion).arg(extPackFile.GetRevision()).arg(strAppend); /* * Check if there is a version of the extension pack already @@ -146,7 +156,12 @@ UIGlobalSettingsExtension::UIGlobalSettingsExtension() bool fReplaceIt = extPackCur.isOk(); if (fReplaceIt) { - QString strPackVersionCur = QString("%1r%2").arg(extPackCur.GetVersion()).arg(extPackCur.GetRevision()); + QString strVersionCur(extPackCur.GetVersion().section(QRegExp("[-_]"), 0, 0)); + QString strAppendCur; + /* workaround for http://qt.gitorious.org/qt/qt/commit/7fc63dd0ff368a637dcd17e692b9d6b26278b538this */ + if (extPackCur.GetVersion().contains(QRegExp("[-_]"))) + strAppendCur = extPackCur.GetVersion().section(QRegExp("[-_]"), 1, -1, QString::SectionIncludeLeadingSep); + QString strPackVersionCur = QString("%1r%2%3").arg(strVersionCur).arg(extPackCur.GetRevision()).arg(strAppendCur); if (!msgCenter().confirmReplacePackage(strPackName, strPackVersion, strPackVersionCur, strPackDescription, pParent)) return; } |
