From ea57e3e40a0a2a1eaa4b15f44665744550e9bba3 Mon Sep 17 00:00:00 2001 From: Kjell Kernen Date: Fri, 21 Feb 2014 17:29:02 +0100 Subject: [PATCH 01/33] Corrected a number of smaller issuses in the GUI. A new profile now keeps the values from the current profile. Removed the special handling of the Name field in profiles. --- companion/src/appdata.cpp | 78 ++++++++++----- companion/src/appdata.h | 45 ++++----- companion/src/apppreferencesdialog.ui | 19 +++- companion/src/burndialog.cpp | 2 +- companion/src/customizesplashdialog.cpp | 4 +- companion/src/mainwindow.cpp | 93 +++++++++--------- companion/src/mdichild.cpp | 2 +- .../themes/monochrome/24/fwpreferences.png | Bin 274 -> 286 bytes .../themes/monochrome/32/fwpreferences.png | Bin 409 -> 341 bytes .../themes/monochrome/48/fwpreferences.png | Bin 462 -> 460 bytes 10 files changed, 141 insertions(+), 102 deletions(-) diff --git a/companion/src/appdata.cpp b/companion/src/appdata.cpp index a0f1fbb1c..09b1ca66f 100644 --- a/companion/src/appdata.cpp +++ b/companion/src/appdata.cpp @@ -280,35 +280,31 @@ void JStickData::flush() // ** Profile class******************** // Get declarations -QString Profile::firmware() { return _firmware; } -QString Profile::name() { return _name; } -QString Profile::sdPath() { return _sdPath; } -QString Profile::splashFile() { return _splashFile; } -bool Profile::burnFirmware() { return _burnFirmware; } -bool Profile::renameFwFiles() { return _renameFwFiles; } -bool Profile::patchImage() { return _patchImage; } -int Profile::channelOrder() { return _channelOrder; } -int Profile::defaultMode() { return _defaultMode; } +QString Profile::firmware() const { return _firmware; } +QString Profile::name() const { return _name; } +QString Profile::sdPath() const { return _sdPath; } +QString Profile::splashFile() const { return _splashFile; } +bool Profile::burnFirmware() const { return _burnFirmware; } +bool Profile::renameFwFiles() const { return _renameFwFiles; } +bool Profile::patchImage() const { return _patchImage; } +int Profile::channelOrder() const { return _channelOrder; } +int Profile::defaultMode() const { return _defaultMode; } -QString Profile::beeper() { return _beeper; } -QString Profile::countryCode() { return _countryCode; } -QString Profile::display() { return _display; } -QString Profile::haptic() { return _haptic; } -QString Profile::speaker() { return _speaker; } -QString Profile::stickPotCalib() { return _stickPotCalib; } -QString Profile::trainerCalib() { return _trainerCalib; } -int Profile::currentCalib() { return _currentCalib; } -int Profile::gsStickMode() { return _gsStickMode; } -int Profile::ppmMultiplier() { return _ppmMultiplier; } -int Profile::vBatCalib() { return _vBatCalib; } -int Profile::vBatWarn() { return _vBatWarn; } +QString Profile::beeper() const { return _beeper; } +QString Profile::countryCode() const { return _countryCode; } +QString Profile::display() const { return _display; } +QString Profile::haptic() const { return _haptic; } +QString Profile::speaker() const { return _speaker; } +QString Profile::stickPotCalib() const { return _stickPotCalib; } +QString Profile::trainerCalib() const { return _trainerCalib; } +int Profile::currentCalib() const { return _currentCalib; } +int Profile::gsStickMode() const { return _gsStickMode; } +int Profile::ppmMultiplier() const { return _ppmMultiplier; } +int Profile::vBatCalib() const { return _vBatCalib; } +int Profile::vBatWarn() const { return _vBatWarn; } // Set declarations -void Profile::name (const QString x) { if (x.isEmpty()) // Name may never be empty! - store("----", _name, "Name", "Profiles", QString("profile%1").arg(index)); -else - store(x, _name, "Name", "Profiles", QString("profile%1").arg(index));} - +void Profile::name (const QString x) { store(x, _name, "Name" ,"Profiles", QString("profile%1").arg(index));} void Profile::firmware (const QString x) { store(x, _firmware, "firmware" ,"Profiles", QString("profile%1").arg(index));} void Profile::sdPath (const QString x) { store(x, _sdPath, "sdPath" ,"Profiles", QString("profile%1").arg(index));} void Profile::splashFile (const QString x) { store(x, _splashFile, "SplashFileName" ,"Profiles", QString("profile%1").arg(index));} @@ -337,6 +333,34 @@ Profile::Profile() index = -1; } +// The default copy operator can not be used since the index variable would be destroyed +Profile& Profile::operator=(const Profile& rhs) +{ + _name = rhs.name(); + _firmware = rhs.firmware(); + _sdPath = rhs.sdPath(); + _splashFile = rhs.splashFile(); + _burnFirmware = rhs.burnFirmware(); + _renameFwFiles = rhs.renameFwFiles(); + _patchImage = rhs.patchImage(); + _channelOrder = rhs.channelOrder(); + _defaultMode = rhs.defaultMode(); + _beeper = rhs.beeper(); + _countryCode = rhs.countryCode(); + _display = rhs.display(); + _haptic = rhs.haptic(); + _speaker = rhs.speaker(); + _stickPotCalib = rhs.stickPotCalib(); + _trainerCalib = rhs.trainerCalib(); + _currentCalib = rhs.currentCalib(); + _gsStickMode = rhs.gsStickMode(); + _ppmMultiplier = rhs.ppmMultiplier(); + _vBatCalib = rhs.vBatCalib(); + _vBatWarn = rhs.vBatWarn(); + + return *this; +} + void Profile::remove() { // Remove all profile values from settings file @@ -400,7 +424,7 @@ void Profile::flush() { // Load and store all variables. Use default values if setting values are missing getset( _firmware, "firmware" ,"" ,"Profiles", QString("profile%1").arg(index)); - getset( _name, "Name" ,"----" ,"Profiles", QString("profile%1").arg(index)); + getset( _name, "Name" ,"" ,"Profiles", QString("profile%1").arg(index)); getset( _sdPath, "sdPath" ,"" ,"Profiles", QString("profile%1").arg(index)); getset( _splashFile, "SplashFileName" ,"" ,"Profiles", QString("profile%1").arg(index)); getset( _burnFirmware, "burnFirmware" ,false ,"Profiles", QString("profile%1").arg(index)); diff --git a/companion/src/appdata.h b/companion/src/appdata.h index c8c85a151..210b8ae8f 100644 --- a/companion/src/appdata.h +++ b/companion/src/appdata.h @@ -1,4 +1,4 @@ -// Companion Application Data Class Definition. +// Companion Application Data Class Declaration. // Author Kjell Kernen // All temporary and permanent global variables are defined here to make @@ -118,28 +118,28 @@ class Profile: protected CompStoreObj public: // All the get definitions - QString firmware(); - QString name(); - QString sdPath(); - QString splashFile(); - bool burnFirmware(); - bool renameFwFiles(); - bool patchImage(); - int channelOrder(); - int defaultMode(); + QString firmware() const; + QString name() const; + QString sdPath() const; + QString splashFile() const; + bool burnFirmware() const; + bool renameFwFiles() const; + bool patchImage() const; + int channelOrder() const; + int defaultMode() const; - QString beeper(); - QString countryCode(); - QString display(); - QString haptic(); - QString speaker(); - QString stickPotCalib(); - QString trainerCalib(); - int currentCalib(); - int gsStickMode(); - int ppmMultiplier(); - int vBatCalib(); - int vBatWarn(); + QString beeper() const; + QString countryCode() const; + QString display() const; + QString haptic() const; + QString speaker() const; + QString stickPotCalib() const; + QString trainerCalib() const; + int currentCalib() const; + int gsStickMode() const; + int ppmMultiplier() const; + int vBatCalib() const; + int vBatWarn() const; // All the set definitions void name (const QString); @@ -166,6 +166,7 @@ class Profile: protected CompStoreObj void vBatWarn (const int); Profile(); + Profile& operator=(const Profile&); void remove(); bool existsOnDisk(); void init(int newIndex); diff --git a/companion/src/apppreferencesdialog.ui b/companion/src/apppreferencesdialog.ui index c15874915..952881a7e 100644 --- a/companion/src/apppreferencesdialog.ui +++ b/companion/src/apppreferencesdialog.ui @@ -26,12 +26,21 @@ Edit Settings + + 6 + + + 6 + + + 6 + + + 6 + 2 - - 6 - @@ -490,7 +499,7 @@ - Radio Settings + Radio Settings Profile @@ -720,7 +729,7 @@ This is used by the templated to determine which channel goes to what number out - Settings Profile + Profile Name diff --git a/companion/src/burndialog.cpp b/companion/src/burndialog.cpp index e7f48e0b3..cb56b5881 100644 --- a/companion/src/burndialog.cpp +++ b/companion/src/burndialog.cpp @@ -140,7 +140,7 @@ void burnDialog::on_FlashLoadButton_clicked() ui->EEbackupCB->hide(); QTimer::singleShot(0, this, SLOT(shrink())); if (hexType==2) { - fileName = QFileDialog::getOpenFileName(this, tr("Open"), g.flashDir(), FLASH_FILES_FILTER); + fileName = QFileDialog::getOpenFileName(this, tr("Open Firmware File"), g.flashDir(), FLASH_FILES_FILTER); checkFw(fileName); } else { diff --git a/companion/src/customizesplashdialog.cpp b/companion/src/customizesplashdialog.cpp index b4d901836..748c48b69 100644 --- a/companion/src/customizesplashdialog.cpp +++ b/companion/src/customizesplashdialog.cpp @@ -182,10 +182,10 @@ void customizeSplashDialog::on_leftLoadFwButton_clicked() {loadFirmware(left);} void customizeSplashDialog::on_rightLoadFwButton_clicked() {loadFirmware(right);} void customizeSplashDialog::loadFirmware(Side side) { - QString fileName = QFileDialog::getOpenFileName(this, tr("Open"), g.flashDir(), FLASH_FILES_FILTER); + QString fileName = QFileDialog::getOpenFileName(this, tr("Open Firmware File"), g.flashDir(), FLASH_FILES_FILTER); if (!fileName.isEmpty()) { if (!side.displayImage( fileName, FW )) - QMessageBox::critical(this, tr("Error"), tr("Cannot load embedded FW image from %1.").arg(fileName)); + QMessageBox::critical(this, tr("Error"), tr("Can not load embedded image from firmware file %1.").arg(fileName)); else g.flashDir( QFileInfo(fileName).dir().absolutePath() ); } diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index 75d68038b..f38bfcbc7 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -642,7 +642,7 @@ void MainWindow::openDocURL() void MainWindow::openFile() { - QString fileName = QFileDialog::getOpenFileName(this, tr("Open"), g.eepromDir(), tr(EEPROM_FILES_FILTER)); + QString fileName = QFileDialog::getOpenFileName(this, tr("Open Models and Settings file"), g.eepromDir(), tr(EEPROM_FILES_FILTER)); if (!fileName.isEmpty()) { g.eepromDir(QFileInfo(fileName).dir().absolutePath()); @@ -1586,17 +1586,17 @@ void MainWindow::createActions() } updateProfilesActions(); - newAct = addAct("new.png", tr("New"), tr("Create a new file"), QKeySequence::New, SLOT(newFile())); - openAct = addAct("open.png", tr("Open..."), tr("Open an existing file"), QKeySequence::Open, SLOT(openFile())); - saveAct = addAct("save.png", tr("Save..."), tr("Save the document to disk"), QKeySequence::Save, SLOT(save())); - saveAsAct = addAct("saveas.png", tr("Save As..."), tr("Save the document to disk"), QKeySequence::SaveAs, SLOT(saveAs())); - exitAct = addAct("exit.png", tr("Exit"), tr("Exit the application"), QKeySequence::Quit, SLOT(newFile())); - cutAct = addAct("cut.png", tr("Cut"), tr("Cut current selection to the clipboard"), QKeySequence::Cut, SLOT(cut())); - copyAct = addAct("copy.png", tr("Copy..."), tr("Copy current selection to the clipboard"), QKeySequence::Copy, SLOT(copy())); - pasteAct = addAct("paste.png", tr("Paste..."), tr("Paste clipboard into current selection"), QKeySequence::Paste, SLOT(paste())); + newAct = addAct("new.png", tr("New Models+Settings"), tr("Create a new Models and Settings file"), QKeySequence::New, SLOT(newFile())); + openAct = addAct("open.png", tr("Open Models+Settings..."), tr("Open Models and Settings file"), QKeySequence::Open, SLOT(openFile())); + saveAct = addAct("save.png", tr("Save Models+Settings..."), tr("Save Models and Settings file"), QKeySequence::Save, SLOT(save())); + saveAsAct = addAct("saveas.png", tr("Save Models+Settings as..."), tr("Save Models and Settings file"), QKeySequence::SaveAs, SLOT(saveAs())); + exitAct = addAct("exit.png", tr("Exit"), tr("Exit the application"), QKeySequence::Quit, SLOT(newFile())); + cutAct = addAct("cut.png", tr("Cut Model"), tr("Cut current model to the clipboard"), QKeySequence::Cut, SLOT(cut())); + copyAct = addAct("copy.png", tr("Copy Model..."), tr("Copy current model to the clipboard"), QKeySequence::Copy, SLOT(copy())); + pasteAct = addAct("paste.png", tr("Paste Model..."), tr("Paste model from clipboard"), QKeySequence::Paste, SLOT(paste())); QActionGroup *themeAlignGroup = new QActionGroup(this); - classicThemeAct = addAct( themeAlignGroup, tr("Classical"), tr("The classical Companion icon theme"), SLOT(setClassicTheme())); + classicThemeAct = addAct( themeAlignGroup, tr("Classical"), tr("The classic companion9x icon theme"), SLOT(setClassicTheme())); yericoThemeAct = addAct( themeAlignGroup, tr("Yerico"), tr("Yellow round honey sweet icon theme"), SLOT(setYericoTheme())); monoThemeAct = addAct( themeAlignGroup, tr("Monochrome"), tr("A monochrome black icon theme"), SLOT(setMonochromeTheme())); monoWhiteAct = addAct( themeAlignGroup, tr("MonoWhite"), tr("A monochrome white icon theme"), SLOT(setMonoWhiteTheme())); @@ -1622,30 +1622,30 @@ void MainWindow::createActions() swedishLangAct = addAct( langAlignGroup, tr("Swedish"), tr("Use Swedish in menus"), SLOT(setSELanguage())); russianLangAct = addAct( langAlignGroup, tr("Russian"), tr("Use Russian in menus"), SLOT(setRULanguage())); - aboutAct = addAct("information.png", tr("About"), tr("Show the application's About box"), SLOT(about())); - printAct = addAct("print.png", tr("Print"), tr("Print current model"), SLOT(print())); - simulateAct = addAct("simulate.png", tr("Simulate"), tr("Simulate selected model"), SLOT(simulate())); - loadbackupAct = addAct("open.png", tr("loadBackup..."), tr("Load backup from file"), SLOT(loadBackup())); - logsAct = addAct("logs.png", tr("Logs"), tr("Open log file"), SLOT(logFile())); - appPrefsAct = addAct("apppreferences.png",tr("Setting..."), tr("Edit Settings"), SLOT(appPrefs())); - fwPrefsAct = addAct("fwpreferences.png", tr("Downloads..."), tr("Download firmware and voice files"), SLOT(fwPrefs())); - checkForUpdatesAct = addAct("update.png", tr("Check for updates..."), tr("Check OpenTX and Companion updates"), SLOT(doUpdates())); - changelogAct = addAct("changelog.png", tr("ChangeLog..."), tr("Show Companion changelog"), SLOT(changelog())); - fwchangelogAct = addAct("changelog.png", tr("Firmware ChangeLog..."), tr("Show firmware changelog"), SLOT(fwchangelog())); - compareAct = addAct("compare.png", tr("Compare..."), tr("Compare models"), SLOT(compare())); - editSplashAct = addAct("paintbrush.png", tr("Edit Tx Splash Image..."),tr("edit the splash screen of your TX"), SLOT(customizeSplash())); - burnListAct = addAct("list.png", tr("List programmers"), tr("List available programmers"), SLOT(burnList())); - burnFusesAct = addAct("fuses.png", tr("Fuses..."), tr("Show fuses dialog"), SLOT(burnFuses())); - readFlashAct = addAct("read_flash.png", tr("Read Firmware"), tr("Read firmware from transmitter"), SLOT(readFlash())); - writeFlashAct = addAct("write_flash.png", tr("Write Firmware"), tr("Write firmware to transmitter"), SLOT(writeFlash())); - createProfileAct = addAct("", tr("New Profile"), tr("Create a new Radio Setting Profile"), SLOT(createProfile())); + aboutAct = addAct("information.png", tr("About..."), tr("Show the application's About box"), SLOT(about())); + printAct = addAct("print.png", tr("Print..."), tr("Print current model"), SLOT(print())); + simulateAct = addAct("simulate.png", tr("Simulate..."), tr("Simulate current model"), SLOT(simulate())); + loadbackupAct = addAct("open.png", tr("Load Backup..."), tr("Load backup from file"), SLOT(loadBackup())); + logsAct = addAct("logs.png", tr("View Log File..."), tr("Open and view log file"), SLOT(logFile())); + appPrefsAct = addAct("apppreferences.png",tr("Settings..."), tr("Edit Settings"), SLOT(appPrefs())); + fwPrefsAct = addAct("fwpreferences.png", tr("Download..."), tr("Download firmware and voice files"), SLOT(fwPrefs())); + checkForUpdatesAct = addAct("update.png", tr("Check for Updates..."), tr("Check OpenTX and Companion updates"), SLOT(doUpdates())); + changelogAct = addAct("changelog.png", tr("Companion Changes..."), tr("Show Companion change log"), SLOT(changelog())); + fwchangelogAct = addAct("changelog.png", tr("Firmware Changes..."), tr("Show firmware change log"), SLOT(fwchangelog())); + compareAct = addAct("compare.png", tr("Compare Models..."), tr("Compare models"), SLOT(compare())); + editSplashAct = addAct("paintbrush.png", tr("Edit Tx Splash Image..."), tr("Edit the splash image of your TX"), SLOT(customizeSplash())); + burnListAct = addAct("list.png", tr("List programmers..."), tr("List available programmers"), SLOT(burnList())); + burnFusesAct = addAct("fuses.png", tr("Fuses..."), tr("Show fuses dialog"), SLOT(burnFuses())); + readFlashAct = addAct("read_flash.png", tr("Read Firmware"), tr("Read firmware from transmitter"), SLOT(readFlash())); + writeFlashAct = addAct("write_flash.png", tr("Write Firmware"), tr("Write firmware to transmitter"), SLOT(writeFlash())); + createProfileAct = addAct("", tr("Add Radio Profile"), tr("Create a new Radio Setting Profile"), SLOT(createProfile())); openDocURLAct = addAct("", tr("Manuals and other Documents"), tr("Open the OpenTX document page in a web browser"), SLOT(openDocURL())); writeEepromAct = addAct("write_eeprom.png", tr("Write Models and Settings To Tx"), tr("Write Models and Settings to transmitter"), SLOT(writeEeprom())); readEepromAct = addAct("read_eeprom.png", tr("Read Models and Settings From Tx"), tr("Read Models and Settings from transmitter"), SLOT(readEeprom())); - burnConfigAct = addAct("configure.png", tr("Configure connection software..."), tr("Configure software for reading from and writing to the transmitter"), SLOT(burnConfig())); - writeFileToEepromAct = addAct("write_eeprom_file.png", tr("Write Models and Settings from file to Tx"), tr("Write Models and Settings from file to transmitter"), SLOT(writeFileToEeprom())); - readEepromToFileAct = addAct("read_eeprom_file.png", tr("Save Tx Models and Settings to file"), tr("Save the Models and Settings from the transmitter to a file"), SLOT(readEepromToFile())); - contributorsAct = addAct("contributors.png", tr("Contributors"), tr("A tribute to those who have contributed to OpenTX and Companion"), SLOT(contributors())); + burnConfigAct = addAct("configure.png", tr("Configure Communications..."), tr("Configure software for communicating with the transmitter"), SLOT(burnConfig())); + writeFileToEepromAct = addAct("write_eeprom_file.png", tr("Write Models and Settings from file to Tx"), tr("Write Models and Settings from file to transmitter"), SLOT(writeFileToEeprom())); + readEepromToFileAct = addAct("read_eeprom_file.png", tr("Save Tx Models and Settings to file"), tr("Save the Models and Settings from the transmitter to a file"), SLOT(readEepromToFile())); + contributorsAct = addAct("contributors.png", tr("Contributors..."), tr("A tribute to those who have contributed to OpenTX and Companion"), SLOT(contributors())); compareAct->setEnabled(false); simulateAct->setEnabled(false); @@ -1655,7 +1655,7 @@ void MainWindow::createActions() void MainWindow::createMenus() { - QMenu *recentFileMenu=new QMenu(tr("Recent Files")); + QMenu *recentFileMenu=new QMenu(tr("Recent Models+Settings")); QMenu *languageMenu=new QMenu(tr("Set Menu Language")); QMenu *themeMenu=new QMenu(tr("Set Icon Theme")); QMenu *iconThemeSizeMenu=new QMenu(tr("Set Icon Size")); @@ -1671,13 +1671,12 @@ void MainWindow::createMenus() recentFileMenu->addAction(recentFileActs[i]); fileMenu->addSeparator(); fileMenu->addAction(logsAct); + fileMenu->addAction(fwPrefsAct); fileMenu->addSeparator(); fileMenu->addAction(simulateAct); fileMenu->addAction(printAct); fileMenu->addAction(compareAct); fileMenu->addSeparator(); - fileMenu->addAction(fwPrefsAct); - fileMenu->addMenu(createProfilesMenu()); fileMenu->addAction(exitAct); editMenu = menuBar()->addMenu(tr("Edit")); @@ -1713,6 +1712,7 @@ void MainWindow::createMenus() iconThemeSizeMenu->addAction(hugeIconAct); settingsMenu->addSeparator(); settingsMenu->addAction(appPrefsAct); + settingsMenu->addMenu(createProfilesMenu()); settingsMenu->addAction(editSplashAct); settingsMenu->addAction(burnConfigAct); @@ -1756,7 +1756,7 @@ QMenu *MainWindow::createRecentFileMenu() QMenu *MainWindow::createProfilesMenu() { - QMenu *profilesMenu=new QMenu(tr("Radio Settings Profiles")); + QMenu *profilesMenu=new QMenu(tr("Radio Settings Profile")); int i; for ( i = 0; i < MAX_PROFILES; ++i) { profilesMenu->addAction(profileActs[i]); @@ -1798,25 +1798,26 @@ void MainWindow::createToolBars() recentToolButton->setPopupMode(QToolButton::InstantPopup); recentToolButton->setMenu(createRecentFileMenu()); recentToolButton->setIcon(CompanionIcon("recentdocument.png")); - recentToolButton->setToolTip(tr("Recent Files")); - recentToolButton->setStatusTip(tr("Show a selection list of recent documents")); + recentToolButton->setToolTip(tr("Recent Models+Settings")); + recentToolButton->setStatusTip(tr("Show recent Models+Settings documents")); fileToolBar->addWidget(recentToolButton); fileToolBar->addAction(saveAct); + fileToolBar->addSeparator(); fileToolBar->addAction(logsAct); + fileToolBar->addAction(fwPrefsAct); fileToolBar->addSeparator(); fileToolBar->addAction(appPrefsAct); - fileToolBar->addAction(fwPrefsAct); - fileToolBar->addAction(editSplashAct); QToolButton * profileButton = new QToolButton; profileButton->setPopupMode(QToolButton::InstantPopup); profileButton->setMenu(createProfilesMenu()); profileButton->setIcon(CompanionIcon("profiles.png")); - profileButton->setToolTip(tr("Radio Profiles")); + profileButton->setToolTip(tr("Radio Settings Profile")); profileButton->setStatusTip(tr("Show a selection list of radio settings profiles")); fileToolBar->addWidget(profileButton); + fileToolBar->addAction(editSplashAct); fileToolBar->addSeparator(); fileToolBar->addAction(simulateAct); fileToolBar->addAction(printAct); @@ -1962,9 +1963,9 @@ void MainWindow::updateProfilesActions() { for (int i=0; isetText(text); profileActs[i]->setData(i); profileActs[i]->setVisible(true); @@ -1985,10 +1986,14 @@ void MainWindow::createProfile() if (i==MAX_PROFILES) //Failed to find free slot return; - // Create profile name and force a flush to file - g.profile[i].name( QString("profile%1").arg(i)); + // Create profile by forcing it to write to disk g.profile[i].flush(); + // Copy current profile to new and give it a new name + g.profile[i] = g.profile[g.id()]; + g.profile[i].name( QString("New Radio")); + + g.id(i); updateMenus(); } diff --git a/companion/src/mdichild.cpp b/companion/src/mdichild.cpp index cd8b49286..72a8f7693 100644 --- a/companion/src/mdichild.cpp +++ b/companion/src/mdichild.cpp @@ -649,7 +649,7 @@ void MdiChild::setEEpromAvail(int eavail) bool MdiChild::loadBackup() { - QString fileName = QFileDialog::getOpenFileName(this, tr("Open"), g.eepromDir(),tr(EEPROM_FILES_FILTER)); + QString fileName = QFileDialog::getOpenFileName(this, tr("Open backup Models and Settings file"), g.eepromDir(),tr(EEPROM_FILES_FILTER)); if (fileName.isEmpty()) return false; QFile file(fileName); diff --git a/companion/src/themes/monochrome/24/fwpreferences.png b/companion/src/themes/monochrome/24/fwpreferences.png index 1f4d9bf0579226539f662e4014a0dbbc63d5af81..2d322e73d92c826c72bda2e80b0ccc3c3e6ac8e6 100644 GIT binary patch delta 211 zcmV;^04)EK0-gepQ-2i=?lj0Gay?~y>$-(=N@}f< z_a4lQ5CVGdqB=1E0F5yy#)vV7xCQ|6?uVm3St7}G-F_(D=w027IujFrqE^&%nT-jmH8FEEbY%!A}MT23{-{a5FG4{Gf&f z{}~t<9%HfKAp--$KT0gH#bPKfY)5V?OCZAVWJ;5AD;~o;s6drpR$?)H4Yf1nDI~*B z(<l!1Xkd`Q%2|EXo((60|@4glKbOnG&P%EbTx002ovPDHLkV1g;9 BQFj0U diff --git a/companion/src/themes/monochrome/32/fwpreferences.png b/companion/src/themes/monochrome/32/fwpreferences.png index ad10a252c377f917140c42df93d2fc753f53485f..17d781fb30687074d25a14254802defdf57875e7 100644 GIT binary patch delta 267 zcmV+m0rdWv1JweMQ-2i{UL_ikEiaCj>+x zuQ(og*VP2_%FriH4VN3f$&ko>lJ{h9AQ>Sb(Yam)y!3$&Ab+(8NOg_^x)2U1;ARnU z*Tl-V1F|XwoDBl5LS*ljHynV*Kq^C4-snAEk$oZT3}UiS57!B3EiSY=CnySwfMTvE zyfl!PbC2;_kk^hgV=^u}{&$@32mbvr;Z%WI+QQ(CwHsJ}0>?R=*sxxF0Nbl~H7$rb RjQ{`u07*qoLfFGf(8OUHMw^IPOum7Cw~M8pRHa;fCO$V$*rR!2W1bjf0f8rjHDX;rfWCo1 z&v21D5eR{H4uR`vtakze%z^Wi{$?~rsuuW83GtKCm-U=8PXF!QWwaS^=DG|CfJF)6 z7r<3jwbX410(*B=7leZ~!r%K+)jkvm|L9v;{$>#V9oY5lY;gb#bA%s7W4$C^UB=t0 z>eVY6z$793B<1|z9T&iFY_GrEwDa~&RJ4Ua$JR$|?gX#EF|ZH3pd@2@*($!}(wjLI g*meO$QIu*~0=c&eUjR3<{r~^~07*qoM6N<$f^7S%$N&HU delta 388 zcmV-~0ek+;1I`1GQ-1~z3@fl6Dlz~70b5B#K~!ko?U^A@!$25@AIJhB(-R2n5(ES_ zLxPzgI1C{O90ogwncy!>%-|3R42B!>y#NUC4s4bH=m2jyX2=_W0MEci0f05&Dd#8V6+nR70suD-Ys5Q% z09OtG1II-k1Rw%Va{wI2wdw!__y&3@{kw6E)D7^FV&XHUFYCEr+WEJ4SJ9@xUg#Lo z2WAzRp8kpRgynPafwg@=$HHgoh;2zil)`2@rCY^HqXC>Nv i+1;oCG#$WXDyctK>I!M0;ufF)0000 Date: Fri, 21 Feb 2014 20:49:00 +0100 Subject: [PATCH 02/33] Fixed setting conversion and initialization problems --- companion/src/appdata.cpp | 632 ++++++++++++++++++----------------- companion/src/mainwindow.cpp | 5 +- 2 files changed, 324 insertions(+), 313 deletions(-) diff --git a/companion/src/appdata.cpp b/companion/src/appdata.cpp index 09b1ca66f..21145f978 100644 --- a/companion/src/appdata.cpp +++ b/companion/src/appdata.cpp @@ -9,201 +9,201 @@ AppData g; // ** CompStoreObj class******************** void CompStoreObj::clear (const QString tag1, const QString tag2, const QString tag3) { - QSettings settings(PRODUCT, COMPANY); - if (tag2.isEmpty()) - { - settings.remove(tag1); - } - else if (tag3.isEmpty()) - { - settings.beginGroup(tag1); - settings.remove(tag2); - settings.endGroup(); - } - else - { - settings.beginGroup(tag1); - settings.beginGroup(tag2); - settings.remove(tag3); - settings.endGroup(); - settings.endGroup(); - } + QSettings settings(PRODUCT, COMPANY); + if (tag2.isEmpty()) + { + settings.remove(tag1); + } + else if (tag3.isEmpty()) + { + settings.beginGroup(tag1); + settings.remove(tag2); + settings.endGroup(); + } + else + { + settings.beginGroup(tag1); + settings.beginGroup(tag2); + settings.remove(tag3); + settings.endGroup(); + settings.endGroup(); + } } void CompStoreObj::store(const QByteArray newArray, QByteArray &array, const QString tag, const QString group1, const QString group2 ) { - QSettings settings(PRODUCT, COMPANY); - if (!group1.isEmpty()) settings.beginGroup(group1); - if (!group2.isEmpty()) settings.beginGroup(group2); + QSettings settings(PRODUCT, COMPANY); + if (!group1.isEmpty()) settings.beginGroup(group1); + if (!group2.isEmpty()) settings.beginGroup(group2); - settings.setValue(tag, newArray); - array = newArray; + settings.setValue(tag, newArray); + array = newArray; - if (!group1.isEmpty()) settings.endGroup(); - if (!group2.isEmpty()) settings.endGroup(); + if (!group1.isEmpty()) settings.endGroup(); + if (!group2.isEmpty()) settings.endGroup(); } void CompStoreObj::store(const QStringList newSList, QStringList &stringList, const QString tag, const QString group1, const QString group2 ) { - QSettings settings(PRODUCT, COMPANY); - if (!group1.isEmpty()) settings.beginGroup(group1); - if (!group2.isEmpty()) settings.beginGroup(group2); + QSettings settings(PRODUCT, COMPANY); + if (!group1.isEmpty()) settings.beginGroup(group1); + if (!group2.isEmpty()) settings.beginGroup(group2); - settings.setValue(tag, newSList); - stringList = newSList; + settings.setValue(tag, newSList); + stringList = newSList; - if (!group1.isEmpty()) settings.endGroup(); - if (!group2.isEmpty()) settings.endGroup(); + if (!group1.isEmpty()) settings.endGroup(); + if (!group2.isEmpty()) settings.endGroup(); } void CompStoreObj::store(const QString newString, QString &string, const QString tag, const QString group1, const QString group2 ) { - QSettings settings(PRODUCT, COMPANY); - if (!group1.isEmpty()) settings.beginGroup(group1); - if (!group2.isEmpty()) settings.beginGroup(group2); + QSettings settings(PRODUCT, COMPANY); + if (!group1.isEmpty()) settings.beginGroup(group1); + if (!group2.isEmpty()) settings.beginGroup(group2); - settings.setValue(tag, newString); - string = newString; + settings.setValue(tag, newString); + string = newString; - if (!group1.isEmpty()) settings.endGroup(); - if (!group2.isEmpty()) settings.endGroup(); + if (!group1.isEmpty()) settings.endGroup(); + if (!group2.isEmpty()) settings.endGroup(); } void CompStoreObj::store(const bool newTruth, bool &truth, const QString tag, const QString group1, const QString group2 ) { - QSettings settings(PRODUCT, COMPANY); - if (!group1.isEmpty()) settings.beginGroup(group1); - if (!group2.isEmpty()) settings.beginGroup(group2); + QSettings settings(PRODUCT, COMPANY); + if (!group1.isEmpty()) settings.beginGroup(group1); + if (!group2.isEmpty()) settings.beginGroup(group2); - settings.setValue(tag, newTruth); - truth = newTruth; + settings.setValue(tag, newTruth); + truth = newTruth; - if (!group1.isEmpty()) settings.endGroup(); - if (!group2.isEmpty()) settings.endGroup(); + if (!group1.isEmpty()) settings.endGroup(); + if (!group2.isEmpty()) settings.endGroup(); } void CompStoreObj::store(const int newNumber, int &number, const QString tag, const QString group1, const QString group2 ) { - QSettings settings(PRODUCT, COMPANY); - if (!group1.isEmpty()) settings.beginGroup(group1); - if (!group2.isEmpty()) settings.beginGroup(group2); + QSettings settings(PRODUCT, COMPANY); + if (!group1.isEmpty()) settings.beginGroup(group1); + if (!group2.isEmpty()) settings.beginGroup(group2); - settings.setValue(tag, newNumber); - number = newNumber; + settings.setValue(tag, newNumber); + number = newNumber; - if (!group1.isEmpty()) settings.endGroup(); - if (!group2.isEmpty()) settings.endGroup(); + if (!group1.isEmpty()) settings.endGroup(); + if (!group2.isEmpty()) settings.endGroup(); } // Retrieval functions void CompStoreObj::retrieve( QByteArray &array, const QString tag, const QString def, const QString group1, const QString group2 ) { - QSettings settings(PRODUCT, COMPANY); - if (!group1.isEmpty()) settings.beginGroup(group1); - if (!group2.isEmpty()) settings.beginGroup(group2); + QSettings settings(PRODUCT, COMPANY); + if (!group1.isEmpty()) settings.beginGroup(group1); + if (!group2.isEmpty()) settings.beginGroup(group2); - array = settings.value(tag, def).toByteArray(); + array = settings.value(tag, def).toByteArray(); - if (!group1.isEmpty()) settings.endGroup(); - if (!group2.isEmpty()) settings.endGroup(); + if (!group1.isEmpty()) settings.endGroup(); + if (!group2.isEmpty()) settings.endGroup(); } void CompStoreObj::retrieve( QStringList &stringList, const QString tag, const QString def, const QString group1, const QString group2 ) { - QSettings settings(PRODUCT, COMPANY); - if (!group1.isEmpty()) settings.beginGroup(group1); - if (!group2.isEmpty()) settings.beginGroup(group2); + QSettings settings(PRODUCT, COMPANY); + if (!group1.isEmpty()) settings.beginGroup(group1); + if (!group2.isEmpty()) settings.beginGroup(group2); - stringList = settings.value(tag, def).toStringList(); + stringList = settings.value(tag, def).toStringList(); - if (!group1.isEmpty()) settings.endGroup(); - if (!group2.isEmpty()) settings.endGroup(); + if (!group1.isEmpty()) settings.endGroup(); + if (!group2.isEmpty()) settings.endGroup(); } void CompStoreObj::retrieve( QString &string, const QString tag, const QString def, const QString group1, const QString group2 ) { - QSettings settings(PRODUCT, COMPANY); - if (!group1.isEmpty()) settings.beginGroup(group1); - if (!group2.isEmpty()) settings.beginGroup(group2); + QSettings settings(PRODUCT, COMPANY); + if (!group1.isEmpty()) settings.beginGroup(group1); + if (!group2.isEmpty()) settings.beginGroup(group2); - string = settings.value(tag, def).toString(); + string = settings.value(tag, def).toString(); - if (!group1.isEmpty()) settings.endGroup(); - if (!group2.isEmpty()) settings.endGroup(); + if (!group1.isEmpty()) settings.endGroup(); + if (!group2.isEmpty()) settings.endGroup(); } void CompStoreObj::retrieve( bool &truth, const QString tag, const bool def, const QString group1, const QString group2 ) { - QSettings settings(PRODUCT, COMPANY); - if (!group1.isEmpty()) settings.beginGroup(group1); - if (!group2.isEmpty()) settings.beginGroup(group2); + QSettings settings(PRODUCT, COMPANY); + if (!group1.isEmpty()) settings.beginGroup(group1); + if (!group2.isEmpty()) settings.beginGroup(group2); - truth = settings.value(tag, def).toBool(); + truth = settings.value(tag, def).toBool(); - if (!group1.isEmpty()) settings.endGroup(); - if (!group2.isEmpty()) settings.endGroup(); + if (!group1.isEmpty()) settings.endGroup(); + if (!group2.isEmpty()) settings.endGroup(); } void CompStoreObj::retrieve( int &number, const QString tag, const int def, const QString group1, const QString group2 ) { - QSettings settings(PRODUCT, COMPANY); - if (!group1.isEmpty()) settings.beginGroup(group1); - if (!group2.isEmpty()) settings.beginGroup(group2); + QSettings settings(PRODUCT, COMPANY); + if (!group1.isEmpty()) settings.beginGroup(group1); + if (!group2.isEmpty()) settings.beginGroup(group2); - number = settings.value(tag, def).toInt(); + number = settings.value(tag, def).toInt(); - if (!group1.isEmpty()) settings.endGroup(); - if (!group2.isEmpty()) settings.endGroup(); + if (!group1.isEmpty()) settings.endGroup(); + if (!group2.isEmpty()) settings.endGroup(); } // Retrieve and Store functions void CompStoreObj::getset( QByteArray &array, const QString tag, const QString def, const QString group1, const QString group2 ) { - retrieve( array, tag, def, group1, group2); - store(array, array, tag, group1, group2); + retrieve( array, tag, def, group1, group2); + store(array, array, tag, group1, group2); } void CompStoreObj::getset( QStringList &stringList, const QString tag, const QString def, const QString group1, const QString group2 ) { - retrieve( stringList, tag, def, group1, group2); - store(stringList, stringList, tag, group1, group2); + retrieve( stringList, tag, def, group1, group2); + store(stringList, stringList, tag, group1, group2); } void CompStoreObj::getset( QString &string, const QString tag, const QString def, const QString group1, const QString group2 ) { - retrieve( string, tag, def, group1, group2); - store(string, string, tag, group1, group2); + retrieve( string, tag, def, group1, group2); + store(string, string, tag, group1, group2); } void CompStoreObj::getset( bool &truth, const QString tag, const bool def, const QString group1, const QString group2 ) { - retrieve( truth, tag, def, group1, group2); - store(truth, truth, tag, group1, group2); + retrieve( truth, tag, def, group1, group2); + store(truth, truth, tag, group1, group2); } void CompStoreObj::getset( int &number, const QString tag, const int def, const QString group1, const QString group2 ) { - retrieve( number, tag, def, group1, group2); - store(number, number, tag, group1, group2); + retrieve( number, tag, def, group1, group2); + store(number, number, tag, group1, group2); } // ** FwRevision class******************** int FwRevision::get( const QString fwName ) { - QString result; - retrieve( result, fwName, "", "FwRevisions" ); - return result.toInt(); + QString result; + retrieve( result, fwName, "", "FwRevisions" ); + return result.toInt(); } void FwRevision::set( const QString fwName, const int fwRevision ) { - QString tempString= QString("%1").arg(fwRevision); - store( tempString, tempString, fwName, "FwRevisions" ); + QString tempString= QString("%1").arg(fwRevision); + store( tempString, tempString, fwName, "FwRevisions" ); } void FwRevision::remove( const QString tag ) { - clear( "FwRevisions", tag ); + clear( "FwRevisions", tag ); } // ** JStickData class******************** @@ -224,58 +224,58 @@ void JStickData::stick_inv(const int it) { store( it, _stickInv, QString("stick% // Constructor JStickData::JStickData() { - index = -1; + index = -1; } void JStickData::remove() { - // Remove all JStickData values from settings file - QSettings settings(PRODUCT, COMPANY); - settings.beginGroup( "JsCalibration" ); - settings.remove( QString( "stick%1_axe").arg(index) ); - settings.remove( QString( "stick%1_min").arg(index) ); - settings.remove( QString( "stick%1_med").arg(index) ); - settings.remove( QString( "stick%1_max").arg(index) ); - settings.remove( QString( "stick%1_inv").arg(index) ); - settings.endGroup(); + // Remove all JStickData values from settings file + QSettings settings(PRODUCT, COMPANY); + settings.beginGroup( "JsCalibration" ); + settings.remove( QString( "stick%1_axe").arg(index) ); + settings.remove( QString( "stick%1_min").arg(index) ); + settings.remove( QString( "stick%1_med").arg(index) ); + settings.remove( QString( "stick%1_max").arg(index) ); + settings.remove( QString( "stick%1_inv").arg(index) ); + settings.endGroup(); - // Reset all JStickData variables to initial values - init(index); + // Reset all JStickData variables to initial values + init(index); } bool JStickData::existsOnDisk() { - QSettings settings(PRODUCT, COMPANY); - settings.beginGroup("JsCalibration"); - int axe = settings.value( QString("stick%1_axe").arg(index), -1 ).toInt(); - settings.endGroup(); + QSettings settings(PRODUCT, COMPANY); + settings.beginGroup("JsCalibration"); + int axe = settings.value( QString("stick%1_axe").arg(index), -1 ).toInt(); + settings.endGroup(); - return (axe > -1); + return (axe > -1); } void JStickData::init(int newIndex) { - index = newIndex; - _stickAxe = -1; - _stickMin = -32767; - _stickMed = 0; - _stickMax = 0; - _stickInv = 0; + index = newIndex; + _stickAxe = -1; + _stickMin = -32767; + _stickMed = 0; + _stickMax = 0; + _stickInv = 0; - // Do not write empty joystick calibrations to disk. - if ( !existsOnDisk() ) - return; + // Do not write empty joystick calibrations to disk. + if ( !existsOnDisk() ) + return; - flush(); + flush(); } void JStickData::flush() { - getset( _stickAxe, QString("stick%1_axe").arg(index), -1, "JsCalibration" ); - getset( _stickMin, QString("stick%1_min").arg(index), -32767, "JsCalibration" ); - getset( _stickMed, QString("stick%1_med").arg(index), 0, "JsCalibration" ); - getset( _stickMax, QString("stick%1_max").arg(index), 0, "JsCalibration" ); - getset( _stickInv, QString("stick%1_inv").arg(index), 0, "JsCalibration" ); + getset( _stickAxe, QString("stick%1_axe").arg(index), -1, "JsCalibration" ); + getset( _stickMin, QString("stick%1_min").arg(index), -32767, "JsCalibration" ); + getset( _stickMed, QString("stick%1_med").arg(index), 0, "JsCalibration" ); + getset( _stickMax, QString("stick%1_max").arg(index), 0, "JsCalibration" ); + getset( _stickInv, QString("stick%1_inv").arg(index), 0, "JsCalibration" ); } // ** Profile class******************** @@ -330,121 +330,121 @@ void Profile::vBatWarn (const int x) { store(x, _vBatWarn, "vBatWa // Constructor Profile::Profile() { - index = -1; + index = -1; } // The default copy operator can not be used since the index variable would be destroyed Profile& Profile::operator=(const Profile& rhs) { - _name = rhs.name(); - _firmware = rhs.firmware(); - _sdPath = rhs.sdPath(); - _splashFile = rhs.splashFile(); - _burnFirmware = rhs.burnFirmware(); - _renameFwFiles = rhs.renameFwFiles(); - _patchImage = rhs.patchImage(); - _channelOrder = rhs.channelOrder(); - _defaultMode = rhs.defaultMode(); - _beeper = rhs.beeper(); - _countryCode = rhs.countryCode(); - _display = rhs.display(); - _haptic = rhs.haptic(); - _speaker = rhs.speaker(); - _stickPotCalib = rhs.stickPotCalib(); - _trainerCalib = rhs.trainerCalib(); - _currentCalib = rhs.currentCalib(); - _gsStickMode = rhs.gsStickMode(); - _ppmMultiplier = rhs.ppmMultiplier(); - _vBatCalib = rhs.vBatCalib(); - _vBatWarn = rhs.vBatWarn(); - + name ( rhs.name() ); + firmware ( rhs.firmware() ); + sdPath ( rhs.sdPath() ); + splashFile ( rhs.splashFile() ); + burnFirmware ( rhs.burnFirmware() ); + renameFwFiles( rhs.renameFwFiles() ); + patchImage ( rhs.patchImage() ); + channelOrder ( rhs.channelOrder() ); + defaultMode ( rhs.defaultMode() ); + beeper ( rhs.beeper() ); + countryCode ( rhs.countryCode() ); + display ( rhs.display() ); + haptic ( rhs.haptic() ); + speaker ( rhs.speaker() ); + stickPotCalib( rhs.stickPotCalib() ); + trainerCalib ( rhs.trainerCalib() ); + currentCalib ( rhs.currentCalib() ); + gsStickMode ( rhs.gsStickMode() ); + ppmMultiplier( rhs.ppmMultiplier() ); + vBatCalib ( rhs.vBatCalib() ); + vBatWarn ( rhs.vBatWarn() ); + return *this; } void Profile::remove() { - // Remove all profile values from settings file - QSettings settings(PRODUCT, COMPANY); - settings.beginGroup("Profiles"); - settings.remove(QString("profile%1").arg(index)); - settings.endGroup(); + // Remove all profile values from settings file + QSettings settings(PRODUCT, COMPANY); + settings.beginGroup("Profiles"); + settings.remove(QString("profile%1").arg(index)); + settings.endGroup(); - // Reset all profile variables to initial values - init(index); + // Reset all profile variables to initial values + init(index); } bool Profile::existsOnDisk() { - QSettings settings(PRODUCT, COMPANY); - settings.beginGroup("Profiles"); - settings.beginGroup(QString("profile%1").arg(index)); - QStringList keyList = settings.allKeys(); - settings.endGroup(); - settings.endGroup(); + QSettings settings(PRODUCT, COMPANY); + settings.beginGroup("Profiles"); + settings.beginGroup(QString("profile%1").arg(index)); + QStringList keyList = settings.allKeys(); + settings.endGroup(); + settings.endGroup(); - return (keyList.length() > 0); + return (keyList.length() > 0); } void Profile::init(int newIndex) { - index = newIndex; + index = newIndex; - _firmware = ""; - _name = ""; - _sdPath = ""; - _splashFile = ""; - _burnFirmware = false; - _renameFwFiles = false; - _patchImage = false; - _channelOrder = 0; - _defaultMode = 1; + _firmware = ""; + _name = ""; + _sdPath = ""; + _splashFile = ""; + _burnFirmware = false; + _renameFwFiles = false; + _patchImage = false; + _channelOrder = 0; + _defaultMode = 1; - _beeper = ""; - _countryCode = ""; - _display = ""; - _haptic = ""; - _speaker = ""; - _stickPotCalib = ""; - _trainerCalib = ""; + _beeper = ""; + _countryCode = ""; + _display = ""; + _haptic = ""; + _speaker = ""; + _stickPotCalib = ""; + _trainerCalib = ""; - _currentCalib = 0; - _gsStickMode = 0; - _ppmMultiplier = 0; - _vBatCalib = 0; - _vBatWarn = 0; + _currentCalib = 0; + _gsStickMode = 0; + _ppmMultiplier = 0; + _vBatCalib = 0; + _vBatWarn = 0; - // Do not write empty profiles to disk except the default (0) profile. - if ( index > 0 && !existsOnDisk()) - return; + // Do not write empty profiles to disk except the default (0) profile. + if ( index > 0 && !existsOnDisk()) + return; - flush(); + flush(); } void Profile::flush() { - // Load and store all variables. Use default values if setting values are missing - getset( _firmware, "firmware" ,"" ,"Profiles", QString("profile%1").arg(index)); - getset( _name, "Name" ,"" ,"Profiles", QString("profile%1").arg(index)); - getset( _sdPath, "sdPath" ,"" ,"Profiles", QString("profile%1").arg(index)); - getset( _splashFile, "SplashFileName" ,"" ,"Profiles", QString("profile%1").arg(index)); - getset( _burnFirmware, "burnFirmware" ,false ,"Profiles", QString("profile%1").arg(index)); - getset( _renameFwFiles, "rename_firmware_files" ,false ,"Profiles", QString("profile%1").arg(index)); - getset( _patchImage, "patchImage" ,false ,"Profiles", QString("profile%1").arg(index)); - getset( _channelOrder, "default_channel_order" ,0 ,"Profiles", QString("profile%1").arg(index)); - getset( _defaultMode, "default_mode" ,1 ,"Profiles", QString("profile%1").arg(index)); + // Load and store all variables. Use default values if setting values are missing + getset( _firmware, "firmware" ,"" ,"Profiles", QString("profile%1").arg(index)); + getset( _name, "Name" ,"" ,"Profiles", QString("profile%1").arg(index)); + getset( _sdPath, "sdPath" ,"" ,"Profiles", QString("profile%1").arg(index)); + getset( _splashFile, "SplashFileName" ,"" ,"Profiles", QString("profile%1").arg(index)); + getset( _burnFirmware, "burnFirmware" ,false ,"Profiles", QString("profile%1").arg(index)); + getset( _renameFwFiles, "rename_firmware_files" ,false ,"Profiles", QString("profile%1").arg(index)); + getset( _patchImage, "patchImage" ,false ,"Profiles", QString("profile%1").arg(index)); + getset( _channelOrder, "default_channel_order" ,0 ,"Profiles", QString("profile%1").arg(index)); + getset( _defaultMode, "default_mode" ,1 ,"Profiles", QString("profile%1").arg(index)); - getset( _beeper, "Beeper" ,"" ,"Profiles", QString("profile%1").arg(index)); - getset( _countryCode, "countryCode" ,"" ,"Profiles", QString("profile%1").arg(index)); - getset( _display, "Display" ,"" ,"Profiles", QString("profile%1").arg(index)); - getset( _haptic, "Haptic" ,"" ,"Profiles", QString("profile%1").arg(index)); - getset( _speaker, "Speaker" ,"" ,"Profiles", QString("profile%1").arg(index)); - getset( _stickPotCalib, "StickPotCalib" ,"" ,"Profiles", QString("profile%1").arg(index)); - getset( _trainerCalib, "TrainerCalib" ,"" ,"Profiles", QString("profile%1").arg(index)); - getset( _currentCalib, "currentCalib" ,0 ,"Profiles", QString("profile%1").arg(index)); - getset( _gsStickMode, "GSStickMode" ,0 ,"Profiles", QString("profile%1").arg(index)); - getset( _ppmMultiplier, "PPM_Multiplier" ,0 ,"Profiles", QString("profile%1").arg(index)); - getset( _vBatCalib, "VbatCalib" ,0 ,"Profiles", QString("profile%1").arg(index)); - getset( _vBatWarn, "vBatWarn" ,0 ,"Profiles", QString("profile%1").arg(index)); + getset( _beeper, "Beeper" ,"" ,"Profiles", QString("profile%1").arg(index)); + getset( _countryCode, "countryCode" ,"" ,"Profiles", QString("profile%1").arg(index)); + getset( _display, "Display" ,"" ,"Profiles", QString("profile%1").arg(index)); + getset( _haptic, "Haptic" ,"" ,"Profiles", QString("profile%1").arg(index)); + getset( _speaker, "Speaker" ,"" ,"Profiles", QString("profile%1").arg(index)); + getset( _stickPotCalib, "StickPotCalib" ,"" ,"Profiles", QString("profile%1").arg(index)); + getset( _trainerCalib, "TrainerCalib" ,"" ,"Profiles", QString("profile%1").arg(index)); + getset( _currentCalib, "currentCalib" ,0 ,"Profiles", QString("profile%1").arg(index)); + getset( _gsStickMode, "GSStickMode" ,0 ,"Profiles", QString("profile%1").arg(index)); + getset( _ppmMultiplier, "PPM_Multiplier" ,0 ,"Profiles", QString("profile%1").arg(index)); + getset( _vBatCalib, "VbatCalib" ,0 ,"Profiles", QString("profile%1").arg(index)); + getset( _vBatWarn, "vBatWarn" ,0 ,"Profiles", QString("profile%1").arg(index)); } @@ -563,105 +563,119 @@ void AppData::warningId (const int x) { store(x, _warningId, // Constructor AppData::AppData() { - //Initialize the profiles - for (int i=0; i Date: Fri, 21 Feb 2014 22:22:05 +0100 Subject: [PATCH 03/33] Issue #731 - Calibration conversion --- radio/src/eeprom_conversions.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/radio/src/eeprom_conversions.cpp b/radio/src/eeprom_conversions.cpp index 8a0e6bac9..d92460598 100644 --- a/radio/src/eeprom_conversions.cpp +++ b/radio/src/eeprom_conversions.cpp @@ -212,9 +212,27 @@ PACK(typedef struct { }) ModelData_v215; +PACK(typedef struct { + uint8_t version; + uint16_t variant; + int16_t calibMid[NUM_STICKS+NUM_POTS]; + int16_t calibSpanNeg[NUM_STICKS+NUM_POTS]; + int16_t calibSpanPos[NUM_STICKS+NUM_POTS]; + uint16_t chkSum; +}) GeneralSettings_v215; + void ConvertGeneralSettings_215_to_216(EEGeneral &settings) { + GeneralSettings_v215 oldSettings; + memcpy(&oldSettings, &settings, sizeof(oldSettings)); + settings.version = 216; + for (int i=0; i Date: Fri, 21 Feb 2014 22:55:04 +0100 Subject: [PATCH 04/33] Top bar time colon now blinks "correctly", some people seemed to be confused by it... --- radio/src/gui/view_main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/gui/view_main.cpp b/radio/src/gui/view_main.cpp index a0ba1fbe8..0277ae2e7 100644 --- a/radio/src/gui/view_main.cpp +++ b/radio/src/gui/view_main.cpp @@ -318,7 +318,7 @@ void displayTopBar() /* RTC time */ struct gtm t; gettime(&t); - lcd_putcAtt(BAR_TIME_X+1, BAR_Y+1, ':', BLINK); + lcd_putcAtt(BAR_TIME_X+1, BAR_Y+1, t.tm_sec%2 ? ':' : ' ', 0); lcd_outdezNAtt(BAR_TIME_X+1, BAR_Y+1, t.tm_hour, LEADING0, 2); lcd_outdezNAtt(BAR_TIME_X+3*FWNUM-1, BAR_Y+1, t.tm_min, LEADING0, 2); From 1a61ff64bdb0ed344b3ad6c22c6e3e62c2d4d0ea Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 21 Feb 2014 22:59:53 +0100 Subject: [PATCH 05/33] Issue #731 - Flight modes switches conversion --- radio/src/eeprom_conversions.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/radio/src/eeprom_conversions.cpp b/radio/src/eeprom_conversions.cpp index d92460598..f12353cb0 100644 --- a/radio/src/eeprom_conversions.cpp +++ b/radio/src/eeprom_conversions.cpp @@ -610,6 +610,7 @@ void ConvertModel_215_to_216(ModelData &model) for (uint8_t i=0; i<9; i++) { memcpy(&g_model.phaseData[i], &oldModel.phaseData[i], sizeof(oldModel.phaseData[i])); // the last 4 gvars will remain blank + g_model.phaseData[i].swtch = ConvertSwitch_215_to_216(oldModel.phaseData[i].swtch); #if defined(PCBTARANIS) for (uint8_t t=0; t<4; t++) { int trim = oldModel.phaseData[i].trim[t]; From 47259fb40ab250f7ba0f66c7bb202ae8b610d113 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Fri, 21 Feb 2014 23:35:55 +0100 Subject: [PATCH 06/33] Fix throttle warning No need to write a space for blinking colon as all positions are hardcoded --- radio/src/gui/view_main.cpp | 4 +++- radio/src/opentx.cpp | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/radio/src/gui/view_main.cpp b/radio/src/gui/view_main.cpp index 0277ae2e7..5eb4575bd 100644 --- a/radio/src/gui/view_main.cpp +++ b/radio/src/gui/view_main.cpp @@ -318,7 +318,9 @@ void displayTopBar() /* RTC time */ struct gtm t; gettime(&t); - lcd_putcAtt(BAR_TIME_X+1, BAR_Y+1, t.tm_sec%2 ? ':' : ' ', 0); + if (t.tm_sec % 2) { + lcd_putcAtt(BAR_TIME_X+1, BAR_Y+1, ':', 0); + } lcd_outdezNAtt(BAR_TIME_X+1, BAR_Y+1, t.tm_hour, LEADING0, 2); lcd_outdezNAtt(BAR_TIME_X+3*FWNUM-1, BAR_Y+1, t.tm_min, LEADING0, 2); diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index f06f0e5c9..36d95d213 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -2349,6 +2349,7 @@ void checkTHR() } #else if (g_model.disableThrottleWarning) return; + getADC(); evalInputs(e_perout_mode_notrainer); // let do evalInputs do the job int16_t v = calibratedStick[thrchn]; if (v<=(THRCHK_DEADBAND-1024)) return; // prevent warning if throttle input OK From ccfa25d58e8b16bc2f543dfb5c1dc6faa3968ad2 Mon Sep 17 00:00:00 2001 From: Kjell Kernen Date: Sat, 22 Feb 2014 00:41:27 +0100 Subject: [PATCH 07/33] Souce buttons checked in edit splash dialog. Corrected faulty theme icon. --- companion/src/apppreferencesdialog.cpp | 4 -- companion/src/apppreferencesdialog.ui | 67 +++++++++++------- companion/src/customizesplashdialog.cpp | 22 ++++++ companion/src/customizesplashdialog.h | 4 ++ companion/src/customizesplashdialog.ui | 18 +++++ .../src/themes/monowhite/16/fwpreferences.png | Bin 435 -> 245 bytes 6 files changed, 86 insertions(+), 29 deletions(-) diff --git a/companion/src/apppreferencesdialog.cpp b/companion/src/apppreferencesdialog.cpp index 1504051ee..5215fda5e 100644 --- a/companion/src/apppreferencesdialog.cpp +++ b/companion/src/apppreferencesdialog.cpp @@ -56,9 +56,6 @@ void appPreferencesDialog::writeValues() g.jsSupport(false); g.jsCtrl(0); } - - g.id(ui->profileIndexLE->text().toInt()); - g.profile[g.id()].channelOrder(ui->channelorderCB->currentIndex()); g.profile[g.id()].defaultMode(ui->stickmodeCB->currentIndex()); g.profile[g.id()].renameFwFiles(ui->renameFirmware->isChecked()); @@ -147,7 +144,6 @@ void appPreferencesDialog::initSettings() ui->stickmodeCB->setCurrentIndex(g.profile[g.id()].defaultMode()); ui->renameFirmware->setChecked(g.profile[g.id()].renameFwFiles()); ui->sdPath->setText(g.profile[g.id()].sdPath()); - ui->profileIndexLE->setText(QString("%1").arg(g.id())); ui->profileNameLE->setText(g.profile[g.id()].name()); ui->firmwareLE->setText(g.profile[g.id()].firmware()); ui->SplashFileName->setText(g.profile[g.id()].splashFile()); diff --git a/companion/src/apppreferencesdialog.ui b/companion/src/apppreferencesdialog.ui index 952881a7e..98824f3b5 100644 --- a/companion/src/apppreferencesdialog.ui +++ b/companion/src/apppreferencesdialog.ui @@ -7,7 +7,7 @@ 0 0 685 - 446 + 442 @@ -133,12 +133,12 @@ - Include companion splashes + Only show user splash images - Only user defined splashes + Show user and companion splash images @@ -706,13 +706,6 @@ This is used by the templated to determine which channel goes to what number out - - - - Qt::Horizontal - - - @@ -809,6 +802,12 @@ This is used by the templated to determine which channel goes to what number out 0 + + + 350 + 16777215 + + true @@ -862,10 +861,16 @@ This is used by the templated to determine which channel goes to what number out - 0 + 350 0 + + + 350 + 16777215 + + true @@ -883,6 +888,18 @@ This is used by the templated to determine which channel goes to what number out false + + + 350 + 0 + + + + + 350 + 16777215 + + @@ -899,27 +916,20 @@ This is used by the templated to determine which channel goes to what number out - - - - false - - - - 30 - 16777215 - - - - - 0 + 350 0 + + + 350 + 16777215 + + @@ -956,6 +966,13 @@ This is used by the templated to determine which channel goes to what number out + + + + Qt::Horizontal + + + diff --git a/companion/src/customizesplashdialog.cpp b/companion/src/customizesplashdialog.cpp index 748c48b69..1be93d4a5 100644 --- a/companion/src/customizesplashdialog.cpp +++ b/companion/src/customizesplashdialog.cpp @@ -14,11 +14,21 @@ Side::Side(){ imageLabel = 0; fileNameEdit = 0; saveButton = 0; + loadFwButton=0; + loadPictButton = 0; + loadProfileButton = 0; saveToFileName = new QString(""); source = new Source(UNDEFINED); format = new LCDFormat(LCDTARANIS); } +void Side::markSourceButton() +{ + loadFwButton->setChecked(*source == FW ? true : false ); + loadPictButton->setChecked(*source == PICT ? true : false ); + loadProfileButton->setChecked(*source == PROFILE ? true : false ); +} + void Side::copyImage( Side side ) { if ((*source!=UNDEFINED) && (*side.source!=UNDEFINED)) @@ -160,8 +170,17 @@ customizeSplashDialog::customizeSplashDialog(QWidget *parent) : right.libraryButton = ui->rightLibraryButton; left.invertButton = ui->leftInvertButton; right.invertButton = ui->rightInvertButton; + + left.loadFwButton = ui->leftLoadFwButton; + right.loadFwButton = ui->rightLoadFwButton; + left.loadPictButton = ui->leftLoadPictButton; + right.loadPictButton = ui->rightLoadPictButton; + left.loadProfileButton = ui->leftLoadProfileButton; + right.loadProfileButton = ui->rightLoadProfileButton; loadProfile(left); + left.markSourceButton(); + resize(0,0); } @@ -189,6 +208,7 @@ void customizeSplashDialog::loadFirmware(Side side) else g.flashDir( QFileInfo(fileName).dir().absolutePath() ); } + side.markSourceButton(); } void customizeSplashDialog::on_leftLoadPictButton_clicked() {loadPicture(left);} @@ -208,6 +228,7 @@ void customizeSplashDialog::loadPicture(Side side) else g.imagesDir( QFileInfo(fileName).dir().absolutePath() ); } + side.markSourceButton(); } void customizeSplashDialog::on_leftLoadProfileButton_clicked() {loadProfile(left);} @@ -220,6 +241,7 @@ void customizeSplashDialog::loadProfile(Side side) if (!side.displayImage( fileName, PROFILE )) QMessageBox::critical(this, tr("Error"), tr("Cannot load the profile image %1.").arg(fileName)); } + side.markSourceButton(); } void customizeSplashDialog::on_leftLibraryButton_clicked(){libraryButton_clicked(left);} diff --git a/companion/src/customizesplashdialog.h b/companion/src/customizesplashdialog.h index 21155dede..c931005b2 100644 --- a/companion/src/customizesplashdialog.h +++ b/companion/src/customizesplashdialog.h @@ -22,6 +22,7 @@ class Side { public: Side(); + void markSourceButton(); void copyImage( Side ); bool displayImage( QString fileName, Source source ); bool saveImage(); @@ -32,6 +33,9 @@ public: QPushButton *saveButton; QPushButton *invertButton; QToolButton *libraryButton; + QPushButton *loadFwButton; + QPushButton *loadPictButton; + QPushButton *loadProfileButton; QString *saveToFileName; diff --git a/companion/src/customizesplashdialog.ui b/companion/src/customizesplashdialog.ui index de4d68f24..72b241276 100644 --- a/companion/src/customizesplashdialog.ui +++ b/companion/src/customizesplashdialog.ui @@ -258,6 +258,9 @@ Load Profile + + true + @@ -265,6 +268,9 @@ Load FW + + true + @@ -272,6 +278,9 @@ Load Pict + + true + @@ -554,6 +563,9 @@ Load Profile + + true + @@ -564,6 +576,9 @@ Load FW + + true + @@ -571,6 +586,9 @@ Load Pict + + true + diff --git a/companion/src/themes/monowhite/16/fwpreferences.png b/companion/src/themes/monowhite/16/fwpreferences.png index b8e5ad449a5bf4027f3b556bfb972f6538ce096b..63fb581eb75f941f0cfa6c4cfd5362e34289d09f 100644 GIT binary patch delta 228 zcmdnY{FQNnWIY=L1B3kM|A|0~Ey>&6h2cL4F4((#GEjuGz$3Dlfr0NZ2s0kfUy%Y7 zWH0gbb!ETD#Ktek$5J*a6DZW=>Eak-aXL9+f#Q$z2M&A?^?Jz~TEjF(}!+qp|TJXUJz^Ha51zqD3>9SIwL}?WC-7=RfsOe&NFo%nUa& WH096TbT0=whr!d;&t;ucLK6V#K~R+d literal 435 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?hYSQ<>y!K@%sbfn zT+n9OgSagkD`GPjG`p3ck-XJ5Gb<}=o?jR_m> z&H3RQm%ypK-0a5Pm;>eQe+8Huu7<}?+;>UUNG18|j_;N;a0n!C8<`)MX5lF!N|bSMAyJb*T5{q(9Fun#LB=x+rSV= jUe$TL9z{cLeoAIqC2kE%3ZsRA8W=oX{an^LB{Ts5y!4i? From 903cb8bd83f75fa4d80d56c65591ae36fbaeae08 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Fri, 21 Feb 2014 23:35:55 +0100 Subject: [PATCH 08/33] Throttle warning fixed Top bar time colon now blinks "correctly", some people seemed to be confused by it... --- radio/src/gui/view_main.cpp | 4 +++- radio/src/opentx.cpp | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/radio/src/gui/view_main.cpp b/radio/src/gui/view_main.cpp index a0ba1fbe8..5eb4575bd 100644 --- a/radio/src/gui/view_main.cpp +++ b/radio/src/gui/view_main.cpp @@ -318,7 +318,9 @@ void displayTopBar() /* RTC time */ struct gtm t; gettime(&t); - lcd_putcAtt(BAR_TIME_X+1, BAR_Y+1, ':', BLINK); + if (t.tm_sec % 2) { + lcd_putcAtt(BAR_TIME_X+1, BAR_Y+1, ':', 0); + } lcd_outdezNAtt(BAR_TIME_X+1, BAR_Y+1, t.tm_hour, LEADING0, 2); lcd_outdezNAtt(BAR_TIME_X+3*FWNUM-1, BAR_Y+1, t.tm_min, LEADING0, 2); diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index f06f0e5c9..36d95d213 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -2349,6 +2349,7 @@ void checkTHR() } #else if (g_model.disableThrottleWarning) return; + getADC(); evalInputs(e_perout_mode_notrainer); // let do evalInputs do the job int16_t v = calibratedStick[thrchn]; if (v<=(THRCHK_DEADBAND-1024)) return; // prevent warning if throttle input OK From 0f373353c7fa491673e8308723f3a393583d2970 Mon Sep 17 00:00:00 2001 From: Jacek Drewniak Date: Fri, 21 Feb 2014 23:48:28 +0100 Subject: [PATCH 09/33] Companion PL translation fixes --- companion/src/translations/companion_pl.ts | 4813 ++++++++++---------- 1 file changed, 2395 insertions(+), 2418 deletions(-) diff --git a/companion/src/translations/companion_pl.ts b/companion/src/translations/companion_pl.ts index 8f9fde66b..79b5906f8 100644 --- a/companion/src/translations/companion_pl.ts +++ b/companion/src/translations/companion_pl.ts @@ -57,22 +57,22 @@ CurveGroup - + Diff Róźnicowość - + Expo Expo - + Func Funkcja - + Curve Krzywa @@ -143,22 +143,22 @@ CustomFunctionsPanel - + Switch Przełącznik - + Action Akcja - + Parameters Parametry - + Enable Włączone @@ -173,52 +173,52 @@ Włącz - + Error Błąd - + Unable to find sound file %1! Nie mogę odnaleźć pliku dźwiękowego %1! - + &Delete &Wykasuj - + Delete Wykasuj - + &Copy &Kopiuj - + Ctrl+C Ctrl+C - + &Cut &Wytnij - + Ctrl+X Ctrl+X - + &Paste &Wklej - + Ctrl+V Ctrl+V @@ -600,49 +600,49 @@ p, li { white-space: pre-wrap; } Główne ustawienia - + Store calib. and hw settings in selected profile Zapamiętanie kalibracji i ustawień HW w wybranym profilu - + Retrieve calib. and hw settings from profile Odtworzenie kalibracji i ustawień HW z profilu - + General settings used throught the transmitter. These will be relevant for all models in the same EEPROM. Główne ustawienia radia. Będą one obowiązywać dla wszystkich modeli w tym samym EEPROM-ie. - + Setup Ustawienia - + Timer Beeps Pikanie timerów - + Contrast Kontrast - + Channel Order (For Templates) Kolejność kanałów (dla szablonów) - + Owner Name Imię użytkownika - + Mode selection: Mode 1: @@ -683,95 +683,95 @@ Mode 4: - + Mode 1 (RUD ELE THR AIL) Mod 1 (SK.SW.Gaz.Lot) - + Mode 2 (RUD THR ELE AIL) Mod 2 (SK.Gaz.SW.Lot) - + Mode 3 (AIL ELE THR RUD) Mod 3 (Lot.SW.Gaz.SK) - + Mode 4 (AIL THR ELE RUD) Mod 4 (Lot.Gaz.SW.SK) - - + + Quiet Cichy - + Only Alarms Tylko Alarmy - - + + No Keys Bez przycisków - - + + All Wszystkie - + MAVLink Baud Rate Prędkość przesyłu MAVLink - + 4800 Baud 4800 bps - + 9600 Baud 9600 bps - + 14400 Baud 14400 bps - + 19200 Baud 19200 bps - + 38400 Baud 38400 bps - + 57600 Baud 57600 bps - + 76800 Baud 76800 bps - + 115200 Baud 115200 bps - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -784,22 +784,22 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Jedno piknięcie co każdą pełną minutę</span></p></body></html> - + Every Minute Co minutę - + Beeps at 30, 15, 10, and down from5 seconds Sygnały w 30s, 15s, 10s i odliczanie od 5 sekund do 0 - + Count Down to Zero Odliczanie do zera - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -812,38 +812,38 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Błyśnij podświetlaniem przy piknięciu timera</span></p></body></html> - + Flash on beep Błyskanie w czasie sygnału - + If this value is not 0, any keypress will turn on the backlight and turn it off after the specified number of seconds. Jeśli ta wartość jest różna od 0, każde naciśnięcie klawisza włączy podświetlenie, które zgaśnie po ustalonej liczbie sekund. - - + + sec s - + Input Filter Wprowadź filtr - - - - - - - - - - - + + + + + + + + + + + Beeper volume 0 - Quiet. No beeps at all. @@ -860,16 +860,16 @@ p, li { white-space: pre-wrap; } 4 - Bardzo głośna. - + Alarms Only Tylko alarmy - - - - - + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -894,21 +894,21 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ostrzeżenie cichej pracy - będzie ostrzegało gdy pikanie jest ustawione na cicho(0)</p></body></html> - + Beeper Mode Tryb pikania - - - - + + + + Off Wyłączony - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -923,42 +923,42 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Wartości z zakresu 20-45</span></p></body></html> - + Memory Startup Warning Ostrzeżenie o małym zapasie pamięci - - + + X-Short Bardzo krótka - - + + Short Krótka - - + + Normal Normalna - - + + Long Długa - - + + X-Long Bardzo długa - + Battery warning voltage. This is the threashhold where the battery warning sounds. @@ -969,160 +969,160 @@ Ustala próg ostrzeżenia. Dopuszczalne wartości 5v-10v - + Battery Warning Ostrzeżenie o zasilaniu - + THR Gaz - + RUD SK - + ELE SW - + AIL Lotki - + GEA - + ID0 - + ID1 - + ID2 - + Sound Mode Tryb dźwiękowy - + Pot Scrolling Enable Przewijanie potencjometrem włączone - + Battery Calibration Kalibracja zasilania - + If not zero will sound beeps if the transmitter has been left without inputs for the specified number of minutes. Radio zasygnalizuje dźwiękiem brak aktywności po określonej liczbie minut. 0- wyłącza tę funkcję. - + min Min - - + + Show splash screen on startup Pokazuj ekran startowy z logo - + Battery calibration: This value will be added to the measured battery voltage. Use this value to calibrate the meter with an external meter. Kalibracja zasilania: Ta wartość będzie dodana do zmierzonej wartości napięcia zasilania. Użyj tej wartości w celu kalibracji wyświetlanego napięcia aby było zgodne z napięciem wskazywanym przez miernik. - + Single Pojedynczy - + Oversample - + Filter Filtr - + Show Splash Screen on Startup Pokazuj ekran startowy z logo - + Inactivity Timer Timer bezczynności - + Beeper Pikanie - + Speaker Głośnik - + BeeperVoice Pikanie i głosy - + SpeakerVoice Głośnik i głosy - + Beeper Length Długość piknięcia - + GPS Coordinates Koordynaty GPS - + hh° (N/S) mm' ss''.dd hh° (N/S) mm' ss''.dd - + NMEA - + Timeshift from UTC Strefa czasowa względem UTC - + Channel order This is used by the templated to determine which channel goes to what number output. @@ -1131,610 +1131,610 @@ This is used by the templated to determine which channel goes to what number out To ustawienie jest używane przez szablony, określa jakie wyjście przypisane jest do kanału. - + Speaker Pitch (spkr only) Wysokość tonów (tylko dźwięki) - + Haptic Mode Tryb wibracji - + Stick Mode Mod drążków - + Show Owner Name on Splash Pokaż imię pilota na ekranie - + Telemetry NO DATA Alarm Telemetria: Alarm braku danych - + LCD Display Type Typ ekranu LCD - + Standard Standard - + Optrex - + This is the switch selectrion for turning on the backlight (if installed). To jest przełącznik do włączenia podświetlenia (jeśli zainstalowane). - + Speaker Volume Głośność dźwięków - + Haptic Length Długość wibracji - + Haptic Strength Siła wibracji - + BackLight Brightness Jasność podświetlenia - + Alarm Warning Ostrzeżenie alarmowe - + BackLight Auto OFF after Podświetlenie. Automatyczne wyłącznie po - + Bandgap Measuring Enable Włączone pomiary pasma - + RotEnc Navigation Nawigacja pokrętłem - + BackLight Switch Przełącznik podświetlania - + BackLight On Stick Move Podświetlenie włączone przy ruchu drążka - + BackLight Invert Odwróć podświetlanie - + Country Code Kod kraju - + Europe Europa - + Japan Japonia - + America Ameryka - + Metric Metryczne - + Imperial Imperialne - + Measurement Units Jednostki miar - + FrSky Internal Alarm Wewnętrzny alarm FrSky - + StickScroll Przewijanie drążkiem - + PPMSim - + Voice Language Język komunikatów - + CrossTrim Trymery krzyżowe - + Beep volume Głośność sygnałów - + Wav volume Głośność WAV - + Vario volume Głośność wariometru - + Background volume Głośność tła - + FAI Mode Tryb FAI - + If you enable FAI, you loose the vario, the play functions, the telemetry screen. This function cannot be disabled by the radio. Jeśli uaktywnisz tryb FAI, utracisz informacje o wariometrze, funkcje odtwarzania i ekrany telemetrii. Ten tryb nie może być dezaktywowany. - + R E T A K W G L - + R E A T K W L G - + R T E A K G W L - + R T A E K G L W - + R A E T K L W G - + R A T E K L G W - + E R T A W K G L - + E R A T W K L G - + E T R A W G K L - + E T A R W G L K - + E A R T W L K G - + E A T R W L G K - + T R E A G K W L - + T R A E G K L W - + T E R A G W K L - + T E A R G W L K - + T A R E G L K W - + T A E R G L W K - + A R E T L K W G - + A R T E L R G W - + A E R T L W K G - + A E T R L W G K - + A T R E L G K W - + A T E R L G W K - + Readonly Unlock Odblokuj "Tylko do odczytu" - + SC - + SE - + SA - + SF - + SH - + SD - + SB - + SG - + Trainer Trener - + Mode Tryb - + Input Wejście - + Weight Waga - + Switch Przełącznik - - + + PPM 1 PPM 1 - - - - + + + + chn1 Kanał 01 - - - - + + + + chn2 Kanał 02 - - - - + + + + chn3 Kanał 03 - - - - + + + + chn4 Kanał 04 - - + + PPM 2 PPM 2 - - + + PPM 3 PPM 3 - - + + PPM 4 PPM 4 - + Telemetry Telemetria - + RSSI Alarm 1 Alarm RSSI 1 - - + + ---- ---- - - + + Yellow Żółty - - + + Orange Pomarańczowy - - + + Red Czerwony - + RSSI Alarm 2 Alarm RSSI 2 - + NO DATA Alarm Alarm braku danych - + Calibration Kalibracja - + POT 4 Potencjometr 04 - + STICK 3 Drążek 03 - - + + Negative span Ujemny zakres - - + + Mid value Wartość środkowa - - + + Positive span Dodatni zakres - + STICK 1 Drążek 01 - + STICK 2 Drążek 02 - + STICK 4 Drążek 04 - - + + Pot (normal) Potencjometr (std) - - + + Multipos Switch Przeł. wielopoz - + S1 Type Typ P1 - + S2 Type Typ P2 - + POT 1 Potencjometr 01 - + POT 2 Potencjometr 02 - + POT 3 Potencjometr 03 - - - - + + + + += (Sum) += (Suma) - - - - + + + + := (Replace) := (Zastąpienie) - + Battery Zasilanie - + v V - + PPM Multiplier Mnożnik PPM - + Current Natężenie - + If you enable FAI, you loose the vario, the play functions, the telemetry screen. This function cannot be disabled by the radio. Are you sure ? @@ -1743,28 +1743,28 @@ funkcje odtwarzania i ekrany telemetrii. Ten tryb nie może być dezaktywowany. Jesteś pewien ? - - + + Warning Ostrzeżenie - + Wrong data in profile, radio calibration was not retrieved Błędne dane w profilu, kalibracja nie została odzyskana - + Wrong data in profile, hw related parameters were not retrieved Błędne dane w profilu, parametry HW nie zostały odzyskana - + Do you want to store calibration in %1 profile<br>overwriting existing calibration? Chcesz zapamiętać dane kalibracji profilu %1<br> Zastąpią one aktualne dane kalibracji? - + Calibration and HW parameters saved. Kalibracja i parametry HW zapamiętane. @@ -2061,119 +2061,119 @@ Jesteś pewien ? MainWindow - - - - + + + + File loaded Plik załadowany - + Display previous warning again at startup ? Wyświetlić poprzednie ostrzeżenie przy uruchomieniu? - + Checking for updates Sprawdź aktualizacje - - - - - + + + + + Unable to check for updates. Nie mogę sprawdzić aktualizacji. - - - - - + + + + + Save As Zapisz jako - + Executable (*.exe) Wykonywalny (*.exe) - + New release available Dostępne jest nowe wydanie - - + + No updates available at this time. Brak aktualizacji dostępnych teraz. - + Would you like to launch the installer? Chcesz uruchomić instalator? - - - - - - - - - - - - - + + + + + + + + + + + + + Error Błąd - - - - - + + + + + Error opening file %1: %2. Błąd otwarcia pliku %1: %2. - + Compilation server termporary failure, try later Serwer kompilacji chwilowo nieczynny, spróbuj później - + Display previous message again at startup ? Czy ponownie wyświetlić poprzednią informację przy uruchomieniu? - + Compilation server temporary failure, try later Serwer kompilacji chwilowo nieczynny, spróbuj później - - + + Compilation server too busy, try later Serwer kompilacji zbyt zajęty, spróbuj później - - + + Unknown server failure, try later Nieznany błąd serwera, spróbuj później - + Firmware %1 does not seem to have ever been downloaded. Version %2 is available. Do you want to download it now ? @@ -2183,31 +2183,31 @@ Pobrać teraz? - - + + Yes Tak - - + + No Nie - - + + Release Notes Informacje o wydaniu - - + + Do you want to download release %1 now ? Chcesz pobrać wydanie %1 teraz? - + A new version of %1 firmware is available (current %2 - newer %3). Do you want to download it now ? Jest dostępna nowa wersja firmware %1 @@ -2215,97 +2215,97 @@ Do you want to download it now ? Chcesz pobrać teraz? - + Ignore this version (r%1)? Zignorować wersję (r%1)? - + Release notes contain very important informations. Do you want to see them now ? Opis wydania zawiera bardzo ważne informacje. Chcesz je przeczytać teraz? - - + + File saved Plik zapisany - + Firmware updates Aktualizacja firmware - + Current firmware does not provide release notes informations. Aktualny firmware nie zawiera opisu wydania. - + Cannot write file %1: %2. Nie mogę zapisać pliku %1: %2. - - - - - + + + + + Taranis radio not found Nie znaleziono Radia Taranis - - - - + + + + Impossible to identify the radio on your system, please verify the eeprom disk is connected. Identyfikacja radia niemożliwa w Twoim systemie, proszę sprawdzić podłączony dysk eeprom. - - - + + + Backup is impossible Backup jest niemożliwy do wykonania - - - + + + The backup dir set in preferences does not exist Brak ustawień ścieżki backupu - - + + Warning Ostrzeżenie - + Conversion failed Konwersja nieudana - + Restore failed Zapis nieudany - + Backup failed Backup nieudany - + Copyright - + OpenTX Companion - FW: %1 - Profile: %2 OpenTX Companion - FW: %1 - Profil: %2 @@ -2314,7 +2314,7 @@ Chcesz pobrać teraz? &Ustawienia... - + Edit Settings Edycja Ustawień @@ -2323,7 +2323,7 @@ Chcesz pobrać teraz? &Pobieranie... - + Download firmware and voice files Pobierz firmware i pliki dźwiękowe @@ -2336,12 +2336,12 @@ Chcesz pobrać teraz? &Ustawienia oprogramowania łączącego... - + New Profile Nowy Profil - + Create a new Radio Setting Profile Utwórz nowy Profil Ustawień Radia @@ -2354,57 +2354,57 @@ Chcesz pobrać teraz? Wielokolorowy klasyczny wygląd ikon Companion - + A monochrome black icon theme Monochromatyczny czarny wygląd ikon - + A monochrome white icon theme Monochromatyczny biały wygląd ikon - + A monochrome blue icon theme Monochromatyczny niebieski wygląd ikon - + Small Małe - + Use small toolbar icons Użyj małych ikon paska narzędzi - + Use normal size toolbar icons Użyj normalnych ikon paska narzędzi - + Normal Normalne - + Use big toolbar icons Użyj dużych ikon paska narzędzi - + Big Duże - + Use huge toolbar icons Użyj olbrzymich ikon paska narzędzi - + Huge Olbrzymie @@ -2417,217 +2417,227 @@ Chcesz pobrać teraz? Użyj podstawowego języka systemu w menu - + Czech Czeski - + Use Czech in menus Użyj Czeskiego w menu - + German Niemiecki - + Use German in menus Użyj Niemieckiego w menu - + English Angielski - + Use English in menus Użyj Angielskiego w menu - + + Finnish + + + + + Use Finnish in menus + + + + French Francuski - + Use French in menus Użyj Francuskiego w menu - + Italian Włoski - + Use Italian in menus Użyj Włoskiego w menu - + Hebrew Hebrajski - + Use Hebrew in menus Użyj Hebrajskiego w menu - + Polish Polski - + Use Polish in menus Użyj Polskiego w menu - + Portuguese Portugalski - + Use Portuguese in menus Użyj Portualskiego w menu - + Swedish Szwedzki - + Use Swedish in menus Użyj Szwedzkiego w menu - + Russian Rosyjski - + Use Russian in menus Użyj Rosyjskiego w menu - + About O aplikacji - + Print Drukuj - + Print current model Drukuj aktualny model - + Simulate Symulacja - + Simulate selected model Symulacja wybranego modelu - + loadBackup... Załaduj backup... - + Logs Logi - + Setting... Ustawienia... - + Downloads... Pobieranie... - + Check for updates... Sprawdź aktualizacje... - + Check OpenTX and Companion updates Sprawdź aktualizacje OpenTX i Companion - + Edit Tx Splash Image... Edytor erkanu startowego radia... - + edit the splash screen of your TX Edytuj ekran startowy swojego radia - + List programmers Lista programatorów - + Fuses... Bezpieczniki... - + Manuals and other Documents Podręcznik i dokumentacja - + Open the OpenTX document page in a web browser Otwórz stronę dokumentacji OpenTX w przeglądarce - + Configure connection software... Ustawienia oprogramowania łączącego... - + Save Tx Models and Settings to file Zapisz modele radia i ustawienia do pliku - + Contributors Współpracownicy - + A tribute to those who have contributed to OpenTX and Companion Hołd dla tych, którzy przyczynili się do rozwoju OpenTX i Companion - + Set Icon Theme Ustaw wygląd ikon - + Set Icon Size Ustaw wielkość ikon @@ -2636,16 +2646,10 @@ Chcesz pobrać teraz? &Ustawienia - + Radio Settings Profiles Profile Ustawień Radia - - - - &%1 %2 - - Companion - Models and Settings Editor - %1 - profile %2 Companion - Edytor Modeli i Ustawień - %1 - profil %2 @@ -2655,79 +2659,79 @@ Chcesz pobrać teraz? Companion - Edytor Modeli i Ustawień - %1 - + A new version of Companion is available (version %1)<br>Would you like to download it? Dostępna jest nowy Companion (wersja %1)<br>Chcesz ją pobrać ? - + A new release of Companion is available please check the OpenTX website! Nowe wydanie Companion jest dostępne, proszę sprawdzić stronę OpenTX! - + Firmware does not longer fit in the Tx, due to selected firmware options Firmware już nie mieści się w pamięci radia ze względu na wybrane parametry - - + + Compilation server requires registration, please check OpenTX web site Serwer kompilacji wymaga rejestracji, proszę odwiedzić stronę OpenTX - + Firmware does not fit in the Tx, due to selected firmware options Firmware już nie mieści się w pamięci radia ze względu na wybrane parametry - + Do you want to write the firmware to the transmitter now ? Chcesz wgrać firmware do radia teraz? - + The selected language will be used the next time you start Companion. Wybrany język będzie użyty po ponownym uruchomieniu Comapnion. - - - + + + OK OK - + The new theme will be loaded the next time you start Companion. Wybrany wygląd będzie użyty po ponownym uruchomieniu Comapnion. - + The icon size will be used the next time you start Companion. Wybrana wiekość ikon będzie użyta po ponownym uruchomieniu Comapnion. - + Open Otwórz - - - - - + + + + + Read Models and Settings From Tx Wczytaj Modele i Ustawienia z radia - + Write Models and settings from %1 to the Tx? Czy zapisać Modele i Ustawienia z %1 do radia ? - + The file %1 has not been recognized as a valid Models and Settings file Write anyway ? @@ -2736,109 +2740,109 @@ nie został rozpoznany jako prawidłowy pli Modeli i Ustawień. Czy mimo wszystko zapisać? - - - - - - + + + + + + Backup Models and Settings From Tx Zbakupuj Modele i Ustawienia z radia - + Cannot check Models and Settings compatibility! Continue anyway? Nie mogę potwierdzić kompatybilności Modeli i Ustawień. Kontynuować? - + The transmitter firmware belongs to another product family, check file and preferences! Firmwqare radia nalezy do innej rodziny produktów, sprawdź plik i preferencje ! - + The transmitter firmware is outdated, please upgrade! Firmware radia jest przestarzały, proszę zaktualizować! - - + + Write Models and Settings To Tx Zapisz Modele i Ustawienia do radia - - + + Write Firmware To Tx Zapisz firmware do radia - + Cannot convert Models and Settings for use with this firmware, original data will be used Nie mogę skonwertować Modeli i Ustawień na ten rodzaj firmware, zostaną użyte oryginalne dane - + Restore Models and Settings To Tx Odtwórz Modele i Ustawienia do radia - + Could not restore Models and Settings to TX. The models and settings data file can be found at: %1 Nie mogę odtworzyć Modeli i Ustawień do radia. Plik modeli i ustawień mozna znaleźć w: %1 - + Firmware write failed Zapis firmawe nie powiódł się - + Could not write firmware to to transmitter. The models and settings data file can be found at: %1 Nie mogę zapisać Firmware do radia. Plik modeli i ustawień mozna znaleźć w: %1 - + Cannot backup existing Models and Settings from TX. Firmware write process aborted Nie mogę zbackupować Modeli i Ustawień z radia, Zapis Firmawe przerwany - + Save transmitter Models and Settings to File Zapisz Modele i Ustawienia z radia do pliku - + Impossible to identify the radio on your system, please verify that the eeprom disk is connected. Identyfikacja radia niemożliwa w Twoim systemie, proszę sprawdzić podłączony dysk eeprom. - + Read Tx Firmware to File Odczytaj firmware z radia do pliku - + OpenTX Home Page: <a href='%1'>%1</a> Strona domowa OpenTX: <a href='%1'>%1</a> - + The OpenTX Companion project was originally forked from <a href='%2'>eePe</a> Projekt Companion odłączony z oryginalnego <a href='%2'>eePe</a> - + If you've found this program useful, please support by <a href='%1'>donating</a> Jeśli uważasz, że ten program jest użyteczny, wesprzyj poprzez <a href='%1'>donację</a> - + Version %1, %3 Wersja %1, %3 - + About Companion O aplikacji Companion @@ -2847,7 +2851,7 @@ Czy mimo wszystko zapisać? &Nowy - + Create a new file Utwórz nowy plik @@ -2856,7 +2860,7 @@ Czy mimo wszystko zapisać? &Otwórz... - + Open an existing file Otwórz istniejący plik @@ -2865,7 +2869,7 @@ Czy mimo wszystko zapisać? &Załaduj backup... - + Load backup from file Załaduj backup z pliku @@ -2874,8 +2878,8 @@ Czy mimo wszystko zapisać? &Zapisz - - + + Save the document to disk Zapisz dokument na dysku @@ -2892,7 +2896,7 @@ Czy mimo wszystko zapisać? Lo&gi - + Open log file Otwórz plik logów @@ -2917,7 +2921,7 @@ Czy mimo wszystko zapisać? Pokaz listę twórców Companion - + Show Companion changelog Zobacz zmiany w Companion @@ -2926,7 +2930,7 @@ Czy mimo wszystko zapisać? &Zapisz Modele i Ustawienia do radia - + Write Models and Settings to transmitter Zapisz Modele i Ustawienia do radia @@ -2935,107 +2939,106 @@ Czy mimo wszystko zapisać? &Wczytaj Modele i Ustawienia z radia - + Read Models and Settings from transmitter Wczytaj Modele i Ustawienia z radia - + Write Firmware Zapisz firmware - + Open... Otwórz... - + Save... Zapisz... - + Save As... Zapisz jako... - + Exit Zakończ - + Cut Wytnij - + Cut current selection to the clipboard Wytnij zaznaczenie do schowka - + Copy... Kopiuj... - + Copy current selection to the clipboard Wytnij zaznaczenie do schowka - + Paste... Wklej... - + Paste clipboard into current selection Wytnij zaznaczenie do schowka - The new Companion 2 icon theme - Nowy zestaw ikon Companion 2 + Nowy zestaw ikon Companion 2 - + Monochrome Monochromatyczny - + MonoWhite MonoBiały - + MonoBlue MonoNiebieski - + System language Język systemu - + Use system language in menus Użyj języka systemu w menu - + Write firmware to transmitter Zapisz firmware do radia - + Write Models and Settings from file to Tx Zapisz Modele i Ustawienia z pliku do radia - + Write Models and Settings from file to transmitter Zapisz Modele i Ustawienia z pliku do radia @@ -3044,22 +3047,32 @@ Czy mimo wszystko zapisać? Zapisz Modele i Ustawienia do pliku - + Save the Models and Settings from the transmitter to a file Zapisz Modele i Ustawienia z radia do pliku - + Read Firmware Wczytaj Firmware - + + Yerico + + + + + Yellow round honey sweet icon theme + + + + Read firmware from transmitter Wczytaj Firmware z radia - + Configure software for reading from and writing to the transmitter Ustawienia oprogramowania do odczytu i zapisu radia @@ -3068,18 +3081,18 @@ Czy mimo wszystko zapisać? &Odczyt/Zapis - + Write Zapis - - + + Invalid Models and Settings File %1 Błędny plik %1 Modeli i Ustawień - + Invalid binary Models and Settings File %1 Błędny binarny plik %1 Modeli i Ustawień @@ -3104,27 +3117,27 @@ Czy mimo wszystko zapisać? Edycja preferencji aplikacji - + ChangeLog... Zmiany... - + Firmware ChangeLog... Zmiany firmware... - + Show firmware changelog Zobacz zmiany w firmware - + Compare... Porównaj... - + Compare models Porównaj modele @@ -3137,7 +3150,7 @@ Czy mimo wszystko zapisać? Za&kończ - + Exit the application Zakończ aplikację companion9x @@ -3170,7 +3183,7 @@ Czy mimo wszystko zapisać? &Lista programatorów - + List available programmers Lista dostępnych programatorów @@ -3179,7 +3192,7 @@ Czy mimo wszystko zapisać? Ustawienia &mikro-kontrolera... - + Show fuses dialog Pokaż okno ustawień mikro-kontrolera @@ -3204,23 +3217,22 @@ Czy mimo wszystko zapisać? &O aplikacji - + Show the application's About box O aplikacji companion9x - + Classical Klasyczny - + The classical Companion icon theme Klasyczny zestaw ikon Companion - - + New Nowy @@ -3229,8 +3241,8 @@ Czy mimo wszystko zapisać? Kolowy zestaw ikon Companion 2.0 - - + + Recent Files Poprzednie pliki @@ -3239,7 +3251,7 @@ Czy mimo wszystko zapisać? Profile firmware - + Set Menu Language Ustaw język menu @@ -3256,60 +3268,65 @@ Czy mimo wszystko zapisać? &Pomoc - - + + File Plik - - + + Edit Edycja - + Settings Ustawienia - + Read/Write Odczyt/Zapis - - + + Help Pomoc - + Show a selection list of recent documents Pokaż listę wyboru poprzednich dokumentów - + Radio Profiles Profile Radia - + Show a selection list of radio settings profiles Pokaż listę wyboru profili ustawiań radia - + Ready Gotowe - + + &%1: %2 + + + + Unable to find file %1! Nie mogę znaleźć pliku %1! - + Error reading file %1: %2. Błąd odczytu pliku %1: @@ -3324,187 +3341,187 @@ Czy mimo wszystko zapisać? wolna pamięć[B] - + Editing model %1: Edycja modelu %1: + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + Error Błąd - - + + Unable to find file %1! Nie mogę odnaleźć pliku %1! - - - - + + + + Error opening file %1: %2. Błąd otwarcia pliku %1: %2. - - + + Invalid EEPROM File %1 Zły plik EEPROM %1 - + Invalid binary EEPROM File %1 Nieprawidłowy plik binarny EEPROM %1 - - - - + + + + Save As Zapisz jako - - - - + + + + Cannot write file %1: %2. Nie mogę zapisać pliku %1: %2. - - + + Error writing file %1: %2. Błąd zapisu pliku %1: %2. - + Do you want to use model wizard? Czy chcesz użyć konfiguratora modelu? - - - + + + Companion Companion - + Ask this question again ? Czy ponownie zapytać ? - - + + Error reading file %1: %2. Błąd odczytu pliku %1: %2. - + %1 has been modified. Do you want to save your changes? %1 został zmieniony. Zapisać? - + Backup is impossible Backup jest niemożliwy - + The backup dir set in preferences does not exist Ustawienia preferencji katalogu backupu nie istnieją - + Cannot write temporary file! Nie mogę zapisać pliku tymczasowego! - - - + + + Taranis radio not found Nie odnaleziono Radia Taranis - - - + + + Impossible to identify the radio on your system, please verify the eeprom disk is connected. Identyfikacja radia w Twoim systemie nie jest możliwa, sprawdź dysk eeprom podpięty do komputera. - - - + + + Backup EEPROM From Tx Backup EEPROM z radia - + Cannot check eeprom compatibility! Continue anyway? Nie mogę sprawdzić kompatybilności EEprom! Kontynuować ? - - + + Warning Ostrzeżenie - + Firmware in radio is of a different family of eeprom written, check file and preferences! Firmware w radiu jest różny od zapisanego eepromu, sprawdź plik i ustawienia! - + Firmware in flash is outdated, please upgrade! Firmware w radiu jest przestarzały. Proszę zaktualizować! - + Write EEPROM To Tx Zapis EEPROM do radia - + Open Otwórz - + Invalid binary backup File %1 nieprawidłowy binarny plik %1 @@ -4286,17 +4303,17 @@ p, li { white-space: pre-wrap; } ModulePanel - + Trainer Output Wyjśćie Trenera - + Internal Radio System Wenętrzny moduł radiowy - + External Radio Module External Radio Module - Internal Radio System - zaznaczyć by opisać spójność nazw angielskich @@ -4306,918 +4323,713 @@ p, li { white-space: pre-wrap; } QObject - - + + Rud SK - - + + Ele SW - - + + Thr Gaz - - + + Ail Lotki - - - + + + P1 Potencjometr 1 - - - + + + P2 Potencjometr 2 - - - + + + P3 Potencjometr 3 - - + + S1 Potencjometr 1 - - + + S2 Potencjometr 2 - - + + LS Lewy suwak - - + + RS Prawy suwak - + TrmR Trymer SK - + TrmE Trymer SW - + TrmT Trymer gazu - + TrmA Trymer lotek - - - + + + REa Pokrętło :a - - - + + + REb Pokrętło :b - + Batt Bateria - + A1 Sygnał telemetrii A1 - + A2 Sygnał telemetrii A2 - + Alt Wysokość - + Rpm Obroty - + Fuel Paliwo - + T1 - + Tx - + Rx - + SWR SWR - + RSSI - + T2 - + Speed Prędkość - + Dist Odległość - + GPS Alt Wysokość GPS - + Cell Cela - + Cels Cele - + Vfas - + Curr Natężenie - + Cnsp - + Powr Moc - + AccX - + AccY - + AccZ - + HDG - + VSpd - + A1- - + A2- - + Alt- - + Alt+ - + Rpm+ - + T1+ - + T2+ - + Spd+ - + Dst+ - + Cur+ - + ACC - + Time - + Pwr+ - - + + LS1 PL1 - - + + LS2 PL2 - - + + LS3 PL3 - - + + LS4 PL4 - - + + LS5 PL5 - - + + LS6 PL6 - - + + LS7 PL7 - - + + LS8 PL8 - - + + LS9 PL9 - - + + LSA PLA - - + + LSB PLB - - + + LSC PLC - - + + LSD PLD - - + + LSE PLE - - + + LSF PLF - - + + LSG PLG - - + + LSH PLH - - + + LSI PLI - - + + LSJ PLJ - - + + LSK PLK - - + + LSL PLL - - + + LSM PLM, - - + + LSN PLN - - + + LSO PLO - - + + LSP PLP - - + + LSQ PLQ - - + + LSR PLR - - + + LSS PLS - - + + LST PLT - - + + LSU PLU - - + + LSV PLV - - + + LSW PLW - + Input %1 Wejście %1 - + MAX - + S11 P11 - + S12 P12 - + S13 P13 - + S14 P14 - + S15 P15 - + S16 P16 - + S21 P21 - + S22 P22 - + S23 P23 - + S24 P24 - + S25 P25 - + S26 P26 - + CYC%1 - + PPM%1 - + CH%1%2 Kan %1%2 - + X%1 - - - - + + + + ---- - - + + THR THR - - + + ON Włącz - - - + + + OFF Wyłącz - + Diff(%1) Róźnicowość(%1) - + Expo(%1) Expo(%1) - + Function(%1) Funkcja(%1) - + Curve(%1) Krzywa(%1) - + !Curve(%1) !Krzywa(%1) - - th9x - - - - - er9x - - - - - + + Support for frsky telemetry mod Wsparcie dla telemetrii FrSky - - + + Support for jeti telemetry mod Wsparcie telemetrii JETI - - + + Support for receiving ardupilot data Wsparcie dla otrzymywania danych ardupilota - - + + Support for receiving NMEA data Wsparcie dla otrzymywania danych NMEA - + Support for telemetry easy board Wsparcie dla platformy TelemetrEZ - - + + Support for MAVLINK devices Wsparcie urządzeń MAVLINK - + Rotary Encoder use in menus navigation Użycie pokrętła do nawigacji w menu - + Possibility to enable FAI MODE at field Umożliwienie uaktywniania tryb FAI w menu - + FAI MODE always enabled Tryb FAI zawsze aktywny - - - - - - - Enable heli menu and cyclic mix support - Uaktywnione menu Heli i wsparcie dla cyklicznych mikserów - - - - - - - - - Enable TEMPLATES menu - Uaktywnienie menu szablonów - - - - - - - No splash screen - Bez loga na ekranie - - - - - - - - - No flight modes - Firmware bez menu faz lotu - - - - - - - - - In model setup menus automatically set source by moving some of them - W menu ustawień modelu automatycznie wybierz źródło poprzez poruszenie nim - - - - - - - - - - - Use alternative SQT5 font - Użyj alternatywnego fontu SQT5 - - - - EEprom write progress bar - Pasek postępu wgrywania EEPROMu - - - - - No Winged Shadow How High support - Bez wsparcia - Winged Shadow How High - - - - - No vario support - Bez wsparcia wario - - - - - No GPS support - Bez wsparcia GPS - - - - - No gauges in the custom telemetry screen - Bez graficznych wskazań telemetrii - - - - Allow compensating for offset errors in FrSky FAS current sensors - Pozwolenie na kompensację błędów w czujnikach natężenia FrSky FAS - - - - OpenTX for FrSky Taranis Rev4a - OpenTX dla platformy FrSky Taranis Rev4a - - - - Use FrSky Taranis sticks in a 9X/9XR - Użyj drążków Taranisa w 9X/9XR - - - - OpenTX for FrSky Taranis - OpenTX dla platformy FrSky Taranis - - - - - Disable HELI menu and cyclic mix support - Dezaktywowane menu Heli i wsparcie dla cyklicznych mikserów - - - - - Disable TEMPLATES menu - Dezaktywowane menu szablonów - - - - - Disable Global variables - dezaktywowane zmienne globalne - - - - - - - - - Disable curves menus - Bez menu krzywych - - - - - - - Support for radio modified with regular speaker - Wsparcie dla modyfikacji radia zwykłym głośnikiem - - - - - - - - Used if you have modified your radio with voice mode - Używane jeśli radio jest zmodyfikowane w calu użycia komunikatów głosowych - - - - - - - Used if you have modified your radio with haptic mode - Używane jeśli radio jest zmodyfikowane do użycia wibracji - - - - - - - - - Battery graph - Grafika baterii - - - - - - - Enable the throttle trace in Statistics - Uaktywnić śledzenie gazu w statystykach - - - - Support of FrSky PXX protocol - Wsparcie dla protokołu Frsky PXX - - - - - - - - Support for DSM2 modules - wsparcie modułu DSM2 - - - - Your radio probably uses a wrong firmware, - eeprom size is 4096 but only the first 2048 are used - Twoje radio prawdopodobnie używa złego firmware, - wielkość eepromu jest 4096 ale tylko pierwsze 2048 jest używane - - - - PPM center adjustment in limits - Limit dostrojenia centrowania PPM + + Enable heli menu and cyclic mix support + Uaktywnione menu Heli i wsparcie dla cyklicznych mikserów - - - - - PPM values displayed in us - Wartości PPM wyświetlane w us (mikrosekundy) + + + Enable TEMPLATES menu + Uaktywnienie menu szablonów + + + + + + + No splash screen + Bez loga na ekranie @@ -5225,45 +5037,240 @@ p, li { white-space: pre-wrap; } - - Symetrical Limits - Limity symetryczne + + No flight modes + Firmware bez menu faz lotu - + + + + + + + In model setup menus automatically set source by moving some of them + W menu ustawień modelu automatycznie wybierz źródło poprzez poruszenie nim + + + + + + + + + + + Use alternative SQT5 font + Użyj alternatywnego fontu SQT5 + + + + EEprom write progress bar + Pasek postępu wgrywania EEPROMu + + + + + No Winged Shadow How High support + Bez wsparcia - Winged Shadow How High + + + + + No vario support + Bez wsparcia wario + + + + + No GPS support + Bez wsparcia GPS + + + + + No gauges in the custom telemetry screen + Bez graficznych wskazań telemetrii + + + + Allow compensating for offset errors in FrSky FAS current sensors + Pozwolenie na kompensację błędów w czujnikach natężenia FrSky FAS + + + + OpenTX for FrSky Taranis Rev4a + OpenTX dla platformy FrSky Taranis Rev4a + + + + Use FrSky Taranis sticks in a 9X/9XR + Użyj drążków Taranisa w 9X/9XR + + + + OpenTX for FrSky Taranis + OpenTX dla platformy FrSky Taranis + + + + + Disable HELI menu and cyclic mix support + Dezaktywowane menu Heli i wsparcie dla cyklicznych mikserów + + + + + Disable TEMPLATES menu + Dezaktywowane menu szablonów + + + + + Disable Global variables + dezaktywowane zmienne globalne + + + + - - Pots use in menus navigation - Użycie potencjometrów do nawigacji w menu - - - - OpenTX for 9X board - OpenTX dla platformy 9X + + Disable curves menus + Bez menu krzywych - SmartieParts 2.2 Backlight support - Wsparcie podświetlenia SmartieParts 2.2 + + + Support for radio modified with regular speaker + Wsparcie dla modyfikacji radia zwykłym głośnikiem + + + + + + + + Used if you have modified your radio with voice mode + Używane jeśli radio jest zmodyfikowane w calu użycia komunikatów głosowych - - - - + + + Used if you have modified your radio with haptic mode + Używane jeśli radio jest zmodyfikowane do użycia wibracji + + + + + + + + + Battery graph + Grafika baterii + + + + + + + Enable the throttle trace in Statistics + Uaktywnić śledzenie gazu w statystykach + + + + Support of FrSky PXX protocol + Wsparcie dla protokołu Frsky PXX + + + + + + + + Support for DSM2 modules + wsparcie modułu DSM2 + + + + Your radio probably uses a wrong firmware, + eeprom size is 4096 but only the first 2048 are used + Twoje radio prawdopodobnie używa złego firmware, + wielkość eepromu jest 4096 ale tylko pierwsze 2048 jest używane + + + + + + + + + PPM center adjustment in limits + Limit dostrojenia centrowania PPM + + + + + + + + + + + PPM values displayed in us + Wartości PPM wyświetlane w us (mikrosekundy) + + + + + + + + + Symetrical Limits + Limity symetryczne + + + + + + + + Pots use in menus navigation + Użycie potencjometrów do nawigacji w menu + + + + OpenTX for 9X board + OpenTX dla platformy 9X + + + + + SmartieParts 2.2 Backlight support + Wsparcie podświetlenia SmartieParts 2.2 + + + + + + + + In model setup menus automatically set switch by moving some of them W menu modelu automatyczne wybranie przełącznika w przez jego poruszenie - - - - + + + + Enable resetting values by pressing up and down at the same time Szybkie nastawianie wartości (+) a (-) neguje wartość @@ -5272,838 +5279,834 @@ p, li { white-space: pre-wrap; } (UP) a (DN) ustawia 0 - - - - - - + + + + + + No graphical check boxes and sliders Brak graficznych chekboxów i sliderów - - - - - - + + + + + + Don't use bold font for highlighting active items Nie używaj podświetlenia dla wybranych aktywnych elementów, mikserów, krzywych, expo, etc - + OpenTX for M128 / 9X board OpenTX dla platformy M128 / 9X - - - - + + + + EEprom write Progress bar Pasek postępu zapisywania EEPROM - - - - - + + + + + Imperial units Imperialne jednostki w telemetrii - + Bluetooth interface Interface Bluetooth - - - - - - + + + + + + Global variables Globalne zmienne - + OpenTX for 9XR OpenTX dla platformy 9XR - + OpenTX for 9XR with M128 chip OpenTX dla platformy 9X z układem M128 - + OpenTX for Gruvin9x board / 9X ie: OpenTX dla platformy Gruvin9X / 9X - + Support for SD memory card Wsparcie karty SD - + Support for DSM2 modules using ppm instead of true serial Wsparcie modułu DSM2 przez użycie PPM zamiast prawdziwego szeregowego - + OpenTX for Sky9x board / 9X OpenTX dla platformy Sky9x / 9X - + Enable HELI menu and cyclic mix support Uaktywnij menu HELI i cyklicznych mikserów - - ersky9x - - - - - - - + + Warning Ostrzeżenie - + EEPROM saved with these warnings: EEPROM zapisany z tymi ostrzeżeniami: - - + + FM%1 FP%1 FM%1 - + Input%1 Wejście %1 - + English Angielski - + French Francuski - + Italian Włoski - + German Niemiecki - + Czech Czeski - + Slovak Słowacki - + Spanish Hiszpański - + Portuguese Portugalski - + Polish Polski - + + Finnish + + + + No Nie - + RotEnc A Pokrętło :A - + Rot Enc B Pokrętło :B - + Rot Enc C Pokrętło :C - + Rot Enc D Pokrętło :D - + Rot Enc E Pokrętło :E - - + + No repeat Bez powtórzeń - + %1 sec %1 s - + Safety %1 Bezpieczny %1 - + ASpd - + dTE - + Cel- - + Vfs- - + RudTrim Left SK Trymer lewy - + RudTrim Right SK Trymer prawy - + EleTrim Down SW Trymer w dół - + EleTrim Up SW Trymer w górę - + ThrTrim Down Gaz Trymer w dół - + ThrTrim Up Gaz Trymer w gorę - + AilTrim Left Lotki trymer w lewo - + AilTrim Right Lotki trymer w prawo - + ABS - + THs - + TH% - + THt - + ??? ??? - + a>x a>x - + a<x a<x - + |a|>x |a|>x - + |a|<x |a|<x - + AND I (logiczne) - + OR Lub (logiczne) - + XOR XOR (Logiczne) - + a=b a=b - + a!=b a!=b - + a>b a>b - + a<b a<b - + a>=b a>=b - + a<=b a<=b - + d>=x d>=x - + |d|>=x |d|>=x - + a~x a~x - + Timer Timer - + Sticky - + Stay Utrzymuj - + Unknown Nieznane - + STAY(%1, [%2:%3]) Utrzymuj(%1, [%2:%3]) - + STICKY(%1, %2) - + TIMER(%1, %2) TIMER(%1, %2) - + Trainer Trener - + Trainer RUD Trener - SK - + Trainer ELE Trener - SW - + Trainer THR Trener - Gaz - + Trainer AIL Trener - Lotki - + Instant Trim Natychmiastowe trymowanie - + Play Sound Odtwórz dźwięk - + Play Haptic Wibruj - + Reset Zresetuj - + Set Timer %1 Ustaw Timer %1 - + Vario Wariometr - + Play Both Odtwórz oba - + Play Value Odtwórz wartość - + Start Logs Start logowania - + Volume Głośność - + Backlight Podświetlenie - + Adjust GV%1 Ustaw ZG%1 - - - - - - + + + + + + <font color=red><b>Inconsistent parameter</b></font> Niespójny parametr <font color=red><b>Niespójny parametr</b></font> - + Rotary Encoder Pokrętło - + !Flight mode %1 !Faza lotu %1 - + Flight mode %1 Faza lotu %1 - + Yellow Żółty - + Orange Pomarańczowy - + Red Czerwony - + Winged Shadow How High - + Winged Shadow How High (not supported) Winged Shadow How High (nie obsługiwane) - + FrSky Sensor Hub Hub sensora FrSky - - + + None Żaden - + Imperial Imperialne - + Metric Metryczne - + Extra Fine Bardzo dokładne - + Fine Dokładne - + Medium Średni - + Coarse Gruby - + Exponential Eksponencjalny - + Count Up Licz - + Count Down Odliczaj - + %1:%2, - + : %1 Channels, %2usec Delay :Kanały %1, opóźnienie %2usX - + Flight modes(%1) Fazy lotu(%1) - + Flight mode(%1) Faza lotu (%1) - + Rudder SK - + Elevator SW - + Throttle Gaz - + Aileron Lotki - + Play Track Odtwórz ścieżkę - - - + + + --- - + Rud Trim Trymer SK - + Ele Trim Trymer SW - + Thr Trim Trymer gazu - + Ail Trim Trymer lotek - + Rot Enc Pokrętło - + Swedish Szwedzki - + CH%1 Kan %1 - + Background Music Muzyka tła - + Background Music Pause Muzyka tła - pauza - + Delay %1 sec Opóźnienie %1sec - + Duration %1 sec Czas trwania %1 sec - - - - + + + + Timer1 - - - - + + + + Timer2 - - - + + + All Wszystkie - - - + + + Telemetry Telemetria - - + + Value Wartość - - + + Decr: Zmniejsz: - - + + Incr: Zwiększ: - + Played once, not during startup Otwarzaj raz, nie w trakcie uruchomienia - + %1s - + Value Wartość - + Source Źródło - + GVAR Zmienna - + Increment Zwiększanie - + Own value Własny Wartość - + Flight mode %1 value Flight phase %1 value Wartość Fazy lotu FL%1 - + Keys Przyciski - + Sticks Drążki - + Keys + Sticks Przyciski i Drążki - - + + -GV%1 -ZG%1 - - - + + + GV%1 ZG%1 - - - + Simulator for this firmware is not yet available Nie jest dostępny symulator dla tego firmware @@ -6181,17 +6184,17 @@ Zespół OpenTX/Companion. Użyj trymerów dla Fazy Lotu %1 + Własne trymery jako offset - + FW: %1 FW:%1 - + Pict: %1 Obrazek:%1 - + Profile image Obrazek Profilu @@ -6341,6 +6344,296 @@ Wolne obroty będą na górze, trymer i ostrzeżenie o otwartym gazie również Automatyczne + + SimulatorDialog + + + + Warning + + + + + Joystick enabled but not configured correctly + + + + + Cannot open joystick, joystick disabled + + + + + Simulating Tx (%1) + Symulacja Tx (%1) + + + + Firmware %1 error: %2 + + + + + SimulatorDialog9X + + + Companion Simulator + Symulator Companion + + + + + + + Right Double Click to Reset + + + + + THR + + + + + RUD + SK + + + + ELE + SW + + + + AIL + + + + + + Hold X + Przytrzymaj X + + + + + Fix X + Zablokuj X + + + + + Fix Y + Zablokuj Y + + + + + Hold Y + + + + + + + + TextLabel + + + + + TRN + + + + + GEA + + + + + ID0 + + + + + ID1 + + + + + ID2 + + + + + BEEP + Zvuk + + + + P1 + Potencjometr1 + + + + + + 0 % + + + + + P2 + Potencjometr2 + + + + P3 + + + + + 9x Simulator + Symulator 9x + + + + Outputs + Wyjścia + + + + SimulatorDialogTaranis + + + Companion Simulator + Symulator Companion + + + + + Hold Y + + + + + + Fix Y + Zablokuj Y + + + + + Fix X + Zablokuj X + + + + + Hold X + Przytrzymaj X + + + + + SD + + + + + + SC + + + + + + + + Right Double Click to Reset + + + + + + S2 + Poten 2 + + + + + SG + + + + + + RS + + + + + + SH + + + + + + + + TextLabel + + + + + + S1 + + + + + + SB + + + + + + SA + + + + + + SE + + + + + + + SF + + + + + + LS + + + + + Taranis Simulator + Symulator Taranis + + + + Outputs + Wyjścia + + Telemetry @@ -6684,7 +6977,7 @@ Wolne obroty będą na górze, trymer i ostrzeżenie o otwartym gazie również miliAmpery (mA) - + Range Zasięg @@ -6735,7 +7028,7 @@ Wolne obroty będą na górze, trymer i ostrzeżenie o otwartym gazie również TelemetryPanel - + Telemetry screen %1 Panel Telemetrii %1 @@ -6786,17 +7079,17 @@ Wolne obroty będą na górze, trymer i ostrzeżenie o otwartym gazie również TimerPanel - + None Żaden - + Beeps Dźwięk - + Countdown Odlicznie @@ -7078,7 +7371,7 @@ To ustawienie jest używane przez szablony, określa jakie wyjście przypisane j Struktura karty SD - + Select Image Wybierz obrazek @@ -7093,12 +7386,12 @@ To ustawienie jest używane przez szablony, określa jakie wyjście przypisane j Usuń Profil - + Clear Image Wyczyść obrazek - + Firmware Firmware @@ -7188,43 +7481,43 @@ To ustawienie jest używane przez szablony, określa jakie wyjście przypisane j Uaktywnij automatyczny backup przed zapisem firmware - + Select your snapshot folder Katalog zrzutów - - + + No joysticks found Brak oysticka - + Select your library folder Wybierz katalog bibliteki - + Select your Models and Settings backup folder Wybierz folder do backupowania Modeli i Ustawień - + Select Google Earth executable Wybierz wykonywalny plik Google Earth - + Select the folder replicating your SD structure Wybierz folder do zreplikowania struktury Twojej karty SD - + Not possible to remove profile Usunięcie profilu jest niemożliwe - + The default profile can not be removed. Podstawowy profil nie moze być usunięty. @@ -7237,12 +7530,12 @@ To ustawienie jest używane przez szablony, określa jakie wyjście przypisane j Nie mogę załadować %1. - + Open Image to load Otwórz obrazek do załadowania - + Images (%1) Obrazki (%1) @@ -7580,40 +7873,40 @@ m2560 dla platformy V4 Port szeregowy sam-ba - + DFU-UTIL Configuration Konfiguracja DFU-UTIL - + SAM-BA Configuration Konfiguracja SAM-BA - + AVRDUDE Configuration Konfiguracja AVRDUDE - - - + + + Select Location Wybierz położenie - - + + Companion Companion - + <b><u>WARNING!</u></b><br>This will reset the fuses of %1 to the factory settings.<br>Writing fuses can mess up your radio.<br>Do this only if you are sure they are wrong!<br>Are you sure you want to continue? <b><u>UWAGA!</u></b><br>U zresetuje bezpieczniki %1 do fabrycznych ustawień.<br>Zapis bezpieczników może uszkodzić twoje radio.<br>Zrób to tylko jeśli jesteś pewien że są złe!<br>Jesteś pewien by kontynuować? - + <b><u>WARNING!</u></b><br>Normally CPU type is automatically selected according to the chosen firmware.<br>If you change the CPU type the resulting eeprom could be inconsistent. <b><u>Ostrzeżenie!</u></b><br>Normalnie typ procesora jest wybierany automatycznie zgodnie z wybranym firmware.<br>Jeśli zmienisz typ procesora dla EEpromu rezultaty mogą być nieprzewidywalne. @@ -7627,7 +7920,7 @@ m2560 dla platformy V4 - + Write to TX Zapisz do radia @@ -7693,7 +7986,7 @@ m2560 dla platformy V4 - + Browse for file Przeglądaj pliki @@ -7728,148 +8021,148 @@ m2560 dla platformy V4 Przerwij - + Write firmware to TX Zapisz firmware do radia - + Current profile Aktualny profil - + Open Otwórz - - - - - - + + + + + + Warning Ostrzeżenie - + %1 is not a known firmware %1 nie jest znanym firmware - + Burn anyway ! Wypiecz mimo wszystko ! - - - - - - - - - - + + + + + + + + + + Error Błąd - + Unable to find file %1! Nie mogę odnaleźć pliku %1! - - - + + + Error opening file %1: %2. Błąd otwarcia pliku %1: %2. - + Write Models and Settings to TX Zapisz Modele i Ustawienia do radia - + Write Models and Settings in %1 to TX Zapisz Modele i Ustawienia w %1 do radia - + Choose file to load Models and Settings from Wybierz plik Modeli i Ustawien do wczytania - - - + + + Invalid binary Models and Settings File %1, Proceed anyway ? Nieprawidłowy plik Modeli i Ustawień : %1. Kontynuować ? - + Error reading file %1: %2. Błąd odczytu pliku %1: %2. - + Open Image to load Otwórz plik z logo - + Images (%1) Obrazki (%1) - - + + Cannot load %1. Nie mogę załadować %1. - + Cannot save customized firmware Nie mogę zapisać przystosowanego firmware - + Custom image not found Własny obrazek nie odnaleziony - + No firmware selected Brak wyboru firmware - + Wrong radio calibration data in profile, Settings not patched Błędna kalibracja radia w profilu, Ustawienia nie spatchowane - + Wrong radio setting data in profile, Settings not patched Błędne ustawienia radia w profilu, Ustawienia nie spatchowane - - + + Cannot write file %1: %2. Nie mogę zapisać pliku %1: %2. - + Error writing file %1: %2. Błąd zapisu pliku %1: @@ -7880,514 +8173,514 @@ m2560 dla platformy V4 compareDialog - Dialog - + Compare Models + - + Drag first model here Przeciągnij tutaj pierwszy model - + Drag second model here Przeciągnij tutaj drugi model - + Close Zamknij - + Print Drukuj - + Print to file Drukuj do pliku - + General Model Settings Główne ustawienia modelu - - - + + + Name Nazwa - - + + EEprom Size Wielkość EEPROM - - + + Timer1 - - + + Timer2 - - + + Protocol Protokół - - + + Pulse Polarity Polaryzacja impulsu - - + + Throttle Trim Trymer gazu - - - - + + + + Enabled Włączone - - - - + + + + Disabled Wyłączone - - + + Throttle Expo Expo gazu - - + + Trim Increment Krok trymera - - + + Center Beep Dźwięk centrowania - + Flight modes Settings Flight Phases Settings Ustawiania faz lotu - - + + Fades Przejścia - - + + Trims Trymery - - - - - - - - + + + + + + + + Switch Przełącznik - - + + IN (+) - - + + OUT (-) - - - - - - - - - - + + + + + + + + + + FM FP FL - - + + Gvars Gl-Zm - - + + Rot. Enc. Pokrętło. - + Limits Limity - - - - - - - + + + + + + + Offset Ofset - - - - - + + + + + Min - - - - - + + + + + Max Maks - - - + + + Invert Odwróć - - - - - + + + + + CH Kanał - - + + INV Odwr - - + + NOR --- - + Global Variables Zmienne globalne - - + + GV ZG - + Expo/Dr Settings Expo/Ustawienia DR - - + + Weight Waga - - + + Curve Krzywa - + Mixers Miksery - - + + noTrim Bez trymera - - + + Delay(u%1:d%2) Opóźnienie(u%1:d%2) - - + + Slow(u%1:d%2) Spowolnienie(u%1:d%2) - - + + Warn Ostrzeżenie - - + + No name Model bez nazwy - - - - + + + + DISABLED Wyłączone - + Curves Krzywe - + 5 Points Curves 5-cio punktowe Krzywe - - - - + + + + pt %1 punkt %1 - + 9 Points Curves 9-cio punktowe Krzywe - - + + Function Funkcja - - + + Param Parametr - - + + Enable Włączone - + Telemetry Settings Ustawienia telemetrii - - + + Analog Analogowy - - + + Unit Jednostki - - + + Scale Skala - - - - + + + + A%1 - - + + Alarm 1 - - + + Alarm 2 - - - - - - Type - Typ - - Condition - Warunek + Type + Typ + Condition + Warunek + + + + + + Value Wartość - - - - + + + + Flight mode name Nazwa fazy lotu - - - - + + + + Flight modes Fazy lotu - - - - + + + + Flight mode Faza lotu - - + + Repeat Powtórz - - + + RSSI Alarm Alarm RSSI - - + + Telemetry Bars Wskaźniki telemetryczne - - + + Bar Number Numer wskaźnika - - + + Source Źródło - - + + Custom Telemetry View Własny ekran telemetrii - + Logical Switches Przełączniki Logiczne - - + + LS L suwak - + Switch Assignment Przypisanie Przełączników - + CF FS - + Print Document Drukuj dokument - + Select PDF output file Wybierz plik docelowy PDF @@ -8400,37 +8693,37 @@ m2560 dla platformy V4 - + People who have contributed to this project Ludzie związani z tym projektem - + Coders Programiści - + Honors go to Rafal Tomczak (RadioClone), Thomas Husterer (th9x) and Erez Raviv (er9x and eePe) Specjalne podziękowania Rafałowi Tomczakowi (RadioClone), Thomasowi Husteterowi (th9x) a także Erazowi Ravivowi(er9x i eePe) - + Companion Release Notes Informacje o wydaniu Companion - + Thank you all !!! Wszystkim wam dziękujemy !!! - + Contributors Współpracownicy - + OpenTX Release Notes Informacje o wydaniu OpenTX @@ -8443,109 +8736,109 @@ m2560 dla platformy V4 Edytor ekrany startowego radia - - + + Invert Odwróć - - + + Load FW Otwórz firmware - - + + Load Pict Otwórz obrazek - - + + Load Profile Załaduj profil - - + + Save Zapisz - - + + Open Splash Library Otwórz bibliotekę obrazków - - - - + + + + ... - + Open Otwórz - - - - + + + + Error Błąd - + Cannot load embedded FW image from %1. Nie mogę załadować wstawionego obrazu FW z %1. - + Cannot load the image file %1. Nie mogę załadować pliku obrazka %1. - + Cannot load the profile image %1. Nie mogę załadować obrazu Profilu %1. - + Cannot load the library image %1. Nie mogę załadować obrazu biblioteki %1. - + File Saved Plik Zapisany - + The image was saved to the file %1 Obraz został zapisany do pliku %1 - + Image Refresh Error Błąd odświeżenia obrazka - + Failed to refresh image from file %1 Nieudane odswieżenie obrazka z pliku %1 - + File Save Error Błąd zapisu pliku - + Failed to write image to %1 Nieudany zapis obrazka do %1 @@ -8554,12 +8847,12 @@ m2560 dla platformy V4 Nie mogę znaleźć bitmapy w celu zastąpienia pliku - + Open Image to load Otwórz obrazek do załadowania - + Images (%1) Obrazki (%1) @@ -8584,17 +8877,17 @@ m2560 dla platformy V4 Pobierz: - + Unable to save the file %1: %2. Nie mogę zapisać pliku %1: %2. - + Companion Companion - + Download failed: %1. Pobieranie nieudane: %1. @@ -8607,7 +8900,7 @@ m2560 dla platformy V4 Bezpieczniki - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -8636,12 +8929,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;">EEPROM wyczyszczenie ustawionego bezpiecznika: D7, 19, FC</span></p></body></html> - + Read Fuses Odczytaj bezpieczniki - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -8674,14 +8967,14 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;">Jeśli urządzeni zostanie zablokowane przeszukaj google w celu znalezienia &quot;Jak naprawić Fuse BRICK &quot;.</span></p></body></html> - + Reset Fuses EEPROM - PROTECT Zresetuj bezpieczniki EEPROM jest chroniony - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -8714,14 +9007,14 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;">Jeśli urządzeni zostanie zablokowane przeszukaj google w celu znalezienia &quot;Jak naprawić Fuse BRICK &quot;.</span></p></body></html> - + Reset Fuses EEPROM - DELETE Zresetuj bezpieczniki EEPROM będzie skasowany - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -9010,17 +9303,17 @@ To ustawienie jest używane przez szablony, określa jakie wyjście przypisane j Sprawdź aktualizacje - + Last downloaded release: %1 Ostatnie pobrane wydanie: %1 - + The selected firmware has never been downloaded by Companion. Wybrany firmware nie został nigdy pobrany przez Companion. - + The selected firmware cannot be downloaded by Companion. Companion nie moze pobrac wybranego firmware. @@ -9052,226 +9345,226 @@ To ustawienie jest używane przez szablony, określa jakie wyjście przypisane j joystickDialog - + Configure Joystick Ustaw joystick - + Ch2 Kanał 02 - - - - - - - - + + + + + + + + Not Assigned Nie przydzielono - - - - - - - - + + + + + + + + Right Vertical Prawy pionowy - - - - - - - - + + + + + + + + Right Horizontal Prawy poziomy - - - - - - - - + + + + + + + + Left Vertical Lewy pionowy - - - - - - - - + + + + + + + + Left Horizontal Lewy poziomy - - - - - - - - + + + + + + + + P1 Potencjometr 1 - - - - - - - - + + + + + + + + P2 Potencjometr 2 - - - - - - - - + + + + + + + + P3/LS Potencjometr 3 /Lewy suwak - - - - - - - - + + + + + + + + RS Prawy suwak - + Ch1 Kanał 01 - + Ch4 Kanał 04 - + Ch6 Kanał 06 - + Ch3 Kanał 03 - + Ch5 Kanał 05 - + Ch7 Kanał 07 - + Ch8 Kanał 08 - + Instructions Instrukcja - + Cancel Przerwij - + Next Następny - + Ok OK - + Move sticks and pots in every direction making full movement Press next when finished Poruszaj drązkami i potencjometrami w pełnym możliwym zakresie. Naciśnij Dalej po skończeniu - - + + Error Błąd - + Cannot open joystick. Nie mogę otwórz joysticka. - + Place sticks and pots in middle position. Press next when done Ustaw drążki i potencjometry w środku. Naciśnij Dalej po skończeniu - + Map joystick channels to controls using comboboxes. Press next when done Zmapuj kanały joysticka używają comboboxów. Naciśnij Dalej po skończeniu - + Check inversion checkbox to get maximum at top-right position. Press next when done Sprawdż checkbox rewersu w celu uzyskania maksimum w górnej prawej pozycji. Naciśnij Dalej po skończeniu - + Press ok to save configuration Press cancel to abort joystick calibration Naciśnij OK w celu zapisu, Anuluj w celu przerwania kalibracji joysticka. Tlačítkem Zrušit přerušíte kalibraci - + Duplicated stick assignement Duplicitní přiřazení Drążki @@ -9284,52 +9577,52 @@ Tlačítkem Zrušit přerušíte kalibraci Companion - przegląd logów - + Filename nazwa pliku - + Open LogFile Otwórz plik logu - + Zoom Przybliżenie - + X X - + Y Y - + Fly sessions Loty - + Telemetry logs Logi Telemetrii - + Time Czas - + Error Błąd - + Cannot write file %1: %2. Nie mogę zapisać pliku %1: @@ -9354,7 +9647,7 @@ Tlačítkem Zrušit přerušíte kalibraci mdiChild - + Simulate Tx Symulacja radia @@ -9367,431 +9660,431 @@ Tlačítkem Zrušit přerušíte kalibraci Kreator ustawień modelu - + Engine Silnik - + Model Type Typ modelu - + Airplane Samolot - + Helicopter Heli - + Glider Szybowiec - + Wing Skrzydła - + Aileron controls Lotki - + No Ailerons Bez lotek - + 1 Servo (or Y) Jedno serwo (lub odwracający Y kabel) - - - + + + 2 Servos Dwa serwa - + Flaps controls Klapy - + No Flaps Bez klap - + 1 Servo (or inverting Y) Jedno serwo (lub Y kabel) - + Spoilers Przerywacze - + No Spoilers/Airbrakes Bez przerywaczy/hamulców - + 1 Servo (or Y or inverting Y) Jedno serwo (lub Y kabel) - + Swash Plate Tarcza - + Swash plate Tarcza - + 90° / Fixed / Coax - + 120° - + 120X° - + 140° - + FlyBarLess - + Tail Ogon - + Tail controls Kontrola ogona - + 1 Servo Elevator / 1 Servo Rudder 1x serwo SW / 1x serwo SK - + V Tail Deltamix (Usterzenie motylkowe) - + 2 Servos Elevator / 1 Servo Rudder 2x serwo SW / 1x serwo SK - + Gyroscope Gyro - + NoGyro Bez gyra - + Switch control Kontrola przełącznikem - + Pot control Kontrola potencjometrem - + Channel style Styl kanału - + Open9x Style Styl Open9x - + Futaba Style Styl Futaba - + 2 - + 3 - + 4 - + 5 - + 6 - + 7 - + 8 - + 9 - + 1 - + 10 - + Ele2 SW2 - + Use advanced controls Użyj zaawansowanych ustawień - + Spoiler2 Przerywacz2 - + Flap2 Klapa2 - + Flap1 Klapa1 - + Rud2 SK2 - - - - - - - + + + + + + + AUTO - - - - - - - + + + + + + + CH01 Kanał 01 - - - - - - - + + + + + + + CH02 Kanał 01 - - - - - - - + + + + + + + CH03 Kanał 03 - - - - - - - + + + + + + + CH04 Kanał 04 - - - - - - - + + + + + + + CH05 Kanał 05 - - - - - - - + + + + + + + CH06 Kanał 06 - - - - - - - + + + + + + + CH07 Kanał 07 - - - - - - - + + + + + + + CH08 Kanał 08 - - - - - - - + + + + + + + CH09 Kanał 09 - - - - - - - + + + + + + + CH10 Kanał 10 - + Ail2 Lotka2 - + Spoiler 1 Przerywacz1 - + Delta wing Skrzydło delta - - + + Not present Brak - + Present Jest - + Rudder SK - + Single rudder Pojedynczy SK - + Dual rudder (with 2 servos) Podwójny SK (dwa serwa) - + Apply configuration ? Zastosować konfigurację ? - + Apply configuration deleting existing model ? Zastosować konfigurację kasując instniejący model ? @@ -10315,98 +10608,77 @@ Mode 4: Użycie schowka do kopiowania - Last downloaded release: %1 - Ostatnie pobrane wydanie: %1 + Ostatnie pobrane wydanie: %1 - Image stored in settings - Logo zapamietane w ustawieniach + Logo zapamietane w ustawieniach - - No joysticks found - Brak oysticka + Brak oysticka - Select the folder replicating your SD structure - Wybierz folder do zreplikowania struktury Twojej karty SD + Wybierz folder do zreplikowania struktury Twojej karty SD - Profile name is empty, profile slot %1 will be deleted.<br>Are you sure ? - Nazwa profilu jest pusta, slot %1 będzie skasowany.<br>Jesteś pewien ? + Nazwa profilu jest pusta, slot %1 będzie skasowany.<br>Jesteś pewien ? - Select your library folder Support for SD memory card - Wybierz katalog bibliteki + Wybierz katalog bibliteki - Select your snapshot folder - Katalog obrazków dla symulatora + Katalog obrazków dla symulatora - The selected firmware has never been downloaded by Companion. - Wybrany firmware nie został nigdy pobrany przez Companion. + Wybrany firmware nie został nigdy pobrany przez Companion. - The selected firmware cannot be downloaded by Companion. - Companion nie moze pobrac wybranego firmware. + Companion nie moze pobrac wybranego firmware. - Select your Models and Settings backup folder - Wybierz folder do backupowania Modeli i Ustawień + Wybierz folder do backupowania Modeli i Ustawień - Select Google Earth executable - Wybierz wykonywalny plik Google Earth + Wybierz wykonywalny plik Google Earth - - Error - Błąd + Błąd - - Cannot load %1. - nie mogę wczytać %1. + nie mogę wczytać %1. - Export profile As - Wyeksportuj profil jako + Wyeksportuj profil jako - Profile slot is not empty, profile slot %1 will we overwritten.<br>Are you sure ? - Slot profilu nie jest pusty, slot %1 zostanie zapisany.<br>Jesteś pewien ? + Slot profilu nie jest pusty, slot %1 zostanie zapisany.<br>Jesteś pewien ? - Open Profile to import - Otworzyć PRofil do zaimportowania + Otworzyć PRofil do zaimportowania - Open Image to load - Otworzyć obrazek + Otworzyć obrazek - Images (%1) - Obrazki (%1) + Obrazki (%1) @@ -10417,443 +10689,443 @@ Mode 4: - + Close Zamknij - + Print Drukuj - + Print to file Drukuj do pliku - + Setup for: Ustawianie: - + printed on: %1 Wydrukowanno na: %1 - + General Model Settings Główne ustawienia modelu - - - - + + + + Name Nazwa - + EEprom Size Rozmiar EEPROM - + Timer1 - + Timer2 - + Protocol Protokół - + Pulse Polarity Polaryzacja pulsu - + Throttle Trim Trymer gazu - - + + Enabled Włączone - + Disabled Wyłaczone - + Throttle Expo Expo gazu - + Trim Increment Krok trymera - + Center Beep Sygnał centrowania - + Flight modes Settings Flight Phases Settings Uztawienie faz lotu - + Fades Przejścia - + Trims Trymery - + Gvars Zmienne globalne - + Rot.Enc. Pokrętło. - - - - + + + + Switch Przełącznik - + Logical Switches Przełączniki Logiczne - - + + LS PL - + Switch Assignments Przypisanie Przełączników - + IN (+) - + OUT (-) - - - - + + + + FM FP LR - + Expo/Dr Settings Ustawienia Expo/DR - + Weight Vaga - - - + + + Curve Krzywa - + Mixers Miksery - - - - + + + + CH Kanał - + noTrim Bez trimu - - - - - + + + + + Offset Ofset - + Delay(u%1:d%2) Opóżnienie(u%1:d%2) - + Slow(u%1:d%2) Spowolnienie(u%1:d%2) - + Warn Ostrzeżenie - - + + DISABLED Wyłączone - + Limits Limity - - - - + + + + Min - - - - + + + + Max Maks - - - + + + Invert Odwrócenie - - - + + + INV Odwr - - - + + + NOR --- - + Curves Krzywe - + pt %1 pkt %1 - + Global Variables Zmienne globalne - + GV GZ - - + + Value Wartość - + Function Funkcja - + Parameter Parametr - + Repeat Powtórz - + Telemetry Settings Ustawienia telemetrii - - + + Alarm 1 Alarm 1 - - + + Alarm 2 Alarm 2 - + Analog Analog - + Unit Jednostki - + Scale Skala - - + + Type Typ - - + + Condition Warunek - + A%1 - + RSSI Alarm Alarm RSSI - + Frsky serial protocol Protokół szeregowy Frsky - + System of units System jednostek - + Propeller blades Łopaty śmigła - + Telemetry Bars Belki telemetrii - + Bar Number Numer belki - + Source Źródło - + ODF files (*.odt);;PDF Files(*.pdf);;HTML-Files (*.htm *.html);;All Files (*) pliki ODF (*.odt);;pliki PDF (*.pdf);;pliki HTML (*.htm *.html);;Wszystkie pliki (*) - - + + Custom Telemetry View Widok telemetrii użytkownika - + Flight mode name Nazwa trybu lotu - - + + Flight modes Tryby lotu - - + + Flight mode Tryb lotu - + Print Document Drukuj dokument - + Select PDF output file Wybierz docelowy plik PDF @@ -10861,459 +11133,320 @@ Mode 4: simulatorDialog - - - - Right Double Click to Reset - Powójne kliknięcie RP myszy w celu zresetowania + Powójne kliknięcie RP myszy w celu zresetowania - THR - Gaz + Gaz - RUD - SK + SK - ELE - SW + SW - AIL - Lot + Lot - - Hold X - Przytrzymaj X + Przytrzymaj X - - Fix X - Zablokuj X + Zablokuj X - - Fix Y - Zablokuj Y + Zablokuj Y - - Hold Y - Zablokuj Y + Zablokuj Y - - - - - TextLabel - - - - - TRN - - - - - GEA - - - - - ID0 - - - - - ID1 - - - - - ID2 - - - - P1 - Potencjometr1 + Potencjometr1 - - - - 0 % - - - - P2 - Potencjometr2 + Potencjometr2 - P3 - Potencjometr3 + Potencjometr3 - 9x Simulator - Symulator 9x + Symulator 9x - Outputs - Wyjścia + Wyjścia - LS1 - PL1 + PL1 - LS2 - PL2 + PL2 - LS3 - PL3 + PL3 - LS4 - PL4 + PL4 - LS5 - PL5 + PL5 - LS6 - PL6 + PL6 - LS7 - PL7 + PL7 - LS8 - PL8 + PL8 - LS9 - PL9 + PL9 - LSA - PLA + PLA - LSB - PLB + PLB - LSC - PLC + PLC - LSD - PLD + PLD - LSE - PLE + PLE - LSF - PLF + PLF - LSG - PLG + PLG - LSH - PLH + PLH - LSI - PLI + PLI - LSJ - PLJ + PLJ - LSK - PLK + PLK - LSL - PLL + PLL - LSM - PLM, + PLM, - LSN - PLN + PLN - LSO - PLO + PLO - LSP - PLP + PLP - LSQ - PLQ + PLQ - LSR - PLR + PLR - LSS - PLS + PLS - LST - PLT + PLT - LSU - PLU + PLU - LSV - PLV + PLV - LSW - PLW + PLW - BEEP - Zvuk + Zvuk - Companion Simulator - Symulator Companion + Symulator Companion - CH1 - Kanał 01 + Kanał 01 - - - - - - - - - - - - - - - - - -100.1 - - - - CH9 - Kanał 09 + Kanał 09 - CH2 - Kanał 02 + Kanał 02 - CH10 - Kanał 10 + Kanał 10 - CH3 - Kanał 03 + Kanał 03 - CH11 - Kanał 11 + Kanał 11 - CH4 - Kanał 04 + Kanał 04 - CH12 - Kanał 12 + Kanał 12 - CH5 - Kanał 05 + Kanał 05 - CH13 - Kanał 13 + Kanał 13 - CH6 - Kanał 06 + Kanał 06 - CH14 - Kanał 14 + Kanał 14 - CH7 - Kanał 07 + Kanał 07 - CH15 - Kanał 15 + Kanał 15 - CH8 - Kanał 08 + Kanał 08 - CH16 - Kanał 16 + Kanał 16 - - Warning - Ostrzeżnie + Ostrzeżnie - Joystick enabled but not configured correctly - Joystick uaktywniony ale nieprawidłowo skonfigurowany + Joystick uaktywniony ale nieprawidłowo skonfigurowany - Cannot open joystick, joystick disabled - Nie mogę otworzyć joysticka, dezaktywowany + Nie mogę otworzyć joysticka, dezaktywowany - Firmware %1 error: %2 - Firmware %1 błąd: %2 + Firmware %1 błąd: %2 - - Flight mode: %1(%2) - - Tryb lotu: %1(%2) + - Tryb lotu: %1(%2) - Simulating Tx (%1) - Symulacja Tx (%1) + Symulacja Tx (%1) - Simulating - Symulacja + Symulacja splashLibrary - - + + ... - + Splash Library - page %1 of %2 Biblioteka obrazków - strona %1 z %2 - + Warning Ostrzeżenie - + Invalid image in library %1 Nieprawidłowy obrazek w bibliotece %1 - + Information Informacja - + No valid image found in library, check your settings Nie znaleziono prawodłowego obrazka w biblitece, sprawdź ustawienia @@ -11321,428 +11454,272 @@ Mode 4: xsimulatorDialog - - - - SF - - - - - - SE - - - - - - SA - - - - - - SB - - - - - - - Right Double Click to Reset - Podwójne klikniecie RP myszy w celu zresetowania + Podwójne klikniecie RP myszy w celu zresetowania - - - - - TextLabel - - - - - Hold X - Przytrzymaj X + Przytrzymaj X - - Fix X - Zablokuj X + Zablokuj X - - Fix Y - Zablokuj Y + Zablokuj Y - - Hold Y - Przytrzymaj Y + Przytrzymaj Y - - - SH - - - - - - SG - - - - - - SD - - - - - - SC - - - - - S2 - Poten 2 + Poten 2 - - RS - P suwak + P suwak - - S1 - Poten 1 + Poten 1 - - LS - L suwak + L suwak - Outputs - Wyjścia + Wyjścia - CH1 - Kanał 01 + Kanał 01 - Taranis Simulator - Symulator Taranis + Symulator Taranis - Companion Simulator - Symulator Companion + Symulator Companion - - - - - - - - - - - - - - - - - -100.1 - - - - CH9 - Kanał 09 + Kanał 09 - CH2 - Kanał 02 + Kanał 02 - CH10 - Kanał 10 + Kanał 10 - CH3 - Kanał 03 + Kanał 03 - CH11 - Kanał 11 + Kanał 11 - CH4 - Kanał 04 + Kanał 04 - CH12 - Kanał 12 + Kanał 12 - CH5 - Kanał 05 + Kanał 05 - CH13 - Kanał 13 + Kanał 13 - CH6 - Kanał 06 + Kanał 06 - CH14 - Kanał 14 + Kanał 14 - CH7 - Kanał 07 + Kanał 07 - CH15 - Kanał 15 + Kanał 15 - CH8 - Kanał 08 + Kanał 08 - CH16 - Kanał 16 + Kanał 16 - LSK - PLK + PLK - LSC - PLC + PLC - LSD - PLD + PLD - LS7 - PL7 + PL7 - LSL - PLL + PLL - LSB - PLB + PLB - LS1 - PL1 + PL1 - LSH - PLH + PLH - LSG - PLG + PLG - LSE - PLE + PLE - LSF - PLF + PLF - LS8 - PL8 + PL8 - LS9 - PL9 + PL9 - LSA - PLA + PLA - LSM - PLM, + PLM, - LSJ - PLJ + PLJ - LSI - PLI + PLI - LS4 - PL4 + PL4 - LS5 - PL5 + PL5 - LS2 - PL2 + PL2 - LS3 - PL3 + PL3 - LS6 - PL6 + PL6 - LSN - PLN + PLN - LSO - PLO + PLO - LSP - PLP + PLP - LSQ - PLQ + PLQ - LSR - PLR + PLR - LSS - PLS + PLS - LST - PLT + PLT - LSU - PLU + PLU - LSV - PLV + PLV - LSW - PLW + PLW - - Warning - Osrzeżenie + Osrzeżenie - Joystick enabled but not configured correctly - Joystick aktywny ale nie skonfogurowany prawidłowo + Joystick aktywny ale nie skonfogurowany prawidłowo - Cannot open joystick, joystick disabled - Nie mogę otworzyć joystika, Joystik wyłaczony + Nie mogę otworzyć joystika, Joystik wyłaczony - Firmware %1 error: %2 - Firmware %1 bład: %2 + Firmware %1 bład: %2 - - Flight mode: %1(%2) - - Tryb lotu: %1(%2) + - Tryb lotu: %1(%2) - Simulating Tx (%1) - Symulacja Tx (%1) + Symulacja Tx (%1) - Simulating - Symulacja + Symulacja From 7ebd371ab6a4573f003f09d8f6b295bee6d7d9b0 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 22 Feb 2014 10:32:12 +0100 Subject: [PATCH 10/33] Issue #731 fixed (companion Inputs import bug) --- companion/src/firmwares/opentx/opentxeeprom.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index 92b5c4b3e..37f148900 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -896,7 +896,12 @@ class ExpoField: public TransformedField { virtual void afterImport() { - expo.weight = smallGvarToC9x(_weight); + if (IS_TARANIS(board) && version < 216) { + expo.srcRaw = RawSource(SOURCE_TYPE_STICK, expo.chn); + } + + expo.weight = smallGvarToC9x(_weight); + if (!IS_TARANIS(board) || version < 216) { if (!_curveMode) expo.curve = CurveReference(CurveReference::CURVE_REF_EXPO, smallGvarToC9x(_curveParam)); From 3333d68fd806fbee9e6c48d47afc6457aea9c773 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 22 Feb 2014 10:35:45 +0100 Subject: [PATCH 11/33] Inputs alignement fixed in Companion --- companion/src/modeledit/inputs.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/companion/src/modeledit/inputs.cpp b/companion/src/modeledit/inputs.cpp index 870ab81b7..c140585ee 100644 --- a/companion/src/modeledit/inputs.cpp +++ b/companion/src/modeledit/inputs.cpp @@ -83,7 +83,10 @@ void InputsPanel::update() curDest = md->chn; } else { - str = " "; + if (GetEepromInterface()->getCapability(VirtualInputs)) + str = " "; + else + str = " "; } if (GetEepromInterface()->getCapability(VirtualInputs)) { From fdb0e006857217aee1c78031304f447bbbb70deb Mon Sep 17 00:00:00 2001 From: Jacek Drewniak Date: Sat, 22 Feb 2014 11:06:47 +0100 Subject: [PATCH 12/33] comapnion translation fixes --- companion/src/translations/companion_pl.ts | 1219 ++------------------ 1 file changed, 74 insertions(+), 1145 deletions(-) diff --git a/companion/src/translations/companion_pl.ts b/companion/src/translations/companion_pl.ts index 79b5906f8..1715ded6f 100644 --- a/companion/src/translations/companion_pl.ts +++ b/companion/src/translations/companion_pl.ts @@ -1841,25 +1841,25 @@ Jesteś pewien ? InputsPanel - + Move Up W górę - + Ctrl+Up Ctrl+Up - + Move Down W dół - + Ctrl+Down Ctrl+Down @@ -1869,112 +1869,112 @@ Jesteś pewien ? Wyczyść wszytkie ustawienia - + Source(%1) Źródło(%1) - + No Trim Bez trymera - + Weight(%1) Waga(%1) - + Switch(%1) Przełącznik(%1) - + Not enough available inputs! Za mało dostępnych wejść! - + Delete Selected Inputs? Skasować Wybrane Wejścia? - + &Add &Dodaj - + Ctrl+A Ctrl+A - + &Edit &Edycja - + Enter Enter - + &Delete &Wykasuj - + Delete Wykasuj - + &Copy &Kopiuj - + Ctrl+C Ctrl+C - + &Cut &Wytnij - + Ctrl+X Ctrl+X - + &Paste &Wklej - + Ctrl+V Ctrl+V - + Du&plicate &Zduplikuj - + Ctrl+U Ctrl+U - + Clear Inputs? Wyczyść Wejścia? - + Really clear all the inputs? Czy na pewno wyczyścić wszystkie wejścia? @@ -2309,32 +2309,16 @@ Chcesz pobrać teraz? OpenTX Companion - FW: %1 - Profile: %2 OpenTX Companion - FW: %1 - Profil: %2 - - &Setting... - &Ustawienia... - Edit Settings Edycja Ustawień - - &Downloads... - &Pobieranie... - Download firmware and voice files Pobierz firmware i pliki dźwiękowe - - Configure transmitter start screen... - Ustawienia ekranu startowego radia... - - - &Configure connection software... - &Ustawienia oprogramowania łączącego... - New Profile @@ -2345,14 +2329,6 @@ Chcesz pobrać teraz? Create a new Radio Setting Profile Utwórz nowy Profil Ustawień Radia - - Classic - Klasyczna - - - The multicolor classical Companion icon theme - Wielokolorowy klasyczny wygląd ikon Companion - A monochrome black icon theme @@ -2408,14 +2384,6 @@ Chcesz pobrać teraz? Huge Olbrzymie - - System default language - Podstawowy język systemu - - - Use system default language in menus - Użyj podstawowego języka systemu w menu - Czech @@ -2449,12 +2417,12 @@ Chcesz pobrać teraz? Finnish - + Fiński Use Finnish in menus - + Użyj Fińskiego w menu @@ -2641,23 +2609,11 @@ Chcesz pobrać teraz? Set Icon Size Ustaw wielkość ikon - - &Settings - &Ustawienia - Radio Settings Profiles Profile Ustawień Radia - - Companion - Models and Settings Editor - %1 - profile %2 - Companion - Edytor Modeli i Ustawień - %1 - profil %2 - - - Companion - Models and Settings Editor - %1 - Companion - Edytor Modeli i Ustawień - %1 - A new version of Companion is available (version %1)<br>Would you like to download it? @@ -2846,98 +2802,42 @@ Czy mimo wszystko zapisać? About Companion O aplikacji Companion - - &New - &Nowy - Create a new file Utwórz nowy plik - - &Open... - &Otwórz... - Open an existing file Otwórz istniejący plik - - &loadBackup... - &Załaduj backup... - Load backup from file Załaduj backup z pliku - - &Save - &Zapisz - Save the document to disk Zapisz dokument na dysku - - Save &As... - Zapisz j&ako... - - - Save the document under a new name - Zapisz dokument pod nową nazwą - - - Lo&gs - Lo&gi - Open log file Otwórz plik logów - - &Downloads and Profiles... - &Pobrania i profile... - - - Firmware and voice file downloads as well as profile definition. - Pobrania plików Firmware i głosów jak również definicje profili. - - - &Check for updates... - &Sprawdź aktualizacje... - - - Check for new version of Companion - Sprawdź nową wersję Companion - - - Show Companion contributors list - Pokaz listę twórców Companion - Show Companion changelog Zobacz zmiany w Companion - - &Write Models and Settings To Tx - &Zapisz Modele i Ustawienia do radia - Write Models and Settings to transmitter Zapisz Modele i Ustawienia do radia - - &Read Models and Settings From Tx - &Wczytaj Modele i Ustawienia z radia - Read Models and Settings from transmitter @@ -2998,10 +2898,6 @@ Czy mimo wszystko zapisać? Paste clipboard into current selection Wytnij zaznaczenie do schowka - - The new Companion 2 icon theme - Nowy zestaw ikon Companion 2 - Monochrome @@ -3042,10 +2938,6 @@ Czy mimo wszystko zapisać? Write Models and Settings from file to transmitter Zapisz Modele i Ustawienia z pliku do radia - - Save transmitter Models and Settings to file - Zapisz Modele i Ustawienia do pliku - Save the Models and Settings from the transmitter to a file @@ -3059,12 +2951,12 @@ Czy mimo wszystko zapisać? Yerico - + Yellow round honey sweet icon theme - + Żółty zaokrąglony miodiowy motyw ikon @@ -3076,10 +2968,6 @@ Czy mimo wszystko zapisać? Configure software for reading from and writing to the transmitter Ustawienia oprogramowania do odczytu i zapisu radia - - &Read/Write - &Odczyt/Zapis - Write @@ -3096,26 +2984,6 @@ Czy mimo wszystko zapisać? Invalid binary Models and Settings File %1 Błędny binarny plik %1 Modeli i Ustawień - - Contributors &List... - &Lista twórców... - - - &Old Preferences Dialog... - &Stary ekran preferencji... - - - Used the old Preferences Dialog - Użyty stary ekran preferencji - - - &Application Preferences... - Preferencje &Aplikacji... - - - Edit application preferences - Edycja preferencji aplikacji - ChangeLog... @@ -3141,81 +3009,21 @@ Czy mimo wszystko zapisać? Compare models Porównaj modele - - Customize the splash screen of your TX - Personalizuj obrazek na swoim radiu - - - E&xit - Za&kończ - Exit the application Zakończ aplikację companion9x - - Cu&t - &Wytnij - - - Cut the current selection's contents to the clipboard - Wytnij zaznaczenie do schowka - - - &Copy - &Kopiuj - - - Copy the current selection's contents to the clipboard - Kopiuj zaznaczenie do schowka - - - &Paste - &Wklej - - - Paste the clipboard's contents into the current selection - Wklej zawartość schowka na aktualnej pozycji - - - &List programmers - &Lista programatorów - List available programmers Lista dostępnych programatorów - - &Fuses... - Ustawienia &mikro-kontrolera... - Show fuses dialog Pokaż okno ustawień mikro-kontrolera - - &Simulate - &Symulator - - - Simulate selected model. - Symulacja wybranego modelu. - - - &Print - &Drukuj - - - Print current model. - Wydrukuj aktualny model. - - - &About - &O aplikacji - Show the application's About box @@ -3236,37 +3044,17 @@ Czy mimo wszystko zapisać? New Nowy - - The Companion 2.0 colored icon theme - Kolowy zestaw ikon Companion 2.0 - Recent Files Poprzednie pliki - - Firmware Profiles - Profile firmware - Set Menu Language Ustaw język menu - - &File - &Plik - - - &Edit - &Edycja - - - &Help - &Pomoc - @@ -3318,7 +3106,7 @@ Czy mimo wszystko zapisać? &%1: %2 - + &%1: %2 @@ -5441,7 +5229,7 @@ p, li { white-space: pre-wrap; } Finnish - + Fiński @@ -6117,26 +5905,26 @@ p, li { white-space: pre-wrap; } Równoległe użycie expo i krzywych nie jest dłużej wspierane - + openTx only accepts %1 points in all curves openTx dopuszcza tylko %1 punktów dla wszystkich krzywych - - - - + + + + OpenTX on this board doesn't accept this function OpenTX na tej platformie nie dopuszcza tej funkcji - - + + OpenTX doesn't accept this protocol OpenTX nie obsługuje tego protokołu - + OpenTX doesn't allow this number of channels OpenTX nie obsługuje tej ilości kanałów @@ -6226,10 +6014,6 @@ Zespół OpenTX/Companion. Throttle Source Źródło gazu - - Switch startup Warning - Ostrzeżenie o przełącznikach przy uruchomieniu - Center beep @@ -6240,19 +6024,11 @@ Zespół OpenTX/Companion. Trim Increment Kroki trymera - - ON - Włącz - OFF Wyłącz - - Check - Sprawdzenie - Model Image @@ -6350,27 +6126,27 @@ Wolne obroty będą na górze, trymer i ostrzeżenie o otwartym gazie również Warning - + Ostrzeżenie Joystick enabled but not configured correctly - + Joystick uaktywniony ale nieprawidłowo skonfigurowany Cannot open joystick, joystick disabled - + Nie mogę otworzyć joysticka, dezaktywowany Simulating Tx (%1) - Symulacja Tx (%1) + Symulacja Tx (%1) Firmware %1 error: %2 - + Firmware %1 błąd: %2 @@ -6378,7 +6154,7 @@ Wolne obroty będą na górze, trymer i ostrzeżenie o otwartym gazie również Companion Simulator - Symulator Companion + Symulator Companion @@ -6386,51 +6162,51 @@ Wolne obroty będą na górze, trymer i ostrzeżenie o otwartym gazie również Right Double Click to Reset - + Powójne kliknięcie PPM w celu zresetowania THR - + Gaz RUD - SK + SK ELE - SW + SW AIL - + Lotki Hold X - Przytrzymaj X + Przytrzymaj X Fix X - Zablokuj X + Zablokuj X Fix Y - Zablokuj Y + Zablokuj Y Hold Y - + Przytrzymaj Y @@ -6438,7 +6214,7 @@ Wolne obroty będą na górze, trymer i ostrzeżenie o otwartym gazie również TextLabel - + Etykieta @@ -6468,39 +6244,39 @@ Wolne obroty będą na górze, trymer i ostrzeżenie o otwartym gazie również BEEP - Zvuk + Dźwięk P1 - Potencjometr1 + Potencjometr1 0 % - + P2 - Potencjometr2 + Potencjometr2 P3 - + Potencjometr 3 9x Simulator - Symulator 9x + Symulator 9x Outputs - Wyjścia + Wyjścia @@ -6508,31 +6284,31 @@ Wolne obroty będą na górze, trymer i ostrzeżenie o otwartym gazie również Companion Simulator - Symulator Companion + Symulator Companion Hold Y - + Przytrzymaj Y Fix Y - Zablokuj Y + Zablokuj Y Fix X - Zablokuj X + Zablokuj X Hold X - Przytrzymaj X + Przytrzymaj X @@ -6552,13 +6328,13 @@ Wolne obroty będą na górze, trymer i ostrzeżenie o otwartym gazie również Right Double Click to Reset - + Powójne kliknięcie PPM w celu zresetowania S2 - Poten 2 + @@ -6584,7 +6360,7 @@ Wolne obroty będą na górze, trymer i ostrzeżenie o otwartym gazie również TextLabel - + Etykieta @@ -6626,12 +6402,12 @@ Wolne obroty będą na górze, trymer i ostrzeżenie o otwartym gazie również Taranis Simulator - Symulator Taranis + Symulator Taranis Outputs - Wyjścia + Wyjścia @@ -7096,10 +6872,6 @@ Wolne obroty będą na górze, trymer i ostrzeżenie o otwartym gazie również appPreferencesDialog - - Application Preferences - Preferencje Aplikacji - Simulator capture folder @@ -7521,14 +7293,6 @@ To ustawienie jest używane przez szablony, określa jakie wyjście przypisane j The default profile can not be removed. Podstawowy profil nie moze być usunięty. - - Error - Błąd - - - Cannot load %1. - Nie mogę załadować %1. - Open Image to load @@ -8174,7 +7938,7 @@ m2560 dla platformy V4 Compare Models - + Porównaj modele @@ -8842,10 +8606,6 @@ m2560 dla platformy V4 Failed to write image to %1 Nieudany zapis obrazka do %1 - - Could not find bitmap to replace in file - Nie mogę znaleźć bitmapy w celu zastąpienia pliku - Open Image to load @@ -8856,18 +8616,6 @@ m2560 dla platformy V4 Images (%1) Obrazki (%1) - - Cannot load %1. - Nie mogę wczytać %1. - - - Could not store image in firmware file %1 - Nie mogę zapamiętać obrazka w pliku firmware %1 - - - The image file %1 could not be stored - Nie mogę zapamiętać pliku %1 - downloadDialog @@ -9093,60 +8841,16 @@ May be different from firmware language Ustaw język komuniaktów głosowych (). Moze być inny od języka firmware - - SD Structure path - Struktura karty SD - Processor ID ID procesora - - Default Stick Mode - Bazowy mod drążków - - - Channel Order - Kolejność kanałów - - - Mode 1 (RUD ELE THR AIL) - Mod 1 (SK.SW.Gaz.Lot) - - - Mode 2 (RUD THR ELE AIL) - Mod 2 (SK.Gaz.SW.Lot) - - - Mode 4 (AIL THR ELE RUD) - Mod 4 (Lot.Gaz.SW.SK) - Options Opcje - - Channel order - -This is used by the templated to determine which channel goes to what number output. - Kolejność kanałów - -To ustawienie jest używane przez szablony, określa jakie wyjście przypisane jest do kanału. - - - Open Folder - Otwórz katalog - - - Offer to write FW to Tx after download - Zaproponuj zapisanie FirmWare do radia po pobraniu - - - Save Profile - Zapisz profil - Menu Language @@ -9162,136 +8866,16 @@ To ustawienie jest używane przez szablony, określa jakie wyjście przypisane j Firmware Type TYp Firmware - - Append version number to FW file name - Dodaj numer Firmware do nazwy pliku - Download Voice Pobierz Głos - - Downloads and Profiles - Pobrania i profile - FwInfo Informacje o Firmware - - R E T A - K W G L - - - R E A T - K W L G - - - R T E A - K W G L - - - R T A E - K G L W - - - R A E T - K W L G - - - R A T E - K G L W - - - E R T A - W K G L - - - E R A T - W K L G - - - E T R A - W G K L - - - E T A R - W G L K - - - E A R T - W L K G - - - E A T R - W L G K - - - T R E A - G K W L - - - T R A E - G K L W - - - T E R A - G W K L - - - T E A R - G W L K - - - T A R E - G L K W - - - T A E R - G L W K - - - A R E T - L K W G - - - A R T E - L R G W - - - A E R T - L W K G - - - A E T R - L W G K - - - A T R E - L G K W - - - A T E R - L G W K - - - Profile - Profile - - - Open Image - Otwórz obrazek - - - Splash Screen - Ekran startowy - - - Clear Image - Wyczyść obrazek - Download FW @@ -9317,30 +8901,6 @@ To ustawienie jest używane przez szablony, określa jakie wyjście przypisane j The selected firmware cannot be downloaded by Companion. Companion nie moze pobrac wybranego firmware. - - Select the folder replicating your SD structure - Wybierz folder do zreplikowania struktury Twojej karty SD - - - Profile name is empty, profile slot %1 will be deleted.<br>Are you sure ? - Nazwa profilu jest pusta, slot %1 będzie skasowany.<br>Jesteś pewien ? - - - Open Image to load - Otwórz obrazek do załadowania - - - Images (%1) - Obrazki (%1) - - - Error - Błąd - - - Cannot load %1. - Nie mogę załadować %1. - joystickDialog @@ -10607,79 +10167,6 @@ Mode 4: Use clipboard only Użycie schowka do kopiowania - - Last downloaded release: %1 - Ostatnie pobrane wydanie: %1 - - - Image stored in settings - Logo zapamietane w ustawieniach - - - No joysticks found - Brak oysticka - - - Select the folder replicating your SD structure - Wybierz folder do zreplikowania struktury Twojej karty SD - - - Profile name is empty, profile slot %1 will be deleted.<br>Are you sure ? - Nazwa profilu jest pusta, slot %1 będzie skasowany.<br>Jesteś pewien ? - - - Select your library folder - Support for SD memory card - Wybierz katalog bibliteki - - - Select your snapshot folder - Katalog obrazków dla symulatora - - - The selected firmware has never been downloaded by Companion. - Wybrany firmware nie został nigdy pobrany przez Companion. - - - The selected firmware cannot be downloaded by Companion. - Companion nie moze pobrac wybranego firmware. - - - Select your Models and Settings backup folder - Wybierz folder do backupowania Modeli i Ustawień - - - Select Google Earth executable - Wybierz wykonywalny plik Google Earth - - - Error - Błąd - - - Cannot load %1. - nie mogę wczytać %1. - - - Export profile As - Wyeksportuj profil jako - - - Profile slot is not empty, profile slot %1 will we overwritten.<br>Are you sure ? - Slot profilu nie jest pusty, slot %1 zostanie zapisany.<br>Jesteś pewien ? - - - Open Profile to import - Otworzyć PRofil do zaimportowania - - - Open Image to load - Otworzyć obrazek - - - Images (%1) - Obrazki (%1) - printDialog @@ -11130,293 +10617,6 @@ Mode 4: Wybierz docelowy plik PDF - - simulatorDialog - - Right Double Click to Reset - Powójne kliknięcie RP myszy w celu zresetowania - - - THR - Gaz - - - RUD - SK - - - ELE - SW - - - AIL - Lot - - - Hold X - Przytrzymaj X - - - Fix X - Zablokuj X - - - Fix Y - Zablokuj Y - - - Hold Y - Zablokuj Y - - - P1 - Potencjometr1 - - - P2 - Potencjometr2 - - - P3 - Potencjometr3 - - - 9x Simulator - Symulator 9x - - - Outputs - Wyjścia - - - LS1 - PL1 - - - LS2 - PL2 - - - LS3 - PL3 - - - LS4 - PL4 - - - LS5 - PL5 - - - LS6 - PL6 - - - LS7 - PL7 - - - LS8 - PL8 - - - LS9 - PL9 - - - LSA - PLA - - - LSB - PLB - - - LSC - PLC - - - LSD - PLD - - - LSE - PLE - - - LSF - PLF - - - LSG - PLG - - - LSH - PLH - - - LSI - PLI - - - LSJ - PLJ - - - LSK - PLK - - - LSL - PLL - - - LSM - PLM, - - - LSN - PLN - - - LSO - PLO - - - LSP - PLP - - - LSQ - PLQ - - - LSR - PLR - - - LSS - PLS - - - LST - PLT - - - LSU - PLU - - - LSV - PLV - - - LSW - PLW - - - BEEP - Zvuk - - - Companion Simulator - Symulator Companion - - - CH1 - Kanał 01 - - - CH9 - Kanał 09 - - - CH2 - Kanał 02 - - - CH10 - Kanał 10 - - - CH3 - Kanał 03 - - - CH11 - Kanał 11 - - - CH4 - Kanał 04 - - - CH12 - Kanał 12 - - - CH5 - Kanał 05 - - - CH13 - Kanał 13 - - - CH6 - Kanał 06 - - - CH14 - Kanał 14 - - - CH7 - Kanał 07 - - - CH15 - Kanał 15 - - - CH8 - Kanał 08 - - - CH16 - Kanał 16 - - - Warning - Ostrzeżnie - - - Joystick enabled but not configured correctly - Joystick uaktywniony ale nieprawidłowo skonfigurowany - - - Cannot open joystick, joystick disabled - Nie mogę otworzyć joysticka, dezaktywowany - - - Firmware %1 error: %2 - Firmware %1 błąd: %2 - - - - Flight mode: %1(%2) - - Tryb lotu: %1(%2) - - - Simulating Tx (%1) - Symulacja Tx (%1) - - - Simulating - Symulacja - - splashLibrary @@ -11451,275 +10651,4 @@ Mode 4: Nie znaleziono prawodłowego obrazka w biblitece, sprawdź ustawienia - - xsimulatorDialog - - Right Double Click to Reset - Podwójne klikniecie RP myszy w celu zresetowania - - - Hold X - Przytrzymaj X - - - Fix X - Zablokuj X - - - Fix Y - Zablokuj Y - - - Hold Y - Przytrzymaj Y - - - S2 - Poten 2 - - - RS - P suwak - - - S1 - Poten 1 - - - LS - L suwak - - - Outputs - Wyjścia - - - CH1 - Kanał 01 - - - Taranis Simulator - Symulator Taranis - - - Companion Simulator - Symulator Companion - - - CH9 - Kanał 09 - - - CH2 - Kanał 02 - - - CH10 - Kanał 10 - - - CH3 - Kanał 03 - - - CH11 - Kanał 11 - - - CH4 - Kanał 04 - - - CH12 - Kanał 12 - - - CH5 - Kanał 05 - - - CH13 - Kanał 13 - - - CH6 - Kanał 06 - - - CH14 - Kanał 14 - - - CH7 - Kanał 07 - - - CH15 - Kanał 15 - - - CH8 - Kanał 08 - - - CH16 - Kanał 16 - - - LSK - PLK - - - LSC - PLC - - - LSD - PLD - - - LS7 - PL7 - - - LSL - PLL - - - LSB - PLB - - - LS1 - PL1 - - - LSH - PLH - - - LSG - PLG - - - LSE - PLE - - - LSF - PLF - - - LS8 - PL8 - - - LS9 - PL9 - - - LSA - PLA - - - LSM - PLM, - - - LSJ - PLJ - - - LSI - PLI - - - LS4 - PL4 - - - LS5 - PL5 - - - LS2 - PL2 - - - LS3 - PL3 - - - LS6 - PL6 - - - LSN - PLN - - - LSO - PLO - - - LSP - PLP - - - LSQ - PLQ - - - LSR - PLR - - - LSS - PLS - - - LST - PLT - - - LSU - PLU - - - LSV - PLV - - - LSW - PLW - - - Warning - Osrzeżenie - - - Joystick enabled but not configured correctly - Joystick aktywny ale nie skonfogurowany prawidłowo - - - Cannot open joystick, joystick disabled - Nie mogę otworzyć joystika, Joystik wyłaczony - - - Firmware %1 error: %2 - Firmware %1 bład: %2 - - - - Flight mode: %1(%2) - - Tryb lotu: %1(%2) - - - Simulating Tx (%1) - Symulacja Tx (%1) - - - Simulating - Symulacja - - From 5337158911d50de8da0b0e2544b4815b3d3d36c2 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 22 Feb 2014 12:32:28 +0100 Subject: [PATCH 13/33] Core in Custom Functions Panel --- companion/src/modeledit/customfunctions.cpp | 30 +++++++++++---------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/companion/src/modeledit/customfunctions.cpp b/companion/src/modeledit/customfunctions.cpp index c9ba53ba5..b1805df46 100644 --- a/companion/src/modeledit/customfunctions.cpp +++ b/companion/src/modeledit/customfunctions.cpp @@ -162,7 +162,8 @@ CustomFunctionsPanel::CustomFunctionsPanel(QWidget * parent, ModelData & model, #ifdef PHONON playBT[i] = new QPushButton(this); - playBT[i]->setObjectName(QString("play_%1").arg(i)); + playBT[i]->setProperty("index", i); + playBT[i]->setProperty("state", "play"); playBT[i]->setIcon(CompanionIcon("play.png")); paramLayout->addWidget(playBT[i]); connect(playBT[i], SIGNAL(pressed()), this, SLOT(playMusic())); @@ -222,42 +223,43 @@ void CustomFunctionsPanel::mediaPlayer_state(Phonon::State newState, Phonon::Sta void CustomFunctionsPanel::playMusic() { - QPushButton *playButton = qobject_cast(sender()); - int index=playButton->objectName().mid(5,2).toInt(); - QString function=playButton->objectName().left(4); - QString path = g.profile[g.id()].sdPath(); + QPushButton * button = qobject_cast(sender()); + int index = button->property("index").toInt(); + QString function = button->property("state").toString(); + QString path = g.profile[g.id()].sdPath(); QDir qd(path); QString track; if (qd.exists()) { if (GetEepromInterface()->getCapability(VoicesAsNumbers)) { - track=path+QString("/%1.wav").arg(int(fswtchParam[index]->value()),4,10,(const QChar)'0'); + track = path + QString("/%1.wav").arg(int(fswtchParam[index]->value()), 4, 10, (const QChar)'0'); } else { path.append("/SOUNDS/"); QString lang = generalSettings.ttsLanguage; if (lang.isEmpty()) - lang="en"; + lang = "en"; path.append(lang); - if (fswtchParamArmT[index]->currentText()!="----") { - track=path+"/"+fswtchParamArmT[index]->currentText()+".wav"; + if (fswtchParamArmT[index]->currentText() != "----") { + track = path + "/" + fswtchParamArmT[index]->currentText() + ".wav"; } } QFile file(track); if (!file.exists()) { QMessageBox::critical(this, tr("Error"), tr("Unable to find sound file %1!").arg(track)); - track.clear(); + return; } #ifdef PHONON - if (function=="play" && !track.isEmpty()) { + if (function=="play") { clickObject->clear(); clickObject->setCurrentSource(Phonon::MediaSource(track)); clickObject->play(); - playBT[index]->setObjectName(QString("stop_%1").arg(index)); + playBT[index]->setProperty("state", "stop"); playBT[index]->setIcon(CompanionIcon("stop.png")); - } else { + } + else { clickObject->stop(); clickObject->clear(); - playBT[index]->setObjectName(QString("play_%1").arg(index)); + playBT[index]->setProperty("state", "play"); playBT[index]->setIcon(CompanionIcon("play.png")); } #endif From 7cf94ec204b0dc435c0500f48074b12622a77366 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 22 Feb 2014 13:15:10 +0100 Subject: [PATCH 14/33] Should fix Issue #732. Not reproduced, not tested --- companion/src/mdichild.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/companion/src/mdichild.cpp b/companion/src/mdichild.cpp index cd8b49286..56c457d81 100644 --- a/companion/src/mdichild.cpp +++ b/companion/src/mdichild.cpp @@ -521,12 +521,14 @@ void MdiChild::writeEeprom() // write to Tx if (path.isEmpty()) { QMessageBox::warning(this, tr("Taranis radio not found"), tr("Impossible to identify the radio on your system, please verify the eeprom disk is connected.")); return; - } else { + } + else { QStringList str; str << path << backupFile; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Backup EEPROM From Tx")); //, AVR_DIALOG_KEEP_OPEN); ad->setWindowIcon(CompanionIcon("read_eeprom.png")); ad->exec(); + delete ad; sleep(1); } } @@ -549,10 +551,9 @@ void MdiChild::writeEeprom() // write to Tx sleep(1); QString restoreFile = tempDir + "/compat.bin"; if (!((MainWindow *)this->parent())->convertEEPROM(tempFile, restoreFile, tempFlash)) { - int ret = QMessageBox::question(this, "Error", tr("Cannot check eeprom compatibility! Continue anyway?") , - QMessageBox::Yes | QMessageBox::No); - if (ret==QMessageBox::No) - return; + int ret = QMessageBox::question(this, tr("Error"), tr("Cannot check eeprom compatibility! Continue anyway?"), QMessageBox::Yes | QMessageBox::No); + if (ret == QMessageBox::No) + return; } else { int rev=((MainWindow *)this->parent())->getEpromVersion(restoreFile); @@ -591,6 +592,7 @@ void MdiChild::writeEeprom() // write to Tx } } } + if (IS_TARANIS(eepromInterface->getBoard())) { QString path=((MainWindow *)this->parent())->FindTaranisPath(); if (path.isEmpty()) { @@ -602,7 +604,7 @@ void MdiChild::writeEeprom() // write to Tx str << tempFile << path; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Write EEPROM To Tx"), AVR_DIALOG_SHOW_DONE); //, AVR_DIALOG_KEEP_OPEN); ad->setWindowIcon(CompanionIcon("read_eeprom.png")); - ad->show(); + ad->exec(); delete ad; sleep(1); } @@ -611,7 +613,7 @@ void MdiChild::writeEeprom() // write to Tx QStringList str = ((MainWindow *)this->parent())->GetSendEEpromCommand(tempFile); avrOutputDialog *ad = new avrOutputDialog(this, ((MainWindow *)this->parent())->GetAvrdudeLocation(), str, "Write EEPROM To Tx", AVR_DIALOG_SHOW_DONE); ad->setWindowIcon(CompanionIcon("write_eeprom.png")); - ad->show(); + ad->exec(); delete ad; } } From da277536b7a46969cef4c9a93b8a26cb54dc8bae Mon Sep 17 00:00:00 2001 From: openfsguruh Date: Sat, 22 Feb 2014 14:47:36 +0100 Subject: [PATCH 15/33] For All: - GV1_XXX constants are now in myeeprom.h to be close to the mixer defines (they need to match to the defined types, e.g. needs to have enough bits) For Stock: - bugfix gvars not working for weight for stock transmitter For ARM based Transmitter: - limits offset now to 490 (instead of 4085) - limits for weight and offset can be easily changed in myeeprom.h, with defines #define GV_RANGE_WEIGHT 500 #define GV_RANGE_OFFSET 490 (be sure they are not bigger than something about 4000) No code cost --- radio/src/gui/menu_model.cpp | 4 ++-- radio/src/myeeprom.h | 16 ++++++++++++++++ radio/src/opentx.h | 19 +++++++++++++++---- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/radio/src/gui/menu_model.cpp b/radio/src/gui/menu_model.cpp index 6d4600afe..d1dd68a46 100644 --- a/radio/src/gui/menu_model.cpp +++ b/radio/src/gui/menu_model.cpp @@ -3077,7 +3077,7 @@ void gvarWeightItem(xcoord_t x, uint8_t y, MixData *md, uint8_t attr, uint8_t ev { u_int8int16_t weight; MD_WEIGHT_TO_UNION(md, weight); - weight.word = GVAR_MENU_ITEM(x, y, weight.word, -500, 500, attr, 0, event); + weight.word = GVAR_MENU_ITEM(x, y, weight.word, GV_RANGELARGE_WEIGHT_NEG, GV_RANGELARGE_WEIGHT, attr, 0, event); MD_UNION_TO_WEIGHT(weight, md); } @@ -3155,7 +3155,7 @@ void menuModelMixOne(uint8_t event) lcd_putsColumnLeft(COLUMN_X, y, NO_INDENT(STR_OFFSET)); u_int8int16_t offset; MD_OFFSET_TO_UNION(md2, offset); - offset.word = GVAR_MENU_ITEM(COLUMN_X+MIXES_2ND_COLUMN, y, offset.word, GV_RANGELARGE_NEG, GV_RANGELARGE, attr|LEFT, 0, event); + offset.word = GVAR_MENU_ITEM(COLUMN_X+MIXES_2ND_COLUMN, y, offset.word, GV_RANGELARGE_OFFSET_NEG, GV_RANGELARGE_OFFSET, attr|LEFT, 0, event); MD_UNION_TO_OFFSET(offset, md2); break; } diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index fed0158f4..d177287b9 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -519,6 +519,16 @@ PACK(typedef struct t_LimitData { #define MLTPX_REP 2 #if defined(CPUARM) +// highest bit used for small values in mix 128 --> 8 bit is enough +#define GV1_SMALL 128 +// highest bit used for large values in mix 4096 --> 12 bits is used (type for weight and offset has even 16 bits) +#define GV1_LARGE 4096 +// the define GV1_LARGE marks the highest bit value used for this variables +// because this would give too big numbers for ARM, we limit it further for offset and weight +// must be smaller than GV1_LARGE - RESERVE_RANGE_FOR_GVARS -1 +#define GV_RANGE_WEIGHT 500 +#define GV_RANGE_OFFSET 490 + #define DELAY_STEP 10 #define SLOW_STEP 10 #define DELAY_MAX (25*DELAY_STEP) /* 25 seconds */ @@ -584,6 +594,12 @@ PACK( union u_int8int16_t { // #define MD_SETOFFSET(md, val) md->offset = val #else + +// highest bit used for small values in mix 128 --> 8 bit is enough +#define GV1_SMALL 128 +// highest bit used for large values in mix 256 --> 9 bits is used (8 bits + 1 extra bit from weightMode/offsetMode) +#define GV1_LARGE 256 + #define DELAY_STEP 2 #define SLOW_STEP 2 #define DELAY_MAX 15 /* 7.5 seconds */ diff --git a/radio/src/opentx.h b/radio/src/opentx.h index ee6c75ecd..87bbf18e9 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -906,13 +906,9 @@ void setTrimValue(uint8_t phase, uint8_t idx, int trim); #endif #if defined(CPUARM) - #define GV1_SMALL 128 - #define GV1_LARGE 4096 #define GV_GET_GV1_VALUE(max) ( (max<=GV_RANGESMALL && min>=GV_RANGESMALL_NEG) ? GV1_SMALL : GV1_LARGE ) #define GV_INDEX_CALCULATION(x,max) ( (max<=GV_RANGESMALL && min>=GV_RANGESMALL_NEG) ? (uint8_t) x-GV1_SMALL : ((x&(GV1_LARGE*2-1))-GV1_LARGE) ) #else - #define GV1_SMALL 128 - #define GV1_LARGE 256 #define GV_GET_GV1_VALUE(max) ( (max<=GV_RANGESMALL) ? GV1_SMALL : GV1_LARGE ) #define GV_INDEX_CALCULATION(x,max) ( (max<=GV1_SMALL) ? (uint8_t) x-GV1_SMALL : ((x&(GV1_LARGE*2-1))-GV1_LARGE) ) #endif @@ -927,6 +923,21 @@ void setTrimValue(uint8_t phase, uint8_t idx, int trim); #define GV_RANGESMALL_NEG (-GV1_SMALL + (RESERVE_RANGE_FOR_GVARS+1)) #define GV_RANGELARGE (GV1_LARGE - (RESERVE_RANGE_FOR_GVARS+1)) #define GV_RANGELARGE_NEG (-GV1_LARGE + (RESERVE_RANGE_FOR_GVARS+1)) +#if defined(CPUARM) + // the define GV1_LARGE marks the highest bit value used for this variables + // because this would give too big numbers for ARM, we limit it further for + // offset and weight + #define GV_RANGELARGE_WEIGHT (GV_RANGE_WEIGHT) + #define GV_RANGELARGE_WEIGHT_NEG (-GV_RANGE_WEIGHT) + #define GV_RANGELARGE_OFFSET (GV_RANGE_OFFSET) + #define GV_RANGELARGE_OFFSET_NEG (-GV_RANGE_OFFSET) +#else + // for stock we just use as much as possible + #define GV_RANGELARGE_WEIGHT GV_RANGELARGE + #define GV_RANGELARGE_WEIGHT_NEG GV_RANGELARGE_NEG + #define GV_RANGELARGE_OFFSET GV_RANGELARGE + #define GV_RANGELARGE_OFFSET_NEG GV_RANGELARGE_NEG +#endif extern uint16_t s_timeCumTot; extern uint16_t s_timeCumThr; From 059234a6e0d09cafac191ee6b14d511558ca2830 Mon Sep 17 00:00:00 2001 From: Kjell Kernen Date: Sat, 22 Feb 2014 18:25:10 +0100 Subject: [PATCH 16/33] Fixed image load bug in burn dialog. Needs to be tested on Linux and Mac. --- companion/src/burndialog.cpp | 6 ++++-- companion/src/helpers.cpp | 8 ++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/companion/src/burndialog.cpp b/companion/src/burndialog.cpp index cb56b5881..764f84ab8 100644 --- a/companion/src/burndialog.cpp +++ b/companion/src/burndialog.cpp @@ -203,7 +203,8 @@ void burnDialog::checkFw(QString fileName) QString ImageStr = g.profile[g.id()].splashFile(); bool PatchFwCB = g.profile[g.id()].patchImage(); if (!ImageStr.isEmpty()) { - QImage Image = qstring2image(ImageStr); + QImage Image; + Image.load(ImageStr); ui->imageLabel->setPixmap(QPixmap::fromImage(Image.convertToFormat(flash.getSplashFormat()))); ui->InvertColorButton->setEnabled(true); ui->PreferredImageCB->setChecked(true); @@ -633,7 +634,8 @@ void burnDialog::on_PreferredImageCB_toggled(bool checked) if (checked) { QString ImageStr = g.profile[g.id()].splashFile(); if (!ImageStr.isEmpty()) { - QImage Image = qstring2image(ImageStr); + QImage Image; + Image.load( ImageStr ); if (ui->imageLabel->width()!=128) { Image=Image.convertToFormat(QImage::Format_RGB32); QRgb col; diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index c17bdb1b1..99dec9a63 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -694,6 +694,14 @@ QString image2qstring(QImage image) return ImageStr; } +// TODO KKERNEN 20140222 +// I am sure that this code has had some kind of function, but now it only seems to cause +// problems. I think it is an attempt to open an image file from a double byte string which +// is first converted to a single byte string. Only used in burndialog.cpp +// It doesn't work for me in 2.0. I do not know why. I doubt it has ever worked for files or +// file paths containing non-english characters. +// Code can be removed ,when 2.0 is tested. + QImage qstring2image(QString imagestr) { bool ok; From d7a67fc7a17ce618ae11923f5db65a8cfeeda264 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 22 Feb 2014 20:12:59 +0100 Subject: [PATCH 17/33] Update myeeprom.h --- radio/src/myeeprom.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index d177287b9..94b6cbb9e 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -527,7 +527,7 @@ PACK(typedef struct t_LimitData { // because this would give too big numbers for ARM, we limit it further for offset and weight // must be smaller than GV1_LARGE - RESERVE_RANGE_FOR_GVARS -1 #define GV_RANGE_WEIGHT 500 -#define GV_RANGE_OFFSET 490 +#define GV_RANGE_OFFSET 500 #define DELAY_STEP 10 #define SLOW_STEP 10 From 5b3449c55af5c7fcc714ecb2a732f56fba52331a Mon Sep 17 00:00:00 2001 From: mhotar Date: Sat, 22 Feb 2014 20:20:27 +0100 Subject: [PATCH 18/33] Bold MNY characters reworked --- .../src/fonts/sqt5/font_05x07_B_compressed.png | Bin 448 -> 448 bytes radio/src/fonts/std/font_05x07_B_compressed.png | Bin 449 -> 449 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/radio/src/fonts/sqt5/font_05x07_B_compressed.png b/radio/src/fonts/sqt5/font_05x07_B_compressed.png index 8e4ac6632918f66dbc16304271b2314f3f3b1b8a..64c8545ec19c2dd2265b3ba78154314f7903ba73 100644 GIT binary patch delta 331 zcmV-R0kri-KMK=MO)hHgo?6g4sa)fdQyiNaYxx zpFo46oAaC}(>W3ZS`_`21X|RAYCrw_``8;rt+35erkV**wM-zj?n(j^)fgBUgcw+v zJQzC|1UOn0IT#ooFE}r3*=ZqpjE8~Ep`~FuTdF{#g0hmp?3M~=pnlax4+cdJ#uWUc1=qqmX?zzoF{yGsM_f1qQFoi!KhMc08;D5z^^QMEJr~>K#qmQ zgI!2{BC|&CkrN>IGBPMJ9_jp1;J`Or2;@H4bG{zr)BkV4nQA6L)v|%qx+@7@RAXRZ5Mp3u z@?h*>5a4JjezX9t?^cj5B{) zLOc(E)fykL@SNPB$mTq!Wg=UuK)ZpVl7Qfi1I`nK7*(4+T@*PSBwE-GPGERs!yv4F zoWpan0!ZzViCpOd?V6TKEG#!qI8XTWP_@z1MS-D4f{~@t0HoH9fnQnjSdM~%fE){p z2fL8^L}rb?B{x9sWn@rdJkt52z=1b;C6N1I&-r?gPyfFGli&Zp2T@?+|Nnpg|GuvV dF@A%>0RUO^meGMOke>hm002ovPDHLkV1nO`ndSfh diff --git a/radio/src/fonts/std/font_05x07_B_compressed.png b/radio/src/fonts/std/font_05x07_B_compressed.png index 985ded8a1a33dc1ad745585e2c768b8a1ddb013b..d2e197228229eb09b3b2cd382ac12af2319131af 100644 GIT binary patch delta 338 zcmV-Y0j>VQ1Hl83UkL&h5i|uo_Cn*4XdQpLkzz*@lR%4tUH#{uKc61v{tpD_f%pRh zP_2;4F+M+m21SnGIW5yUk_1{5d6fiO)PZV0HU9nVjiOfA<|tFm1fW{yIZviDB`~xo zvMUKpR8x{TWUS!YscR7h45nB9L; z;XI*HQT3n)gCYmxnU)aG17Nkr2P`}%gUxN3$dts;Ztzh_K=8x^=Ly1%D$X7(iX0wi zTG$>=V0dK1Agq3z!*j9%$h}7<0^QrL8L8mXa`J?;z~_f5j-DVQ1Hl83UkL#U7aj<8&Kxt5XdQo&lwwB`li(2ryZX;Re?C3T{T~R<1Mvq2 zpjsi7V|;!B4T>DWbB;{sN|0z#^ zh4X|)Mb(2I42m3#XIer$4}jGgAF%M83^uoAB3r6JyTL~#0l^y&oF@o3syKVFC~|n5 zX<>Uff#H!2gRuH>4$sL7VE0bsN|$KYj8t%8xp~4_;PXQjM^6`pgc=V)mP!MVS~muM zWyxbX3P}cXEG!=EQtA_xHQp_`p#VN~ZzrP= Date: Sun, 23 Feb 2014 01:28:49 +0100 Subject: [PATCH 19/33] The two image labels and complicatd logics replaced by a simpler 4-way image selection and a single image label that simply shows whatever image that will be used as radio splash screen. --- companion/src/appdata.h | 2 +- companion/src/burndialog.cpp | 310 ++++++++++++++--------------------- companion/src/burndialog.h | 19 ++- companion/src/burndialog.ui | 258 +++++++++-------------------- 4 files changed, 211 insertions(+), 378 deletions(-) diff --git a/companion/src/appdata.h b/companion/src/appdata.h index 210b8ae8f..7377bb4f0 100644 --- a/companion/src/appdata.h +++ b/companion/src/appdata.h @@ -124,7 +124,7 @@ class Profile: protected CompStoreObj QString splashFile() const; bool burnFirmware() const; bool renameFwFiles() const; - bool patchImage() const; + bool patchImage() const; //TODO This variable is unused and should be removed int channelOrder() const; int defaultMode() const; diff --git a/companion/src/burndialog.cpp b/companion/src/burndialog.cpp index 764f84ab8..05d7ef8ce 100644 --- a/companion/src/burndialog.cpp +++ b/companion/src/burndialog.cpp @@ -17,7 +17,18 @@ burnDialog::burnDialog(QWidget *parent, int Type, QString * fileName, bool * bac hexType(Type) { ui->setupUi(this); - ui->libraryButton->setIcon(CompanionIcon("library.png")); + + if(!g.profile[g.id()].splashFile().isEmpty()){ + imageSource=PROFILE; + imageFile=g.profile[g.id()].splashFile(); + } + else{ + ui->useProfileImageCB->setDisabled(true); + imageSource=FIRMWARE; + imageFile=""; + } + updateUI(); + ui->SplashFrame->hide(); ui->FramFWInfo->hide(); ui->EEbackupCB->hide(); @@ -27,7 +38,6 @@ burnDialog::burnDialog(QWidget *parent, int Type, QString * fileName, bool * bac ui->profile_label->hide(); ui->patchcalib_CB->hide(); ui->patchhw_CB->hide(); - ui->InvertColorButton->setDisabled(true); setWindowTitle(tr("Write firmware to TX")); if (IS_TARANIS(GetEepromInterface()->getBoard())) { ui->EEbackupCB->hide(); @@ -39,12 +49,7 @@ burnDialog::burnDialog(QWidget *parent, int Type, QString * fileName, bool * bac ui->patchcalib_CB->hide(); ui->patchhw_CB->hide(); ui->EEpromCB->hide(); - ui->ImageLoadButton->setDisabled(true); - ui->libraryButton->setDisabled(true); - ui->InvertColorButton->setDisabled(true); ui->BurnFlashButton->setDisabled(true); - ui->ImageFileName->clear(); - ui->FwImage->clear(); ui->FWFileName->clear(); ui->DateField->clear(); ui->SVNField->clear(); @@ -124,12 +129,7 @@ void burnDialog::on_FlashLoadButton_clicked() { QString fileName; - ui->ImageLoadButton->setDisabled(true); - ui->libraryButton->setDisabled(true); - ui->InvertColorButton->setDisabled(true); ui->BurnFlashButton->setDisabled(true); - ui->ImageFileName->clear(); - ui->FwImage->clear(); ui->FWFileName->clear(); ui->DateField->clear(); ui->SVNField->clear(); @@ -169,6 +169,7 @@ void burnDialog::on_FlashLoadButton_clicked() QTimer::singleShot(0, this, SLOT(shrink())); } } + updateUI(); } void burnDialog::checkFw(QString fileName) @@ -194,48 +195,28 @@ void burnDialog::checkFw(QString fileName) ui->BurnFlashButton->setText(tr("Write to TX")); if (flash.hasSplash()) { ui->SplashFrame->show(); - ui->ImageLoadButton->setEnabled(true); - ui->libraryButton->setEnabled(true); - ui->FwImage->setFixedSize(flash.getSplashWidth(), flash.getSplashHeight()); ui->imageLabel->setFixedSize(flash.getSplashWidth(), flash.getSplashHeight()); - ui->FwImage->show(); - ui->FwImage->setPixmap(QPixmap::fromImage(flash.getSplash())); QString ImageStr = g.profile[g.id()].splashFile(); - bool PatchFwCB = g.profile[g.id()].patchImage(); if (!ImageStr.isEmpty()) { QImage Image; Image.load(ImageStr); ui->imageLabel->setPixmap(QPixmap::fromImage(Image.convertToFormat(flash.getSplashFormat()))); - ui->InvertColorButton->setEnabled(true); - ui->PreferredImageCB->setChecked(true); - ui->PatchFWCB->setChecked(PatchFwCB); } else { - QString fileName=ui->ImageFileName->text(); + QString fileName=imageFile; if (!fileName.isEmpty()) { QImage image(fileName); if (!image.isNull()) { - ui->InvertColorButton->setEnabled(true); ui->imageLabel->setPixmap(QPixmap::fromImage(image.scaled(ui->imageLabel->width(), ui->imageLabel->height()).convertToFormat(flash.getSplashFormat()))); - ui->PatchFWCB->setEnabled(true); - ui->PatchFWCB->setChecked(PatchFwCB); } else { - ui->PatchFWCB->setDisabled(true); - ui->PatchFWCB->setChecked(false); - ui->PreferredImageCB->setDisabled(true); } } else { - ui->PatchFWCB->setDisabled(true); - ui->PatchFWCB->setChecked(false); - ui->PreferredImageCB->setDisabled(true); } } } else { - ui->FwImage->hide(); - ui->ImageFileName->setText(""); ui->SplashFrame->hide(); } } @@ -338,87 +319,122 @@ bool burnDialog::checkeEprom(QString fileName) return true; } -void burnDialog::on_ImageLoadButton_clicked() +void burnDialog::displaySplash() +{ + QImage image; + if (imageSource == FIRMWARE){ + FlashInterface flash(ui->FWFileName->text()); + image = flash.getSplash(); + } + else{ + image.load(imageFile); + } + if (image.isNull()) { + return; + } + if (ui->imageLabel->width()!=128) { + image=image.convertToFormat(QImage::Format_RGB32); + QRgb col; + int gray; + int width = image.width(); + int height = image.height(); + for (int i = 0; i < width; ++i) + { + for (int j = 0; j < height; ++j) + { + col = image.pixel(i, j); + gray = qGray(col); + image.setPixel(i, j, qRgb(gray, gray, gray)); + } + } + ui->imageLabel->setPixmap(QPixmap::fromImage(image.scaled(ui->imageLabel->width(), ui->imageLabel->height()))); + } + else { + ui->imageLabel->setPixmap(QPixmap::fromImage(image.scaled(ui->imageLabel->width(), ui->imageLabel->height()).convertToFormat(QImage::Format_Mono))); + } +} + +void burnDialog::updateUI() +{ + ui->useProfileImageCB->setChecked( imageSource == PROFILE ); + ui->useFwImageCB->setChecked( imageSource == FIRMWARE ); + ui->useLibraryImageCB->setChecked( imageSource == LIBRARY ); + ui->useAnotherImageCB->setChecked( imageSource == ANOTHER ); + + displaySplash(); +} + +void burnDialog::on_useFwImageCB_clicked() +{ + QString fileName = ui->FWFileName->text(); + FlashInterface flash(fileName); + if (!flash.isValid()) { + QMessageBox::critical(this, tr("Error"), tr( "The firmware file is not valid." )); + return; + } + if (!flash.hasSplash()) { + QMessageBox::critical(this, tr("Error"), tr( "There is no start screen image in the firmware file." )); + return; + } + imageSource = FIRMWARE; + imageFile = fileName; + updateUI(); +} + +void burnDialog::on_useProfileImageCB_clicked() +{ + QString fileName = g.profile[g.id()].splashFile(); + if (fileName.isEmpty()){ + QMessageBox::critical(this, tr("Error"), tr( "The radio profile has no defined start screen." )); + return; + } + QImage image(fileName); + if (image.isNull()) { + QMessageBox::critical(this, tr("Error"), tr("The profile image %1 does not seem to contain an image.").arg(fileName)); + return; + } + imageSource = PROFILE; + imageFile = fileName; + updateUI(); +} + +void burnDialog::on_useAnotherImageCB_clicked() { QString supportedImageFormats; for (int formatIndex = 0; formatIndex < QImageReader::supportedImageFormats().count(); formatIndex++) { supportedImageFormats += QLatin1String(" *.") + QImageReader::supportedImageFormats()[formatIndex]; } - - QString fileName = QFileDialog::getOpenFileName(this, - tr("Open Image to load"), g.imagesDir(), tr("Images (%1)").arg(supportedImageFormats)); - - if (!fileName.isEmpty()) { - g.imagesDir( QFileInfo(fileName).dir().absolutePath() ); - QImage image(fileName); - if (image.isNull()) { - QMessageBox::critical(this, tr("Error"), tr("Cannot load %1.").arg(fileName)); - ui->PatchFWCB->setDisabled(true); - ui->PatchFWCB->setChecked(false); - ui->InvertColorButton->setDisabled(true); - return; - } - ui->ImageFileName->setText(fileName); - ui->InvertColorButton->setEnabled(true); - if (ui->imageLabel->width()!=128) { - image=image.convertToFormat(QImage::Format_RGB32); - QRgb col; - int gray; - int width = image.width(); - int height = image.height(); - for (int i = 0; i < width; ++i) { - for (int j = 0; j < height; ++j) { - col = image.pixel(i, j); - gray = qGray(col); - image.setPixel(i, j, qRgb(gray, gray, gray)); - } - } - ui->imageLabel->setPixmap(QPixmap::fromImage(image.scaled(ui->imageLabel->width(), ui->imageLabel->height()))); - } - else { - ui->imageLabel->setPixmap(QPixmap::fromImage(image.scaled(ui->imageLabel->width(), ui->imageLabel->height()).convertToFormat(QImage::Format_Mono))); - } - ui->PatchFWCB->setEnabled(true); + QString fileName = QFileDialog::getOpenFileName(this, tr("Open image file to use as Tx start screen"), g.imagesDir(), tr("Images (%1)").arg(supportedImageFormats)); + if (fileName.isEmpty()){ + return; } + g.imagesDir( QFileInfo(fileName).dir().absolutePath() ); + QImage image(fileName); + if (image.isNull()) { + QMessageBox::critical(this, tr("Error"), tr("Image could not be loaded from %1").arg(fileName)); + return; + } + imageSource = ANOTHER; + imageFile = fileName; + updateUI(); } -void burnDialog::on_libraryButton_clicked() +void burnDialog::on_useLibraryImageCB_clicked() { QString fileName; splashLibrary *ld = new splashLibrary(this,&fileName); ld->exec(); - if (!fileName.isEmpty()) { - QImage image(fileName); - if (image.isNull()) { - QMessageBox::critical(this, tr("Error"), tr("Cannot load %1.").arg(fileName)); - ui->PatchFWCB->setDisabled(true); - ui->PatchFWCB->setChecked(false); - ui->InvertColorButton->setDisabled(true); - return; - } - ui->ImageFileName->setText(fileName); - ui->InvertColorButton->setEnabled(true); - if (ui->imageLabel->width()!=128) { - image=image.convertToFormat(QImage::Format_RGB32); - QRgb col; - int gray; - int width = image.width(); - int height = image.height(); - for (int i = 0; i < width; ++i) - { - for (int j = 0; j < height; ++j) - { - col = image.pixel(i, j); - gray = qGray(col); - image.setPixel(i, j, qRgb(gray, gray, gray)); - } - } - ui->imageLabel->setPixmap(QPixmap::fromImage(image.scaled(ui->imageLabel->width(), ui->imageLabel->height()))); - } else { - ui->imageLabel->setPixmap(QPixmap::fromImage(image.scaled(ui->imageLabel->width(), ui->imageLabel->height()).convertToFormat(QImage::Format_Mono))); - } - ui->PatchFWCB->setEnabled(true); + if (fileName.isEmpty()) { + return; } + QImage image(fileName); + if (image.isNull()) { + QMessageBox::critical(this, tr("Error"), tr("The library image could not be loaded")); + return; + } + imageSource = LIBRARY; + imageFile = fileName; + updateUI(); } void burnDialog::on_BurnFlashButton_clicked() @@ -428,11 +444,10 @@ void burnDialog::on_BurnFlashButton_clicked() if (!fileName.isEmpty()) { g.flashDir( QFileInfo(fileName).dir().absolutePath() ); g.lastFw( fileName ); - if (ui->PatchFWCB->isChecked()) { - g.profile[g.id()].patchImage( true ); + if (!ui->useFwImageCB->isChecked()) { QImage image = ui->imageLabel->pixmap()->toImage().scaled(ui->imageLabel->width(), ui->imageLabel->height()); if (!image.isNull()) { - QString tempDir = QDir::tempPath(); + QString tempDir = QDir::tempPath(); QString tempFile; if (getFileType(fileName) == FILE_TYPE_HEX) tempFile = tempDir + "/flash.hex"; @@ -452,7 +467,6 @@ void burnDialog::on_BurnFlashButton_clicked() QMessageBox::critical(this, tr("Warning"), tr("Custom image not found")); } } else { - g.profile[g.id()].patchImage( false ); hexfileName->clear(); hexfileName->append(fileName); } @@ -610,15 +624,6 @@ void burnDialog::on_cancelButton_clicked() this->close(); } -void burnDialog::on_InvertColorButton_clicked() -{ - if (ui->imageLabel->pixmap()) { - QImage image = ui->imageLabel->pixmap()->toImage(); - image.invertPixels(); - ui->imageLabel->setPixmap(QPixmap::fromImage(image)); - } -} - void burnDialog::on_EEpromCB_toggled(bool checked) { if (ui->EEpromCB->isChecked()) { @@ -628,83 +633,6 @@ void burnDialog::on_EEpromCB_toggled(bool checked) } } -void burnDialog::on_PreferredImageCB_toggled(bool checked) -{ - QString tmpFileName; - if (checked) { - QString ImageStr = g.profile[g.id()].splashFile(); - if (!ImageStr.isEmpty()) { - QImage Image; - Image.load( ImageStr ); - if (ui->imageLabel->width()!=128) { - Image=Image.convertToFormat(QImage::Format_RGB32); - QRgb col; - int gray; - int width = Image.width(); - int height = Image.height(); - for (int i = 0; i < width; ++i) - { - for (int j = 0; j < height; ++j) - { - col = Image.pixel(i, j); - gray = qGray(col); - Image.setPixel(i, j, qRgb(gray, gray, gray)); - } - } - } else { - Image=Image.convertToFormat(QImage::Format_Mono); - } - ui->imageLabel->setPixmap(QPixmap::fromImage(Image)); - ui->InvertColorButton->setEnabled(true); - ui->PreferredImageCB->setChecked(true); - ui->ImageFileName->setDisabled(true); - ui->ImageLoadButton->setDisabled(true); - ui->libraryButton->setDisabled(true); - ui->PatchFWCB->setEnabled(true); - } - } else { - ui->imageLabel->clear(); - ui->ImageLoadButton->setEnabled(true); - ui->libraryButton->setEnabled(true); - tmpFileName = ui->ImageFileName->text(); - if (!tmpFileName.isEmpty()) { - QImage image(tmpFileName); - if (!image.isNull()) { - if (ui->imageLabel->width()!=128) { - image=image.convertToFormat(QImage::Format_RGB32); - QRgb col; - int gray; - int width = image.width(); - int height = image.height(); - for (int i = 0; i < width; ++i) - { - for (int j = 0; j < height; ++j) - { - col = image.pixel(i, j); - gray = qGray(col); - image.setPixel(i, j, qRgb(gray, gray, gray)); - } - } - } else { - image=image.convertToFormat(QImage::Format_Mono); - } - ui->imageLabel->setPixmap(QPixmap::fromImage(image.scaled(ui->imageLabel->width(), ui->imageLabel->height()))); - ui->InvertColorButton->setEnabled(true); - ui->ImageFileName->setEnabled(true); - ui->PatchFWCB->setDisabled(false); - } else { - ui->InvertColorButton->setDisabled(true); - ui->PatchFWCB->setDisabled(true); - ui->PatchFWCB->setChecked(false); - } - } else { - ui->InvertColorButton->setDisabled(true); - ui->PatchFWCB->setDisabled(true); - ui->PatchFWCB->setChecked(false); - } - } -} - void burnDialog::shrink() { resize(0,0); diff --git a/companion/src/burndialog.h b/companion/src/burndialog.h index 40068f3ac..f56342133 100644 --- a/companion/src/burndialog.h +++ b/companion/src/burndialog.h @@ -36,18 +36,22 @@ public: private slots: void on_FlashLoadButton_clicked(); - void on_ImageLoadButton_clicked(); - void on_libraryButton_clicked(); void on_BurnFlashButton_clicked(); void on_cancelButton_clicked(); - void on_InvertColorButton_clicked(); void on_EEbackupCB_clicked(); - void on_PreferredImageCB_toggled(bool checked); - void on_EEpromCB_toggled(bool checked); - void checkFw(QString fileName); + void on_EEpromCB_toggled(bool checked); bool checkeEprom(QString fileName); + void on_useProfileImageCB_clicked(); + void on_useFwImageCB_clicked(); + void on_useLibraryImageCB_clicked(); + void on_useAnotherImageCB_clicked(); + + void checkFw(QString fileName); + void displaySplash(); + void updateUI(); void shrink(); + private: Ui::burnDialog *ui; QString * hexfileName; @@ -55,6 +59,9 @@ private: int hexType; RadioData radioData; bool burnraw; + enum ImageSource {FIRMWARE, PROFILE, LIBRARY, ANOTHER}; + ImageSource imageSource; + QString imageFile; }; #endif // BURNDIALOG_H diff --git a/companion/src/burndialog.ui b/companion/src/burndialog.ui index e86634e9a..89107b672 100644 --- a/companion/src/burndialog.ui +++ b/companion/src/burndialog.ui @@ -7,7 +7,7 @@ 0 0 440 - 418 + 423 @@ -30,21 +30,8 @@ :/icon.png:/icon.png - + - - - - Qt::Vertical - - - - 20 - 0 - - - - @@ -71,19 +58,6 @@ - - - - Qt::Horizontal - - - - 40 - 20 - - - - @@ -100,19 +74,6 @@ - - - - Qt::Horizontal - - - - 48 - 20 - - - - @@ -152,56 +113,22 @@ QFrame::Raised - - - - - 0 - 0 - - - - - 128 - 64 - - - - - 212 - 64 - - - - QFrame::Panel - - - QFrame::Raised - - - - - - true - - - - - + + true - - + + - Date & Time + Variant - - + + true @@ -214,17 +141,17 @@ - - - - true + + + + Date & Time - - - - Variant + + + + true @@ -325,17 +252,10 @@ - - - - - - - Invert Color - - - - + + + + @@ -369,10 +289,50 @@ + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + - + + + Use firmware start screen + + + + + + + Use another start screen + + + + + 0 @@ -380,86 +340,14 @@ - Use image in settings - - - - - - - Substitute image in firmware + Use profile start screen - - - Qt::Vertical - - - - 20 - 13 - - - - - - - - Qt::Vertical - - - - 20 - 13 - - - - - - - - - - - - true - - - - 0 - 0 - - - - true - - - - - - - false - + - Load Image - - - - - - - Open Splash Library - - - ... - - - - 16 - 16 - + Use library start screen @@ -470,14 +358,24 @@ + + + + Qt::Vertical + + + + 20 + 0 + + + + FWFileName FlashLoadButton - ImageFileName - ImageLoadButton - libraryButton EEbackupCB EEpromCB cancelButton From eafc5b8359d7206c93f30d9865d8a1df056faac8 Mon Sep 17 00:00:00 2001 From: Kjell Kernen Date: Sun, 23 Feb 2014 11:44:27 +0100 Subject: [PATCH 20/33] Fixed two assertion bugs I caused yesterday --- companion/src/burndialog.cpp | 63 +++++++++++------------------------- companion/src/burndialog.h | 2 ++ 2 files changed, 20 insertions(+), 45 deletions(-) diff --git a/companion/src/burndialog.cpp b/companion/src/burndialog.cpp index 05d7ef8ce..bb1a32bf0 100644 --- a/companion/src/burndialog.cpp +++ b/companion/src/burndialog.cpp @@ -9,6 +9,7 @@ #include "hexinterface.h" #include "appdata.h" +// Type 1 = Burn EEPROM, Type 2= Burn Flash burnDialog::burnDialog(QWidget *parent, int Type, QString * fileName, bool * backupEE, QString DocName): QDialog(parent), ui(new Ui::burnDialog), @@ -27,13 +28,11 @@ burnDialog::burnDialog(QWidget *parent, int Type, QString * fileName, bool * bac imageSource=FIRMWARE; imageFile=""; } - updateUI(); - ui->SplashFrame->hide(); ui->FramFWInfo->hide(); ui->EEbackupCB->hide(); ui->EEbackupCB->setCheckState(*backup ? Qt::Checked : Qt::Unchecked); - if (Type == 2) { + if (Type == FLASH_FILE_TYPE ) { ui->EEpromCB->hide(); ui->profile_label->hide(); ui->patchcalib_CB->hide(); @@ -68,7 +67,7 @@ burnDialog::burnDialog(QWidget *parent, int Type, QString * fileName, bool * bac } if (!hexfileName->isEmpty()) { ui->FWFileName->setText(*hexfileName); - if (Type==2) { + if (Type==FLASH_FILE_TYPE) { checkFw(*hexfileName); } else { @@ -109,7 +108,7 @@ burnDialog::burnDialog(QWidget *parent, int Type, QString * fileName, bool * bac ui->FlashLoadButton->hide(); hexfileName->clear(); } - else if (Type==2) { + else if (Type==FLASH_FILE_TYPE) { QString FileName; FileName = g.lastFw(); QFile file(FileName); @@ -117,6 +116,7 @@ burnDialog::burnDialog(QWidget *parent, int Type, QString * fileName, bool * bac checkFw(FileName); } } + updateUI(); resize(0, 0); } @@ -139,7 +139,7 @@ void burnDialog::on_FlashLoadButton_clicked() ui->BurnFlashButton->setDisabled(true); ui->EEbackupCB->hide(); QTimer::singleShot(0, this, SLOT(shrink())); - if (hexType==2) { + if (hexType==FLASH_FILE_TYPE) { fileName = QFileDialog::getOpenFileName(this, tr("Open Firmware File"), g.flashDir(), FLASH_FILES_FILTER); checkFw(fileName); } @@ -177,6 +177,7 @@ void burnDialog::checkFw(QString fileName) if (fileName.isEmpty()) { return; } + if (!IS_TARANIS(GetEepromInterface()->getBoard())) { ui->EEbackupCB->show(); } @@ -191,40 +192,17 @@ void burnDialog::checkFw(QString fileName) ui->DateField->setText(flash.getDate() + " " + flash.getTime()); ui->SVNField->setText(flash.getSvn()); ui->ModField->setText(flash.getBuild()); - ui->BurnFlashButton->setEnabled(true); - ui->BurnFlashButton->setText(tr("Write to TX")); + + ui->SplashFrame->hide(); if (flash.hasSplash()) { ui->SplashFrame->show(); ui->imageLabel->setFixedSize(flash.getSplashWidth(), flash.getSplashHeight()); - QString ImageStr = g.profile[g.id()].splashFile(); - if (!ImageStr.isEmpty()) { - QImage Image; - Image.load(ImageStr); - ui->imageLabel->setPixmap(QPixmap::fromImage(Image.convertToFormat(flash.getSplashFormat()))); - } - else { - QString fileName=imageFile; - if (!fileName.isEmpty()) { - QImage image(fileName); - if (!image.isNull()) { - ui->imageLabel->setPixmap(QPixmap::fromImage(image.scaled(ui->imageLabel->width(), ui->imageLabel->height()).convertToFormat(flash.getSplashFormat()))); - } - else { - } - } - else { - } - } - } - else { - ui->SplashFrame->hide(); } } else { - QMessageBox::warning(this, tr("Warning"), tr("%1 is not a known firmware").arg(fileName)); - ui->BurnFlashButton->setText(tr("Burn anyway !")); - ui->BurnFlashButton->setEnabled(true); + QMessageBox::warning(this, tr("Warning"), tr("%1 may not be a valid firmware file").arg(fileName)); } + ui->BurnFlashButton->setEnabled(true); QTimer::singleShot(0, this, SLOT(shrink())); g.flashDir( QFileInfo(fileName).dir().absolutePath() ); } @@ -356,6 +334,9 @@ void burnDialog::displaySplash() void burnDialog::updateUI() { + if (hexType==EEPROM_FILE_TYPE) + return; + ui->useProfileImageCB->setChecked( imageSource == PROFILE ); ui->useFwImageCB->setChecked( imageSource == FIRMWARE ); ui->useLibraryImageCB->setChecked( imageSource == LIBRARY ); @@ -439,7 +420,7 @@ void burnDialog::on_useLibraryImageCB_clicked() void burnDialog::on_BurnFlashButton_clicked() { - if (hexType==2) { + if (hexType==FLASH_FILE_TYPE) { QString fileName=ui->FWFileName->text(); if (!fileName.isEmpty()) { g.flashDir( QFileInfo(fileName).dir().absolutePath() ); @@ -475,7 +456,7 @@ void burnDialog::on_BurnFlashButton_clicked() hexfileName->clear(); } } - if (hexType==1) { + if (hexType==EEPROM_FILE_TYPE) { QString calib = g.profile[g.id()].stickPotCalib(); QString trainercalib = g.profile[g.id()].trainerCalib(); int potsnum=GetEepromInterface()->getCapability(Pots); @@ -626,11 +607,7 @@ void burnDialog::on_cancelButton_clicked() void burnDialog::on_EEpromCB_toggled(bool checked) { - if (ui->EEpromCB->isChecked()) { - *backup=true; - } else { - *backup=false; - } + *backup = ui->EEpromCB->isChecked(); } void burnDialog::shrink() @@ -640,9 +617,5 @@ void burnDialog::shrink() void burnDialog::on_EEbackupCB_clicked() { - if (ui->EEbackupCB->isChecked()) { - *backup=true; - } else { - *backup=false; - } + *backup = ui->EEbackupCB->isChecked(); } diff --git a/companion/src/burndialog.h b/companion/src/burndialog.h index f56342133..1ffac2b92 100644 --- a/companion/src/burndialog.h +++ b/companion/src/burndialog.h @@ -19,6 +19,8 @@ #define ER9X_EEPROM_FILE_TYPE "ER9X_EEPROM_FILE" #define EEPE_EEPROM_FILE_HEADER "EEPE EEPROM FILE" #define EEPE_MODEL_FILE_HEADER "EEPE MODEL FILE" +#define EEPROM_FILE_TYPE 1 +#define FLASH_FILE_TYPE 2 namespace Ui From 6f4cda74bc519e34a413b85d8a6117b1aae8fced Mon Sep 17 00:00:00 2001 From: Jacek Drewniak Date: Sun, 23 Feb 2014 15:50:24 +0100 Subject: [PATCH 21/33] Pl Transaltion fix --- companion/src/translations/companion_pl.ts | 1005 ++++++++++---------- 1 file changed, 499 insertions(+), 506 deletions(-) diff --git a/companion/src/translations/companion_pl.ts b/companion/src/translations/companion_pl.ts index 1715ded6f..bd3013a8a 100644 --- a/companion/src/translations/companion_pl.ts +++ b/companion/src/translations/companion_pl.ts @@ -168,57 +168,57 @@ FS%1 - + ON Włącz - + Error Błąd - + Unable to find sound file %1! Nie mogę odnaleźć pliku dźwiękowego %1! - + &Delete &Wykasuj - + Delete Wykasuj - + &Copy &Kopiuj - + Ctrl+C Ctrl+C - + &Cut &Wytnij - + Ctrl+X Ctrl+X - + &Paste &Wklej - + Ctrl+V Ctrl+V @@ -2064,7 +2064,7 @@ Jesteś pewien ? - + File loaded Plik załadowany @@ -2123,23 +2123,23 @@ Jesteś pewien ? - - - - - - - - + + + + + + + + Error Błąd - - - + + + Error opening file %1: %2. Błąd otwarcia pliku %1: @@ -2309,21 +2309,56 @@ Chcesz pobrać teraz? OpenTX Companion - FW: %1 - Profile: %2 OpenTX Companion - FW: %1 - Profil: %2 + + + About... + O aplikacji... + + + + Print... + Drukuj... + + + + Simulate... + Symulacja... + + + + Simulate current model + Symulacja aktualnego modelu + + + + Load Backup... + Załaduj backup... + + + + View Log File... + Obejrzyj plik logów... + + + + Open and view log file + Otwórz i obejrzyj plik logów + Edit Settings Edycja Ustawień + + + Settings... + Ustawienia... + Download firmware and voice files Pobierz firmware i pliki dźwiękowe - - - New Profile - Nowy Profil - Create a new Radio Setting Profile @@ -2334,6 +2369,78 @@ Chcesz pobrać teraz? A monochrome black icon theme Monochromatyczny czarny wygląd ikon + + + + Open Models and Settings file + Otwórz plik Modeli i Ustawień + + + + New Models+Settings + Nowe Modele+Ustawienia + + + + Create a new Models and Settings file + Utwórz nowy plik Modeli i Ustawień + + + + Open Models+Settings... + Otwórz Modele i Ustawienia... + + + + Save Models+Settings... + Zapisz Modele i Ustawienia... + + + + + Save Models and Settings file + Zapisz plik Modeli i Ustawień + + + + Save Models+Settings as... + Zapisz Modele+Ustawienia jako... + + + + Cut Model + Wytnij Model + + + + Cut current model to the clipboard + Wytnij aktualny model do schowka + + + + Copy Model... + Kopiuj Model... + + + + Copy current model to the clipboard + Wytnij aktualny model do schowka + + + + Paste Model... + Wklej Model... + + + + Paste model from clipboard + Wklaj Model ze schowka + + + + The classic companion9x icon theme + Klasyczny zestaw ikon Companion + A monochrome white icon theme @@ -2495,55 +2602,21 @@ Chcesz pobrać teraz? Użyj Rosyjskiego w menu - - About - O aplikacji + + + Radio Settings Profile + Profil Ustawień Radia - - Print - Drukuj + + Show recent Models+Settings documents + Pokaż ostatanie dokumenty Modeli i Ustawień Print current model Drukuj aktualny model - - - Simulate - Symulacja - - - - Simulate selected model - Symulacja wybranego modelu - - - - loadBackup... - Załaduj backup... - - - - Logs - Logi - - - - Setting... - Ustawienia... - - - - Downloads... - Pobieranie... - - - - Check for updates... - Sprawdź aktualizacje... - Check OpenTX and Companion updates @@ -2554,16 +2627,6 @@ Chcesz pobrać teraz? Edit Tx Splash Image... Edytor erkanu startowego radia... - - - edit the splash screen of your TX - Edytuj ekran startowy swojego radia - - - - List programmers - Lista programatorów - Fuses... @@ -2579,11 +2642,6 @@ Chcesz pobrać teraz? Open the OpenTX document page in a web browser Otwórz stronę dokumentacji OpenTX w przeglądarce - - - Configure connection software... - Ustawienia oprogramowania łączącego... - Save Tx Models and Settings to file @@ -2591,13 +2649,19 @@ Chcesz pobrać teraz? - Contributors - Współpracownicy + A tribute to those who have contributed to OpenTX and Companion + Hołd dla tych, którzy przyczynili się do rozwoju OpenTX i Companion - A tribute to those who have contributed to OpenTX and Companion - Hołd dla tych, którzy przyczynili się do rozwoju OpenTX i Companion + Contributors... + Współpracownicy... + + + + + Recent Models+Settings + Ostatnie Modele+Ustawienia @@ -2609,11 +2673,6 @@ Chcesz pobrać teraz? Set Icon Size Ustaw wielkość ikon - - - Radio Settings Profiles - Profile Ustawień Radia - A new version of Companion is available (version %1)<br>Would you like to download it? @@ -2667,11 +2726,6 @@ Chcesz pobrać teraz? The icon size will be used the next time you start Companion. Wybrana wiekość ikon będzie użyta po ponownym uruchomieniu Comapnion. - - - Open - Otwórz - @@ -2802,37 +2856,11 @@ Czy mimo wszystko zapisać? About Companion O aplikacji Companion - - - Create a new file - Utwórz nowy plik - - - - Open an existing file - Otwórz istniejący plik - Load backup from file Załaduj backup z pliku - - - - Save the document to disk - Zapisz dokument na dysku - - - - Open log file - Otwórz plik logów - - - - Show Companion changelog - Zobacz zmiany w Companion - Write Models and Settings to transmitter @@ -2848,56 +2876,11 @@ Czy mimo wszystko zapisać? Write Firmware Zapisz firmware - - - Open... - Otwórz... - - - - Save... - Zapisz... - - - - Save As... - Zapisz jako... - Exit Zakończ - - - Cut - Wytnij - - - - Cut current selection to the clipboard - Wytnij zaznaczenie do schowka - - - - Copy... - Kopiuj... - - - - Copy current selection to the clipboard - Wytnij zaznaczenie do schowka - - - - Paste... - Wklej... - - - - Paste clipboard into current selection - Wytnij zaznaczenie do schowka - Monochrome @@ -2923,11 +2906,71 @@ Czy mimo wszystko zapisać? Use system language in menus Użyj języka systemu w menu + + + Download... + Pobieranie... + + + + Check for Updates... + Sprawdź aktualizacje... + + + + Companion Changes... + Zmiany w Companion... + + + + Show Companion change log + Pokaż log zmian Companion + + + + Firmware Changes... + Zmiany w Firmware... + + + + Show firmware change log + Pokaż log zmian Firmware + + + + Compare Models... + Porównaj modele... + + + + Edit the splash image of your TX + Edytuj ekran startowy swojego radia + + + + List programmers... + Lista programistów... + Write firmware to transmitter Zapisz firmware do radia + + + Add Radio Profile + Dodaj profil radia + + + + Configure Communications... + Ustaw komunikację... + + + + Configure software for communicating with the transmitter + Ustaw oprogramowanie komunikacyjne z radiem + Write Models and Settings from file to Tx @@ -2964,46 +3007,26 @@ Czy mimo wszystko zapisać? Wczytaj Firmware z radia - - Configure software for reading from and writing to the transmitter - Ustawienia oprogramowania do odczytu i zapisu radia - - - + Write Zapis - - + + %2 + %2 + + + + Invalid Models and Settings File %1 Błędny plik %1 Modeli i Ustawień - + Invalid binary Models and Settings File %1 Błędny binarny plik %1 Modeli i Ustawień - - - ChangeLog... - Zmiany... - - - - Firmware ChangeLog... - Zmiany firmware... - - - - Show firmware changelog - Zobacz zmiany w firmware - - - - Compare... - Porównaj... - Compare models @@ -3034,22 +3057,6 @@ Czy mimo wszystko zapisać? Classical Klasyczny - - - The classical Companion icon theme - Klasyczny zestaw ikon Companion - - - - New - Nowy - - - - - Recent Files - Poprzednie pliki - Set Menu Language @@ -3062,13 +3069,13 @@ Czy mimo wszystko zapisać? Plik - - + + Edit Edycja - + Settings Ustawienia @@ -3079,42 +3086,27 @@ Czy mimo wszystko zapisać? - + Help Pomoc - - - Show a selection list of recent documents - Pokaż listę wyboru poprzednich dokumentów - - - - Radio Profiles - Profile Radia - Show a selection list of radio settings profiles Pokaż listę wyboru profili ustawiań radia - + Ready Gotowe - - &%1: %2 - &%1: %2 - - - + Unable to find file %1! Nie mogę znaleźć pliku %1! - + Error reading file %1: %2. Błąd odczytu pliku %1: @@ -3149,16 +3141,17 @@ Czy mimo wszystko zapisać? - - - - + + + + + Error Błąd - + Unable to find file %1! Nie mogę odnaleźć pliku %1! @@ -3166,7 +3159,7 @@ Czy mimo wszystko zapisać? - + Error opening file %1: %2. Błąd otwarcia pliku %1: @@ -3228,7 +3221,7 @@ Czy mimo wszystko zapisać? - + Error reading file %1: %2. Błąd odczytu pliku %1: @@ -3258,58 +3251,58 @@ Zapisać? - - + + Taranis radio not found Nie odnaleziono Radia Taranis - - + + Impossible to identify the radio on your system, please verify the eeprom disk is connected. Identyfikacja radia w Twoim systemie nie jest możliwa, sprawdź dysk eeprom podpięty do komputera. - - - + + + Backup EEPROM From Tx Backup EEPROM z radia - + Cannot check eeprom compatibility! Continue anyway? Nie mogę sprawdzić kompatybilności EEprom! Kontynuować ? - - + + Warning Ostrzeżenie - + Firmware in radio is of a different family of eeprom written, check file and preferences! Firmware w radiu jest różny od zapisanego eepromu, sprawdź plik i ustawienia! - + Firmware in flash is outdated, please upgrade! Firmware w radiu jest przestarzały. Proszę zaktualizować! - + Write EEPROM To Tx Zapis EEPROM do radia - - Open - Otwórz + + Open backup Models and Settings file + Otwórz plik backupu Modeli i Ustawień - + Invalid binary backup File %1 nieprawidłowy binarny plik %1 @@ -4202,14 +4195,14 @@ p, li { white-space: pre-wrap; } - + REa Pokrętło :a - + REb Pokrętło :b @@ -5160,7 +5153,7 @@ p, li { white-space: pre-wrap; } - + Warning Ostrzeżenie @@ -5280,22 +5273,22 @@ p, li { white-space: pre-wrap; } ASpd - + ASpd dTE - + dTE Cel- - + Cel- Vfs- - + Vfs- @@ -5340,22 +5333,22 @@ p, li { white-space: pre-wrap; } ABS - + ABS THs - + THs TH% - + TH% THt - + THt @@ -5574,7 +5567,7 @@ p, li { white-space: pre-wrap; } <font color=red><b>Niespójny parametr</b></font> - + Rotary Encoder Pokrętło @@ -5589,123 +5582,123 @@ p, li { white-space: pre-wrap; } Faza lotu %1 - + Yellow Żółty - + Orange Pomarańczowy - + Red Czerwony - + Winged Shadow How High - + Winged Shadow How High (not supported) Winged Shadow How High (nie obsługiwane) - + FrSky Sensor Hub Hub sensora FrSky - - + + None Żaden - + Imperial Imperialne - + Metric Metryczne - + Extra Fine Bardzo dokładne - + Fine Dokładne - + Medium Średni - + Coarse Gruby - + Exponential Eksponencjalny - + Count Up Licz - + Count Down Odliczaj - + %1:%2, - + : %1 Channels, %2usec Delay :Kanały %1, opóźnienie %2usX - + Flight modes(%1) Fazy lotu(%1) - + Flight mode(%1) Faza lotu (%1) - + Rudder SK - + Elevator SW - + Throttle Gaz - + Aileron Lotki @@ -5717,7 +5710,7 @@ p, li { white-space: pre-wrap; } - + --- @@ -5780,7 +5773,7 @@ p, li { white-space: pre-wrap; } - + Timer1 @@ -5788,21 +5781,21 @@ p, li { white-space: pre-wrap; } - + Timer2 - + All Wszystkie - + Telemetry Telemetria @@ -5835,22 +5828,22 @@ p, li { white-space: pre-wrap; } - + Value Wartość - + Source Źródło - + GVAR Zmienna - + Increment Zwiększanie @@ -5894,7 +5887,7 @@ p, li { white-space: pre-wrap; } ZG%1 - + Simulator for this firmware is not yet available Nie jest dostępny symulator dla tego firmware @@ -5972,17 +5965,17 @@ Zespół OpenTX/Companion. Użyj trymerów dla Fazy Lotu %1 + Własne trymery jako offset - + FW: %1 FW:%1 - + Pict: %1 Obrazek:%1 - + Profile image Obrazek Profilu @@ -6219,27 +6212,27 @@ Wolne obroty będą na górze, trymer i ostrzeżenie o otwartym gazie również TRN - + TRN GEA - + GEA ID0 - + ID0 ID1 - + DI1 ID2 - + ID2 @@ -6314,13 +6307,13 @@ Wolne obroty będą na górze, trymer i ostrzeżenie o otwartym gazie również SD - + SD SC - + SC @@ -6334,25 +6327,25 @@ Wolne obroty będą na górze, trymer i ostrzeżenie o otwartym gazie również S2 - + S2 SG - + SG RS - + RS SH - + SH @@ -6366,38 +6359,38 @@ Wolne obroty będą na górze, trymer i ostrzeżenie o otwartym gazie również S1 - + S1 SB - + SB SA - + SA SE - + SE SF - + SF LS - + LS @@ -6873,25 +6866,25 @@ Wolne obroty będą na górze, trymer i ostrzeżenie o otwartym gazie również appPreferencesDialog - + Simulator capture folder Katalog zapisu symulatora - + Remember simulator switch values Zapamiętaj ustawienia przełączników w symulatorze - - - - + + + + Open Folder Otwórz katalog - + User Splash Screens Użyj ekranu powitalnego @@ -6901,47 +6894,52 @@ Wolne obroty będą na górze, trymer i ostrzeżenie o otwartym gazie również Edycja Ustawień - + Application Settings Ustawienia Aplikacji - + + Only show user splash images + Pokaż tylko ekrany powitalne użytkownika + + + + Show user and companion splash images + Pokaż ekrany powitalne użytkownika i Companion + + + Simulator Settings Ustawienia Symulatora - + Blue Niebieskie - + Green Zielone - + Red Czerwone - + Orange Pomarańczowe - + Yellow Żółte - - Radio Settings - Ustawienia Radia - - - + Mode selection: Mode 1: @@ -6964,27 +6962,27 @@ Mode 4: - + Mode 1 (RUD ELE THR AIL) Mod 1 (SK.SW.Gaz.Lot) - + Mode 2 (RUD THR ELE AIL) Mod 2 (SK.Gaz.SW.Lot) - + Mode 3 (AIL ELE THR RUD) - + Mode 4 (AIL THR ELE RUD) Mod 4 (Lot.Gaz.SW.SK) - + Channel order This is used by the templated to determine which channel goes to what number output. @@ -6993,313 +6991,308 @@ This is used by the templated to determine which channel goes to what number out To ustawienie jest używane przez szablony, określa jakie wyjście przypisane jest do kanału. - + R E T A K W G L - + R E A T K W L G - + R T E A - + R T A E K G L W - + R A E T K L W G - + R A T E K L G W - + E R T A W K G L - + E R A T W K L G - + E T R A W G K L - + E T A R W G L K - + E A R T W L K G - + E A T R W L G K - + T R E A G K W L - + T R A E G K L W - + T E R A G W K L - + T E A R G W L K - + T A R E G L K W - + T A E R G L W K - + A R E T L K W G - + A R T E L R G W - + A E R T L W K G - + A E T R L W G K - + A T R E L G K W - + A T E R L G W K - + Default Stick Mode Bazowy mod drążków - - Settings Profile - Ustawienia Profilu - - - + Splash Screen Ekran startowy - + Channel Order Kolejność kanałów - + Append version number to FW file name Dodaj numer Firmware do nazwy pliku - + SD Structure path Struktura karty SD - + Select Image Wybierz obrazek - + Offer to write FW to Tx after download Zaproponuj zapisanie FirmWare do radia po pobraniu - + + Radio Settings Profile + Profil Ustawień Radia + + + + Profile Name + Nazwa profilu + + + Remove Profile Usuń Profil - + Clear Image Wyczyść obrazek - + Firmware Firmware - - Include companion splashes - Załącz ekrany powitalne - - - - Only user defined splashes - Tylko własne ekrany powitalne - - - + Splash Screen Library Biblioteka ekranół powitalnych - + Files to keep Pkili to zapamiętania - + Simulator BackLight Podświetlenie symularota - + Automatic Backup Folder Automatyczny Katalog Backupów - + Only capture to clipboard Przechwyć tylko do schowka - + Joystick Joystick - + Find Executable Znajdź plik wykonywalny - + Google Earth Executable Plik wykonywalny Google Earth - + Calibrate Kalibracja - + Enable Aktywowany - + Show splash screen when Companion starts Pokaz ekran startowy przy uruchamianiu Companion - + Automatic check for OpenTX firmware updates Automatycznie sprawdź aktualizacje firmware OpenTX - + Automatic check for Companion updates Automatycznie sprawdź aktualizacje Companion - + Offer to use wizard for new models Zaproponuj użycie konfiguratora dla nowych modeli - + Enable automatic backup before writing firmware Uaktywnij automatyczny backup przed zapisem firmware - + Select your snapshot folder Katalog zrzutów - - + + No joysticks found Brak oysticka - + Select your library folder Wybierz katalog bibliteki - + Select your Models and Settings backup folder Wybierz folder do backupowania Modeli i Ustawień - + Select Google Earth executable Wybierz wykonywalny plik Google Earth - + Select the folder replicating your SD structure Wybierz folder do zreplikowania struktury Twojej karty SD - + Not possible to remove profile Usunięcie profilu jest niemożliwe - + The default profile can not be removed. Podstawowy profil nie moze być usunięty. - + Open Image to load Otwórz obrazek do załadowania - + Images (%1) Obrazki (%1) @@ -7795,53 +7788,48 @@ m2560 dla platformy V4 Aktualny profil - - Open - Otwórz - - - - - - - - + + + + + + Warning Ostrzeżenie - + %1 is not a known firmware %1 nie jest znanym firmware - + Burn anyway ! Wypiecz mimo wszystko ! - - - - - - - - - - + + + + + + + + + + Error Błąd - + Unable to find file %1! Nie mogę odnaleźć pliku %1! - - - + + + Error opening file %1: %2. Błąd otwarcia pliku %1: @@ -7857,76 +7845,81 @@ m2560 dla platformy V4 Write Models and Settings in %1 to TX Zapisz Modele i Ustawienia w %1 do radia + + + Open Firmware File + Otwórz plik Firmware + Choose file to load Models and Settings from Wybierz plik Modeli i Ustawien do wczytania - - - + + + Invalid binary Models and Settings File %1, Proceed anyway ? Nieprawidłowy plik Modeli i Ustawień : %1. Kontynuować ? - + Error reading file %1: %2. Błąd odczytu pliku %1: %2. - + Open Image to load Otwórz plik z logo - + Images (%1) Obrazki (%1) - - + + Cannot load %1. Nie mogę załadować %1. - + Cannot save customized firmware Nie mogę zapisać przystosowanego firmware - + Custom image not found Własny obrazek nie odnaleziony - + No firmware selected Brak wyboru firmware - + Wrong radio calibration data in profile, Settings not patched Błędna kalibracja radia w profilu, Ustawienia nie spatchowane - + Wrong radio setting data in profile, Settings not patched Błędne ustawienia radia w profilu, Ustawienia nie spatchowane - - + + Cannot write file %1: %2. Nie mogę zapisać pliku %1: %2. - + Error writing file %1: %2. Błąd zapisu pliku %1: @@ -8501,118 +8494,118 @@ m2560 dla platformy V4 - + Invert Odwróć - - + + Load FW Otwórz firmware - - + + Load Pict Otwórz obrazek - + Load Profile Załaduj profil - - + + Save Zapisz - + Open Splash Library Otwórz bibliotekę obrazków - - - + + + ... - - Open - Otwórz - - - - - + + + Error Błąd - - Cannot load embedded FW image from %1. - Nie mogę załadować wstawionego obrazu FW z %1. - - - + Cannot load the image file %1. Nie mogę załadować pliku obrazka %1. - + Cannot load the profile image %1. Nie mogę załadować obrazu Profilu %1. - + Cannot load the library image %1. Nie mogę załadować obrazu biblioteki %1. - + File Saved Plik Zapisany - + The image was saved to the file %1 Obraz został zapisany do pliku %1 - + Image Refresh Error Błąd odświeżenia obrazka - + Failed to refresh image from file %1 Nieudane odswieżenie obrazka z pliku %1 - + File Save Error Błąd zapisu pliku - + Failed to write image to %1 Nieudany zapis obrazka do %1 - + Open Image to load Otwórz obrazek do załadowania - + + Open Firmware File + Otwórz plik Firmware + + + + Can not load embedded image from firmware file %1. + Nie mogę załądować wbudowanego obrazka z pliku Firmware %1. + + + Images (%1) Obrazki (%1) From d8f7bde3243a4d54a422aa3209492a364aac38e0 Mon Sep 17 00:00:00 2001 From: Kjell Kernen Date: Sun, 23 Feb 2014 16:10:19 +0100 Subject: [PATCH 22/33] Fixed assert error --- companion/src/appdata.h | 2 +- companion/src/burndialog.cpp | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/companion/src/appdata.h b/companion/src/appdata.h index 7377bb4f0..fd037dd3b 100644 --- a/companion/src/appdata.h +++ b/companion/src/appdata.h @@ -287,7 +287,7 @@ class AppData: protected CompStoreObj int iconSize(); int historySize(); int jsCtrl(); - int modelEditTab(); + int modelEditTab(); // This variable is unused an can be removed int id(); int theme(); int warningId(); diff --git a/companion/src/burndialog.cpp b/companion/src/burndialog.cpp index bb1a32bf0..81c0ef3df 100644 --- a/companion/src/burndialog.cpp +++ b/companion/src/burndialog.cpp @@ -141,6 +141,8 @@ void burnDialog::on_FlashLoadButton_clicked() QTimer::singleShot(0, this, SLOT(shrink())); if (hexType==FLASH_FILE_TYPE) { fileName = QFileDialog::getOpenFileName(this, tr("Open Firmware File"), g.flashDir(), FLASH_FILES_FILTER); + if(fileName.isEmpty()) + return; checkFw(fileName); } else { From 6607dbd1b4ba39ec8d833010983821f8f36696d4 Mon Sep 17 00:00:00 2001 From: Kjell Kernen Date: Sun, 23 Feb 2014 18:40:56 +0100 Subject: [PATCH 23/33] Both the latest downloaded firmware variant and file name are now consistently stored in the profile. This means that switching profile switches both at the same time. Previously the file name was global and the firmware variant was stored per profile. This made use of profiles confusing. --- companion/src/appdata.cpp | 43 +++++++------- companion/src/appdata.h | 15 +++-- companion/src/apppreferencesdialog.cpp | 11 ++-- companion/src/apppreferencesdialog.ui | 68 +++++++++++++++------- companion/src/burndialog.cpp | 75 ++++++++++++------------- companion/src/companion.cpp | 11 ++-- companion/src/customizesplashdialog.cpp | 2 +- companion/src/fwpreferencesdialog.cpp | 6 +- companion/src/generaledit.cpp | 2 +- companion/src/mainwindow.cpp | 22 ++++---- companion/src/mainwindow.h | 1 - companion/src/modeledit/telemetry.cpp | 2 +- 12 files changed, 142 insertions(+), 116 deletions(-) diff --git a/companion/src/appdata.cpp b/companion/src/appdata.cpp index 21145f978..ec634da4d 100644 --- a/companion/src/appdata.cpp +++ b/companion/src/appdata.cpp @@ -188,17 +188,17 @@ void CompStoreObj::getset( int &number, const QString tag, const int def, const } // ** FwRevision class******************** -int FwRevision::get( const QString fwName ) +int FwRevision::get( const QString fwType ) { QString result; - retrieve( result, fwName, "", "FwRevisions" ); + retrieve( result, fwType, "", "FwRevisions" ); return result.toInt(); } -void FwRevision::set( const QString fwName, const int fwRevision ) +void FwRevision::set( const QString fwType, const int fwRevision ) { QString tempString= QString("%1").arg(fwRevision); - store( tempString, tempString, fwName, "FwRevisions" ); + store( tempString, tempString, fwType, "FwRevisions" ); } void FwRevision::remove( const QString tag ) @@ -280,13 +280,13 @@ void JStickData::flush() // ** Profile class******************** // Get declarations -QString Profile::firmware() const { return _firmware; } +QString Profile::fwName() const { return _fwName; } +QString Profile::fwType() const { return _fwType; } QString Profile::name() const { return _name; } QString Profile::sdPath() const { return _sdPath; } QString Profile::splashFile() const { return _splashFile; } bool Profile::burnFirmware() const { return _burnFirmware; } bool Profile::renameFwFiles() const { return _renameFwFiles; } -bool Profile::patchImage() const { return _patchImage; } int Profile::channelOrder() const { return _channelOrder; } int Profile::defaultMode() const { return _defaultMode; } @@ -305,12 +305,12 @@ int Profile::vBatWarn() const { return _vBatWarn; } // Set declarations void Profile::name (const QString x) { store(x, _name, "Name" ,"Profiles", QString("profile%1").arg(index));} -void Profile::firmware (const QString x) { store(x, _firmware, "firmware" ,"Profiles", QString("profile%1").arg(index));} +void Profile::fwName (const QString x) { store(x, _fwName, "fwName" ,"Profiles", QString("profile%1").arg(index));} +void Profile::fwType (const QString x) { store(x, _fwType, "fwType" ,"Profiles", QString("profile%1").arg(index));} void Profile::sdPath (const QString x) { store(x, _sdPath, "sdPath" ,"Profiles", QString("profile%1").arg(index));} void Profile::splashFile (const QString x) { store(x, _splashFile, "SplashFileName" ,"Profiles", QString("profile%1").arg(index));} void Profile::burnFirmware (const bool x) { store(x, _burnFirmware, "burnFirmware" ,"Profiles", QString("profile%1").arg(index));} void Profile::renameFwFiles (const bool x) { store(x, _renameFwFiles, "rename_firmware_files" ,"Profiles", QString("profile%1").arg(index));} -void Profile::patchImage (const bool x) { store(x, _patchImage, "patchImage" ,"Profiles", QString("profile%1").arg(index));} void Profile::channelOrder (const int x) { store(x, _channelOrder, "default_channel_order" ,"Profiles", QString("profile%1").arg(index));} void Profile::defaultMode (const int x) { store(x, _defaultMode, "default_mode" ,"Profiles", QString("profile%1").arg(index));} @@ -337,12 +337,12 @@ Profile::Profile() Profile& Profile::operator=(const Profile& rhs) { name ( rhs.name() ); - firmware ( rhs.firmware() ); + fwName ( rhs.fwName() ); + fwType ( rhs.fwType() ); sdPath ( rhs.sdPath() ); splashFile ( rhs.splashFile() ); burnFirmware ( rhs.burnFirmware() ); renameFwFiles( rhs.renameFwFiles() ); - patchImage ( rhs.patchImage() ); channelOrder ( rhs.channelOrder() ); defaultMode ( rhs.defaultMode() ); beeper ( rhs.beeper() ); @@ -389,13 +389,13 @@ void Profile::init(int newIndex) { index = newIndex; - _firmware = ""; + _fwName = ""; + _fwType = ""; _name = ""; _sdPath = ""; _splashFile = ""; _burnFirmware = false; _renameFwFiles = false; - _patchImage = false; _channelOrder = 0; _defaultMode = 1; @@ -423,13 +423,13 @@ void Profile::init(int newIndex) void Profile::flush() { // Load and store all variables. Use default values if setting values are missing - getset( _firmware, "firmware" ,"" ,"Profiles", QString("profile%1").arg(index)); + getset( _fwName, "fwName" ,"" ,"Profiles", QString("profile%1").arg(index)); + getset( _fwType, "fwType" ,"" ,"Profiles", QString("profile%1").arg(index)); getset( _name, "Name" ,"" ,"Profiles", QString("profile%1").arg(index)); getset( _sdPath, "sdPath" ,"" ,"Profiles", QString("profile%1").arg(index)); getset( _splashFile, "SplashFileName" ,"" ,"Profiles", QString("profile%1").arg(index)); getset( _burnFirmware, "burnFirmware" ,false ,"Profiles", QString("profile%1").arg(index)); getset( _renameFwFiles, "rename_firmware_files" ,false ,"Profiles", QString("profile%1").arg(index)); - getset( _patchImage, "patchImage" ,false ,"Profiles", QString("profile%1").arg(index)); getset( _channelOrder, "default_channel_order" ,0 ,"Profiles", QString("profile%1").arg(index)); getset( _defaultMode, "default_mode" ,1 ,"Profiles", QString("profile%1").arg(index)); @@ -464,7 +464,6 @@ QString AppData::compileServer() { return _compileServer; } QString AppData::cpuId() { return _cpuId; } QString AppData::dfuArguments() { return _dfuArguments; } QString AppData::dfuLocation() { return _dfuLocation; } -QString AppData::lastFw() { return _lastFw; } QString AppData::locale() { return _locale; } QString AppData::mcu() { return _mcu; } QString AppData::programmer() { return _programmer; } @@ -519,7 +518,6 @@ void AppData::compileServer (const QString x) { store(x, _compileServer, void AppData::cpuId (const QString x) { store(x, _cpuId, "cpu_id" );} void AppData::dfuArguments (const QString x) { store(x, _dfuArguments, "dfu_arguments" );} void AppData::dfuLocation (const QString x) { store(x, _dfuLocation, "dfu_location" );} -void AppData::lastFw (const QString x) { store(x, _lastFw, "lastFw" );} void AppData::locale (const QString x) { store(x, _locale, "locale" );} void AppData::mcu (const QString x) { store(x, _mcu, "mcu" );} void AppData::programmer (const QString x) { store(x, _programmer, "programmer" );} @@ -586,11 +584,11 @@ AppData::AppData() // Store old values in new locations autoCheckApp(settings.value("startup_check_companion9x", true).toBool()); - // Convert and store the firmware name - QString firmware = settings.value("firmware", "").toString(); - firmware.replace("open9x","opentx"); - firmware.replace("x9da","taranis"); - profile[0].firmware( firmware ); + // Convert and store the firmware type + QString fwType = settings.value("firmware", "").toString(); + fwType.replace("open9x","opentx"); + fwType.replace("x9da","taranis"); + profile[0].fwType( fwType ); // Move the Companion9x profile settings to profile0, the new default profile profile[0].name( settings.value( "Name", "" ).toString()); @@ -598,7 +596,6 @@ AppData::AppData() profile[0].splashFile( settings.value( "SplashFileName", "" ).toString()); profile[0].burnFirmware( settings.value( "burnFirmware", false ).toBool()); profile[0].renameFwFiles( settings.value( "rename_firmware_files", false ).toBool()); - profile[0].patchImage( settings.value( "patchImage", false ).toBool()); profile[0].channelOrder( settings.value( "default_channel_order", "0" ).toInt()); profile[0].defaultMode( settings.value( "default_mode", "1" ).toInt()); @@ -613,6 +610,7 @@ AppData::AppData() settings.remove("default_channel_order"); settings.remove("default_mode"); settings.remove("firmware"); + settings.remove("lastFw"); settings.remove("Name"); settings.remove("patchImage"); settings.remove("rename_firmware_files"); @@ -638,7 +636,6 @@ AppData::AppData() getset( _cpuId, "cpu_id" ,"" ); getset( _dfuArguments, "dfu_arguments" ,"-a 0" ); getset( _dfuLocation, "dfu_location" ,"" ); - getset( _lastFw, "lastFw" ,"" ); getset( _locale, "locale" ,"" ); getset( _mcu, "mcu" ,"m64" ); getset( _programmer, "programmer" ,"usbasp" ); diff --git a/companion/src/appdata.h b/companion/src/appdata.h index fd037dd3b..479229221 100644 --- a/companion/src/appdata.h +++ b/companion/src/appdata.h @@ -92,13 +92,13 @@ class Profile: protected CompStoreObj int index; // Application Variables - QString _firmware; + QString _fwName; + QString _fwType; QString _name; QString _sdPath; QString _splashFile; bool _burnFirmware; bool _renameFwFiles; - bool _patchImage; int _channelOrder; int _defaultMode; @@ -118,13 +118,13 @@ class Profile: protected CompStoreObj public: // All the get definitions - QString firmware() const; + QString fwName() const; + QString fwType() const; QString name() const; QString sdPath() const; QString splashFile() const; bool burnFirmware() const; bool renameFwFiles() const; - bool patchImage() const; //TODO This variable is unused and should be removed int channelOrder() const; int defaultMode() const; @@ -143,12 +143,12 @@ class Profile: protected CompStoreObj // All the set definitions void name (const QString); - void firmware (const QString); + void fwName (const QString); + void fwType (const QString); void sdPath (const QString); void splashFile (const QString); void burnFirmware (const bool); void renameFwFiles (const bool); - void patchImage (const bool); void channelOrder (const int); void defaultMode (const int); @@ -195,7 +195,6 @@ class AppData: protected CompStoreObj QString _cpuId; QString _dfuArguments; QString _dfuLocation; - QString _lastFw; QString _locale; QString _mcu; QString _programmer; @@ -251,7 +250,7 @@ class AppData: protected CompStoreObj QString cpuId(); QString dfuArguments(); QString dfuLocation(); - QString lastFw(); + QString lastFw(); QString locale(); QString mcu(); QString programmer(); diff --git a/companion/src/apppreferencesdialog.cpp b/companion/src/apppreferencesdialog.cpp index 5215fda5e..c416ff3db 100644 --- a/companion/src/apppreferencesdialog.cpp +++ b/companion/src/apppreferencesdialog.cpp @@ -63,7 +63,8 @@ void appPreferencesDialog::writeValues() g.profile[g.id()].name(ui->profileNameLE->text()); g.profile[g.id()].sdPath(ui->sdPath->text()); g.profile[g.id()].splashFile(ui->SplashFileName->text()); - g.profile[g.id()].firmware(ui->firmwareLE->text()); + g.profile[g.id()].fwName(ui->fwNameLE->text()); + g.profile[g.id()].fwType(ui->fwTypeLE->text()); saveProfile(); } @@ -145,7 +146,8 @@ void appPreferencesDialog::initSettings() ui->renameFirmware->setChecked(g.profile[g.id()].renameFwFiles()); ui->sdPath->setText(g.profile[g.id()].sdPath()); ui->profileNameLE->setText(g.profile[g.id()].name()); - ui->firmwareLE->setText(g.profile[g.id()].firmware()); + ui->fwNameLE->setText(g.profile[g.id()].fwName()); + ui->fwTypeLE->setText(g.profile[g.id()].fwType()); ui->SplashFileName->setText(g.profile[g.id()].splashFile()); displayImage( g.profile[g.id()].splashFile() ); @@ -248,7 +250,8 @@ void appPreferencesDialog::saveProfile() g.profile[g.id()].renameFwFiles( ui->renameFirmware->isChecked()); g.profile[g.id()].sdPath( ui->sdPath->text()); g.profile[g.id()].splashFile( ui->SplashFileName->text()); - g.profile[g.id()].firmware( ui->firmwareLE->text()); + g.profile[g.id()].fwName( ui->fwNameLE->text()); + g.profile[g.id()].fwType( ui->fwTypeLE->text()); } void appPreferencesDialog::on_removeProfileButton_clicked() @@ -274,7 +277,7 @@ bool appPreferencesDialog::displayImage( QString fileName ) // Use the firmware name to determine splash width int width = SPLASH_WIDTH; - if (g.profile[g.id()].firmware().contains("taranis")) + if (g.profile[g.id()].fwType().contains("taranis")) width = SPLASHX9D_WIDTH; ui->imageLabel->setPixmap(QPixmap::fromImage(image.scaled(width, SPLASH_HEIGHT))); diff --git a/companion/src/apppreferencesdialog.ui b/companion/src/apppreferencesdialog.ui index 98824f3b5..f6ace593c 100644 --- a/companion/src/apppreferencesdialog.ui +++ b/companion/src/apppreferencesdialog.ui @@ -502,7 +502,7 @@ Radio Settings Profile - + @@ -556,7 +556,7 @@ Mode 4: - + @@ -706,7 +706,7 @@ This is used by the templated to determine which channel goes to what number out - + @@ -726,7 +726,7 @@ This is used by the templated to determine which channel goes to what number out - + Qt::Vertical @@ -739,7 +739,7 @@ This is used by the templated to determine which channel goes to what number out - + @@ -752,7 +752,7 @@ This is used by the templated to determine which channel goes to what number out - + @@ -768,14 +768,14 @@ This is used by the templated to determine which channel goes to what number out - + Append version number to FW file name - + @@ -791,7 +791,7 @@ This is used by the templated to determine which channel goes to what number out - + true @@ -813,7 +813,7 @@ This is used by the templated to determine which channel goes to what number out - + Qt::Horizontal @@ -826,35 +826,35 @@ This is used by the templated to determine which channel goes to what number out - + Offer to write FW to Tx after download - + Remove Profile - + Open Folder - + Qt::Horizontal - + true @@ -879,12 +879,12 @@ This is used by the templated to determine which channel goes to what number out - Firmware + Firmware Variant - + false @@ -902,14 +902,14 @@ This is used by the templated to determine which channel goes to what number out - + Select Image - + Clear Image @@ -932,7 +932,7 @@ This is used by the templated to determine which channel goes to what number out - + @@ -966,13 +966,39 @@ This is used by the templated to determine which channel goes to what number out - + Qt::Horizontal + + + + Firmware File + + + + + + + false + + + + 350 + 0 + + + + + 350 + 16777215 + + + + diff --git a/companion/src/burndialog.cpp b/companion/src/burndialog.cpp index 81c0ef3df..dfc9d62b4 100644 --- a/companion/src/burndialog.cpp +++ b/companion/src/burndialog.cpp @@ -109,8 +109,7 @@ burnDialog::burnDialog(QWidget *parent, int Type, QString * fileName, bool * bac hexfileName->clear(); } else if (Type==FLASH_FILE_TYPE) { - QString FileName; - FileName = g.lastFw(); + QString FileName = g.profile[g.id()].fwName(); QFile file(FileName); if (file.exists()) { checkFw(FileName); @@ -353,31 +352,32 @@ void burnDialog::on_useFwImageCB_clicked() FlashInterface flash(fileName); if (!flash.isValid()) { QMessageBox::critical(this, tr("Error"), tr( "The firmware file is not valid." )); - return; } - if (!flash.hasSplash()) { - QMessageBox::critical(this, tr("Error"), tr( "There is no start screen image in the firmware file." )); - return; + else { + if (!flash.hasSplash()) { + QMessageBox::critical(this, tr("Error"), tr( "There is no start screen image in the firmware file." )); + } + else{ + imageSource = FIRMWARE; + imageFile = fileName; + } } - imageSource = FIRMWARE; - imageFile = fileName; updateUI(); } void burnDialog::on_useProfileImageCB_clicked() { QString fileName = g.profile[g.id()].splashFile(); - if (fileName.isEmpty()){ - QMessageBox::critical(this, tr("Error"), tr( "The radio profile has no defined start screen." )); - return; + if (!fileName.isEmpty()){ + QImage image(fileName); + if (image.isNull()) { + QMessageBox::critical(this, tr("Error"), tr("The profile image %1 does not contain an image.").arg(fileName)); + } + else { + imageSource = PROFILE; + imageFile = fileName; + } } - QImage image(fileName); - if (image.isNull()) { - QMessageBox::critical(this, tr("Error"), tr("The profile image %1 does not seem to contain an image.").arg(fileName)); - return; - } - imageSource = PROFILE; - imageFile = fileName; updateUI(); } @@ -388,17 +388,17 @@ void burnDialog::on_useAnotherImageCB_clicked() supportedImageFormats += QLatin1String(" *.") + QImageReader::supportedImageFormats()[formatIndex]; } QString fileName = QFileDialog::getOpenFileName(this, tr("Open image file to use as Tx start screen"), g.imagesDir(), tr("Images (%1)").arg(supportedImageFormats)); - if (fileName.isEmpty()){ - return; + if (!fileName.isEmpty()){ + g.imagesDir( QFileInfo(fileName).dir().absolutePath() ); + QImage image(fileName); + if (image.isNull()) { + QMessageBox::critical(this, tr("Error"), tr("Image could not be loaded from %1").arg(fileName)); + } + else{ + imageSource = ANOTHER; + imageFile = fileName; + } } - g.imagesDir( QFileInfo(fileName).dir().absolutePath() ); - QImage image(fileName); - if (image.isNull()) { - QMessageBox::critical(this, tr("Error"), tr("Image could not be loaded from %1").arg(fileName)); - return; - } - imageSource = ANOTHER; - imageFile = fileName; updateUI(); } @@ -407,16 +407,16 @@ void burnDialog::on_useLibraryImageCB_clicked() QString fileName; splashLibrary *ld = new splashLibrary(this,&fileName); ld->exec(); - if (fileName.isEmpty()) { - return; + if (!fileName.isEmpty()) { + QImage image(fileName); + if (image.isNull()) { + QMessageBox::critical(this, tr("Error"), tr("The library image could not be loaded")); + } + else{ + imageSource = LIBRARY; + imageFile = fileName; + } } - QImage image(fileName); - if (image.isNull()) { - QMessageBox::critical(this, tr("Error"), tr("The library image could not be loaded")); - return; - } - imageSource = LIBRARY; - imageFile = fileName; updateUI(); } @@ -426,7 +426,6 @@ void burnDialog::on_BurnFlashButton_clicked() QString fileName=ui->FWFileName->text(); if (!fileName.isEmpty()) { g.flashDir( QFileInfo(fileName).dir().absolutePath() ); - g.lastFw( fileName ); if (!ui->useFwImageCB->isChecked()) { QImage image = ui->imageLabel->pixmap()->toImage().scaled(ui->imageLabel->width(), ui->imageLabel->height()); if (!image.isNull()) { diff --git a/companion/src/companion.cpp b/companion/src/companion.cpp index 96a6d5597..37a988273 100644 --- a/companion/src/companion.cpp +++ b/companion/src/companion.cpp @@ -95,15 +95,18 @@ int main(int argc, char *argv[]) QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); - if (g.profile[g.id()].firmware().isEmpty()) - g.profile[g.id()].firmware(default_firmware_variant.id); + if (g.profile[g.id()].fwType().isEmpty()){ + g.profile[g.id()].fwType(default_firmware_variant.id); + g.profile[g.id()].fwName(""); + } + - QPixmap pixmap = QPixmap(g.profile[g.id()].firmware().contains("taranis") ? ":/images/splasht.png" : ":/images/splash.png"); + QPixmap pixmap = QPixmap(g.profile[g.id()].fwType().contains("taranis") ? ":/images/splasht.png" : ":/images/splash.png"); QSplashScreen *splash = new QSplashScreen(pixmap); RegisterFirmwares(); - current_firmware_variant = GetFirmwareVariant(g.profile[g.id()].firmware()); + current_firmware_variant = GetFirmwareVariant(g.profile[g.id()].fwType()); MainWindow *mainWin = new MainWindow(); if (g.showSplash()) { diff --git a/companion/src/customizesplashdialog.cpp b/companion/src/customizesplashdialog.cpp index 1be93d4a5..09c55aec3 100644 --- a/companion/src/customizesplashdialog.cpp +++ b/companion/src/customizesplashdialog.cpp @@ -56,7 +56,7 @@ bool Side::displayImage( QString fileName, Source pictSource ) if (pictSource== PICT) *format = image.width()>WIDTH_9X ? LCDTARANIS : LCD9X; else if (pictSource == PROFILE) - *format = (g.profile[g.id()].firmware().contains("taranis")) ? LCDTARANIS : LCD9X; + *format = (g.profile[g.id()].fwType().contains("taranis")) ? LCDTARANIS : LCD9X; } if (image.isNull()) { return false; diff --git a/companion/src/fwpreferencesdialog.cpp b/companion/src/fwpreferencesdialog.cpp index 17c7c6caf..ec2585ddc 100644 --- a/companion/src/fwpreferencesdialog.cpp +++ b/companion/src/fwpreferencesdialog.cpp @@ -213,7 +213,7 @@ void fwPreferencesDialog::writeValues() { g.cpuId( ui->CPU_ID_LE->text() ); current_firmware_variant = getFirmwareVariant(); - g.profile[g.id()].firmware( current_firmware_variant.id ); + g.profile[g.id()].fwType( current_firmware_variant.id ); } void fwPreferencesDialog::populateFirmwareOptions(const FirmwareInfo * firmware) @@ -290,7 +290,7 @@ void fwPreferencesDialog::on_checkFWUpdates_clicked() FirmwareVariant variant = getFirmwareVariant(); if (g.profile[g.id()].burnFirmware()) { current_firmware_variant = variant; - g.profile[g.id()].firmware( variant.id ); + g.profile[g.id()].fwType( variant.id ); } MainWindow * mw = (MainWindow *)this->parent(); mw->checkForUpdates(true, variant.id); @@ -305,7 +305,7 @@ void fwPreferencesDialog::on_fw_dnld_clicked() if (!variant.firmware->getUrl(variant.id).isNull()) { if (g.profile[g.id()].burnFirmware()) { current_firmware_variant = getFirmwareVariant(); - g.profile[g.id()].firmware( current_firmware_variant.id ); + g.profile[g.id()].fwType( current_firmware_variant.id ); } mw->downloadLatestFW(current_firmware_variant.firmware, current_firmware_variant.id); } diff --git a/companion/src/generaledit.cpp b/companion/src/generaledit.cpp index 6e96e0368..6c5b6dfc9 100644 --- a/companion/src/generaledit.cpp +++ b/companion/src/generaledit.cpp @@ -20,7 +20,7 @@ GeneralEdit::GeneralEdit(RadioData &radioData, QWidget *parent) : ui->setupUi(this); this->setWindowIcon(CompanionIcon("open.png")); - QString firmware_id = g.profile[g.id()].firmware(); + QString firmware_id = g.profile[g.id()].fwType(); ui->tabWidget->setCurrentIndex( g.generalEditTab() ); QString name=g.profile[g.id()].name(); if (name.isEmpty()) { diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index e4bb27f80..596f6b78c 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -308,7 +308,7 @@ void MainWindow::downloadLatestFW(FirmwareInfo * firmware, const QString & firmw if (!fileName.isEmpty()) { downloadedFW = firmwareId; needRename=true; - downloadedFWFilename = fileName; + g.profile[g.id()].fwName( fileName ); if (!cpuid.isEmpty()) { url.append("&cpuid="); url.append(cpuid); @@ -323,7 +323,7 @@ void MainWindow::downloadLatestFW(FirmwareInfo * firmware, const QString & firmw void MainWindow::reply1Accepted() { QString errormsg; - if (downloadedFWFilename.isEmpty()) { + if (g.profile[g.id()].fwName().isEmpty()) { if (!(downloadedFW.isEmpty())) { QFile file(downloadedFW); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { //reading HEX TEXT file @@ -364,11 +364,11 @@ void MainWindow::reply1Accepted() g.fwRev.set(downloadedFW, currentFWrev); } } else { - QFile file(downloadedFWFilename); + QFile file(g.profile[g.id()].fwName()); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { //reading HEX TEXT file QMessageBox::critical(this, tr("Error"), tr("Error opening file %1:\n%2.") - .arg(downloadedFWFilename) + .arg(g.profile[g.id()].fwName()) .arg(file.errorString())); return; } @@ -399,13 +399,13 @@ void MainWindow::reply1Accepted() return; } file.close(); - FlashInterface flash(downloadedFWFilename); + FlashInterface flash(g.profile[g.id()].fwName()); QString rev=flash.getSvn(); int pos=rev.lastIndexOf("-r"); if (pos>0) { currentFWrev=rev.mid(pos+2).toInt(); if (g.profile[g.id()].renameFwFiles() && needRename) { - QFileInfo fi(downloadedFWFilename); + QFileInfo fi(g.profile[g.id()].fwName()); QString path=fi.path()+QDir::separator (); path.append(fi.completeBaseName()); path.append(rev.mid(pos)); @@ -413,14 +413,14 @@ void MainWindow::reply1Accepted() path.append(fi.suffix()); QDir qd; qd.remove(path); - qd.rename(downloadedFWFilename,path); - downloadedFWFilename=path; + qd.rename(g.profile[g.id()].fwName(),path); + g.profile[g.id()].fwName(path); } g.fwRev.set(downloadedFW, currentFWrev); if (g.profile[g.id()].burnFirmware()) { int ret = QMessageBox::question(this, "Companion", tr("Do you want to write the firmware to the transmitter now ?"), QMessageBox::Yes | QMessageBox::No); if (ret == QMessageBox::Yes) { - writeFlash(downloadedFWFilename); + writeFlash(g.profile[g.id()].fwName()); } } } @@ -560,7 +560,7 @@ void MainWindow::reply1Finished(QNetworkReply * reply) url.append("&cpuid="); url.append(cpuid); } - downloadedFWFilename = fileName; + g.profile[g.id()].fwName( fileName ); g.flashDir(QFileInfo(fileName).dir().absolutePath()); downloadDialog * dd = new downloadDialog(this, url, fileName); currentFWrev_temp = NewFwRev; @@ -702,7 +702,7 @@ void MainWindow::loadProfile() //TODO Load all variables - Also HW! g.id( profnum ); // TODO Get rid of this global variable - The profile.firmware is the real source - current_firmware_variant = GetFirmwareVariant(g.profile[g.id()].firmware()); + current_firmware_variant = GetFirmwareVariant(g.profile[g.id()].fwType()); foreach (QMdiSubWindow *window, mdiArea->subWindowList()) { MdiChild *mdiChild = qobject_cast(window->widget()); diff --git a/companion/src/mainwindow.h b/companion/src/mainwindow.h index f746b1eb8..8bfca1fa8 100644 --- a/companion/src/mainwindow.h +++ b/companion/src/mainwindow.h @@ -197,7 +197,6 @@ private: QString installer_fileName; QString downloadedFW; - QString downloadedFWFilename; downloadDialog * downloadDialog_forWait; bool needRename; diff --git a/companion/src/modeledit/telemetry.cpp b/companion/src/modeledit/telemetry.cpp index 099ba56ab..e06fe96a3 100644 --- a/companion/src/modeledit/telemetry.cpp +++ b/companion/src/modeledit/telemetry.cpp @@ -457,7 +457,7 @@ TelemetryPanel::~TelemetryPanel() void TelemetryPanel::setup() { - QString firmware_id = g.profile[g.id()].firmware(); + QString firmware_id = g.profile[g.id()].fwType(); lock=true; From d4db0f1f95d9ab26cf4ceeb96de5c82ee465f6cf Mon Sep 17 00:00:00 2001 From: openfsguruh Date: Sun, 23 Feb 2014 20:34:16 +0100 Subject: [PATCH 24/33] typo in comment, no real change --- radio/src/targets/taranis/trainer_driver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/targets/taranis/trainer_driver.cpp b/radio/src/targets/taranis/trainer_driver.cpp index 9319cc18b..f4b4e548c 100644 --- a/radio/src/targets/taranis/trainer_driver.cpp +++ b/radio/src/targets/taranis/trainer_driver.cpp @@ -124,7 +124,7 @@ extern "C" void TIM3_IRQHandler() val = (uint16_t)(capture - lastCapt) / 2 ; lastCapt = capture; - // We prcoess g_ppmInsright here to make servo movement as smooth as possible + // We process g_ppmInsright here to make servo movement as smooth as possible // while under trainee control if ((val>4000) && (val < 19000)) { // G: Prioritize reset pulse. (Needed when less than 8 incoming pulses) ppmInState = 1; // triggered From c28968910510e19d5ad05c231ce4ea406a85c047 Mon Sep 17 00:00:00 2001 From: Kjell Kernen Date: Sun, 23 Feb 2014 22:24:43 +0100 Subject: [PATCH 25/33] All splash imgage display dialogs now use common code. The splash image library displayed all images in 128x64 mono format. Changed this to display either in 128x64 mono or 212x64 gray scale depending on profile information. --- companion/src/apppreferencesdialog.cpp | 26 +-- companion/src/apppreferencesdialog.ui | 5 +- companion/src/burndialog.cpp | 21 +- companion/src/burndialog.ui | 13 +- companion/src/customizesplashdialog.cpp | 68 +++--- companion/src/helpers.cpp | 22 ++ companion/src/helpers.h | 2 + companion/src/splashlibrary.cpp | 8 +- companion/src/splashlibrary.h | 1 - companion/src/splashlibrary.ui | 297 +++++++++++------------- 10 files changed, 201 insertions(+), 262 deletions(-) diff --git a/companion/src/apppreferencesdialog.cpp b/companion/src/apppreferencesdialog.cpp index c416ff3db..96f5268c3 100644 --- a/companion/src/apppreferencesdialog.cpp +++ b/companion/src/apppreferencesdialog.cpp @@ -279,29 +279,9 @@ bool appPreferencesDialog::displayImage( QString fileName ) int width = SPLASH_WIDTH; if (g.profile[g.id()].fwType().contains("taranis")) width = SPLASHX9D_WIDTH; - - ui->imageLabel->setPixmap(QPixmap::fromImage(image.scaled(width, SPLASH_HEIGHT))); - if (width==SPLASHX9D_WIDTH) { - image=image.convertToFormat(QImage::Format_RGB32); - QRgb col; - int gray, height = image.height(); - for (int i = 0; i < width; ++i) { - for (int j = 0; j < height; ++j) { - col = image.pixel(i, j); - gray = qGray(col); - image.setPixel(i, j, qRgb(gray, gray, gray)); - } - } - ui->imageLabel->setPixmap(QPixmap::fromImage(image)); - } - else { - ui->imageLabel->setPixmap(QPixmap::fromImage(image.convertToFormat(QImage::Format_Mono))); - } - if (width == SPLASH_WIDTH) - ui->imageLabel->setFixedSize(SPLASH_WIDTH, SPLASH_HEIGHT); - else - ui->imageLabel->setFixedSize(SPLASHX9D_WIDTH, SPLASHX9D_HEIGHT); - + + ui->imageLabel->setPixmap( makePixMap( image, g.profile[g.id()].fwType())); + ui->imageLabel->setFixedSize(width, SPLASH_HEIGHT); return true; } diff --git a/companion/src/apppreferencesdialog.ui b/companion/src/apppreferencesdialog.ui index f6ace593c..bdaaff9d4 100644 --- a/companion/src/apppreferencesdialog.ui +++ b/companion/src/apppreferencesdialog.ui @@ -956,7 +956,10 @@ This is used by the templated to determine which channel goes to what number out QFrame::Panel - QFrame::Raised + QFrame::Plain + + + 1 diff --git a/companion/src/burndialog.cpp b/companion/src/burndialog.cpp index dfc9d62b4..617c7ea9e 100644 --- a/companion/src/burndialog.cpp +++ b/companion/src/burndialog.cpp @@ -311,26 +311,7 @@ void burnDialog::displaySplash() if (image.isNull()) { return; } - if (ui->imageLabel->width()!=128) { - image=image.convertToFormat(QImage::Format_RGB32); - QRgb col; - int gray; - int width = image.width(); - int height = image.height(); - for (int i = 0; i < width; ++i) - { - for (int j = 0; j < height; ++j) - { - col = image.pixel(i, j); - gray = qGray(col); - image.setPixel(i, j, qRgb(gray, gray, gray)); - } - } - ui->imageLabel->setPixmap(QPixmap::fromImage(image.scaled(ui->imageLabel->width(), ui->imageLabel->height()))); - } - else { - ui->imageLabel->setPixmap(QPixmap::fromImage(image.scaled(ui->imageLabel->width(), ui->imageLabel->height()).convertToFormat(QImage::Format_Mono))); - } + ui->imageLabel->setPixmap( makePixMap( image, g.profile[g.id()].fwType())); } void burnDialog::updateUI() diff --git a/companion/src/burndialog.ui b/companion/src/burndialog.ui index 89107b672..772304390 100644 --- a/companion/src/burndialog.ui +++ b/companion/src/burndialog.ui @@ -279,7 +279,7 @@ QFrame::Panel - QFrame::Raised + QFrame::Plain @@ -374,12 +374,21 @@ + BurnFlashButton FWFileName FlashLoadButton + DateField + SVNField + ModField + useProfileImageCB + useFwImageCB + useLibraryImageCB + useAnotherImageCB EEbackupCB + patchcalib_CB + patchhw_CB EEpromCB cancelButton - BurnFlashButton diff --git a/companion/src/customizesplashdialog.cpp b/companion/src/customizesplashdialog.cpp index 09c55aec3..42bf463da 100644 --- a/companion/src/customizesplashdialog.cpp +++ b/companion/src/customizesplashdialog.cpp @@ -41,7 +41,7 @@ bool Side::displayImage( QString fileName, Source pictSource ) if (fileName.isEmpty()) return false; - + // Determine which picture format to use if (pictSource == FW ){ FlashInterface flash(fileName); @@ -49,7 +49,7 @@ bool Side::displayImage( QString fileName, Source pictSource ) return false; else image = flash.getSplash(); - *format = (flash.getSplashWidth()==WIDTH_TARANIS ? LCDTARANIS : LCD9X); + *format = (flash.getSplashWidth()==WIDTH_TARANIS ? LCDTARANIS : LCD9X); } else { image.load(fileName); @@ -61,48 +61,34 @@ bool Side::displayImage( QString fileName, Source pictSource ) if (image.isNull()) { return false; } - // Prepare and display image + // Load image if (*format==LCDTARANIS) { - image=image.convertToFormat(QImage::Format_RGB32); - QRgb col; - int gray; - int width = image.width(); - int height = image.height(); - for (int i = 0; i < width; ++i) { - for (int j = 0; j < height; ++j) { - col = image.pixel(i, j); - gray = qGray(col); - image.setPixel(i, j, qRgb(gray, gray, gray)); - } - } - imageLabel->setPixmap(QPixmap::fromImage(image.scaled(imageLabel->width()/2, imageLabel->height()/2))); + imageLabel->setPixmap( makePixMap( image, "taranis" )); + imageLabel->setFixedSize(WIDTH_TARANIS*2, HEIGHT_TARANIS*2); } - else - imageLabel->setPixmap(QPixmap::fromImage(image.scaled(imageLabel->width()/2, imageLabel->height()/2).convertToFormat(QImage::Format_Mono))); - - if (*format == LCD9X) - imageLabel->setFixedSize(WIDTH_9X*2, HEIGHT_9X*2); - else - imageLabel->setFixedSize(WIDTH_TARANIS*2, HEIGHT_TARANIS*2); - + else { + imageLabel->setPixmap( makePixMap( image, "9x" )); + imageLabel->setFixedSize(WIDTH_9X*2, HEIGHT_9X*2); + } + switch (pictSource){ - case FW: - fileNameEdit->setText(QObject::tr("FW: %1").arg(fileName)); - *saveToFileName = fileName; - *source=FW; - break; - case PICT: - fileNameEdit->setText(QObject::tr("Pict: %1").arg(fileName)); - *saveToFileName = fileName; - *source=PICT; - break; - case PROFILE: - fileNameEdit->setText(QObject::tr("Profile image")); - *saveToFileName = fileName; - *source=PROFILE; - break; - default: - break; + case FW: + fileNameEdit->setText(QObject::tr("FW: %1").arg(fileName)); + *saveToFileName = fileName; + *source=FW; + break; + case PICT: + fileNameEdit->setText(QObject::tr("Pict: %1").arg(fileName)); + *saveToFileName = fileName; + *source=PICT; + break; + case PROFILE: + fileNameEdit->setText(QObject::tr("Profile image")); + *saveToFileName = fileName; + *source=PROFILE; + break; + default: + break; } saveButton->setEnabled(true); libraryButton->setEnabled(true); diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index 99dec9a63..2c7f9fc0c 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -2,6 +2,7 @@ #include "appdata.h" #include "helpers.h" #include "simulatordialog.h" +#include "flashinterface.h" QString getPhaseName(int val, char * phasename) { @@ -946,3 +947,24 @@ void startSimulation(QWidget * parent, RadioData & radioData, int modelIdx) QObject::tr("Simulator for this firmware is not yet available")); } } + +QPixmap makePixMap( QImage image, QString firmwareType ) +{ + if (firmwareType.contains( "taranis" )) { + image = image.convertToFormat(QImage::Format_RGB32); + QRgb col; + int gray; + for (int i = 0; i < image.width(); ++i) { + for (int j = 0; j < image.height(); ++j) { + col = image.pixel(i, j); + gray = qGray(col); + image.setPixel(i, j, qRgb(gray, gray, gray)); + } + } + image = image.scaled(SPLASHX9D_WIDTH, SPLASHX9D_HEIGHT); + } + else { + image = image.scaled(SPLASH_WIDTH, SPLASH_HEIGHT).convertToFormat(QImage::Format_Mono); + } + return(QPixmap::fromImage(image)); +} diff --git a/companion/src/helpers.h b/companion/src/helpers.h index fdebcb170..5d667e5d8 100644 --- a/companion/src/helpers.h +++ b/companion/src/helpers.h @@ -128,4 +128,6 @@ QString getFrSkySrc(int index); void startSimulation(QWidget * parent, RadioData & radioData, int modelIdx); +QPixmap makePixMap( QImage image, QString firmwareType ); + #endif // HELPERS_H diff --git a/companion/src/splashlibrary.cpp b/companion/src/splashlibrary.cpp index 5685406b7..d35dd48a6 100644 --- a/companion/src/splashlibrary.cpp +++ b/companion/src/splashlibrary.cpp @@ -3,7 +3,6 @@ #include "appdata.h" #include #include "helpers.h" -//#include "splashlabel.h" #include "flashinterface.h" #include "helpers.h" @@ -23,7 +22,6 @@ splashLibrary::splashLibrary(QWidget *parent, QString * fileName) : QDialog(pare foreach(splashLabel *sl, findChildren()) { connect(sl, SIGNAL(buttonPressed(int)), this, SLOT(onButtonPressed(int))); } - resize(0, 0); } splashLibrary::~splashLibrary() { @@ -40,7 +38,7 @@ void splashLibrary::setupPage(int page) { if ((i + 20 * page) < imageList.size()) { QImage image(imageList.at(i + 20 * page)); if (!image.isNull()) { - sl[i]->setPixmap(QPixmap::fromImage(image.scaled(SPLASH_WIDTH, SPLASH_HEIGHT).convertToFormat(QImage::Format_Mono))); + sl[i]->setPixmap(makePixMap(image, g.profile[g.id()].fwType())); sl[i]->setEnabled(true); sl[i]->setId((i + 20 * page)); sl[i]->setStyleSheet("border:1px solid; border-color:#999999;"); @@ -104,10 +102,6 @@ void splashLibrary::getFileList() { } } -void splashLibrary::shrink() { - resize(0, 0); -} - void splashLibrary::dclose() { close(); } diff --git a/companion/src/splashlibrary.h b/companion/src/splashlibrary.h index 9da9d58e4..0d9123a74 100644 --- a/companion/src/splashlibrary.h +++ b/companion/src/splashlibrary.h @@ -17,7 +17,6 @@ public: ~splashLibrary(); private slots: - void shrink() ; void dclose(); void onButtonPressed(int button); void on_nextPage_clicked(); diff --git a/companion/src/splashlibrary.ui b/companion/src/splashlibrary.ui index 15e1b54a0..5ce1e2502 100644 --- a/companion/src/splashlibrary.ui +++ b/companion/src/splashlibrary.ui @@ -6,22 +6,16 @@ 0 0 - 662 - 356 + 650 + 374 - + 0 0 - - - 662 - 356 - - @@ -39,10 +33,16 @@ - 50 + 34 0 + + + 34 + 16777215 + + ... @@ -54,12 +54,15 @@ - + + + QLayout::SetNoConstraint + - + 0 0 @@ -72,7 +75,7 @@ - 130 + 214 66 @@ -105,7 +108,7 @@ - + 0 0 @@ -113,55 +116,12 @@ 130 - 66 + 0 - 130 - 66 - - - - true - - - border:1px; - - - QFrame::Panel - - - QFrame::Plain - - - 0 - - - - - - true - - - - - - - - 0 - 0 - - - - - 130 - 66 - - - - - 130 + 214 66 @@ -191,7 +151,7 @@ - + 0 0 @@ -199,12 +159,12 @@ 130 - 66 + 0 - 130 + 214 66 @@ -234,20 +194,20 @@ - + 0 0 - 130 + 0 66 - 130 + 214 66 @@ -277,20 +237,14 @@ - + 0 0 - - - 130 - 66 - - - 130 + 214 66 @@ -320,20 +274,14 @@ - + 0 0 - - - 130 - 66 - - - 130 + 214 66 @@ -363,20 +311,14 @@ - + 0 0 - - - 130 - 66 - - - 130 + 214 66 @@ -406,20 +348,20 @@ - + 0 0 - 130 + 0 66 - 130 + 214 66 @@ -449,20 +391,14 @@ - + 0 0 - - - 130 - 66 - - - 130 + 214 66 @@ -492,20 +428,14 @@ - + 0 0 - - - 130 - 66 - - - 130 + 214 66 @@ -535,20 +465,14 @@ - + 0 0 - - - 130 - 66 - - - 130 + 214 66 @@ -578,20 +502,20 @@ - + 0 0 - 130 + 0 66 - 130 + 214 66 @@ -621,20 +545,14 @@ - + 0 0 - - - 130 - 66 - - - 130 + 214 66 @@ -664,20 +582,14 @@ - + 0 0 - - - 130 - 66 - - - 130 + 214 66 @@ -707,20 +619,14 @@ - + 0 0 - - - 130 - 66 - - - 130 + 214 66 @@ -750,20 +656,20 @@ - + 0 0 - 130 + 0 66 - 130 + 214 66 @@ -793,20 +699,14 @@ - + 0 0 - - - 130 - 66 - - - 130 + 214 66 @@ -836,20 +736,14 @@ - + 0 0 - - - 130 - 66 - - - 130 + 214 66 @@ -879,7 +773,44 @@ - + + 0 + 0 + + + + + 214 + 66 + + + + true + + + border:1px; + + + QFrame::Panel + + + QFrame::Plain + + + 0 + + + + + + true + + + + + + + 0 0 @@ -887,12 +818,12 @@ 130 - 66 + 0 - 130 + 214 66 @@ -921,7 +852,7 @@ - + false @@ -934,10 +865,16 @@ - 50 + 34 0 + + + 34 + 16777215 + + ... @@ -949,6 +886,32 @@ + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + From dc37677cc6a733dbaf591b108e03c8377380ee0d Mon Sep 17 00:00:00 2001 From: Kjell Kernen Date: Mon, 24 Feb 2014 12:22:46 +0100 Subject: [PATCH 26/33] Removing ER9x and Open9x specific imagery --- companion/src/images/library/00001.png | Bin 662 -> 353 bytes companion/src/images/library/00002.png | Bin 554 -> 2331 bytes companion/src/images/library/00004.png | Bin 831 -> 0 bytes companion/src/images/library/00017.png | Bin 0 -> 634 bytes .../images/library/{10001.png => 00501.png} | Bin .../images/library/{10002.png => 00502.png} | Bin companion/src/images/library/00503.png | Bin 0 -> 445 bytes companion/src/images/library/00504.png | Bin 0 -> 668 bytes companion/src/images/library/00505.png | Bin 0 -> 739 bytes companion/src/images/library/00506.png | Bin 0 -> 776 bytes companion/src/images/library/00508.png | Bin 0 -> 767 bytes companion/src/images/library/00601.png | Bin 0 -> 590 bytes companion/src/images/library/00602.png | Bin 0 -> 563 bytes companion/src/images/library/00603.png | Bin 0 -> 612 bytes companion/src/images/library/01001.png | Bin 911 -> 0 bytes companion/src/images/library/01002.png | Bin 855 -> 0 bytes companion/src/images/library/01003.png | Bin 840 -> 0 bytes companion/src/images/library/01004.png | Bin 883 -> 0 bytes companion/src/images/library/01005.png | Bin 883 -> 0 bytes companion/src/images/library/01006.png | Bin 840 -> 0 bytes companion/src/images/library/01007.png | Bin 855 -> 0 bytes companion/src/images/library/01008.png | Bin 911 -> 0 bytes companion/src/images/library/10003.png | Bin 857 -> 0 bytes companion/src/images/library/10004.png | Bin 752 -> 0 bytes companion/src/images/library/10005.png | Bin 889 -> 0 bytes companion/src/images/library/10006.png | Bin 677 -> 0 bytes companion/src/images/library/10008.png | Bin 606 -> 0 bytes companion/src/images/library/10009.png | Bin 653 -> 0 bytes companion/src/images/library/10010.png | Bin 645 -> 0 bytes companion/src/images/library/10012.png | Bin 664 -> 0 bytes companion/src/images/library/10013.png | Bin 612 -> 0 bytes companion/src/images/library/10014.png | Bin 656 -> 0 bytes companion/src/images/library/10016.png | Bin 601 -> 0 bytes companion/src/images/library/10017.png | Bin 659 -> 0 bytes companion/src/images/library/10018.png | Bin 712 -> 0 bytes companion/src/images/library/10019.png | Bin 752 -> 0 bytes companion/src/images/library/10020.png | Bin 783 -> 0 bytes companion/src/images/library/10021.png | Bin 744 -> 0 bytes companion/src/images/library/10022.png | Bin 812 -> 0 bytes companion/src/images/library/10023.png | Bin 451 -> 0 bytes companion/src/images/library/10024.png | Bin 555 -> 0 bytes companion/src/images/library/10025.png | Bin 601 -> 0 bytes companion/src/images/library/10026.png | Bin 732 -> 725 bytes companion/src/images/library/10027.png | Bin 799 -> 881 bytes companion/src/images/library/10028.png | Bin 748 -> 0 bytes companion/src/images/library/10029.png | Bin 755 -> 0 bytes companion/src/images/library/10030.png | Bin 746 -> 771 bytes companion/src/images/library/10031.png | Bin 675 -> 624 bytes companion/src/images/library/10032.png | Bin 600 -> 0 bytes companion/src/images/library/10033.png | Bin 709 -> 0 bytes companion/src/images/library/10034.png | Bin 690 -> 0 bytes companion/src/images/library/10035.png | Bin 721 -> 0 bytes companion/src/images/library/10036.png | Bin 716 -> 682 bytes companion/src/images/library/10037.png | Bin 715 -> 0 bytes companion/src/images/library/10038.png | Bin 764 -> 577 bytes companion/src/images/library/10039.png | Bin 724 -> 887 bytes companion/src/images/library/10040.png | Bin 450 -> 0 bytes companion/src/images/library/10041.png | Bin 819 -> 0 bytes companion/src/images/library/10042.png | Bin 695 -> 0 bytes companion/src/images/library/10043.png | Bin 638 -> 0 bytes companion/src/images/library/10044.png | Bin 602 -> 0 bytes companion/src/images/library/10045.png | Bin 762 -> 0 bytes companion/src/images/library/10046.png | Bin 666 -> 0 bytes companion/src/images/library/10047.png | Bin 650 -> 0 bytes companion/src/images/library/10048.png | Bin 594 -> 0 bytes companion/src/images/library/10049.png | Bin 706 -> 0 bytes companion/src/images/library/10050.png | Bin 701 -> 0 bytes companion/src/images/library/10051.png | Bin 678 -> 0 bytes companion/src/images/library/10052.png | Bin 690 -> 0 bytes companion/src/images/library/10053.png | Bin 529 -> 0 bytes companion/src/images/library/10054.png | Bin 548 -> 0 bytes companion/src/images/library/10055.png | Bin 659 -> 0 bytes companion/src/images/library/10056.png | Bin 563 -> 0 bytes companion/src/images/library/10057.png | Bin 855 -> 0 bytes companion/src/images/library/10059.png | Bin 703 -> 0 bytes companion/src/images/library/10060.png | Bin 1567 -> 0 bytes companion/src/images/library/10061.png | Bin 732 -> 0 bytes companion/src/images/library/10062.png | Bin 647 -> 0 bytes companion/src/images/library/10063.png | Bin 543 -> 0 bytes companion/src/images/library/10064.png | Bin 641 -> 0 bytes companion/src/images/library/10065.png | Bin 587 -> 0 bytes companion/src/images/library/10066.png | Bin 658 -> 0 bytes companion/src/images/library/10067.png | Bin 524 -> 0 bytes companion/src/images/library/10068.png | Bin 560 -> 0 bytes companion/src/images/library/10069.png | Bin 746 -> 0 bytes companion/src/images/library/10071.png | Bin 695 -> 0 bytes companion/src/images/library/10072.png | Bin 705 -> 0 bytes companion/src/images/library/10073.png | Bin 734 -> 0 bytes companion/src/images/library/10074.png | Bin 762 -> 0 bytes companion/src/images/library/10075.png | Bin 651 -> 0 bytes companion/src/images/library/10076.png | Bin 704 -> 0 bytes companion/src/images/library/10077.png | Bin 479 -> 0 bytes companion/src/images/library/10078.png | Bin 654 -> 0 bytes companion/src/images/library/10079.png | Bin 594 -> 0 bytes companion/src/images/library/10080.png | Bin 657 -> 0 bytes companion/src/images/library/10081.png | Bin 521 -> 0 bytes companion/src/images/library/10082.png | Bin 949 -> 0 bytes companion/src/images/library/10083.png | Bin 576 -> 529 bytes companion/src/images/library/10084.png | Bin 755 -> 0 bytes companion/src/images/library/10085.png | Bin 568 -> 573 bytes companion/src/images/library/10086.png | Bin 713 -> 0 bytes companion/src/images/library/10087.png | Bin 611 -> 0 bytes companion/src/images/library/10088.png | Bin 438 -> 466 bytes companion/src/images/library/10089.png | Bin 573 -> 0 bytes companion/src/images/library/10090.png | Bin 580 -> 607 bytes companion/src/images/library/10091.png | Bin 825 -> 0 bytes companion/src/images/library/10093.png | Bin 618 -> 529 bytes companion/src/images/library/10095.png | Bin 892 -> 0 bytes companion/src/images/library/10097.png | Bin 953 -> 0 bytes companion/src/images/library/10098.png | Bin 808 -> 863 bytes companion/src/images/library/10099.png | Bin 584 -> 0 bytes companion/src/images/library/10100.png | Bin 806 -> 0 bytes companion/src/images/library/10101.png | Bin 888 -> 0 bytes companion/src/images/library/10102.png | Bin 941 -> 0 bytes companion/src/images/library/10103.png | Bin 737 -> 0 bytes companion/src/images/library/10104.png | Bin 670 -> 572 bytes companion/src/images/library/20001.png | Bin 751 -> 469 bytes companion/src/images/library/20002.png | Bin 945 -> 609 bytes companion/src/images/library/20003.png | Bin 882 -> 492 bytes companion/src/images/library/20004.png | Bin 878 -> 712 bytes companion/src/images/library/30001.png | Bin 2879 -> 865 bytes companion/src/images/library/300011.png | Bin 0 -> 2821 bytes companion/src/images/library/30002.png | Bin 2767 -> 3381 bytes companion/src/images/library/30003.png | Bin 4233 -> 0 bytes companion/src/images/library/30004.png | Bin 3049 -> 0 bytes companion/src/images/library/30005.png | Bin 3152 -> 2395 bytes companion/src/images/library/30006.png | Bin 3600 -> 0 bytes 127 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 companion/src/images/library/00004.png create mode 100644 companion/src/images/library/00017.png rename companion/src/images/library/{10001.png => 00501.png} (100%) rename companion/src/images/library/{10002.png => 00502.png} (100%) create mode 100644 companion/src/images/library/00503.png create mode 100644 companion/src/images/library/00504.png create mode 100644 companion/src/images/library/00505.png create mode 100644 companion/src/images/library/00506.png create mode 100644 companion/src/images/library/00508.png create mode 100644 companion/src/images/library/00601.png create mode 100644 companion/src/images/library/00602.png create mode 100644 companion/src/images/library/00603.png delete mode 100644 companion/src/images/library/01001.png delete mode 100644 companion/src/images/library/01002.png delete mode 100644 companion/src/images/library/01003.png delete mode 100644 companion/src/images/library/01004.png delete mode 100644 companion/src/images/library/01005.png delete mode 100644 companion/src/images/library/01006.png delete mode 100644 companion/src/images/library/01007.png delete mode 100644 companion/src/images/library/01008.png delete mode 100644 companion/src/images/library/10003.png delete mode 100644 companion/src/images/library/10004.png delete mode 100644 companion/src/images/library/10005.png delete mode 100644 companion/src/images/library/10006.png delete mode 100644 companion/src/images/library/10008.png delete mode 100644 companion/src/images/library/10009.png delete mode 100644 companion/src/images/library/10010.png delete mode 100644 companion/src/images/library/10012.png delete mode 100644 companion/src/images/library/10013.png delete mode 100644 companion/src/images/library/10014.png delete mode 100644 companion/src/images/library/10016.png delete mode 100644 companion/src/images/library/10017.png delete mode 100644 companion/src/images/library/10018.png delete mode 100644 companion/src/images/library/10019.png delete mode 100644 companion/src/images/library/10020.png delete mode 100644 companion/src/images/library/10021.png delete mode 100644 companion/src/images/library/10022.png delete mode 100644 companion/src/images/library/10023.png delete mode 100644 companion/src/images/library/10024.png delete mode 100644 companion/src/images/library/10025.png delete mode 100644 companion/src/images/library/10028.png delete mode 100644 companion/src/images/library/10029.png delete mode 100644 companion/src/images/library/10032.png delete mode 100644 companion/src/images/library/10033.png delete mode 100644 companion/src/images/library/10034.png delete mode 100644 companion/src/images/library/10035.png delete mode 100644 companion/src/images/library/10037.png delete mode 100644 companion/src/images/library/10040.png delete mode 100644 companion/src/images/library/10041.png delete mode 100644 companion/src/images/library/10042.png delete mode 100644 companion/src/images/library/10043.png delete mode 100644 companion/src/images/library/10044.png delete mode 100644 companion/src/images/library/10045.png delete mode 100644 companion/src/images/library/10046.png delete mode 100644 companion/src/images/library/10047.png delete mode 100644 companion/src/images/library/10048.png delete mode 100644 companion/src/images/library/10049.png delete mode 100644 companion/src/images/library/10050.png delete mode 100644 companion/src/images/library/10051.png delete mode 100644 companion/src/images/library/10052.png delete mode 100644 companion/src/images/library/10053.png delete mode 100644 companion/src/images/library/10054.png delete mode 100644 companion/src/images/library/10055.png delete mode 100644 companion/src/images/library/10056.png delete mode 100644 companion/src/images/library/10057.png delete mode 100644 companion/src/images/library/10059.png delete mode 100644 companion/src/images/library/10060.png delete mode 100644 companion/src/images/library/10061.png delete mode 100644 companion/src/images/library/10062.png delete mode 100644 companion/src/images/library/10063.png delete mode 100644 companion/src/images/library/10064.png delete mode 100644 companion/src/images/library/10065.png delete mode 100644 companion/src/images/library/10066.png delete mode 100644 companion/src/images/library/10067.png delete mode 100644 companion/src/images/library/10068.png delete mode 100644 companion/src/images/library/10069.png delete mode 100644 companion/src/images/library/10071.png delete mode 100644 companion/src/images/library/10072.png delete mode 100644 companion/src/images/library/10073.png delete mode 100644 companion/src/images/library/10074.png delete mode 100644 companion/src/images/library/10075.png delete mode 100644 companion/src/images/library/10076.png delete mode 100644 companion/src/images/library/10077.png delete mode 100644 companion/src/images/library/10078.png delete mode 100644 companion/src/images/library/10079.png delete mode 100644 companion/src/images/library/10080.png delete mode 100644 companion/src/images/library/10081.png delete mode 100644 companion/src/images/library/10082.png delete mode 100644 companion/src/images/library/10084.png delete mode 100644 companion/src/images/library/10086.png delete mode 100644 companion/src/images/library/10087.png delete mode 100644 companion/src/images/library/10089.png delete mode 100644 companion/src/images/library/10091.png delete mode 100644 companion/src/images/library/10095.png delete mode 100644 companion/src/images/library/10097.png delete mode 100644 companion/src/images/library/10099.png delete mode 100644 companion/src/images/library/10100.png delete mode 100644 companion/src/images/library/10101.png delete mode 100644 companion/src/images/library/10102.png delete mode 100644 companion/src/images/library/10103.png create mode 100644 companion/src/images/library/300011.png delete mode 100644 companion/src/images/library/30003.png delete mode 100644 companion/src/images/library/30004.png delete mode 100644 companion/src/images/library/30006.png diff --git a/companion/src/images/library/00001.png b/companion/src/images/library/00001.png index 57c8485a91191a8b265538330cb57ce77100985a..0218d0570a6be5207e3bba6c272d9f3c45af1b6d 100644 GIT binary patch delta 312 zcmV-80muH91>pja7#jft0002!80|a&000J1OjJbx00960|E1ZV-H{<4f8GKZ3NJ3m z&`X;D008buL_t(I%k9!JZo@DP1yHFPJn{zhMbz+I1q@h4hmJi$ui~6QS756Pu$uxn zW=X|G;;hLSPR4^Q@)L6IQFp5#@a8y50)#ai+(^tlI(vJ-Vd_^60+pC z;(+|oKq^+r`;ru-I_G(ge*?q5Oh8Upfntmd--Q%Lg+M!l-@*o@Fg?d8`B18YO>Qtq zel4>?e*)|BQWiTwD==U?(e9uf5<}na_;2eNpmjM7HW+j^hd4K941#3| zYkUK5X**ud`*~7;%?cIz&5|2nvQ@Ss1)Ma@C5)-3$BVtW{s3tl60+Z#oo4X>0000< KMNUMnLSTZWREL`Y delta 650 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 literal 554 zcmV+_0@eMAP)(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-ut`KgRCwByl0lBsKoCWrE0$~_gpJsaXp3{8WQLQ3dsvD`ngiqp zOjk@n#4t0BCtuLpT6D0t!$M*J=Y1 z0AUBfHwfoyQmoVi73=T)!F1*|rmH>x z%Y_%#Yu>Y7)7&`@xd-(|JM~8Qwl|fPjI!Z|GQH>4iX3yca?IJ10Ud>FSH<47rrLk% zi-_RT^3d}JB6(Vj)!WZLTpdF|O3O7RD3)`jaa@dkTDt!9IS90r_BIEeQI?}(S$DV^ zgp6)j?HumNdDp*ay00JM`73LHLY>A!eQS);E|Gu>1UwB&2NJQw2(1#ca6oi(8&BHp s;Nc``qSPx#22e~?MgRZ*00010!qa{L0004EOGiWihy@);00009a7bBm0017s0017s0dCNB zJ^%m!2XskIMF-pq7!f-;H3pXA0008ANklY%m+juIWx&=M; z(j2RZn?t1DdJ6R-Dd<7)U=bxAq}e7%#a=~3JT9}L$;C?|X16O1cc{4vBZ{B+Vqv9w4?~EAUL!={ycmN>bh#~0!GAe%!ncc68djBD? zxXR*F!9+kFVLAz1ml;p^Ca$50N-_%k3H!xihRK$`90s8^;TxuDG(YKj2*jOG$TwO> z(=-&$kza;&xi9A2+?f94sMD+eKC&hfQaxjyzx=O*PyD}zN)IFkS^?7 z5`7;K;WLV$%*)O^%i*gefjv|V#vlSoSzieVbsA#Cl88MdAR2{KnA3*@OpOtv zpxKb>>n6-kriz;jL!t!t5?b+lnFKi^@EL@N^#&MGrd}_H>ez?a!773DA|g$vZ~VG- zd3D0MmWDbqxrA&~X1j@Qf&lu8$1hCAox^TCJ}?+kd2nL82@SjiS?^d`{F$bA7XZC^ zArf*R|JHE34807~5*}ri^FK1Un+4l16e+RjwnnRU$oR@)#_H`Z^&aO3y=bUe?yIs( za6n}6*f@HZJ<4FvZ5<75mi>s(=<6FAd$+OC=mkWX7B=o9(Ok$4gvCcW%;k;)f?%OE zM+uwQAV&kweU(^_#*nB-N+KoIU>kDi3(^`$~|K;dVwmThm`vYRbLGz-nzc2s*002ov JPDHLkV1mr-b+7;c diff --git a/companion/src/images/library/00017.png b/companion/src/images/library/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..678355ae01046bc6cbffeb5154ee2650c372f43d GIT binary patch literal 634 zcmV-=0)_pFP)|ghCdPFCGFgbg>Lc(dN2fR7u@u($Og1kDT= zovtbZru$vw_GThr?df*nTOttL+sSuJ1cHv8tSk|5xxb&>^equENPmrc&n*!kIRGlq z02%`<@S>{@CQsEUvBzN>xg%rxKtXX3J-)ITxb0E5ejNHAU_T_ zu5aY^8b`=32CgzxvkwehKmgFi0)fH+z{(6i;YF-ikHW;WY@?f=aar%O|GP)&>F*Jg zUjQ_co_G-AjF-L@QV^VZFkkMX Uh5FI?1poj507*qoM6N<$f|Gd{F#rGn literal 0 HcmV?d00001 diff --git a/companion/src/images/library/10001.png b/companion/src/images/library/00501.png similarity index 100% rename from companion/src/images/library/10001.png rename to companion/src/images/library/00501.png diff --git a/companion/src/images/library/10002.png b/companion/src/images/library/00502.png similarity index 100% rename from companion/src/images/library/10002.png rename to companion/src/images/library/00502.png diff --git a/companion/src/images/library/00503.png b/companion/src/images/library/00503.png new file mode 100644 index 0000000000000000000000000000000000000000..1ba8ec880030f99ce8060c3ef8aa64a47ab22572 GIT binary patch literal 445 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/library/00602.png b/companion/src/images/library/00602.png new file mode 100644 index 0000000000000000000000000000000000000000..ac46509c27ccc8bc3ed1accc36a570ad29dd8792 GIT binary patch literal 563 zcmV-30?hr1P)&Y z3l>mN24y|~d{E7-0^{IztQOL{~Jq^zzb2TA3 zL*Sf2!mtmo0XQ3gNJqbXNl_z;nFUI5FmWDN`SAGTV~R8+>GKB`qi7OI2PUE&kw0^W zV(u5k0XSuTBi-wOKnl=9XsbGdI9rY*p0+Cr%Rm{dy%>bG;?e=gn7tQpH3TR9nTtsZ zj8&TOq|L}GMK^ml#JavPdO0nu5c2_mb#|lh3|MD9jJ_c$u1T~40MA#$cmV3$8SUYj zuZ;*?hg4`xKLaWX814t|bo1N`5CA~0zP^P@?iX)w!K&*%-^=Px2f$zeTAP7)ieT_8 zcol*e3_#y1SPb9|23VW{{VNLin<8Y@-}l)({Q!jMm4~{1Ng4nE002ovPDHLkV1ml1 B+FJks literal 0 HcmV?d00001 diff --git a/companion/src/images/library/00603.png b/companion/src/images/library/00603.png new file mode 100644 index 0000000000000000000000000000000000000000..0fa584dbbc557976e3d854c50e64d0b5ef86a976 GIT binary patch literal 612 zcmV-q0-ODbP)-5TRKCIPg#3-#`a3LXgGLeK-i9S+U14HbeM0IuLI>jeTM0F?K`IEAJLfV%ui zAQ;V(JpZ_3VR%Y|8o;3a@e%?6;OL%Hkfp_k_aA0icwPub5O{oukW>M@)1nH_iYGia zqyXSc{xJfZSg}R}ZcQs46kti>Jq`iek023_jNnq_XbZ`LE-XmMlJc9dfOsdIBIw~U z3_u^6H)BbW>|Y+lG2n?P1pFBQcNDZLVEscDl>Cdm)8!;7NXAzxxZ2WWkq9PjancCQ zbwgV=vdneXuIM~7%Zd#fYi^n%`Cwv0EbqxVz;|5Vh0d0Prem;7Vtr0>Nc^iA8TTYa z?uHYO#=C9)KRTZ*K(B!&<5;+*4!~V)uJ$6kVwj(V!U0s8x$lUw)Pvf}$84jd-Ury< zv{|8&0d8|s&!=*f2XI733jzR|0SiiGR?ONHft%r2I2Y6-kl&{H|56Xv7H~X2(N0EX z64|aXi9LWu523fB6l6nZ7`Q|T?8X*(M>HzHBM4~81_%se;F}RK9oAq}TfW$n4jj?o yAOk$&1E-A$hXLUI+v6#SIiT3+F={x)st!J-PN9O0)(0N|0000Px#22e~?MF0Q*|NsA`*`M720004EOGiWihy@);00009a7bBm000XU000XU0RWnu z7ytkO2XskIMF-pi1{O8~v|4;)0000TX;fHrLvL+uWo~o;00000Lvm$dbY)~9cWHEJ zAV*0}P-HG;2LJ#9*-1n}R5;5;lfi4#P#nj9X==kTCdfcr47P}L7Z2SE8ez1>gS!-Z z@E?c}x{GLVJ4`5RwnFQn;2@WUbxlv6$Nqwh$Xv0s11~!aOmG+k57Br?rS$o-Ch6$| zUmm>g`~5x-Mp~gZcI^nzVv@XMH6p-@*jKV;H3AM6lx#_jfP=A;t*Ci)4IDI?g?+(P zTfq8gGB8Z1I@WLX5(po|G)(IV*$6oRKBjdT;sQTi+XPs}7~&o@$4e)M4v@rX(P0lc zt+PRocwfns58$suWpEIOm0Dj}8gz-tCAlXh1PsPO{83jLfn@hCO<3#r{!_>&E;woGo4lXPGUo zo$!OcJ3C>%qW2jQ@-(-YJ8>{Fo7BZk8uFb&{;A<$2-~D{uLEd;YmA)q1nG!0ixU_f z;vQeU^dX+dj``*=@Z&wpq-00d*TNp1g!qN{sLOvsKRTqy5LtmZ4*lp7R}&Hkksk*z zl@fwO&i%lZvmXe@e{JXoDo#lk5oY9vUFpU)|B+5H^uuV<3BF2Q z+@JrKty{{YxIguoA8JfW?eR38Q{abMkWz}nbrYcF9n$OCPUwd{lBYG@we@d-9|lEqmSxK*y$*XkCi@C8P=$wqA3MeA*dvS5cu&uLf{9A@E_;!>ge~HvKjyY002ovPDHLkV1gTmj_CjZ diff --git a/companion/src/images/library/01002.png b/companion/src/images/library/01002.png deleted file mode 100644 index e83381a48ce269eac0fa3ac72a8a260854c1c768..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 855 zcmV-d1E~CoP)Px#22e~?MF0Q*|NsA`*`M720004EOGiWihy@);00009a7bBm000XU000XU0RWnu z7ytkO2XskIMF-pi1{OC5-7C4R0000TX;fHrLvL+uWo~o;00000Lvm$dbY)~9cWHEJ zAV*0}P-HG;2LJ#9p-DtRR5;5`)6Z+uU>LyhXKlJ{v^2sFZY-=lNOqH~Ihf)|J$Z`s z9}w)IOTizQ;TRJutu3q`iVSnG!Oq+~kDWY-Bvht_k`6q08>s_};9+Y#v=H|Cwq4)! z^o55&p5**8LsoHA4)n(qm%3RA~s*pm+MF^$( zu+1Pdg&=K6+xSPMYw&N$HJ=*zTUasEY3%VqZ?RLn>;I1oV@K~5@g9L}a~}@^=2C@D zLn#Xqe&V;Rr;0CV%MN|XLP=Q^xs7rePN~eV`H}+1IWez1t9+aJOzrM4$2mY~fY&fC zXZp0a9zzJO4#W;i9DJPTpo*$^Ti)FmO=IO9cFPMWucIv@|P(MIQREryB=@}PZy z_xRC00iGR{>Gr|I$3Cdy7G3duh;SmTQVrk7`pmw-$<`6^aqH|{xDj)Dz7LMyeas&! zzK>M={$Q}CEvhjA>hjuFKN4}4|rM+wE zJ>LgqtsM?Sd{nJ1aTwwQmEFQH#D`JZc|HvB!Iah=9N)(#UH>?`FB2b|p&C{ZAU>pA zsHWf$A0>qyXX4{nncL-Xh!5l?FNPsL+I6WgzPDFC=xBZ%vd2UJ-i~}Eo{U3$By!^r hA0!hWBoiMb{{eNl>eronMf(5%002ovPDHLkV1h(=bRPf! diff --git a/companion/src/images/library/01003.png b/companion/src/images/library/01003.png deleted file mode 100644 index 88f5676db725a9fb3bfc931e39c826afb2cd2403..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 840 zcmV-O1GoH%P)Px#22e~?MgRZ*00010!qa{L0004EOGiWihy@);00009a7bBm000XU000XU0RWnu z7ytkO2XskIMF-pi1{OF3!@Bg?0000TX;fHrLvL+uWo~o;00000Lvm$dbY)~9cWHEJ zAV*0}P-HG;2LJ#9l1W5CR5;5`lfi4#P#nj9bz9$rxK;(ppr(4!OOez{w_>Q<#jF3q zW0llHnS~upVJm@v3J!DaR=0ZbKFmQcx`fHPLuz(xP_{r}J6Iv5Fbmz(mu!8>A$)jW z0`L2N@AH7ih7x613XpooO_f`wfL1+QvNe%{1SchXTcjXCv}A9I6j14%6dOsA0@BV= zftwO3AR+^>5JH+1xWTY#Y@Gw7ey6GC1*t#y<0I&S6Sh`7BijzMr9%=7b>>i8yg7uH zk}b6}VoQ;kc1A)942Bs?)r7$iV*fP$(h%IGw2CsUTLmtb!Bb11126!fPr~vf%*_I9 zVdD)M#Fhjm$LM8D&eCZ%IHBT>ohCWC63oMy`hG=|$!X8(+2OU&Bn-)~b6kU~ISQ2U*6}aGN8+drShe z-|1TU{C)x$3s=oPm<7Y!6%zZikl57)vj8yW?G15=$3bSuieDf-QY;Vrb)<~*3nM?u zP@YlI%fOE|xTzm#C-B3JxT%9D^MM~$C!YGr;*cN5Zt>lta>$QUr!aj_3j1+u?wT{1 zmVpZD?A%{X#6x~K%@1FNcG!>ZFRi!{@?)+`@FnEOe7BYne~0{-x3+yvMt&?A>Rk`i z4^U#*1N8$dZy$T0e)N=YhaQ3+(Tn#o@}nMo=7ah{f{F*~$9i%vM?n3^ZN_Rj0_q2h z=dU^h)DQmY?Z)}Lz3^l3x8Nh_v3^3|t?x%`IcQh4~mf=6#oI64CP@@ S@WkH$0000Px#22e~?MgRZ*00010!qa{L0004EOGiWihy@);00009a7bBm000XU000XU0RWnu z7ytkO2XskIMF-pi1{OFj7y&&F0000TX;fHrLvL+uWo~o;00000Lvm$dbY)~9cWHEJ zAV*0}P-HG;2LJ#9y-7qtR5;5;lR-<{U>L`r*LO>VWm*_WiY4{~cz8=8RhD%n>E1Vufd-uJb+y6l-vcbDg?E+94XpvI zF=`>?{NH71MNm$HjLE!5#oVxk zd5=ieN4*L}Rc=Is2nJ1AzshTnT{T*is2C_$cY>MKZW1b%S z)xEhNh7jJEEz@Rx=)6@xo^3KeK49w(c|KbBfvgPnz9QyF1;R0ZNig#x-YqYQ+`^A| zJ>s%}l6k~_JmbVCg!xg8{U99kL%Rl0ye?*bXhQ&fM0+ql1~XH?vSH!JG%|Z~H80LNy8RmXu80LN~@E^Lw(Af1?YLEZ`002ov JPDHLkV1i3nh%f*E diff --git a/companion/src/images/library/01005.png b/companion/src/images/library/01005.png deleted file mode 100644 index b4aea5dfe4132fcd477107f168d48dc90c073a3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 883 zcmV-(1C0EMP)Px#22e~?MF0Q*|NsA`*`M720004EOGiWihy@);00009a7bBm000XU000XU0RWnu z7ytkO2XskIMF-pi1{OIm`xP-P0000TX;fHrLvL+uWo~o;00000Lvm$dbY)~9cWHEJ zAV*0}P-HG;2LJ#9y-7qtR5;5;lR-<{U>L`r*LO>VWm*_WiY4{~cz8=8RhD%n>E1Vufd-uJb+y6l-vcbDg?E+94XpvI zF=`>?{NH71MNm$HjLE!5#oVxk zd5=ieN4*L}Rc=Is2nJ1AzshTnT{T*is2C_$cY>MKZW1b%S z)xEhNh7jJEEz@Rx=)6@xo^3KeK49w(c|KbBfvgPnz9QyF1;R0ZNig#x-YqYQ+`^A| zJ>s%}l6k~_JmbVCg!xg8{U99kL%Rl0ye?*bXhQ&fM0+ql1~XH?vSH!JG%|Z~H80LNy8RmXu80LN~@E^Lw(Af1?YLEZ`002ov JPDHLkV1hjaiOv83 diff --git a/companion/src/images/library/01006.png b/companion/src/images/library/01006.png deleted file mode 100644 index 448f590da1b08ff028f1744fd89997ecaab1e31e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 840 zcmV-O1GoH%P)Px#22e~?MF0Q*|NsA`*`M720004EOGiWihy@);00009a7bBm000XU000XU0RWnu z7ytkO2XskIMF-pi1{OLb%HpQ<#jF3q zW0llHnS~upVJm@v3J!DaR=0ZbKFmQcx`fHPLuz(xP_{r}J6Iv5Fbmz(mu!8>A$)jW z0`L2N@AH7ih7x613XpooO_f`wfL1+QvNe%{1SchXTcjXCv}A9I6j14%6dOsA0@BV= zftwO3AR+^>5JH+1xWTY#Y@Gw7ey6GC1*t#y<0I&S6Sh`7BijzMr9%=7b>>i8yg7uH zk}b6}VoQ;kc1A)942Bs?)r7$iV*fP$(h%IGw2CsUTLmtb!Bb11126!fPr~vf%*_I9 zVdD)M#Fhjm$LM8D&eCZ%IHBT>ohCWC63oMy`hG=|$!X8(+2OU&Bn-)~b6kU~ISQ2U*6}aGN8+drShe z-|1TU{C)x$3s=oPm<7Y!6%zZikl57)vj8yW?G15=$3bSuieDf-QY;Vrb)<~*3nM?u zP@YlI%fOE|xTzm#C-B3JxT%9D^MM~$C!YGr;*cN5Zt>lta>$QUr!aj_3j1+u?wT{1 zmVpZD?A%{X#6x~K%@1FNcG!>ZFRi!{@?)+`@FnEOe7BYne~0{-x3+yvMt&?A>Rk`i z4^U#*1N8$dZy$T0e)N=YhaQ3+(Tn#o@}nMo=7ah{f{F*~$9i%vM?n3^ZN_Rj0_q2h z=dU^h)DQmY?Z)}Lz3^l3x8Nh_v3^3|t?x%`IcQh4~mf=6#oI64CP@@ S@WkH$0000Px#22e~?MgRZ*00010!qa{L0004EOGiWihy@);00009a7bBm000XU000XU0RWnu z7ytkO2XskIMF-pi1{OOI@=bGQ0000TX;fHrLvL+uWo~o;00000Lvm$dbY)~9cWHEJ zAV*0}P-HG;2LJ#9p-DtRR5;5`)6Z+uU>LyhXKlJ{v^2sFZY-=lNOqH~Ihf)|J$Z`s z9}w)IOTizQ;TRJutu3q`iVSnG!Oq+~kDWY-Bvht_k`6q08>s_};9+Y#v=H|Cwq4)! z^o55&p5**8LsoHA4)n(qm%3RA~s*pm+MF^$( zu+1Pdg&=K6+xSPMYw&N$HJ=*zTUasEY3%VqZ?RLn>;I1oV@K~5@g9L}a~}@^=2C@D zLn#Xqe&V;Rr;0CV%MN|XLP=Q^xs7rePN~eV`H}+1IWez1t9+aJOzrM4$2mY~fY&fC zXZp0a9zzJO4#W;i9DJPTpo*$^Ti)FmO=IO9cFPMWucIv@|P(MIQREryB=@}PZy z_xRC00iGR{>Gr|I$3Cdy7G3duh;SmTQVrk7`pmw-$<`6^aqH|{xDj)Dz7LMyeas&! zzK>M={$Q}CEvhjA>hjuFKN4}4|rM+wE zJ>LgqtsM?Sd{nJ1aTwwQmEFQH#D`JZc|HvB!Iah=9N)(#UH>?`FB2b|p&C{ZAU>pA zsHWf$A0>qyXX4{nncL-Xh!5l?FNPsL+I6WgzPDFC=xBZ%vd2UJ-i~}Eo{U3$By!^r hA0!hWBoiMb{{eNl>eronMf(5%002ovPDHLkV1l+{b3_0D diff --git a/companion/src/images/library/01008.png b/companion/src/images/library/01008.png deleted file mode 100644 index da3346f7d7751a316dc2cc1085f479b76368706b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 911 zcmV;A191F_P)Px#22e~?MgRZ*00010!qa{L0004EOGiWihy@);00009a7bBm000XU000XU0RWnu z7ytkO2XskIMF-pi1{OOzUh#@10000TX;fHrLvL+uWo~o;00000Lvm$dbY)~9cWHEJ zAV*0}P-HG;2LJ#9*-1n}R5;5;lfi4#P#nj9X==kTCdfcr47P}L7Z2SE8ez1>gS!-Z z@E?c}x{GLVJ4`5RwnFQn;2@WUbxlv6$Nqwh$Xv0s11~!aOmG+k57Br?rS$o-Ch6$| zUmm>g`~5x-Mp~gZcI^nzVv@XMH6p-@*jKV;H3AM6lx#_jfP=A;t*Ci)4IDI?g?+(P zTfq8gGB8Z1I@WLX5(po|G)(IV*$6oRKBjdT;sQTi+XPs}7~&o@$4e)M4v@rX(P0lc zt+PRocwfns58$suWpEIOm0Dj}8gz-tCAlXh1PsPO{83jLfn@hCO<3#r{!_>&E;woGo4lXPGUo zo$!OcJ3C>%qW2jQ@-(-YJ8>{Fo7BZk8uFb&{;A<$2-~D{uLEd;YmA)q1nG!0ixU_f z;vQeU^dX+dj``*=@Z&wpq-00d*TNp1g!qN{sLOvsKRTqy5LtmZ4*lp7R}&Hkksk*z zl@fwO&i%lZvmXe@e{JXoDo#lk5oY9vUFpU)|B+5H^uuV<3BF2Q z+@JrKty{{YxIguoA8JfW?eR38Q{abMkWz}nbrYcF9n$OCPUwd{lBYG@we@d-9|lEqmSxK*y$*XkCi@C8P=$wqA3MeA*dvS5cu&uLf{9A@E_;!>ge~HvKjyY002ovPDHLkV1hY}j;8! z_w#AA!!1XZV^_WT`xeGDTyZJsl@_1>qSm43&(5Dk9FIDd&-XpIcl%>m8HQ)q-XCvJ zVg9_*NxozDUiRs8>J)BWY+u%t#vsyXudVTc>4WLxpYHC5)~{lkCm~Uv>iNTN4MXhP zTb{Dp8S8UcK8OdIPnTiZu}QLl{nn4Br%ZJ(+Zc`-$}(hoe7fnwt=amhbP=QZZWa3} z=N?)$3s2VH>~JP;tEtJ{!)on~m!@hm6nh`&>GWN4t2I^rzzrdHA8v8io0o;Y@SXJU zkS)L1euSyn$ar=3x1N)x7t0=LGGA=eI_0>{Xi-CqSbys8r@OnCCRknm#rx=P>|N$J zYk4_Cx*x7)iBA@^VKS7x$G+aamrLV#!R~tk?g~u%V(UN3|G3HjNc#6X7mhXS%2T|5 zD`kXty((sXU>$c|eroev(S(lp*}vLY%$QE_D{RX-CCiy)_hPw=?rgt>JQFPJDy)nDPRP2EDPG_;0 zhuc_;)V!{$tXU-M8vS%l;j>-d|! z5_u=He--d#bv0WXPI>a9=k9{H2^?{rzBNX#4i}3onal7;U_tqk*uV{(Rs3?>ZKE46 zGQXd~bSL?H1D~;VPbZ7tq}>TS<^M6t81T##@w}7+Ono9Ht`Q}Ur6n2pMGTH9MVX0t z3XZu+sYU5^`QcGOc~OwObAE1aYF-Jdg8od813(3;AO$IjC8<`)MX5lF!N|bSNY}tn z*U&V?(9Fuv#LC1>+rZGuz~IVU*>5Nsa`RI%(<*UmSbAWo7f=I(r>mdKI;Vst0Nb)# A+W-In diff --git a/companion/src/images/library/10004.png b/companion/src/images/library/10004.png deleted file mode 100644 index 1a93226b7a413e5ed42bd7e37de839fca80a7e83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 752 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxPeS=2F54mYxgrS zF#h*+aSX9I9ec?)@3MmkdqKOCx|3>K?F*5w3@X-3+-Ayl@X9Pwf3a?b;N(>un^t@f znh>z(34<-eG%dl6T^5eZ&mQuAQ)Mis|GDCug`D-YWAgTuHs}9W%H_$#RbDF+KEjr8 zqpg1S{fN9nG8NKH2^lHe=LB3HC476pnI+dPwXZt%%%P*_rS`4-{ix*H^L2e0)mLV& zU6*}A>Ho$VYn|A=N8W>JrN)`rWs^&j$IV!CD6Fy1vhiH~B!*Z2&8D>I zfQdT;4##gZ_}nI{@Vde0y`1fnUXJS2za|l^dzzL6`)Vq>?P*l|<7%^iYOiLSxekzI~E$ z*~J$|jHeDTt(AV8qw1O+wP4GE(+3;{H4n2~M^4?tYDMEy zg0|=nUH0D-d9yZ!vmD_3$9(3L>+a9TRvZ8(3Xu}mh!V%rl8pQ!2FH}5%)~qe$K0gU zqV&4_@F<|XC`jHpKQ}iuuLM;=f2Ie>09BBJl*E!$tK_0oAjM#0U}&UkV5n uWoTk$Vy10iXk}n9{awq9Oao<8L3w2PRM;o6f~&_^8t>lNWpFk5a7NRwnB*v7CQ+k%u@@^AM=8kc zc*8bR;#K!F`MV!ar7{(AJ+RK-^=EE_!Ym8+eYR8H-u`u((`;Q^^5(#GwX08PsMLQx z{n&3}^{$jC6Xn`#me0EGtWTZ6axLckf#!KJDF>Gctp4!q-Cp7KN^J8Re0BG|-aR!$ zRfuK!yZjkz?6n1(=j?dlcR#`B!hYN!0FU~b*Y=2d&o z+O0lqv??q_@r7x9)s4LmW%*8vvRS7v*517EjQb0ni6~a@?vhj{UHi?;f>^L#BIKZfl)VTxE9j^R95Cdz&;CN#392c9tyboqlo|0w=G_icdZNB zS=bksvg+@L#-kEGDSu5i-MIhjo5Ac&>0X>H-Yl>4(k9dfXwJ(O{9`7&(tf+ZlEt{D>`CllL(81>Szv z)W7AAoKyRRO9$*9i#bi%9d&anFm;NQxJHyXmX>7X7cn@d6lEsnDLCdPr52^v<%dTB zlW4geLXf)u1AmZVxG7o`Fz1|tJQBV7YST|?6lLo+Kw6Dt!l oZ39Cq1A{AbWxt_l$jwj5OsmALVd;UTUO){Dp00i_>zopr00;|>uK)l5 diff --git a/companion/src/images/library/10006.png b/companion/src/images/library/10006.png deleted file mode 100644 index ca77bbd870eb067a10617e107a494c4be51da04f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 677 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxPeS=2F54mYxgrS zFmCa5aSX9IJ@@i{FI7Vkwhs}xn+gFi?Z_MZ%SbM8b&oHRBZ_%##f_X0wa`Jq6^*=&lZi{Ng z;uZRwYZm!5P0PFyk{oa$Ou?ghxxL_=wx~;iX0m&96`r$X9gsC*xx#Ymp<46Dg^C7p z;hb!blMDi8`-il=KlY15?}2;XL{q({<7bw*d9TiG5e%I!6&o!&S?Nq)_0;VXt?q8z z`@F<#ZAF7uf#cGQ8qWA;p9OnYT$*(Ja*giUY)i@VxeGUE@P980duiV#GBY9jH^aS@ z1cFX$y4!5vyn-`9dbcGc@?~si*lIelL6FSVhG6d7DE-E(`U3)5yC$eNjp5 zt;NM$-=f54r diff --git a/companion/src/images/library/10008.png b/companion/src/images/library/10008.png deleted file mode 100644 index 9616e2c1204ef388a4ff93c2acf27225cf9a344d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 606 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hqn zTu&Fr5R21uFB|$DF%V$AkYA~4-VwuaGCks=(o=&u3A=R#Jl#7j7{fO%@Hi>D$J`*c zOXJvMN$WzdOK+aNt@>y2SV2zDqo_3(%Ji4sg!ZGrL!7B;l5c^l0UWV#@I#?n_kjfsuV`kAyH>=!$+ z#D^bYdz6v1a^nAYXZ&?GzIDrSJKY85 z9=7|%iS% z4z7Ry&0D6vd+xN;zbqneEnHdfZ%h$Cl;PUFW`=&UTq+ zy*+McA6S^*m?X7e2HOhOHFo`Pd; zQfg6pU4D2JP+k-y@0_2To0?aGs-Qp9;{Z^BDo8;}Vo9o1a#1RfVlXl=G}1LN)HO5> xF*LI>G_f)<(>5@)GBCI@SN0oIKxm;OXk;vd$@?2>>9R??eCq diff --git a/companion/src/images/library/10009.png b/companion/src/images/library/10009.png deleted file mode 100644 index 1919fc94b08f73839baf30835bff07aa695930f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 653 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hqn zIi4<#Ar`0SUN+2oqaeWcKz^f;uSn3c;=T`F<@>t&CtPwBnXHyMZ<6v8EsgazKE*bk zjca(jY{N8$hckR|_hPM4H>v3_fw`aFs+{=ZpT39n#;}cx^??%*4hg?v2J1 z>=rvQ^m8UMA6yZT^yFpOUw+kGnP%tQDZTG!6_u_~oVOrb+p;BN@76hs88r4+;@Bd#XA^YC`Ab0JLilhox=Ouo@?>}T%SMRLV&&k=A=WvO~?y2qu4dY<1%l|CT{9G36@ap3p*6xQ)F1sG? zIvBa+-->QY_I(#-+gmUF$#^3Cib(U?A9=vY6De_xC~+(;$;dBaa7-!6Ow3bo%uPxy zO0UZgj{?ezg5;g^b8}PkN>CN_XL=j}Do_O}NJ%V7wMs5Z1yT$~28Kqu28OzZrXhxA vR)!{4CT7|OhE@g!SLVuoL(!0%pOTqYiCe?c153St8W=oX{an^LB{Ts5!hZ-! diff --git a/companion/src/images/library/10010.png b/companion/src/images/library/10010.png deleted file mode 100644 index 0ef8056453025c883b384a240761741398cfb216..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 645 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hqn zDV{ElAr`0SUbgi+Y#_q^q5g?ioWMSZ(AC>dG)yrrJ>B3Dk>L20Bj#w+Lgny+ldN~% zD!Q6(n?JX|FJjfIKT`Yue|CSE&lcwYJlf!YL*K*KV!!m7b0vD_J(zP~71J*N2S->! znY1Fm%}aEd{LoKjhf?^~34e@Knwyhe9Oab|xp1O*w&{+Ts|yns#7wK^a0nA z`G$?`{bF^j`=;-^;;~-(=UeX_iQc0n0ctkdUUw6da%$pw;EVF7yUmoMC{@$~}CJULi2X;BlkU8w$*}KJ3?fO2g>B*;7*7aDX?F)J^ zcmBfoHD>QSW163SJ?|i6?A#X_6QlF3L~t|1>?E-Vm$EKgza+F*%PQa$uYymtWoCG> z-o4C<)$RVaHZnmzEy=aNGTYwXJMz@EVp;ihUhBkUy z{gaA?;R4D37#1)1+;eWBq8TvKL`qyEN*qf|GV+TU98-!i6Y~@tbCXhw((CfWqk!_F zAbIEf+}zZ>5>y5KnH~p#3RFP~QW8s2t&)pUffR$0fuWJEfuXLUX^5ejm7$51iJ7*6 mp_PHbmASItP&DM`r(~v8;?}VAz)~-u1_n=8KbLh*2~7YO76lLh diff --git a/companion/src/images/library/10012.png b/companion/src/images/library/10012.png deleted file mode 100644 index 6007e75d4b1e09ca000f3cb48dad7e8175a38532..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hqn z<(@8%Ar_}&FWYzBF%V(t0w;U#I z>^dM4-NUB7py9*m%ai|~c${|3{_*?Ts>2O0oW8OyT3j=8%~tDz|98A2zT1 z^YOC9wFmFdTKtQ1;&*v&ZQfV!9DTsr%I7PN@Z4Y7DOg&YgeDbA|C)N#*~_hz0C- zK79GLuBlBzu1(kZ;)jP{AHKGl*3R?pADpe%1=DGm0_$Za>|! zGvex$_C0q)pDX?e+wJ%uYM^r8UQA`&Fx!y|AAZq;oRk@bTlocoZpdjVN&}Ey>6) zVsK0;%1q2taLi3gElRJ;503)Mi-P2x^K)}k^GZ+^^k;e;04h)gDM(2yNwrEYN(E93 zMh1pPx(0^2hNdBgW>$tKRwicJ28LD!23O|FenZiao1c=IR*74~(gRDqfEpM)UHx3v IIVCg!0BBAUO8@`> diff --git a/companion/src/images/library/10013.png b/companion/src/images/library/10013.png deleted file mode 100644 index dc8a5efc703cb5933cab1e469cef8f7e05442616..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 612 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hqn zVow*x5R22XmksldCwHA-RsMci85#AVKP__KwhQKq zUjN;qvp-Sif%>jJ7jk#9hBlbrv2`ttHso}fta$gYz#4~3C7v!auck2YGTl-BXe{~c z<*$>=>wUC)8aB^!<_$lt@W8ibiN&X<4TjBg^t}(JbU6RryUHMCf)lHUvtCO1gn(IR zIp4n0BDF^Bq*x%nxXX_dG&EIqK)3#fs?)78&qol`;+ E0Gf*OWB>pF diff --git a/companion/src/images/library/10014.png b/companion/src/images/library/10014.png deleted file mode 100644 index 6a306d3b202728fd581005cd9a9bd36b7e65644a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 656 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hqn z`JOJ0Ar_~5FB|6FHjrR_pkDCc#KP==*oDb#%2vS(w>FdrFz)NJVvT#mT@vtsNy@6F zFK7xY$G(3{bUHtU^vSRNZvVHtg2Bp58Vy=bv*tS-bSZFcGH%}F+7hBM zWf@PG)XUZ-6D}Xux>L1b>XrSEy*E4MSolgtxcup2RBm@Rl-6&$zUwK~N_cSZh7USdYdz*5Og{rRN{k0>fpxH5xeQslO zVIik>MMi@p3xgK>wuYOI{3hiAAM~8x9$>uDcr>;x<=kGe2`hhZ+@Y=JZ1;ZEX@SaB zw+?u%Rjj}5_)nrcM}F^}UpxOW`SRRbaCN2kwkMV+-W+s%pXhhCLDRH-$}DHEvj-jD zDu$kJ+)?ZB`lV_q`?qhdsaHk*Gs@^`E3bbXcMKSRA|2>+xQ9yZ7ki2t#Zf?)FK#IZ0z|ct7z);uF yG{n%%%Fx8h#7x`3(8|Ez%3RrRC>nC}Q!>*kacfw5V5t{S1B0ilpUXO@geCxd(h3d$ diff --git a/companion/src/images/library/10016.png b/companion/src/images/library/10016.png deleted file mode 100644 index d02cb5cebf08d7dfb0546ce4aa9ba016aa84d64d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 601 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hqn z3{Mxw5R21iCmZ@5F%WP)&Na!}$8)37^&5KO4>>LbDyRzC-f7s(QaG`IdHpue#HYr_ z-;RXsV9*S^r~cpG*j`wvC`0~Hx<%81_R<%Cc7`XL>;HJFZN9LZVY#XJ2&UCGv8e;R_z5o5Db2)E0 zybt(R-n0@B04L+YCI!U^Hb)OC}S<_Cn>c< zj4jG9_!H##80s1RG5%mJ+|YJ$*WYM+U_^+NxJHyXmX>7X7cn@d6lEsnDLCdPr52^v z<%dTBlW4geLXf)u1AmZVxG7o`Fz1|tJQBV7YST|?6lLo+Kw s6Dt!lZ39Cq1A{AbWxt_l$jwj5OsmALVd;UTUO){Dp00i_>zopr0OhysRR910 diff --git a/companion/src/images/library/10017.png b/companion/src/images/library/10017.png deleted file mode 100644 index 13f6ed48172671322a41f177957953aac266b7ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 659 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hqn zMV>B>Ar`04PPWZD>>$wUezReh2D`uuskV-siHELp{9t(%!?9$7QmoIf37c~aj$Ds; z%)O>y^U*~o&vXyqwK;>Pe^W_vy{& zU$-&lIDefS{(Q~vTOBNy0_J{-4KI2BokO>=Jz(aBue+>OIHny)UYWB}VvkbAzVF7R zJGpw#b9`Yj+wl6cmPw;(2FIN@en0I@PWVnVk^WkkqHtX)^UKqt(@O7Jn6)jrIDOih z>AmT%JNovDUM}cxJfp|3De|A2_ni72h9YKXeHXXs@;R8C47kw~b&Y2&OUE<5C49?L zo~{tQ!Es5jg`-Q*M@qI)lF{u!`~Qx{ShG32&we|&gaiU&P>;Qk0pP zr{I{Ilv_j3Q~}gSdwa$T$Bo=7>o=IjdTqR zbq!5J49%sc)I$ztaD0e0swLm B2vGn4 diff --git a/companion/src/images/library/10018.png b/companion/src/images/library/10018.png deleted file mode 100644 index 552c9654073f98078125965661f272fb469cffd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 712 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 diff --git a/companion/src/images/library/10021.png b/companion/src/images/library/10021.png deleted file mode 100644 index 69ea3ad1491c7f06c191beb454c8a70a341c1066..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 744 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hqn z@18D>Ar_~nUOL!y*+GK+gJv^}zVseV5%>EJAA$_uaM(5UCpg;ZUuvG7I{AU3c;eS* zP6quCxH;Z#Y7Y|l#H8oRG2^h@EQt-lN9z2Js00v^G8&1vI`q` z;*3jcw4_exZad){Y;bb@QO<`;r8c>qnfZX}dS(RUpATta6_);ti4zhwec61)cU_US z^OB%PK1tfXFH>Ixn>FfGh+M1yXZ+$?3Mx-N5Pn+&G!!V zE3Uo7!nY(R(WNjh{KWg{3H^3gyu&7haUTi(E|3s!_~FW5wq0DWP6lq}e$uRaz`%U@ zx0|u{Qe8!DE`|2O@>RXOG|2mkx zez0wx(DGed^kQsdw(r`)EYK3h$giN@yn?;_&`(7VBMxKPcY49R$4VlzavyI`Hi-GEwWeqRW6H}LQaO*5*D+2J%sB9|{pEsv``#TCmpyTK zde!Y25>^Ku{$SrF8nXGd&HV+ybRkmW8d2g{T9T1p#Ne1xl$n^P;Fz0~T9jUwA07pi z7X`^X=jZ08=9Qo-=+E>x092p~Qjn5Zl4_M)lnSI6j0_BobPWu34NXG~&8!SftW3xY4?Yf2i{mQ_|DguZpFIB-<-#;Q0ui^;j4(pO$V3GU9~Gc zqOjJ2dqQOCIrSVS8H19@)jI6Yc4$9gELwc0@7dftLPrxsHUFEmTwlE|A!GXviD*OD%{w7`r{jKVf99G$^J>U3uZsD6U zg;9uk`%#10LhCOWuuWywblou1G5&+E%{4a$cDAr^hl$}+*j9*dPz>eUGTHNwq~1lQ zJKz3(Wth*R)5fFC_HM$zxH|`{b4*^P)v?PTbpE|mPVwpgst4J(j`%5lHrny+r|pr0 zSAA_8gnt+}ozG{jdw#a4!S2weNZt*d4bR*TtmLqN_t5FVb=x`o8#*q$EMqWsFl17S znDdvv@UP55`Tc(kf*JSybP0 Hl+XkKv*l3~ diff --git a/companion/src/images/library/10023.png b/companion/src/images/library/10023.png deleted file mode 100644 index 784dbf355e5a53e57d0a1fab0094e1ae43ec2a23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 451 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x383I5 zPZ!4!i_>Q>Z{$6!Ai#Q|e}a?eY$YMNgVGgKdnOpUsu)YfUUN9bq^CK7vorRCe^^TS z&QGG{$Jqm1675yg6E^Xj&)`UtHE|3RV36RvW5VcnC?UGzfU9{xG=uIE{uOL$7W^gx ziAs(QlNz`l^LJD$e7M0kPmFu+r)&l8AM=D~7hV<#IQG|N!Uv1sB;huV1@q=DyjH-m zZ{jxFBKCbdYg%{Q-oYBxl%?qL;RWl8GYoqfO<2`F%NZEkTjg`x?@H*F&kPQC68xa# zksb5&g81+13g)28E|(wJ7KZ?RCsN`XQQ}xyl96A;;FwaBnV6^Gn46SZlwOw~9tD&a z1<5<-=jNv7m7pr<&-6F|RG2bOvPH86O(`njxgN@xNAELfC! diff --git a/companion/src/images/library/10024.png b/companion/src/images/library/10024.png deleted file mode 100644 index 4066cd8e0ee207c2f5c862366d0e07a3f95657d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 555 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hp6 zD^C~45R21iFI!JKtiZ#TP#Lr136u5e>?M!AqVw3@A8W`oPCC@Qh&^HUnQz_`J@?)4 z__L{T8mo(BgZ+1IrDl6Yo{T@zF|148i25}yZd&|AWYvMV2Ma1RL>ku~a4QU+pu})S z<*3>p4VK0wA67rmulRWXqC!#sR%We&jo%n@pLd&k+>vSiAU{F;z?rxHKhiX`udv?9 zOh{#&m7Arh(C#9u;@I5rxPU_BxsaJpp?Q}Rw?UKPg_qGKZ#mhwTJDsyw{7&7 z`YwIqdr43Ey7f)mG5JsTH<%au1muTZo-qR$v?3+05haeLB^mie42~&9nTdG{j=4#x zMd@|<;ZZ<&QINcIer|4RUJ0s#{!EVpKn1EG1u2OosaDBFsX&Us$iUD@*T7KM&@{x* v%*xQj%EV0Dz|hLT;L2RtZzvja^HVa@DsgLAdSIy+Py>UftDnm{r-UW|_GHh3 diff --git a/companion/src/images/library/10025.png b/companion/src/images/library/10025.png deleted file mode 100644 index 8a1562e528139134265c19ccba64fd0102526ac5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 601 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hqn z3{Mxw5R22Tm;Jq&97PyDY_}=mP+HIW@RIq4+3bl+Rr+fi`R?s0`)b0>cF(GWyUET? zHoRqU)omoPh(em?2nKC4Bnq*isaXcFWx`P{>JGYnl79v!824Y zI&v{9&8zvRut5L4{Ri(;G8zwzb z^;1*f%T7~~lCpiS8##V`w6C#i+tqd86X(x@6}KMk^%g1%JymMyeeB`Ab9*c0u9PnL zsQLc)0$&}g#mii31E=noP+Ypev*no9%gXsPKXg3Xw9<5g!XvR6;^j}(jt8U~9e;l% zbNeA}&u<1M3UhMVXI?zG-tZ)gf8sVi4Uy8lZSG+gbuY9=c|S2bc%jW;=2?^0LZ(;y zdyQT+#IIU0Q>|cQ*$Mm4{=qK-*8jHyMubR-Yeb1-X-P(Y5rbn&QD$PEf@5w{YEgP! zes~m6UKAwnoS&PUnpc9Vpg+^&08oJ{NI^T_8W?Z-29Zxv`X9>mL6E@1=PUc>FVdQ&MBb@0H7@IYXATM diff --git a/companion/src/images/library/10026.png b/companion/src/images/library/10026.png index 704865b0c8afc2a54e24e170c2909ce53cf66608..1ad61712b6e8a8299f91366c0ab604e3294b09cf 100644 GIT binary patch delta 663 zcmV;I0%-l*1=R(R7#9ct0002@y&$6i0007FOGiWi|A&vvzmXvq5da5tNliru-U1j3 z9Xm*U`vH?p0waF{MM*?KRA}DqS<8~cAPlp1{QtkKJtX02zz~u>YGqA3q7z&j-1EEPLjG~0!fk#+rm z=Nl0!fztztqp!A`O&Te*a$s`gT8xyDG&%##)iPu|Wp%X^y5Wgrq+m}6k_cgkBITPg z^uksW7J7}_a)_|swVPGATCKj8-WFq;)d;g0Awz%P0$+6GrqXH(PwcY3bz4x&t)6KR zhNbP+rvpB-&U9WR@!Kz+2k;+iDK<`SR?2+2pT=nOc{$vf)MI^gqR x*!rHsG8KREmreTmk&nPf;3M!6_z3)W0>5Rp4TOcRLx2DP002ovPDHLkV1kTQFOvWO delta 669 zcmcc0dWUs_1ScZ{5d2!}bZMf#cs=85PZ!4!i_>=}pU=MHAaXq3Ls4#8+dS6C3twza z;1_LCnDA%z6l2_G%CJ5`p4b0z^T>E=1t-HxRT}TN^ECxww6tsJNJ3D zex})PeT$X}KU4O-uf0E8^1#xC$q}|sV%f8}{onRxzR zTVrX?B*MPIZnmK_o8@a+=F}zALW~T4Bq_0l);GyXTc*fwW7?x*|73xeSHc4uW2Fi0 zn>7D?89A_8ls--v8TK!|sgTTM>J| z=bM{1f9+n-@bK@=>aXq&CGUToWx4nEQrCW_uD8!E7|f0I%TIk=x!d=Fknx7UN8eT? z=5SPOV^Ed<_wDb@q{h?ct4g{4vwz^Pyr93q>Ej1JU=k21agC5HaV#y#$S-1WOexAt z%u{g8O-e0FugedQni#H}!=MUOQj(Hbl4_M)lnSI6j0_BobPWu34NXG~&8!SftW3p&>UvB{QuOw}zz$mU@8_qNl5$%Q~loCICd)ANl|Q diff --git a/companion/src/images/library/10027.png b/companion/src/images/library/10027.png index b872dd0b20759b37a59e522931afa876f281ab4b..bbf26657e6ca114c53121f51e24fc9c12866b04e 100644 GIT binary patch delta 820 zcmV-41IzrM2Jr@v7#9ct0002@y&$6i0007FOGiWi|A&vvzmXvq5da5tNliru-U1j3 z9vQYU=_Zqq0waF{;Ymb6RA}D4Sj(2hAP6Hp{{Js$7PX3qZ|`(5)81Oa5CRIy*#!|1 zy7v^p`}qDt`lJ3oXO`tN@ZM8IfbVyR@O#y~9y#_vS&i<%dZ7KlEeDvb>V;Fs0;NUV zMSv7!yh|4V$sB+vcr53@TNKnmNEB2d$nH=aG9FVw%!GfR@$3hSJUGvS9ErGS0LTzq zycJBi7y<_gr38uu8Xv0%$c&}r(NL+BUTUY+r%b<<>*Xgw8G+}d_x$xa1sG$y(5aIdqhXVu6;NtqmjWb;qWUGHiP-PJ!+z0_gtn%kpl)4=G)I9Bq zQKmZ$5X*o*M+CGfh};qMhUw`Jm5}v=>jAtkxq*OF^_>DUTD9#5Htn;MUZa6HuLac( zNBowtY}e|~!!iJb$PC+A3x((YG6D_zsQQhWGPSD%PE#dXW`b6{?b7*x_?Tv)Wtu3>gI%eN4iwBMl4?;HTpSt?Yw!XG%$ z(nj4CfxaRywPaIUK!2h3C@FmxPVHA+kZ-?vW*Uyc=WMc?O+kDLx6OBIWx-RdBY=sJ zpzO*9HIauQ;Be2_hGS!Uj@=>NSy%S#In{i*85b)Tu$~2r_F3(v+1j9T+WufD23>HK z0K9lgRvs7hQ?_xse#!p0THBG~rhN|EN&Kc9PuUm$(D1n#|9Ro!Y8KpBzfTqL|IEAE y{M^YxZjTNB6aKcN&(G8U@)^p2JDjK+VMfJV2Ko3Wq(0000|{* ze~eetxoP#kH~l|JQ>%n0Q)th~Dqc3gA2U$p5pH!H50t@`Vl_3N*<2{N(n+vVVInc^}j} z-~Vg>q9?zreO%Y?fAXg2iQT3TeN9$#ne)%6F?{mUtYSS8%4}eI;Xj#I-aI-~W+}>SykJ z5SZ=9De}tf;JPFWr=D|{g=F^dzI<(!$v10Ssg%;uw@gOI3bk(fZqa5aTUy;Sm+6W# zcM|jd7Db)8Lsohft*#@(gTl`tpTY@Oc4i%Z#A80?#H~kaA3&e{BJ4TiJhi)g@Q{Z4ujHdFHK5KT90v zHjfaqV26ZaNzt(1mUqsUPhK^txzcg^O6QeY?6SGhvp1#QZ9Uc(^T+Y-pIaL9nO2Eg!_oswy+CQ%)78&q Iol`;+0Du}vj~6ll`x{3zhG`2g%ug|B!zFhs9OXH!m;d zYwf?o6jJs+=hN5w4CYxm+>f3qIymdjS2j}Ql8ipCeBl$rTBUC%bE6n0ZL!x~(8qk^ z{gzFO_wp1hTlFjH_aFJ$_p_sd>XmYVX+xyMHKN3^v?L?Hh`}+XC^Ion!7(=}wJ5zV zKRgO3FA9=(&d<$F%_~7w(4XmX0H{C}q#z}+B-JXpC>2OC7#SEE=^7a78k&X}npqi| sSeck<8yH#{7+jev`wc}yZhlH;S|x4`OAjpd0%~CJboFyt=akR{0I(A{Q~&?~ diff --git a/companion/src/images/library/10029.png b/companion/src/images/library/10029.png deleted file mode 100644 index 8004650562e93ed77abfb96ca368c3416acbbc92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 755 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hox zCQlc~5R22Xm-pvib`W9zkRGEdyJ}a?N|CDyZEF&>C%67!{^h=*#5qzxC{U)OL3NX$ z^r`^1f6Oxy6!;`}xlH-rkga>LX+mrJty6{l<#zXrMZB+l|8nu^&%6B$x7@c08b4%o zb_|f&E`5R{Az=_b|CqBDgoRBjoV@ z$(0)4FLyVO~3eAP|)E4W({#C*n%Wgz?(?rwB4*6^zCB?Z<5i6`3GWN#IhAJuLZr96Gg{+o7Vvx@ z>+JOsPLuVs0tDh_%r{G5Tc15aV8+4Oxj#1W)@N(z#2EfayZz?x2@{PfaZ`>D8B)A4 zY*95{liw`$HaYUewEv*#(YH72SdWYFXI1bmo7g({qtJoN?R%5c-!NEgsoN@jZ3DYQ zz3POHFo`Pd; zQfg6pU4D2JP+k-y@0_2To0?aGs-Qp9;{Z^BDo8;}Vo9o1a#1RfVlXl=G}1LN)HO5> xF*LI>G_f)<(>5@)GBCI@SN0oIKxm;OXk;vd$@?2>`8QG8q5> diff --git a/companion/src/images/library/10030.png b/companion/src/images/library/10030.png index 705741cea320628dee122dea76fcd88a37635b86..c109f03f172a19afce609b228eafb477665636ac 100644 GIT binary patch delta 710 zcmV;%0y+Ka1%n2V7#9ct0002@y&$6i0007FOGiWi|A&vvzmXvq5da5tNliru-U1j3 z1SufIBT6x3FZL>q+(&rj|`#C;Ho zpcgW1i9|rAB}oSr2M`e=pPC0E2tfiFC#rKrR3;MC;!A&Ci)Rqn>ri)da3Ns0j|lv< zThb!3oMb~Oi4t^^k^Rg-L|v(o=s_soS0WKm_^HhSt89J^9Trx@UmS*F?KNsAsBEIkAZU#%!Jgeh>8Lf1E+kMn zK~NY1*$033R6q@FIH-;7g)IWm?iW9`q||DN_b!ApMD&@Y4OjBB5hBB*te!yi6BIeps*$E>M*ce+90upT%@TLq%?f?w%~d2bHDZw&NM z(|RBfacM%rTQeFgHuV?_RJUtg_eL8Ard5~d{sHS#3zKwQioVnn=00jFpR=`7=@72~n}!ut&1 zmk4g$7lbhpHz08K0FXPez`Qf!T@~zeVExYMwh`_>{v8G2KOw;XtpaB&A^SDnQ2|%I s(kLB2QCq7DOc==TlwRx$UVHukC;$?kS{DxWMF0Q*07*qoM6N<$fR delta 683 zcmZo>d&N3If|HQ}2!5?~x-?N=yq@u=r;B5V#p%{7j@efnMA$!wrx~(teCf%xZFY3^ z$0Z%nyCkY!xqeVKQU4xPs3?B)ng;hh5&f&tADJt%^;-{}+mf)9``e{v+Yoo%x2a1P zFV5Sbc>biy?%ACkmOL}%RetXO-o`LZ?+1T@ws#ub%JHOr z?_R+!4Ilezk@|x_p5E*J{dVnpDXXpXXUv(mZhq~aPnOM7?x+nsX0K^m_fjJbCNPDl^~p#=+` z=WCflDr;U6G*EE^bLKB23_wpfLHV5``0ttkJ${T?fQ)}tSh4|r-n0*uGm=(nEK0b4 z9)uoIccBf493|4XCv*fk1V}7^d#+UxpehY;#Q;P^_+5lb-lHjsa0TJ927blJ@h8uE zgxKGnfl6pJZ>|UY+EEn>F9V1%?+3u9DtF3c8r?owtWuix>Gfx>M;M^rA5b`HiQoD_ zM5A;V8SQ_Mq*R1?XAnk?1uO?HC4L~g2t;{#?e%L85MlpdpLk&5#6Y&7UmUX5 z5|vB)=CV9~puOX#6yLJ7lUFYe?hZCTn4om*_1<~K@7!mr^%-sX@c7>6qpc5Lm-bHj zC-tlKz&1z40E->fZdwy8A{aM1#6(pvD7A5NaersHU&6hl`hm$W0Sn*saH(Q%^Eu1v zzkLu`YuVezKG$T;HptaIJ<*KM z?yYgxI}R=Wwakwnp0zv9c&kdykonCkx1?DI9rIJT&mK9bkos9d_QlFx$pdR1rhO6r z<8da1pUd6Q>c>NijF^1JnEZtXZ;u!9bh5MF|5wjAC*e@0PC>SD$s9F@OGlXxEnKX7 z)#&P--u23+t3U1LYxnb8bnoIq>xQ*?D;t?_temnhowZl+)N1$88Q-nnxh3?ZY22Sb z?N09j&1avzrt)x>tU9(h$8cd_&IH9GgU1h~V=hT?KcC3J@1^WMFZM&tS>Afyw&Dnb z-1LV+n_3el#7jh0DqRTvDb|%}Ht}-QrH|?-KEIsvI-t92QP9$#9okD(4eOnnK5Bk{ zF*LI>G_f)<(>5@)GBCI@SN0pw eNQ8#m{FKbJO57Tj9$4xHN=}}xelF{r5}E*Qf&}mY diff --git a/companion/src/images/library/10032.png b/companion/src/images/library/10032.png deleted file mode 100644 index 1ed9a3801cf5341d7f53bf302cd46d981f402b9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 600 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxPeS=2F54mYxgrS zFs6IDIEGl9UV3R`)?otywg=pdyPY>)<74BM+_kLarNEkv$#Dx+F04Dt?ZPMPrEc#e zx3o>H`it_B2^acGUj#UduHKenX~iFzCEzCi>F(b{3TK6dzcOtWxBQa8BjU*F@XNqO zfsswZiJ?z{EkT!KzSU;e+NQDxmYZJ(Y!6hJ^k5(3_U5~v%2;--Z+y9ww@%3CZUFzH z#)>DBjHMnS%q6Caj`Su;Z|Y~SQSyDpRl)uI{W%*Z>9TojX%CDeG#2drA<^Y@H1}b^ z`a5k+r?1C6%~wnp?ab|X-lP?>S6^>iJcJ;Q!)30ti8C0MAKwfmGz6l@d+y(`zI{h<-&f`jj3ttn?@6d|E#-otr@F= z?yx092p~Qjn5Zl4_M)lnSI6j0_BobPWu34NXG~&8!Sf stW3*}V}Y#Iw&eEgy-VYj3$ojtrt@i9oha~r zu+L%TZ{Kr`$}a9%`)T*@6eOjZ|Av9RX(KI(EiEt{qs@+>|e1+3fkD%*vl}5 z7O~f*?r%@~p{^}%PUoI8bze-sBz>K?@Y9C0 z3!n52^0U`m%3L>D>c_o<6|=4zI$u3>G-a0gM7A3HX@8Dg*uFuq#QwL;nHAq(?x|p2 z!B?`%@3i2DZOvJWCJDus$UWWaWsz~q{O2DhuD*@wQTY!`{^@4F35%McUN6GPdGXpo z#~{sFiqEq6j&+*7|MBB$+u}48i3-WSM+}QjdEA~{DA2jPXD55t)6jD>ZSI^n{guIE zoql;jrD=oOY4al|nF5}q&Drwd+_HmqW_1kF^Bq*x%nxXX_dG&EIqK)3#fs?)78&qol`;+ E0BQs*M*si- diff --git a/companion/src/images/library/10034.png b/companion/src/images/library/10034.png deleted file mode 100644 index cc8b37afbdd2e93d09354c1d2580760f280e9cbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 690 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxPeS=2F54mYxgrS zFdp=DaSX9I9eZhS-faT`_7B0KQ)F8Tt}bX=d_3h$!j$OUTh|LH^j}!&EVT2(g|&4o z`@3Q!P6%zuc4v~^b?HL@lWN7@#VV7!*iZjBxU1iuQ^G#%`0)jTZUxgnGFluiZ3$4# zP_3_ad=Pc@PK{JZO`zM3jJ!N|gRXpxNh~du;W8Refke8 z$63y9JK`N$|HU^g`0;Ni&%A}@&v{CM9p?LS%EYP%JipJWP7>2Uz4Koz7QC9x#cD!C{XNHG{07#iss80s3Dh8UVz8Jbv`m}wgrS{WEz inJfDZMMG|WN@iLmZVgKhEcF6vVDNPHb6Mw<&;$U>`w++g diff --git a/companion/src/images/library/10035.png b/companion/src/images/library/10035.png deleted file mode 100644 index 2e14bc9412025e17291c1ef01169c29af0d34e8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 721 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxPeS=2F54mYxgrS zFh1~faSX9I9eZhSk+7iv`v=jq04}z`T?H4ECm6XptaoL!G}e1@LfD{A$T)qL3EOs) z17`zv9GqjLr^Mf7w!1q0We@lK=jPYy{**R+`sgRO)%k_Oo+<1P1oc=aoiZ@{BU{>b z>y+bXc@r~d<$!P&L6NEoy#+fiG6ruwCh9C@m?JRv@cw1_O&65TY3G#QXL%_8$p6S! zp2DhwpAXBp)id4r{zX`;?R>?Jdx7q3k?D=!Z%=dgSkQJspy0Ykfk1)aj>+w<*Lm)h z8MGc{tN-GVtkU4xJzv5n;RDlpjwUe%U-w6~r@JdRTsa&Rc(lRc@g>fA%&g0j3nKct zuB30_ntIaV>&g~w0ShnH+hqcoQ=`1)3eGv~E|m9tlg;iW^vGwsYy-=omD~XdLL7Iw z*Il#qcqRCt_3gpLeYe-Kg)uLvf0gmEj6-eCV;yIO56M>~Gc0fK@qETI?f&Gm7X;4O z#fh%S3UeShhyIk#U<+R z%$n=HD{G6*KP#Km@SeOmn=zy3+*6xrOxG*QTlj6CSoR#)EgT^6Kh^5)+~Q+biU&P>;Qk0pPr{I{Ilv_j3Q~}gSdwa$ zT$Bo=7>o=IjdTqRbq!5J49%s Nc)I$ztaD0e0syqL7v diff --git a/companion/src/images/library/10036.png b/companion/src/images/library/10036.png index e4eb4667fd8dc359f30f93d9ff878cc38d180197..ec94b1a344098d2b189c4ac04a150c7dc79de829 100644 GIT binary patch delta 620 zcmV-y0+apB1*!#*7#9ct0002@y&$6i0007FOGiWi|A&vvzmXvq5da5tNliru-U1j3 z86Ia9>Ozw}0waF{8c9S!RA}DSnah^MAP7V$PyYXxYZje{FBA=$Ggf5%GMUBLTLHk^ZpXXiali-=V!J2=xPOI+uw#-e=GN?0 z6eu-7=Gz!fG&orU=+lpun4;U}gqT z3%g{vr*-P#P>Iw4wUA4ZPFobi60{=AB&@HfzDn$up)zj7zn*9mBS2B+9CMT_Yb@NO zYa2%2$TO9u27*R{XFb&z`_+c7PC&Z?wb-p4uo4CgT_DMUdJ~7dc-WUNYD7fa6lVON zW@+7woF9J*q(cDyAh`(RG>u+abF9jT0NMn_X$)&5P&e>et-3R)o>VaGBY?7b0kJW#MDuVjO) zm4Gzbm-yyPxW5nRe=uQF8KN`gSdek}VhI>`+y43R8Sn=?^UOm~;oOY?0000ZP#5f5MX$)k;yuGfvN1-S7#ry zO%dVmIpX>v!;&Frlb7R8-B=4RF|Ad5n*@)ViA>B;O0?-YzHxJZ`r5E_;^+P6NT_u^ z+nD~$(CTOUjGP=k4deGlXC!9nt8AWm=RV6q&I+&XiDau4VaIM=MKxvyT}1~;xyaUNhRKQF!{)QTx?$u0p>|cmyCudM*HoXi34M?< zK5>q5nbGM5%?(rcY8>ukDq(#w_shZTYiZj!AJua)3a?4!k#5~$%UvRQY*UN-@((*5 ztS36HeaxhF#Y)eNYb&2;-M({KsmlyPKS+A1ugJIU759EW$^P(hrk%lkf8?jA@E-`# z*lWkID&f(k$didhzqNUOe!Vi`lg&G>Lz@<5ANa+u`^-slL-o&F&qTu(zWi4GD4zRE z&);Wh-aEPU>NiaO^4K)u=c@ZBzFv+iQh0Eztnzt$ZSV$#1)+C68?874GwPSfNdGo{ zI^nf&HEYlAwaItqd9Hpi`R}wZQ$F7DT7JXf)fcX+S}|Tuy@Ln+b(d+am3gsC{^F0{ z2a33&`o8clZhh3JZmXOOjB=3@*N76w(vpn)A_m8lqRhlR1xL=@q|~DHy8Q5{iQ&pQ z45}a{DTyViR>?)FK#IZ0z|ct7z);uFG{n%%%Fx8h#7x`3(8|Ez%3RrRKr;~(`OLo80$UOt;AY$(9+U?b0uug4R_f*)|Xxyr?o+s&_BH=6IFDrPn{@of@cr-moQpoFbANIu*)As}U{T?%eLUWG-j`|C_b)b<0V{oCpLIEY)>*bxxA`XX(+R&9 zSg!tJrE1na7v?eV|M-0V@0Hh|YJGJuq7wopZvq`m_ zqh^7v$M&9@@A4<2ndCxV{%|_4a7R(#epBC~pX`A$l0W9L=C1}uy-0~`M2TZ*Nk)DV zgJVijW@4U#V{TGvQF>i|coa}x6eRDQpPQSSSAwdbKhxs?P=P8)K}upts#S7PDv)9@ zGB7mKH89jQGz~E{vobWXGBMLOFtjo-xH4Dv8;XY9{FKbJO57Tj9$4xH)WG2B>gTe~ HDWM4f;xQUG diff --git a/companion/src/images/library/10038.png b/companion/src/images/library/10038.png index 69425a5d3d12ffde39277763ee0f0897915f696d..71e3824f6f5100e1e329e13cc747d9344b1b1167 100644 GIT binary patch delta 514 zcmV+d0{#8`1;GT67#9ct0002@y&$6i0007FOGiWi|A&vvzmXvq5da5tNliru-U1j3 z2sQzEVW^XB0waF`u}MThRA}DqS;4NuAPmEZ|Nmw0u=Z`G86+fmNYgk?Ent(xE-Xn9L6i+g4)QdxjtZvU`eq1bn$%X3oI5b`$8R zP(`Sv#FhFNH7~mYnm{a*fGP!bGkzigltOMKfR`l=gOYzE!$JJ{KLntbN1_qwD5Ma8 z!6oW8{UMD2O#SLM{45`Ue%pu)0tWnN=bD0VD1#QCewxalCg7Wfgcl)gIzZi~zdS3( zULV+QMAlX}2jB}M@FVaeV0CU60l@FaEmrbIe7g4o*H4KZK4U*%ygsO5Kv=?GivWb5 z*6L%h3|D{gT?FV*A0lMv+Kk~?z{-~F#G~;Pa1GqSz(YWsU4J$3WRP++(-jU&LFl%8 zRHT28*dHO<;vzX;t&k0doC`2oEesKfJf3r~Mk)G-b$h;s?*X1V5;N`CzHq)$ delta 701 zcmX@e@`rVT1ScZ{5d2!}bZMf#cs&!hr;B5V#p&3~2lIpt1=t=$@|5z2ZaXe_E3cBd z?_t9qt;!Y|$5j#T4?C`?J5&lCuzkvOO4wn}w+q};W2;`c-Aegooo&rMt>}dM`-)@6 zYS&zj++8HKUv>i5|Ji|fqKZ+skBH@|&^M`79MK z4xhAnHi%f6)pMPU=2;?QVZvOcAD?hdsA5UH+?TS7DW(&q_-{O}yl64w%GE40>YNn6 z*6_Qua}-`~Pv)7>Um*L0DS76B0Kv8mhpw?mm>+rK&sicF^z^O5p_uU8it@F$n%%Re z`d`&6N#)Hy9l9#@;);`sUXwVd^)6EU%pLGb=+AD-$zq14AnVgDZ1ozX6RzXvob^$xN%n VtzqebrCy+f>gnp|vd$@?2>?%cE~o$i diff --git a/companion/src/images/library/10039.png b/companion/src/images/library/10039.png index 586fae0a569d4b3ce4f6110f7f07fe54aa244234..9715eb04c9634440faff222bd535f95ec27b0c31 100644 GIT binary patch delta 876 zcmV-y1C#vJ1@{J!7=H)?00018wCE@R000AXLP=Bz2ngHZPv8Im120KLK~#90?OWTD z!ypJXJNy5?oP9{wu_}mi5p2)H&UBk5aE_uNx$gT;?r~ig@@)tg9<+{JQLGQD0d95* zBtQb3acKXL^tX#0I)I?`&5z|%jMu;Q;|3ks;f=;~NPoLeM1KJ?uFKATDaPyDh87@c zYM{h;Wo>u?lAH!MjMoo6K!7x_!Nc`^-{Pdt@_C2=si#4^WzrbqOajjlApL7lu`E8! zWf_YkK+9uk{FVsLhhG7d2u&!bmiyY*6a5IF$9M@p{yzBK`*<7DGrX~%>;+KT_T|uF ztSBG4A!y4kJAYQ;T3!G?>3oxhHu#Z2CIoRvH|D|*^$#Rx07VAN;$=4}vw1ol!Xe1d zfeADkylLPl4-f&R%I3=DpWOzi0B7ITR`pB)T0En^{Od%9GX-daOs2a$Pxhd}nF0{; zXs}m?GZ$eTPzc&W#U~0tgbg#BtD&-}vJhr|Zj;lTFn!dsg*-ShQT82p$!&+hfIojjz9jfPYsk>td?)POwKq2x$3S!wL zQXYU0ja&g-raS0x>3Z_XF! z^?+_^qJNpI1#xPPkWJ;4(0h>GDCd9vQC7z}0ZJ|)qK8$K%B;Z)B=8w;p!FHSbTza) z9`kmE$Y%L5(Wa^a-AYH5I4z4=9EZy8#mniQYT#zxyyOS+OW-_!IQ+Y2<^Oae`<^2z z*Z{g7^vT2$fZ3CbD^Y&6s|vE*ST|A8TlP)qOn()LMbK9vmSTt;UL{X6T+o$pF2G=8 z!X(b1RvK~O)7c1cC=czmyk%sI`$>_vA&eKv?Tich8(;>sPzwFXl+qhv0s`#XBX(t2 z$R}_iwY>{D16s5+5obwvg}1CS9o`kO9IVWyb!-7Bc``+V?j3A2h%JBtv}4gBYd{O= zpk-oeT;~@Ez(NAMR2929m*~ILDAp+19yysx)n#hkH)zp|EMPY1iXl=Ok9w-#S0j@Ps+{)w(Ac_gP-Xn^s-8o88b` zKTTpmmU>^p-NhUY72=2QmNaaQH(bP+_hPlY{eipI=86sb{qMF2p6kwQ=8Flx+mmpN zdBJXF1*QkqkJ1^Y{l3H!T;Y0Dt9rvf2Q!I(18KT5C7f zvFt8qjOpAWnD5jf;pf~@*?V0pqFJJ*#!bWYTS`IS6z6rv1jOV#cmlfor4FTOb?kBr z(XW+Sx4X+RL{EtQ_P(G;Z|^u?eXdx!|NTNky?niX&zdC?Jrnl@6in*k{-?6r;r273 z{XyH;dIweV%+b^lHfLfl+-S`1$LSq!z&_*RVa^ZN4pr=kxxZe{?s3H5WAYCl>^AXU z^rCr}$o7H{z8AF?ii>~JxK;6E(Tc1WKObIwcy4D|z=x%mr_Ou&Ira&km));zNhjtd zyk1adT6*mG>2DU*vKP9XXPi}%-&p^*f1>ST!5CS+VKdAc7@Aobnpl~bX&V??85mrdEBg&aLvDUbW?Cg~4NDI! R^#W>O@O1TaS?83{1OQdcC@}y4 diff --git a/companion/src/images/library/10040.png b/companion/src/images/library/10040.png deleted file mode 100644 index a6f575c6f1efd42f490924d207269975bf39fe07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 450 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x383Ib zPZ!4!i_>o}ZR9;P|MipZw)mRDEPF4wpOEbF+C0cV1aHKE?1x8jI(EsB=&xw?{MwB>~mSp4?F*v3aWhUk+IOZm$7NytaherYB zMM3h;`MJ5Nc_pX{`ZGNa02Qc$6r?1Uq*^5xr2;7iBLhPtT?0d1L(>pLGb=+AD-$zq n14AnVgDZ1ozoBTz%}>cptHiBg>4BwQKn)C@u6{1-oD!M<$F82d diff --git a/companion/src/images/library/10041.png b/companion/src/images/library/10041.png deleted file mode 100644 index d7c5094495ecd11b129e89b9963ec13dae8c3585..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 819 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hox zCr=m05R22XSI%dNI0~?Rm^IfyzNIA3kty@O!abXp9CjV|_N=PlP`M!7R3Z3C`pEJR z8B(^DpI+rwcP`lOW7fFkWKMnERpXP#bWR)m*|uxdulrm-UdrUzE$R=r-x&7izd{jz z$2Yb~9LKkO@p98Hsh^RJ60 zvYkme_v@g0+N-D58`O;j%^fCj_j_5aync}V+gz2OaR=wJ+}8>@x!mg)SNOwTza^`; z*T#2;@hh!PTI%PUzV4vWF%|LL#%WVUtfc2W+2tZ5l$(A#d&RmE31bswi8G>EOl}W? zb|10i_G#37mbf?Fob{2E{PRau-?VSCh;QfIFSjG6;pC&dwU$yZiiCXLWXH~mp5Xp~ zkHdKPi_-%A*F-90`rSCTF(_%VnmrN8Iy6sC`hja>T7!+-i#|7&carV3S_dB5+3A0n z;<>f;g>}O0cFa7*n>vjC^8-8N6E1GpE z+wefrsjQ3K`HbeR?=P@fuWvsm79o=;AG7X7cn@d6lEsnDLCdPr52^v<%dTBlW4geLXf)u1AmZVxG z7o`Fz1|tJQBV7YST|?6lLo+Kw6Dt!lZ39Cq1A{AbWxt_l$jwj5OsmALVd;UTUO){D Mp00i_>zopr0Jlj|ssI20 diff --git a/companion/src/images/library/10042.png b/companion/src/images/library/10042.png deleted file mode 100644 index 6f4aa2b6863b57c685a458f430705e0d56885ab7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 695 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hqn zW1cRKAr_}wFCWaiZNS42uu5vtX@R#hoD<&~S7|Kz>s_DJt{A3&I{i)XvqJ~INhUww zm*|#T#x%>~(pur$?N>XPf8Si>;l=h$zA>Hs#CiRNO|ecpn?&z8PU&tpezMz;!|JCp ztJFTJo$pM7p0mic+a2A{v&!?KiA{n<=!FYL5f5I5{HbNkP;FK)uu071X*?79gyo&Q zX1&RexOr)3qZuc^{bnSmYLHTKjzLfMKyNVfLA}Grny0C3)^cdPeJsq=B{)oBa{gTo z$7Z?9>i+Zhiqu}vVijO|IzhK);vJDsY6`BK3XIdvAK%5Vo^x>-|1;JfyTxC`n12g; zIQ_kKo8*S~@3k#hzH`;zT72@oP4C)}A7|aQ%a>Gg{&|xBM)zHf+;07+*H1*x&U3oB zM`X$O+q@Sfw{Y@Ga9tLNTv)~1cSuA;`MTRPj>}uluMsfx>pU6AyhUQS6)VsK0;%1q2taLi3gElRJ;503)M zi-P2x^K)}k^GZ+^^k;e;04h)gDM(2yNwrEYN(E93Mh1pPx(0^2hNdBgW>$tKRwicJ o28LD!23O|FenZiao1c=IR*74~(gRDqfEpM)UHx3vIVCg!0E{mfEdT%j diff --git a/companion/src/images/library/10043.png b/companion/src/images/library/10043.png deleted file mode 100644 index 7ff6f4bc7c99089aae6ddd1e5a7a6b3003d450b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 638 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hqn zUQZXt5R21CFB|5`81k?NaPjDrYfV1o(;#zTX}9Z?#ZNfw98F@^9lhh?97gFKmY!{XL}J z?gTG#>kpJ+n814K8G9M+-A!Bae0x_^Rm7ZW>47WdwpIq zJLy(a_ty1sUi_~b)_#A!BSF{t!>0Wo+LYtnV-BsVz93vz@wK_N$|=r3veJIxjVFTQ z6&Gq2oVz1zmD!wO6cRjPpZ1lOYbz>0aOy_&M%`PWtmt|A$!o2q;z=^w7S=j1eBmTi zQ@py_L#=lC{WrIl@2VEq-uZUXja}6NoJ)0=nXi~4vnto&xLw+nOaH2-+2bOvPH86O(`njxgN@xNACtUwR diff --git a/companion/src/images/library/10044.png b/companion/src/images/library/10044.png deleted file mode 100644 index 0f5ec33dca432c9f1dc1d4c8fcc486daf65f820a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 602 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hqn zOivfb5R21WFWUPZHV|PeaF?`k%i-xLZ{1|5P$SxR;6#Xc>5CiMqNNE>xYkuMDzn9$ z{PDP2Pt;SYlaqhj*Wy3Vs|_u--Yqn6h*m$!@tb+!45g*6M$-g1Z=O*#x&*pd^#t# z{D8WqK}vLE=|+#5Js)#F+Hx4*Pig(ixhOtm?aNh74=jKA{%T!!(`mx+wJ_)aqSPu1(FBKn9eXv3x06?!LJQY zJEz!1IGHzD-)`soxlgt++wFn)JMpeVZf*j%Uts3^SX+f96Ay2~ztQ6(4#Bd)#C-1jd9&iEBiOV`)i7ei4IXN>OHFo`Pd;Qfg6p zU4D2JP+k-y@0_2To0?aGs-Qp9;{Z^BDo8;}Vo9o1a#1RfVlXl=G}1LN)HO5>F*LI> tG_f)<(>5@)GBCI@SN0oIKxm;OXk;vd$@?2>=4b<$C}C diff --git a/companion/src/images/library/10045.png b/companion/src/images/library/10045.png deleted file mode 100644 index 4e195cbb47a8feb6cc5bfa90fc0308bbfafab673..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 762 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hox zPEQxd5R22XmklRfF%V$AkT0UK&`WabOiLz3!CTS=tq<9}Ss1q#xt$RFrZJ%(e|B%%7G;0&9};Cfe=d7%@-1t;&>U@icfW zr;)9&$5U&Ub8pLRX08d(T`W>9Hta4;TfA+W_L5G~TkD@TNCv9je$O3Z^SJ220p_qK z%P&@+*slGOU$J-nHkkvr9@}5A`jHu{z$wLjf@z*qx#-)pJq`KBZ%S9yym+Df?jBc( z*4D$jLj2g+eQ){Mhab7-czRno_x9Ty15Z(2MMR(@$!1dWHxeM&h&i$?3bYQZb<&&peS!~}nR3t3U?dj+Xk}Z|^*A)Ab zU;2@7PnhI~f|(_k+YBExU0N7((0+B&u?Fqr{$0tTu}}Es%U@Z)ZP^Pu!&~-OqC+xd zqij}xT5{o4z(u<`p)Xcks1m#Vc<1_EtmgySbq|Srp8Y}T=bSZrnm?A7CSA=hVOKr& z>|?{sgBNtuyRIs)ulRp)*`w8!#rOXx)I`7G&(3#@Zr6%F157C*C9V-Aj-@3T`9%zl zDMguyc?yoXNvTEYb@|~@KzUJ+ymNkTZfaf$s)GJZj{`sjsvrd^i6yC4$wjF^iowXh z&`8(7P}k5j#L&#j(8S8bOxwWF%D~{tT-k3Z8glbfGSez?Ygl?6HSa$?F-c8Gd-sC~;p1zv#@t&A*Z|4CjH z+uFf+_{wIVf0Dh5zfMIgt&SD_@}TaW!-Qw&*Vp~8;^r*~n#=Uz`9x>O#w)GY**{d+ zIDM1tRNJJT!B=CllGXj39ngEzkLxyD>LU={udDv&KLG8NE=N4;+i0;Htnyh$64M9j92|9 zG;C#Ime{Z>;*qRVT)M`G9gat(`)4l@OgXi&%;2?pfq6n%ee+{`0lx>Wdl$yeRkUAN zRQQPHSI8^YHMbISZawH1KDIGOKX@6pgkU_cTgkotB!jNUeed49)|juoenR|(b3b=F za9^39yye2S$ej0InT}uHU(2SO#*p6AD1C@`8fV$uy6X@1JAy19yyJ|OKE^m-;qJnh zGYSt(R}Wd6G>$AKfKxh#f9cL=0VfOWEpQnbyye_%>eg-`CmkmO@q?N7eh)y`sn$!TeE;7Vp!iu< zH0XYiV&P1_Hm-?sf;)U(2=+0_mY-e}@FQ<-;ECCJX9Eu8U2AX(dwq**N$HlUQ>G-J zsxoQyOlFy9nRmU>AxCr>@1myF*Z&-0UC$)Yy}M1$%C?x#jTL zZ+Px&X7EJ*SZcwODFTnTWOQDT$`JTw(&5a@HjQm^QIfvJVX?NypQP^noPLq_)@7j} zHGSa|SN3T0Xo(k)JdpY6dFV=P1E@xxQ8$dBAQsNp>;#gXekzd5%m{OFPn5W>Fo0M9VUY8#p z1(X*B$vfxg=BDPApepFk^f&-ipbAoul30>zm0Xkxq!^4042^UR40R1nLk!KV3{9*| q%(M**tqcsV%$5Cyq9HdwB{QuOw}zz$mU;m-FnGH9xvX}hsZV25KtUv#Sz>wgc?dWSCW_6M#?J6>K`$k9}P zM6oHsHE?_0H-{Ckd7A{C=Pl$tTYX*rfiAoJ`@Plu)jVR)ckFA_UAHOUL2zxuk_qlj zO?@_8T2Is>M2w7;ICq*Tvoyx-c$TQK_`*|(uCg1OIDWhpJ3L{#Uk%eO*7-{^*iGz@ zYwj`XdvLU|bh={22d~@dn;I`?7D{Z&WA^zMqd6tW$a1r>daTpIgfpQD3p0y?*{y)(TGd z+B@AgL3~a6KTcR>+x^XBVr+t%^TA8_It7$;N^r@*i32Qy;x^pw?_Wy9I`0(&|_51G?`~^m4 zlO+?4T&MD|T(g}Z(>Cqk!R;k{^E5XtD9A_^-lmyimS_-RDE~r4>GT*DBd~VVvEZWHIA4Ji^=Rvxwb*v3c(dOxv%+XENA%iY^%GM(uD9V z@74Z_3^u}Xfr`sbza_kIj#`vsFO<*4k(uu7dqt^ z95_?#;m*_*ewJP2Ro%zLUOVU=z`_|LB{!{_0G`+h9sgFF z-T(PpZcgv(r|;jraK0cb!++<4tjw#oPc73+1m+!i@Tc%$z^?pV#~+5>=w4`9a4>Vr z{d2W^s}t)l#AF=r{3w=K#rvNzF+6-t)v8<>V2q2DxJHyXmX>7X7cn@d6lEsnDLCdP zr52^v<%dTBlW4geLXf)u1AmZVxG7o`Fz1|tJQBV7YST|?6l wLo+Kw6Dt!lZ39Cq1A{AbWxt_l$jwj5OsmALVd;UTUO){Dp00i_>zopr0FMqGb^rhX diff --git a/companion/src/images/library/10050.png b/companion/src/images/library/10050.png deleted file mode 100644 index 13f2c3748d2cb6f361365dfed7f2fe32fac71bf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 701 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hqn zGoCJvAr_}oFFAH!b`W8BAg(6CuevjnuTh5O{6{5S5v@1!kw>!?T_?zSsRtdLeEYCm zSYqP)-QNWh4X29kUKEjE%`wX%u{x?pA#bVYyyR_5@;4Pr{-}6=w%VAvV(Yv$+DyOZF{wdbH6hL(AutVB_%$+e4uVw|6H7YSf%h5!tlt`UQ~H^1@Aq5Bt{(PYPnNzpj34 zMHA15DXM*L%Syi|&OD^%dVA+-1C7<|v~BNg5;(9n;Sx7rN=u;Qr$3D6t(IJ#`cL4p zou}p(>mPO+)$#JHcW1EneEE1V_E)Fl1M_q0xkhVa&TVs)_xdN%uHA6_)ajEP*=v}t z?K_;d*3tV{np@%&tL-&=GbeRp?t>5b6fb9&!10;loZF_tp?Wwv82!~dQv z-hV6kmamZOj^A-fqOWet>T8dSEOKT=#vR(dV^)mQF~=j8jiDS#zp`#b^|+?r`DYp{ z!)ei@S0q>{*u6s9?e}-pJ!g)dY-HJOZOwWA(DxOyyMHWixq38J#%}5cRdP`(kYX@0Ff`INFw`|P4KXyc uGBmL=G1E3Mv@$TbGFSE+iiX_$l+3hB+!~f1Sn37Tz~JfX=d#Wzp$P!5$sS1n diff --git a/companion/src/images/library/10051.png b/companion/src/images/library/10051.png deleted file mode 100644 index 00ef00a9e28eaae055566428fa6a1bfd662eb4a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 678 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxRpVe@%FN{ZVU{J zTRmMILo80WUOKPMQYgak;r*AnJzL)1xnVT3xkzq%X!Pno%3)du&PM90yt=1DHcG;#m_xs+$4|?~1eYy90-}UdOADFvksc*QiEYa7H z|BumeVb&`Vo8YAnBy6~ZT7ygu8|~;wd%^OnS54G8L8`Ftpud!1r-PDYvc#&5Cs`Qv z`8b0fX+HQU8FR?_F~>QPj6P$Q_ACYU85svcZps@(>|*rUqi?xFC1H`$^eHj2HEiy8 zE~;!Ae!f`xg}R3YJZcw)*r)J3JlRto*v>UoyX*|&sjN3 z!7{l}-uc|+sLemD9V$0oYIdBXf2Y(vv2j|=KHW#l?wouz-9ov1Vy?1+U&A+nX`G6S2Nyki4~a z%ZCpc@oVKpwjE!8wES4`!-qHjZLxQ1NV;*j_GZq``Cp8G{`r@)`N#iT`h1MxI+59Z z4}q~NQsNp>;#gXekzd5%m{OFPn5W>Fo0M9VUY8#p1(X*B$vfxg=BDPApepFk^f&-i zpbAoul30>zm0Xkxq!^4042^UR40R1nLk!KV3{9*|%(M**tqcsV%$5Cyq9HdwB{QuO Ww}zz$mU;m-FnGH9xvX>$GMAe>K{W#i-kN2xinB@_8tMMPy|Wo7P&loSLCOymxEx$J=& z$G--pS4&8*0ilUkeV?=jZxu1vvb2g zezV3T1Lfn>j&673IC*E%Z;^?rVj`yOO6*6QqNg*?+}C`vNzrnl4)gQPUm8#7lqA-P zsx0GWTGwBH_>^njTdh8`gYPO%luXxo>HT@Tm947ZCkKz626z73lvg@`)}3FZ#CTtF zd-3%0kj?R;QBADn{Cf@V7dBQJU1{ek`IUNdSqIyeU-7$aL=N71cq%LU{N#PpFRyD? z-7W4?VYwzu{Ive@2&o0%xfE>VOMTP7w1K1iJZ;q0*-MFufm2KybnliwU@NjUPNt^U@sg0{8|Ur#hfX7ahs zU`-7&V3}DJ@RR$(6!9CjDm*#2Sk5IHX&?XBd|Y9MJ@Y%qm2!XnU*noApm9?0zu#+v zTLmZM?=H1&TpXly9~i?TC9V-Aj-@3T`9%zlDMguyc?yoXNvTEYb@|~@KzUJ+ymNkT zZfaf$s)GJZj{`sjsvrd^i6yC4$wjF^iowXh&`8(7P}k5j#L&#j(8S8bOxwWF%D~{t hT-k3Z8glbfGSez?Ygl?GAr_~fUb6K&Y#_q$Ks@zB(-UTcA6!$JQW+k$${h?A6?ip=*IY-1U7>^5u(;Rb zgp#|1YHCN2rZSIXq?Lo5XNGUGUI1tR{Co57887&lkiC#k@M^=VRZ#~g&2$i`3@uFO zU7E_&Vo|WdYLV0oM#jt_i+{_mOk-qhIpyiFUAMpSdn5DP-Z-NT{~N?*`_7vNY-pX+ zY0PWQ+w<*c1oIZbpdC^|_0b8(g}*T$TX<{j_XT^sYl`bl&%a99KEo)&?6u&f|6X^0ebk-I zG5_qGM=AOi1+Uv*=bYL-$!Xb(a>2TLjq1-IrhfeR#jf+mwVKoadGD`mD0$O&V(mL% z0E(2jMwB>~mSp4?F*v3aWhUk+IOZm$7NytaherYBMM3h;`MJ5Nc_pX{`ZGNa02Qc$ z6r?1Uq*^5xr2;7iBLhPtT?0d1L(>pLGb=+AD-$zq14AnVgDZ1ozoBTz%}>cptHiBg T>4BwQKn)C@u6{1-oD!M#-j}2`ab_iMdsPVjz zaS~@VKg_cAU02(&o?t_Lk&AP0ir5{h)~^q`k!O1IS-1WQVJ>b_;S6O-K?5E}hC+@l z8O$k)BAxtP9?JYNoCn&|c+WITNwV7nbcix?iZRJdv2Xar>v7ABUA_6_oR4}Fct0@u zt~siq#3(6~FPKrV&0A=7;0lI2FEw|B{^7J!{+c~Q=F77)j7_^kYXw>l)J#w;;9*K= zV_GDq5Gx>U#r|lToz=XEUoTRUDm~TCuGzw9Bb2dg$C~f^YYx{~#=O|#<6dlN>&qRn z@aU5O?po8`Gv8)!e_Zr_MU-vl@7KGtsy+p*E4K+>E&fsOp3IGzs~5(rTc0jAmg&#e z-*$SQ-hXC025nxQnQ6Os$pXVvq{KC%#Idv_Bfp5jF{LOoF;BrUHz~C!y)HjI3MelM zl6TI}%}vcKK~>P7>2Uz4Koz7QC9x#cD!C{XNHG{07#iss80s3Dh8UVz8Jbv`m}wgr mS{WEznJfDZMMG|WN@iLmZVgKhEcF6vVDNPHb6Mw<&;$VFaKQ2a diff --git a/companion/src/images/library/10055.png b/companion/src/images/library/10055.png deleted file mode 100644 index 52ae8827b98a8ab2c6e3918ea79e69ee10a36db1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 659 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxQ#)Wanh!}Jq!$t zi#%N%Lo808y=?1s#6g7p!+#4`mm?8edb7{+isk4Wi8;ErAtF*EN2#gz_y>k0)ipV0 zyBEnhbuS6x$vUEzG2`RjlyGCmBbQ7X<&EEK>tERXd_mPi?gXcc?fDLS7|%Ck?BvXd zQ8Z{~6Y!l7DJ!C&w4P0bX@&EF2UoboEEDRPTVF^AFuYaMVZ5fl;2%?W+AYg7(ygM! z5i|K%1kDnk3z=;6*z>ZQC8Aw4`bCqJ*B8~VS6X}4BydZ;n0ld+V@;ug##HZw*AeOy zxSVdXHZK-tdKIVfocoxKoTs`KOYRP@kOL1@m_rXPuv~a_LZnTQW9gX#Gd~DQ*)p^C zel=}gulYjJ`Ow?x2ENv;>zQV+U-8QNY2MB5*(VpZtP*F_ikTMQwwrf_0h4;tgG!f( zV57x_7pE2_J@xTkp&!d;Z#1n>!EBmd`?;Q_+6#(T^Lf2El-Ka7$JRFIpXx5Q$?f-i zZ+(iko?Niw{-*_pP4?XIJN%`j#4c-j$)l9g@(({m?#+wkZ>ui1n_nSkv#&+|p>?BN zV9%GYNe>ssf9dO6*Z2Id{H8zrKUi#h_i9g^-LMQ8g(4-c5haeLB^mie42~&9nTdG{ zj=4#xMd@|<;ZZ<&QINcIer|4RUJ0s#{!EVpKn1EG1u2OosaDBFsX&Us$iUD@*T7KM z&@{x*%*xQj%EV0Dz|hLT;L2RtZzvja^HVa@DsgLAdSIy+Py>UftDnm{r-UW|A7%d- diff --git a/companion/src/images/library/10056.png b/companion/src/images/library/10056.png deleted file mode 100644 index 7c9be6730a951510ac677606cdb191d40bc0ba49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 563 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxQ#)Wanh!}Jq!$t zPM$7~Ar_~fUf$?;*g$~o!TqlZY%P*AXFcQ9+GwEgN$Z1BZ(#fx*3Rc1YGK|wk~;F` zeo=3DI_Bz4v^)BIw|)49pWm(Q3mC5m@W0TOkh>WAApd&9Rl&AhE1IL4`BYULey(HC zW1RAUW!9!dQ^s%XJB}=D;>fvPz&s;f;VWut5#vBzVH#8SLdm<8l)hI$Lqs1@aq+4T~8{53NrO%kuJKaA^ zTes=nT9P)QD5_z%fWpoT94yKcwcb7EIXipLp^MxF7aQ$Zsva$JZwx$kenZS|2lM8s z%9;QCf@h~^Hup(Bi)7hRICp=K&+8qAZO6DhPE&Dq~%_`rDTs|E6ECZ_U4T{Aw!8@84g6K`c_@8d2g{T9T1p#Ne1x zl$n^P;Fz0~T9jUwA07pi7X`^X=jZ08=9Qo-=+E>x092p~Qjn5Zl4_M)lnSI6j0_Bo zbPWu34NXG~&8!SftW3zQ{H81^|ocwnw($&h&JV6K|F*N2^&hhqhF zm}V4gJ}>w`!brTJ*|%o1zqW<40MDP*SMMB=sp#0B>coBLS6%hlET5+ZRkI9M+CTlZ z_SlRC{ss++e+`pXz6>y0ppYyfW!1HNnX-1)g;NXiFDR`_YujeFMn|^oL z2hGwwsQTfk^pW@H`5vk=zGY?1ZLNK8P#pbsmww#kPv!lWD$NZV%?>Ked{9mn9~x-JSnI zAWQN0!}p3Al-cgzw7=ZdDzPKj>U!LhUt9gDmrz~iT%)NXhbz`j zmU35kq475R;7vD!&B0ZZ{o-TAt#$=<-AWTKdAc x7@Aobnpl~bX&V??85mrdEBg&aLvDUbW?Cg~4NDI!^#W>O@O1TaS?83{1OTIQUPAx? diff --git a/companion/src/images/library/10059.png b/companion/src/images/library/10059.png deleted file mode 100644 index 3d5e9bfc037814bf9ed05988adc097b2e45b4ebb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 703 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxPeS=2F54mYxgrS zFrM>taSX9I-FkUr-faT`h6}<-x@hA=7Fm%?jIR|RyKLRi zaQf_+`>@re|6HN7eIs7ldcGrO$&bG~KWE7H#Y zI?R!DG@zKh!hELfGQ&?*x{vtmY|jZlIlG6|Jo~Iqzp!MuoCy2vO1lGB92|d7X7_QF zu;ANZR*?VTL1L!DWOr7%2gi6$_j4RN9CS(4UeSPGL;9E>tIFMNf?j7o1+x{hZ)}XM zW8$B(c;~WwE`?VQ8bVG^uVT3TOx}sv;DCS7YC)UJ`a#ZpEs^fd7|G?3|+t_P4>tpY{tNwA_>E_}0VsTX&*TeSmeqwrKFXSZTwC*v3LAaub zr(mqpjEP5GBTTvt?wD2bOvPH86O(`njxgN@xNAlV=dR diff --git a/companion/src/images/library/10060.png b/companion/src/images/library/10060.png deleted file mode 100644 index 2837c53984c42c26952edd24cd4c035656ad3bf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1567 zcmZ{kdpy&77{|Y}8P-g#%c#r}MQgQnkV|P}bEh3Gx#cqEa#-6-Ki5u-5Su1C!spXc*>p3nR9?~}@OvQ|ZHL;(O)ZEfhzau>)& zRhAF1&`7u}HwCu6H65&+PVcxU-&FWEZpQ&Y&HfV1qRb#007Zf=oyH0pZgdmXju4a+ zmsh-Z9V_04Y#FXy$hZ~A3rRya3tD=!v(iQkd8yE?lxqcz=G7ry=}h;O&-%eG>T`Nm zMxK00|2UOE*skPL`yhk1iU#9H^*f6C0MmB&wl(=_Ass5gJ>Oa|vSdb;_BWOm#0)B2 zI02(2a=YG6;foP%K#wAj;Yaq>Ej>gY!LYPj?z~LwPbLhakVB4fb{6*JXp=lPp-HOB zY@f>n(xE7XN$nWrY~A;PoHMo?Zii@$g+gd%ys{tql)ZvykOqwLz`TB$!h0Du0t99N zO)z>5*%)ZM>6&w*wbaDqU0L&B^x3ZI5AsK2noTDUH3OS-3F4$>g2JB}y{mM(4EfLTBT>paZ}62~2EA^@vA0 zuU$_L$_v{~YF%v%ue#{5_Y2z!T}~_wv8`Y)4wT?-P6PTzs&d%Fr4|;(qW;QU@Vb%~ zmsRQ!S1!OXNMlv!l>JIYqgs-Zx==@9$0zr)7+}Z8*FT%n%sy0{#c=$#kDz`jlZEhy z!lhpiqoqS%6cO^vTdd_jF2bzh1Wp~*f z)cH}8R*s22&tJYQH3Dz!`YU_gpRQIO_GDR1878>1Ld&@!>VDHikE5$l{?7%7kM(+t zcjeqF_9&q%{ec6w;HEx#E3w;%D}pBZ2`X?x5)kKGf~K}ps@*>NWnSkwr1`5Oz4>F7vR(!K(X{g zfu*yHJ)SjLnL`b=&k^c+U4oFdHjK#4SY# z$?y2ICB}wQPkV<6N>AXWlRc65th#S8LM9_^LjiKAo6hlkMVDRWUr*{H^k#SAA^|l? zSco)(V;Hwjw$@BsgPAH7DawizVLNZ@62Wx(xHA?r_nZ`gd-J2?=K+1;9ehJZvv~LL zXPc^zlkG~VhZmC(-k-M)H*`0g1HU$CxQXl&U>!`*3bPSH!gpm>mY_JL<@(4cwvC% z9~SI;j6mbEIbngZyd&=NeEqN7lE>w8jzPZz>A^NqIiULs@b`r{rhZ`@xq&@o${rG# yLZTS5C`P6f15*PdBAH@JCifR;e*LY$<@pB(ME`$5B9++53&57)M6a;$N%#-Cd$NQ8 diff --git a/companion/src/images/library/10061.png b/companion/src/images/library/10061.png deleted file mode 100644 index 2aec8a70335e5e7cd88e722382763eb8f21866a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 732 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hqn z*PbqpAr_}oFP+W1Vj#fqz;myX$C_)`ZP&bVR^9RJ2J@=$N45cuHV#^Px~mEVI-WMn zG8W2;W0~k6cw6`juZQQ+Z(+?<9xKe7AOG!?t?~Sld2HTB_JWP`^!9Uf`|rKZDEg26 zP^(dj-iZmjCa^Ezp2r<&uEf>x!p(ratU3Bhn-ve+5w@+eUu@aiZr5&D_{Lt|N`c*? zBxp(hB%e1Ti+UqIoIQSw5w&-1>DZjx&A`a|n4~q`j2wI&lg+%McOddXC7So&8_rl^5n?BJaS!{F%!5h8TP6hmogl$;bNV(EH;Ib7Oj18iCANvm75i*h!9Sr^tibo#hr%=GUmQIqb7?-4m;e5p zBSrWBytp)*`9uULKNd9NzNpH13*{sVv2 zRlc4ZI-+xcX+fmKHKN3^v?L?Hh`}+XC^Ion!7(=}wJ5zVKRgO3FA9=(&d<$F%_~7w z(4XmX0H{C}q#z}+B-JXpC>2OC7#SEE=^7a78k&X}npqi|Seck<8yH#{7+jev`wc}y cZhlH;S|x4`OAjpd0%~CJboFyt=akR{00!JG%m4rY diff --git a/companion/src/images/library/10062.png b/companion/src/images/library/10062.png deleted file mode 100644 index 810efb9a9e55a84a0da15a039625165a9ae38a82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 647 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hqn zX`U{QAr`04Ub6Q->>$GMVYPUV^T~&cWWDkQ<}k-b>4X#%e3AC}`xWplV}uXu`6ZbrRynxfC*5#9do`M~g(Ysq z^z#ccf69Jjja-tl&Ro;t@~Xn6k7e0fKCs-`b-7pR3(KC|pbnc#F-( z^76gM$)&nFzbrM$-9y|ewIxS#JxT*YTZ?CRdjes>3xnpn>$}i z``Xw!yt4Zz{fA+rM|668z^Wg>XcH-MjVN&}Ey>6)VsK0;%1q2taLi3gElRJ;503)M zi-P2x^K)}k^GZ+^^k;e;04h)gDM(2yNwrEYN(E93Mh1pPx(0^2hNdBgW>$tKRwicJ o28LD!23O|FenZiao1c=IR*74~(gRDqfEpM)UHx3vIVCg!0GtZ^CIA2c diff --git a/companion/src/images/library/10063.png b/companion/src/images/library/10063.png deleted file mode 100644 index 2cd293505713c9bbff457802efbab26b4e094479..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 543 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hp6 zJx>?M5R21yFWLIBD2lLuuwS?!#oO2C1IM%ZzDXo)eLCsJhC-wB>}Mu4 zn%?p@^r@4q_-yA;TD#Ud@$P!%CH9K91eY=HkvniwPHaIti;t|!fszM|R~wmA*cpz< zS)34CmiM_oV6$UGqnG5e2JPBIj~R``K2$8^x47ddV!-FmbAYi%k9oh5#yVe}1y?6I z1}_mUX}+*;15eEa=Z`@@ttKXli55A`R6NPGuW_A#RzS}-rjJYWS$8DFG$`jLN~$={ z(^^sFQn>t_iF}rxr-4gxnW}i58jJ7AxPVPx|0GLxNEF#Jz4L6jv$R`VRJ%3Bqb&Z( z3QeE)wicV)mw3LuUK^iMWp`^|VE?=8_wJSaFSFZoXytsvjbDt-@-JUtE8o4@QNn%q z+IrsmyBryxxHoS63=B?@64!_l$I_CF{2~U&l%mYUJO#(xq|~DHy8Q4cpu8wZ-Z?)v zH#M&WRY8BI#{r-MRgi*|#FA92j@=Ix`|7%Ci|iZ{Yjw&FCDrFQ|J9$dh&Pg3>uOWb5d-$5 z4Gvb2)y>4cAAC zx`k&La+=RuJ_u(!xz$i^${g!}lnlmIjCX4S4L&&X9rfPzT8MqKN&~lsOoZTqEC<#L zj3;I&F??LQm0eFle1ZSz4LnT>^O!yAU5b_;Gr7&T^G3_TC66yXKjhE7_Jo-5j~wlP zhU_jp>*S=Wr(|4T>iJUp8TZMA?yE}Du2$8Z3w^>5Y6WF&xh0isnzp@2xAX zueHC>r(6Q&UpEF)B-lM>F{V!W7LlE5J>z1JzAeO;f` z713k;&+ji0R9_JMNwco5o;Bvr1O5+LKU-rCsoC?hmc6{&c%r}~;fUQ~L&x=}1ZOW; z=@`4`*k&#}7U$E;eImOo8~Y-+2=gd<=&KvZ_^$}x)Re6u?htpd`PVnzeb=+4b!HN z>pxn5=MV)3y-0~`M2TZ*Nk)DVgJVijW@4U#V{TGvQF>i|coa}x6eRDQpPQSSSAwdb zKhxs?P=P8)K}upts#S7PDv)9@GB7mKH89jQGz~E{vobWXGBMLOFtjo-xH4Dv8;XY9 b{FKbJO57Tj9$4xH)WG2B>gTe~DWM4f9QEMf diff --git a/companion/src/images/library/10066.png b/companion/src/images/library/10066.png deleted file mode 100644 index db4917113f965ac24f3cfc922f79c41d209bcedf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 658 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hqn zg`O^sAr_~XUOt$`WGKLJAu>#>^-$bv&A%-9drkj}EVO?R=r6rLp?<*yf5Ul80zL@e z2`lKo`{-b-N4b^p>{!!wr_2c&{V7J1dm8RqY>Q85H|XBX{ODBk&ZfdCZw2Pt9$;XQ zn6-uV>7^Y>4zh}DW=^xBLDZ)i1#)~6 zLgz{hSWj&c>DVb|H7#o+567p8i7DqU%L&b#`)=V{o>2a}6h#q58K)J_2jU+{IGqhH zJyr6u=1}dj-k4vznvd;26wZFXLtkhKGuO_EMZqtEmKjxKbF8oxk-R-ksq%!Q?33fy znj3dadwy@rg@FDutai}_oX?cwri;m$-MI6?n9sH#OiVV{W}d?Ft_S~EM8m%LeB_i7 zk16}`j8U22ELCFpj;5j|y`f>BdGBPdQrv&-!-_RY488IJdtS9$KI_Wsm*OjzRf*Xb z7;)g=t@Rbtmqj10I}*SZ(Y8qJLZ8(HvosdLSXa&o94ai_!Nsvt(q@{h%0IpE&g9GD ze=oXJR^2rC!oQ$tKRwicJ28LD!23O|FenZiao1c=IR*74~(gRDqfEpM)UHx3vIVCg!04sw5 AUH||9 diff --git a/companion/src/images/library/10067.png b/companion/src/images/library/10067.png deleted file mode 100644 index f188c03a8f05ba1372ac8c7b8cdbecd783cb6aa4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 524 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hp6 zX-^l&5R21$FB#??HsE0mV3o7^#dbEZWZ65$7l)jW%PEEnUQk@zA0WE7fm`28al%ra znTv!zS)wpr(6uu(~|WaTXBh|XnfG8bqXxrTNG4fYFh)Uzs=>pSQ_2JdBE(#=z~u%96b=eF4)phV?Ta_#T|JKwaR&feU|m zEBJ5A2%EO9HF=!7bj7A4Yrm-3E$3b3s93v?>kLoK_w5J7*LO45zH8v#BT)V&)@{xu zH%sfQo_8nsCFwuZtF)j0t?ogw9p|OXMI0~PA1v;v_^`3Y<`2^&qh&?T?7Hm0uoEe9 zjVN&}Ey>6)VsK0;%1q2taLi3gElRJ;503)Mi-P2x^K)}k^GZ+^^k;e;04h)gDM(2y zNwrEYN(E93Mh1pPx(0^2hNdBgW>$tKRwicJ28LD!23O|FenZiao1c=IR*74~(gRDq QfEpM)UHx3vIVCg!02UR*t^fc4 diff --git a/companion/src/images/library/10068.png b/companion/src/images/library/10068.png deleted file mode 100644 index b70eb70d785190d60751b33e670950421fcc538f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 560 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxRpVe@%FN{ZVU{J z_MR?|Ar`04Ub4lhX9oqVAoz^{Co4js;lJoAXZeo(5 zU#3^xSk}Ymx}1$qseWR{ES1FX3%?YzoMW|NQ0Lso9K!hL>d}ewA9$WtmU*yI>_OCn zc`P^B43@B5VVuRwbJ(Mumn|-O5$}qwg;$x(7;mw5JmYxIq8u1|<*?w(O%BaB6yn~A zC%lsVVpw)=OW#cs?jFV9_@m1MZ=Km4`+7CcyabaqPV*05l_=dYL-|AfH0F;=&Jj$( zS{@9Cy&v>8ZzI~Y5s(G;3!{d;4n~*}Egxmz} z`zaD%WfCJ4_Z__|ytb2dMh{EfgFEXDjtXvB@+U}Po<*CphLcv}8nyXR4CRbFe70}p zl{J45`{i28xmvD*Oc&Sh%kBBj*th3^Bq*x%nxXX_dG&EIqK)3#fs?)78&qol`;+00l|V AYXATM diff --git a/companion/src/images/library/10069.png b/companion/src/images/library/10069.png deleted file mode 100644 index 3eb68b5b283825f10f3b7b64e41e776f379c1c0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 746 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hqn zpPnv`Ar_}wFB#_DHV|P;;F7Z``7nWbhr7lF#coD9#p5q-T-3ewYpb_a$%_el?cCTG zFIZN^xr&*EPq@OP;lL!Og-J0J|NPdtx#|f+FPrC&1@8O42Q%${{b*ffm+gzQ!4FO` z->_+V#c-*M?|^JW`6~Wrf@i)2JFNdXZ*qgU64xT84Al>u=iI{&d-+Osw5VGAdsVhz zAM-WmH9J`y{#i}uUQi(Lm_hDmbj$}KQ5Mq#zs#fZVgjr56gSV!Px#2Hl)2!HyC#>O z@G`d0dq*{eRx4~XRZ-oxTxGT9cDiGNaMU1T0^KA%-FVTJmEsh3yrWpJKJuDg}q%x2NZ694n*QC(9( zy`7nP0-Y0iBTh=%s*9-IY^{0AY1O~xq}{t9`LhS_c08`A=lQweow@w>=bP4s%N}}n zP`LfTS(&Zs=FenQwiPG37usz+pq-c3GylpV_P(dL)+u&5sXgZrK6l6c{)$%RlcE7Z zBFZ!S*=*j+nDeY^Ej^Za?ZE6-q2ESFE->00P-lGOa4a!e;ggzt0J~lw-~T_qU;cPOoHsTY~&FAZIP!RCISzdoh1*Qy<64!_l$I_CF{2~U&l%mYUJO#(xq|~DHy8Q4c zpu8wZ-Z?)vH#M&WRY8BI#{r-MRgi*|#FA92KidPDH0 z8wnqbzi_^qaPa0Qj-5Z+dICQPthD@c_U_6_@Ahnws_WoyfA`&=<^PqLd2tT)j$wul z65^tf4?5%Cq+1#t5a8r~leNv^+`ERW3;c9=j&Cl0GG8t*xGlTMM&z?}OpeMF7B2qj z<}>nH)C%S|%J}K8HwgEv*0rC}^WHFc4|AFAwH*QPqbIQY+w07!VK~LMFT~#T+rC@c zR}LKBFe_T&osqa)-B}a2BRR{=1a2rsXVj=y*L-TX`Eb;5$)=;e+rO;UjsF#}Co#4; z=GLZ))6Oe?p5x>>RV#QfYs#^JA7X3?WsEM7Q`kkEc@8f4$D1TR?LVh0|8`%wvVF2U zjDI#~K0N5YO|N>wI_K9)OrJmQXkOcX@ugamk?m#OkayFZQf*p(rL=l-vz5K|el;vt~5Ac6KImfl(_w;ptmO1ab)%tv0vhV3H z$^6;(TNr9iUn{qLF|{W#`o{m4Ws(gGSx#s2PrW^D>5GF?PpdNBICSE^;*zon2R8&R zKdI0r_>tp{yz-p=OjRbnzo)QGlK{r8NQrAiiDPL=Mt%{4V@gqGVxEFyZc=JddR=~a z6i{9iB=4M`o12RdP`(kYX@0Ff`INFw`|P4KXycGBmL= qG1E3Mv@$TbGFSE+iiX_$l+3hB+!~f1Sn37Tz~JfX=d#Wzp$PzAG9nBB diff --git a/companion/src/images/library/10072.png b/companion/src/images/library/10072.png deleted file mode 100644 index 82189cd46fe5ad407574669a84bdd62bc88c877a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 705 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxPeS=2F54mYxgrS zFkbLjS}v4Teh0nK3GfeFEi-O6lj5o-maiKg4)*<&@Ja9=R$- zH*in2YPyzmFo-9jgD1RZX5=jU)ml0nFE4i)|4#GV5H7s*E&B!O6|353ggD0~JejS= z)|%U@<;EhhsNu(Sox_^n$_`Xr@_ET3!rpeC-9+SJYu18$3#;yEXRtmA$@n#M!uC7t zGo0m$?>v0Q8S(06^v%b{VcHL-e~YcS@}7N%;EvxMQ^e-II8yL+s`rb|1Nm2&o_IfJ zJj}&VcDi$Qzax>q|<=^RYqOwBvhL7dORm=jelU}ZT%{(jGJb6QN(28k%N1p7pxDa>H zQsqDAPlnsu_~+&GZ&Eww!#;Cw_3R=BRnFWZ_A|@nZAHY=zE`uK`k?rB!6dDneSZv1 z%CpZ{8$56>mrgchNH6vN;4TpV(z`;|#O8HWedapr36pz2-D|PE@$jD^Ki`9`@3!Ap zn-ccC;Eiy$vNu0-P7a6ihKadl%uBMLI!*lidyB7ILPl4Lp@ZsjRZg}EZ+~$qYb0Fx zEa4>gB;!WLp_fNmC4cgLkQVOv&phR3__tne=K^3Xi5D?<}26EkfCLn{M=D|2PPp=ij>PsvQH#I0fJfu&wR4Gf;HelF{r5}E*Nn;Ito diff --git a/companion/src/images/library/10073.png b/companion/src/images/library/10073.png deleted file mode 100644 index 37f11ea34e3931858ae10365cd06048eef025e41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 734 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxPeS=2F54mYxgrS zFuwJ4aSX9IU3+O`*KG#@h6{lubJp#cGwGbb!@sP{ixd4)PdyR7bC-Qdq2eOmrXO5_ z{~iBmXO}EE_CTH^v9){3#6soCu9Gijg=?D!ZZzn>IrnBHBcHr~W@IySg4C>=$zO`D zJW!s--lS1gxo8LLsdN7hJe{Im&8(Tm-jqJIULk;CW2?M8r__RAZmY+&^L(6{RzBQq zH)W%olTC4KSo4d9Z?S$l_e%~~2gn^PvuB#0FnKzg#6O+|mA_@CI=kg1NX_Pv6M8fG zam!0B9>q87?{C=Ao_~hn>niKNsSbiyWVf(=xagFVuzEM2tjxB%HcaeG+2liS9sVUz zuFS%|i9JnmvT#lui5NKZ0y?)t65``15dtcU>1=O`BeOJL00qDn(3Acq@*RQ_-3i}q%!bb znX^<$hIzyOCQf$UBk3C_{HXrnuV~x#(@2-?LFvKp%_hl`W7{<(sfe z;PO?`ia%wRZ68D%Bpm-b9B4MYb0PRI|Ew49q(Vdl?^tC#zrNwv&z1+r4o$o_HED-* z+Zo%H!aQ@d`MjH|xp#Y&NGoho@UzvinO!(hYRcX@5m#g1@G6K))tGMKTg}HL`iI$` zb>aTZ0Ebt=Bp_1a8d2g{T9T1p#Ne1xl$n^P;Fz0~T9jUwA07pi7X`^X=jZ08=9Qo- z=+E>x092p~Qjn5Zl4_M)lnSI6j0_BobPWu34NXG~&8!SftW3e5 zkykY_skp-0HLZ!gKWw3*k<{$2{=S0 zbjV&fp2I%(NNRI0duJqP^^r|Sm>02n$Xnp$e|P0A#-ndlxE>0ZCM=#VAY8&+@aJg4_71+pqvcKhKXi6|+2W+SL3oF# z?)T*dEc~jDRW12)$u?pIStN$g~Az7Ye7dbJe_2v^{t!eJ+c}^mTGN2W~m{ zgk8$z{N($}i-T{4oX?YI9CI49u63O0+0ZSzA#B$yxt6AhTh1KFZraPto4@2K+Yjbl z`%K=yShdOb`iItEZgZ0@uWi3^$~wa0L-V`%+bp+Mu%EuTMSc-OY}4vpQ4g=n8600^ z6xzuwa)Rq~q3nWJ5qbC07+>_vSLvGhBbXxe{&vVUX#7-N`)YUCU>p<{sxcO^XC*RSr?pNuunPQjm)|g zq5qr9YKl3_Y}9t}UGUXYJbtp{!K!xNuT!5D7>h)@9@DpQ4Az_>c<0-ORa>|l3i*G% z7hD#&KPlhl#=oMfxZRZ|4Ku4c-cGPOBWrN_ALHcv3qnhtKV?pzhK{L^F$sLO|?;K_3SbPgOcJ-vRLSaG9Y!89e!4n^-<;8s9 zkaM_X=F(r={LU-$@s+h*Ig+2ZUtL#sS>0f|XPxoqv(snVAAbLVWmj|QGMo3!4>`S= zO^+^WYKrOTYgsVk`r^Zj3MZnoxbhkjsEW>FD zrr9Uj)~2@^P1^0t)N^~$uIsJeq-)g6UH>-NOgM5o?QdVx=bb^jl`d%5t}{LToh9m6 z)GC`>&Hc6SmRu9I{So!VujatJ#&X4dd5>BC#D1(w77i#b=wIqtmnRT+rB0zhZ_kXk zLKy}3Z++(6Qgq2GWD$EE-_Gg+A$E4l2T{!lHx)U(wk`BaP-igpciOINv8RyfV|Jgg z)alcyjNOMawK_OkodTS^KMA`#GVgCuvWN{zI&w+AGUp6)OlkA zpUvqn${OFBo9zzRH_K;6hc~4?Kl2?Jbs{CM5haeLB^mie42~&9nTdG{j=4#xMd@|< z;ZZ<&QINcIer|4RUJ0s#{!EVpKn1EG1u2OosaDBFsX&Us$iUD@*T7KM&@{x*%*xQj r%EV0Dz|hLT;L2RtZzvja^HVa@DsgLAdSIy+Py>UftDnm{r-UW|8Il7u diff --git a/companion/src/images/library/10076.png b/companion/src/images/library/10076.png deleted file mode 100644 index 30bd5f62f318a98fd66d40687b57fbe949b79c95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 704 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxPeS=2F54mYxgrS zFrN2xaSX9IoqEYWTf|X>;e)u6N6ghf=SPoYFpbrm0n3 zW~bSN6SY%v6ef6`yY$XXZc}JNzer!oo#%VZXYamQ+THr|)X1dBW9ySN5w?QeqVh*Vx&V0vtL=PM`gE)L#)l1$8+P;9%$T=op>$=%0zJd0 zBK&3Evht1`PV(hW2aI*)pDRY}l{Y-{y&&Z{&ur5f`zsDKAGB4NXa3Odtki}bvwb$Z zEB=uak2G&l+JANu!?Vvt`x#vu@L)E^mn;Fp@<|Tq8;xOG`5Hix?bJiZT=P6dZGt zQj5~-^24Km@}eMl=ltB<)VvZ@1^t;G2Y?DxK?+h5OH!?pi&B9UgOP!uk*KN`d{N=it z%fM;1Kz7EbT=7HJKa3BsHz@A>&%hnP{>^&<*NuZEY?lmU>>ReRGepSs%Q?-<-KYKG zW`;th!s@y!3^iP8R~}^Ax-y@r-ZD)~;NHW;=>AmqPr7*xFC^F&u$k|xVaeJ1PkVxh zj?VUXm$db@kFasF{P`+ssI7dHEoX^r2uJanl~)|+otElb{EyX!ag&Q~Qt|pD-+?|C zDRGS`aV#y#$S-1WOexAt%u{g8O-e0FugedQ0?Lbm^MPz5PS zNi0dVN-jzTQVd20hDN#uhPsBPA%S>$Ho45`qK8r)!4XYY4n8aYKIP_@oaK8@GrKwaD}nw zLnn7f-VA1=LpiM5JH5Sl4K`l)eI4y%9ig^j9iw<;siAmCE`zac>^6l9FM|Yb@^t-O zkaJkPj#Fd%1Lmy__t>=lbzxyj&booZSsQ`ntecZ+wz$g^DauUDQ*g{p zN-avS%MXtN%8P>Jo%3^ZQ}aqt74&C%8~`d%1t~~LEJ?LWE=mPb3`PcqM!E)ux`w79 xhGtfVCRQe9+6IPJ1_oE=%6>!9kei>9nO2Eg!_oswy?`1RJYD@<);T3K0RSP!0J8u9 diff --git a/companion/src/images/library/10079.png b/companion/src/images/library/10079.png deleted file mode 100644 index 387dc81beb155a658bd33ed44091cd043c239bbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 594 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxPeS=2F54mYxgrS zFeZAsIEGl9ZoOjb$D%00{=wbAJGpGn!8d}>*osBWKQc{@h%h>qY|Va^ag5 zjp>hrHrV`}k;-N=v8CnDA!Ubu3?ZgJShrd7?^k0mJ9zN>c8*o&8EP5kia9B<`!52}%-t}9(Pl@OGs{YS%i#0YS%sXZnrAaI*$C-5 zaNp8R;Q8>XalT_d>)r|vYhDA6UuPIN`HVX_ESx7lxb@_*dWKPlAltixj?xdCRx`Bi ze#sTiIpJo6($`brr9CFbk_C?)4bM1Oozr083b>u;T(?lNjU!xDqk(0H!#u_|(G|Ye zbsZYo7EZ2We6diUu{x@W({NT}bGBDTa*NR&-<5|si}ZY%W*Wa%64AUDX7DOt(?5%6 z1?(2G=?ggS|DMhC=GR|M=N*?PM>niI=yv12Siqk3{~5C{m}<;l!1YTih4*T3_!_3u z|9|jg{a|ERRKl}hje-C$*hNZQBT5`gOEU6{7#vfIG86L@9CMRWi_+`z!=r%mq9A$a z{M_8syb@Fe{h1yIfC^MW3Q`hFQmvAUQh^kMk%6I+u7RPhp=pSrnU$f5m5G_QfuWUw j!IinP-%vE<=BH$)RpQpL^uSUtpaup{S3j3^P6T)VCV?1@$maS6I=;%^d&So)DFkpu{8w2x$&q-a&0{N#lUsfz&;J@Tt z%dkT2z;f4#49tw7f!!=i8jCnK9TAz*8^|wGV%BoURpU^u$6OwP;*~a63^(68sBrYN zpvj?Wb82di7exQ~`HoSxCU-sig}Hn7-zb{9_3f>DFZ;h0oWJ$W@#}_N(fT(cpC?o& zKX_Rqudt=s>b$tm(t?9>>C8KpoW8l-XF-g9diBI_H}un`^MphaO3U}&vMHXt;P8U) zIa?X|N?GPwO4PoZ)3adl|35s(K5(}!^6d;woiz~{Ya%7C5haeLB^mie42~&9nTdG{ zj=4#xMd@|<;ZZ<&QINcIer|4RUJ0s#{!EVpKn1EG1u2OosaDBFsX&Us$iUD@*T7KM z&@{x*%*xQj%EV0Dz|hLT;L2RtZzvja^HVa@DsgLAdSIy+Py>UftDnm{r-UW|Qx*E} diff --git a/companion/src/images/library/10081.png b/companion/src/images/library/10081.png deleted file mode 100644 index 66019bb708b28cfb4603f73abcf49f5a6a334f42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 521 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hp6 z2~QWt5R21yCmH4)Q4nz5@A~jk?zYbULp!$}3gVicxq0gPrY)}P8n=oUSVcSeq_M5v zvY~Tzh@%s8|3l+h{41n>a0>+Vi0xxxbLMqhB)XyI_F~0d59em=WUfnGckp_@0#l!3 z!%fD{SsCTK*;?beW#%+&T=S>xyi|;L!PA|o=cS%rG~iI$B&DykhfVjA?0rr5^A1v?iQ(^F z9}=E&MPYjLEZut_P2V`~IxDxDTWEpbrWrewbEiLFxNnI}L3w1;&H8{AG3l%Oq)hx?$7kMpadT7G`-1$SuFMHPe#%VUar`NR!0Rv8?#5JPC zv9u&3zlgyxr6@BoPr)%aDYYoQEKdAc7@Aobnpl~bX&V??85mrdEBg&aLvDUbW?Cg~4NDI!^#W>O N@O1TaS?83{1ONl8#q$6F diff --git a/companion/src/images/library/10082.png b/companion/src/images/library/10082.png deleted file mode 100644 index 5ba72eb8f9892b971789f7b68bcf08c985cfc1a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 949 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq*&4&eH|GXHuiJ>Nn{1`8H%0JQ*x8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^TNs2H8D`CqU|?XX_H=O!u{b?-^2Yqj4kE|)Pgb7erNMUa!osd*s|{kEiq4_p zh9z%K%~;DVBr5DYwK&v8{7O$l%anhd9)B21MOI3ly}`ILula-9x{8fgAIqIjUoK## zGk4AJpVjxP_m%U1Ip6%B@p<=y2~PQpB3pDi(>6=REWK(yx49|&m|ADT1T_~oft3v! zOwFD)CVbjTah-<`%uPKaueq+VELi#ZP9-+A6B!ol3%O?}9ol9$`^g9I1=Vw$cb80e z3}Cw4tWvySyT?MUzZXv^Z;q^Zvr@<6u;RsAryCCa-pTsXZgxq(YU}EyPQlN%{8*jf zKV4KL?@m(Arlpm*>sb4GK^8zPMQy%2gt<=Id#;eucGt2ir>@&Fg;iU|tU%`<{mVC=&YHSGAt`u?-gZYzF_qLa=NSJsM6G3*pK)0-uu8`6NT==N(k<^} zFYNZ#xyj93$#UPf?Q-Z1opj!r=FOd-e$JonEwHoX>ZIVO`|}rMJI>Y%PYL|7tI=94 z=Yl4eZtdGE4KKDn_-%E@HO1NK=j)8_3<2izYcs1~zM7z4CF4G~S4cwg;k5Igg;w*; zyLo9Vhw5B$!|8X{sIQtM`gXorhR&I{5ur=(+bF*fin-tLcSCH`&6@lp7EwHs9Bi#N z%Qwuc>9zgCwqn*g;#gXekzd5%m{OFPn5W>Fo0M9VUY8#p1(X*B z$vfxg=BDPApepFk^f&-ipbAoul30>zm0Xkxq!^4042^UR40R1nLk!KV3{9*|%(M** mtqcsV%$5Cyq9HdwB{QuOw}zz$mU;m-FnGH9xvX1AP6Je{{NS=m!4~#ItwVP54+ad5<>uW5PPGD zpt`11oq}^GrF0#GRD6wW0}`okI!%29%-KTY7H$BXGPaU|8&k(Z0AoZL0c9uv$Sf7O z#Dp4jPg*Egm8;b-`a zlZ(+G0DvU>;BgFuQ=r+Q_&gT~CDaKv2Aobf@9iKN6mV+iz6XJ6JrE)RdNhCt?K7jA zU+0fR0A+vvyAx4$y29-YeB|#E;j?Q2FOj5a`pd6|NXY}A^ZK1GV5?(m6!04gj_V{1 zu>5F(@QViN1VG<13AVH1Xl8T`&zxOFQqw$e_(6ARj^V}VhLQe5$ScZz$2jq$7-%rl zgArV`9%$HLGx@e_pZbl{wS^1*&uFAftN_5NC#V`X0H?jx8~I^nZH98CyZ`_I07*qo IM6N<$f+q{hRsaA1 delta 515 zcmbQpa)4!m1ScZ{5d2!}bZMf#cs--Pr;B5V#p$UR4fC1}MA#mDPtr`;kaUbk@C!$e zq|#1z&-?=?0$AO7dUgs0hAoLvTp?ay&gPOWCH>*Fz*pV#|5(1|OFsw{G>e+kozMDd znd)mvSr!a8>4DZqV9x@^%alucDOVhV(@nwoZ7e${1;HO|ulZPhU1>IbU7jbyw>~$) zTXB{`WJAK=8On`c_!mj)IEn}_nIO5tuRAMadPYLe1*wEb*=+CUCOl7TdUv7oKy!Z_ z%l6YOdmBGhWjz#+zB1v-n&mP#fuSr?;u=xnSXz>iU&P>;Qk0pPr{I{IlvCEuX`n3R0DlSdwa$T$Bo=7>o=IjdTqRbq!5J49%>$Ga!C1#*LE4K0Elk2mOf4?zRY{M|H}D!>++@&T;qK&;)fl?6X%0*felcgRmJ!)Xk_-Mz(R|_u`CyAcYB{Z zE6Dq~RJ;;h`6gN8z#_)DmNT9254SOX>s8rNEBK0SlfK2Fk~E$b!VfD%^CVud@vWWr zB)FfqWuNox=?l(2xbmm1Wqqp8VV0zGo4<24Y0v0d^lko!=f(4y+LQPhtWNXqjCwe~ zaD|3#Y};jVkrv%e+S~lMoz-k^kYV`Dw*K>>CimC`yZzIgvp)yC;k?PQOxUu&x^lZl z7Yon*XUwyff4Y&Q+rDF$e$fs$9+MCG6W>^w1sq!^^M(2N0c)8P*YCYyQQ^LEIY8;Y zYKc^<_^;sDbU%a`p<~J)pP*2e>%l-aMu;bg4IT|9o7nmHRulf`--D9|MJb}@| zX{un!tfOT;e+1vOZaaG6#@0W|RjFYgB^WlZQob?S{&7~pHHZDmN$Qz*O*Ry}9|`-F zefz+(RUJ=Dp3Z4p%CA%q_5P{$HP;DC{+Y8^p7l(-$#!Q_)27MJ%!)2a+|m-aGPvUV zBn%HcS?-m%#xme~8q+QV#t-!e?a%ycc={v$H8U`Yh?KZSlsJ}_WaJkyIHnY3Cgv$P z<|d^UrPt+$M*-zULGsS|xw)x%C8!GeGd&If6{vy~q$HN4S|t~y0x1R~14AQS14CUy y(-1>5D?<}26EkfCLn{M=D|2PPp=ij>PsvQH#I0fJfu&wR4Gf;HelF{r5}E+XPc_;A diff --git a/companion/src/images/library/10085.png b/companion/src/images/library/10085.png index 644b1d0062751eec18790c349a534d09e3dc3af3..073c3197bba48d316f2f26aef88d9e4c3ea925b8 100644 GIT binary patch delta 510 zcmV-8-HxZI=HPa2sgGWQlw_mjCj1ts_i0yX$Lfj@k*!N)EFIC1H4 z<9c98e9u781IyxH8DLipz~`MV`dqIAJrMMEunPRk1J{42U>Io1a$qI+-5bCv0uCRS z{5w6sd`AR}5Dge#cmG+W9V{1rboGy*99TjA8wN3ZU={cnR3htZ0DZ9?g9HTo(W>GP zQ4fM`*Z`0mDpH`erc;1{{&N%>#2DzVm^V+19m=L-=InSv2U-on9s=}O?P>G>yv&l( zo6i%qW3qp2GQu$-L~&bY(fp5O_jt=e+!oG8VBq@DcZXn0Enfdn)jC1I&tcbSFo{1& zfNl2FrY zq-U?}jGT6d`9@Z0zmj-7%WB=F!jn0bt0v4<{J1S*Q+&dYM6nfiJNqs$M|@Ar@S0~2Axo- zf4$y(`Wv>4d%gXa*)qSV$w(YIIh!NLb3@#9h3VVf8>F5vtvj$rLS}Q^nzRKkZ(a^$ znEP^W_ls9f?iaSz+_{8O9U_#dkA zzqbFtoF`S{cv&GZ1{k^`C9V-Aj-@3T`9%zlDMguyc?yoXNvTEYb@|~@KzUJ+ymNkT z?!;vA90pYoFD0=g)hf9t6-Y4{85kPr8W`#tnuZvfSs9vGnV4xC7+M(^T$wBT4X7QV dAvZrIGp!Q0hNTCVdI2>sc)I$ztaD0e0s!gz((?cS diff --git a/companion/src/images/library/10086.png b/companion/src/images/library/10086.png deleted file mode 100644 index 2f16b8b80ccf9b44b580263fa8940ddfe2a01373..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 713 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxRpVe@%FN{ZVU{J zH#}V&Lo80WUfP&<+dzQrLA(M}S+bkB#)5s0o3}bMnEGEV>zr%n_)N)QX$9{Eca2@* z6Miu`YDmL#HHa)$O(pDt+wbACDET@#4#J(F%*Ex46G0r~zK<#7~ zpC?cAlPN~t4jlrH6Ru7;!4Nl7aUx^Py}9lQ+`o-(UCM0NSfM!IH6Tzx@WcEM)dEjm zEi0;Gk2^bc<59ktypZjg3|3DjY%@5O)KvY8wOL$XuGyuJU*^0ENNPD#aUfl_Polwj zLDCGac}5tP|MBC4SFwNp{W`yT^UuuKdh5d_KfiC2 zi(fBxnZ3=*ruFpF`nx{2rsk%r`(B=7WBYCY2mZRF46^e=1)G5pFH+(fQQ}xyl96A; z;FwaBnV6^Gn46SZlwOw~9tD&a1<5<-=jNv7m7pr<&-6F|RG2bOvPH86O(`njxg HN@xNA#@i+h diff --git a/companion/src/images/library/10087.png b/companion/src/images/library/10087.png deleted file mode 100644 index dedee12ff0271973aae7509e4d829844dadefc64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 611 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxRpVe@%FN{ZVU{J zMV>B>Ar`04UOJt7*no%a!Tk%4?oVGZvEC81a$s0LNzlka;N%Ae*@cTk9K{0tY^OQ! zhcY_q{5|13Yr(!7{~WwjR6qQB^0il6CED?g_JVaSJ60<(tunP)6&n-W7__rtP5agf zqLV&mD{3Fnd&9k8UR>9d1m!MQ+vUp|8aHb>{0pgSSW|D;mhpbVnVS`_-V0dgA2MQK zDYH8mk%KKbG6ZBrD_9?fH1IfZY+w^W(T&0mBro@!_+E!NL#TKli&d(X~j{Z`NA zmme6OSAO96?1oQs`R60+mMf;($T6>(@{xhFRwpkp$66~-F?VT?(xVl%g)fCxFWl7{ zpqlbRNXUm%FqZSmEv~9{K{>3Q+7JHo*Y7M>>fMxZtP~g}A|2>+xQ9yZ7ki2t#Zf?)FK#IZ0z|ct7 zz);uFG{n%%%Fx8h#7x`3(8|Ez%3RrRC>nC}Q!>*kacfw5V5t{S1B0ilpUXO@geCxx Cb?fo~ diff --git a/companion/src/images/library/10088.png b/companion/src/images/library/10088.png index b24fe1a0567f9ed97a78b52ff59cc69d3dd13a6b..7bfefdce68dd4179239cec2fff4239c6dc0706fe 100644 GIT binary patch delta 401 zcmdnSe2IC2gg6Ha0|P_F{q0|X6jPG7y9>kr_Wm>bCn`z^u$OrHy0YJ6lHgJ?T&6RB z>11_A<$6XZPZ!6Kid%1Id-F9L@VM9te&7G8q}_oritEO)nK}v@9#iMrPnHl}!fQKg zCId$U3>}z}{OOP33`z0NUoT(V6T*^E_;(xAQn2(DmI-VBHe8fe%KOcr(mQS1^_uy2 z9ZqNeTOG_`&T1s*-x+>V!HxaE_azMe`|Dd3RA+3enCy6TQ!3Z94%^5Mt`7`6a+fB% z2p)*uFfEiZY(3+fJzW773ynH{p1W&xAWLvU?u*?HPZB%WeLo#Cx^bQBU*p%U33 z(QEz~b^P(O_s3)QHi`+JsytKvhAaIq$J-lX$GKQ{{k+!oi;+oz0f<5wE}XFlFW1xh syUWlm{9?;Lv*jWJ42%#YQCh?Bm(`_vW1040V4yR2y85}Sb4q9e0D6|C6#xJL delta 387 zcmcb_yp4H+1ScZ{5d2!}bZMf#MEy}u7sn8b(_1fX>$?o6s{d<*an`?f;8z~mSp4?F*v3aWhUk+ zIOZm$7NytaherYBMM3h;`MJ5Nc_j=J(}i;wR6!ysi6yC4$wjF^iowXh&`8(7P}k5j z#L&#j(8S8bOxwWF%D~{tT-k3xBM=&L^HVa@DsgLAdSIy+Py>UftDnm{r-UW|5Q&y@ diff --git a/companion/src/images/library/10089.png b/companion/src/images/library/10089.png deleted file mode 100644 index 133c90972f2212842e0fe5767dc3d690de22a394..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 573 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hp6 zA5Ry@5R22bmv>KOR^(xOFkew&NlWg-L#MYbEoR*<8{_@@MDCj&=>w9Co2@v@CMZ}K z)o*K&lUS0j?$pAVBi_`=o!#jEO}y*$7jIVYM&k*BpBXq6nJcEU?_HnYCTz!BaNukM z*T2I*!*gVs<}?0yy`GWlRprI@?kO@t#!Vp)MedolX&-I&TlppOp!S;8au9%R;_qls>Q@BOSkpiyWJrV&AT297kf4uazE6&Y&@1+{&`?iSKKfDU%Y9_Cd;OnW!pvM&cEEkS7*T!r~Ne1kmarFrE>yX zZ+o~e*z&?gtZ~n)BN8^Eu~+UL@R{pq_acsEPve$T&ZZN#Ut5*8e=nQVKYigTk`0RP zy&JY~anDq|F6k%md_t<2>+xQ9yZ7ki2t#Zf?)FK#IZ0z|ct7z);uFG{n%%%Fx8h#7x`3(8|Ez%3RrRC>nC}Q!>*kacfw5V5t{S O1B0ilpUXO@geCyY(A$mx diff --git a/companion/src/images/library/10090.png b/companion/src/images/library/10090.png index d45f27e5b7d0967160f3e4497f3e30f6589e5a8b..d44f974b54008e0bc023360d0e1d73e4e4706039 100644 GIT binary patch delta 544 zcmV+*0^j|_1m6UZ7#9ct0002@y&$6i0007FOGiWi|A&vvzmXvq5da5tNliru-U1j3 zCNFLkz(kX^0V96_&q+i`ZcB+-fzGk z3z)pWfAoLz$tZaEzCjdBZTvjB`6(ZmSowN3^K(u(vGe)jUsV^fmk*>!9RtD7tN(`QH)K8`V9o7xKA(tUVU}9p(}`#)8Y^ggR=`p;miXilgjOP4OEd=ne5(V( zLZz8+T&fkIO~{*hbR{_O?+;iSTs1f1;? il=w;_@){@$s2=}fCyRH}E;sQ20000$^Kj+39$>6yO~{O%8CP%U z@k89CxubkBpSIiX*;C>l_;w%O)UbBZ@};`m&0%bMU(Xordis{-&hzX&tj3CE9j~V@ zu)q7;b|vRM6Ny|o`{}E@uP>LIbud-seL~mj?|bHbVA1A|nX`YR&PL|d%DvCe{I6bk zH}6g7z5cmJU&t1#Cw#8**KWR7%BKG}M&iq4<9hB8`{>;c%gcUA+ut^mw{E_m*1^Ay z-Ec>Q`vuR!fWSaWmKklQ6b^8Nur)4S-`;B$AX&Vn@zjjPywA70l{y3nrAcm1KIvg_ z(`&RdP`(kYX@0Ff`INFw`|P4KXycGBmL=G1E3Mv@$TbGFSE+ f&`5-a-29Zxv`X9>mL6E@1&VG@S3j3^P6Qx$}I}~q9AhX1Jv!(_JG_agvtNSp?SIIGGiE_m$ z!DyFBOU^6^Iip}II4SX7gOHI?HG|yQsm1|wj z_$2rG9CteFy(4*be2c<|I)<3b7Y~;^wec7nPXF=Udlyd?%cTS5*SRM$99OK@p5*jG zreb=d&=<}58Wt|~KeA{1_nb5Rmg7S4&oMKm7@7x!U$|Q7##gAhO2ghi!%5~<`MvqJ zoC~%bm~U=V-nYIfGp8jhtX1+>^mAE#+4Txtcb1iHXqtR`vX8k{u-OD*z8|w9Hi+@X zFGz8m{6ccM>|w#c*B@DaeEFJqv?*3UB*lG7xYYIUd3}ny*QJxPYk4kCwa!gH-1H#H ze(%>5rae!ZdGA&){cRi~b9h0Om;ciIwK}fuqGEZ`PiLzaz1_^(weUj?&qt-hp{r}^ z(l&lCs${CWKFd5uW6!-nVZqjv@=UXK=0&v$Kc5E`^0YhT-fq(q+jx0X*2S9LS!;_e zzcANL52{$N_vFHA^KX*No}YWZVehTWKiKZrPCk76*Mi4i7OHFo`Pd;Qfg6pU4D2JP+k-y@0_2To0?aGs-Qp9;{Z^BDo8;} zVo9o1a#1RfVlXl=G}1LN)HO5>F*LI>G_f)<(>5@)GBCI@SN0oIKxm;OXk;vd$@?2>_u}OFIAn diff --git a/companion/src/images/library/10093.png b/companion/src/images/library/10093.png index cff628eb36badeb8bd272864e7c9c7a0937c3125..787d6cce4582a1241680a76bc3d21453f282221c 100644 GIT binary patch delta 323 zcmV-J0lfa|1d#-gEPo>a01G1l+or8X0003XNkl%h|;e{T-Qxy>EoDDZDBnKdf4KZ_#NXQ~bKqX~}QYj-0L0LLL9!Y3TV=hn$kDuP3 z-ZP-_U~8cc5!HaIs#?L4nLrSERdHtxrDXzyIB=*sq8gY10e@*yIR2*8mH`2T%1J=C zEsufsfdlQ0UNW%%fEOK(&oxl6g`9~q4Lc2t_QhBOv=LIc8f-;kdG}IiAPd&-LKeIa zw!+v?q9ONAS4AxpekNzRSOY&1}A6ZQkfq1vtYpuJ0cbAL6@ z>SVW=GFUe25jfKSO5OVLEt3eJ&79(7FF0`PhwE(0yOKht=ywr*-hn6Q;brmh^gfCB V)_lwV4d1DNbnK4Et?rY%0k4bfk*@#% delta 413 zcmV;O0b>4<1nLBkEPpcq01Gn#lCr&w0004bNkl`ZXr^av4 z!~q798%+EPOr|mJ7!pb~LF*u}NL}qxz5$7ggGp(PQAajPVw!_6bV4B{S}1tlwbt0f zL08}SyLaz@mj^IYV9vro#n_&~Ngl)?Fko{S!!6kDc4J7f0Dn|0&c4B|FC^j4=P*om zq>^C!fPg)LU$6u)301%+p1uxw7DN^R;EkifA?N9yk)pr@Aqm2%s_QL%u9LzM;3V*A z0+$;N3XO0m$AS=EX;GMm09nA;^IH1QI5JK+3TYNNc2NQgkbw!iTf7eS&HC!fa+^pK z`-sBv`^}<#;eX0VMv4@|>-C~-4P~_RREXf&BCsOoPC=zmn|6ZIW1tD;oFo01vIaGO zbl^7o{+>C#*D?gE*SvHW&pbqD*w$>R1emL9zo z8JXB$t-;asrs{M2hihB7-ImO%5}&o{LDd8^L#NGYWp#f0u5D9PdD1v@kNjt$b1_qF znJd{|l}L$XmT~>|M$yGGaJ+&Z~J||q~y?L@vo*#I{zaWJ_Bdq)LMlr>g zEC;r4urc8AT*6vrR#f1j5Hx9~{nH20nM{XTlb&d#Rrh6P%g?*{Gm&rpO0Kp5@4a40 zj+*bgWoI~LWj;EaC?3hDE3ALkeZd3113NTxgPH_h>^dNDNvCsx&H2L$XFlmZcx^Hz za++A<9M;t8d(557e%@jh-C(N9?{he=`)v|WO#F({2esN72?=U##WC+hKQrw;^Ke&I zWdKu-c;SoBMzs&721$o7f8!2Fo^zzawMSv!y&oPW2Y>T-{}XxHIaM%YT2J^!%Wgl; zYXx0P_M0f5@@+mEZz{F>zV73W($sZ~xwnEHVoS=;wCvS!k2PMO+9sOFnV`r&VeSQ{ z9MxSX`cBx3%=~}<_2R|Kz_cn-;u=xnSXz>iU&P>;Qk0pPr{I{Ilv_j3Q~}gSdwa$T$Bo=7>o=IjdTqRbq!5J49%sc)I$ztaD0e0sx*XcUJ%a diff --git a/companion/src/images/library/10097.png b/companion/src/images/library/10097.png deleted file mode 100644 index 88aecde84abd30685884f17be0025b7cf0eab96d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 953 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hqH z6P_-PAr_}&FP+c6oFKveVYzqav-SJf^+l)VRNM$m74Kdu$@P!5iJjkB|K6Px1zVo` zJ-qsUUFxn=`2H|9S-9GCn#iSe9nSM9IJID=Y*^}qD_XwSRpRfPXIdEwFv;J0UVHEP z@3s&3oyAsu%Kp-DIPht@)CMPk^~ov>!Ww?Z6;|0?I=DwKWS-iCWhNUM+ynS~?EW7S zFqxvv@gt_*P1fz^RhAC%txJ83X0qNn%(Q1icv=I;)dxK~D^DvOJ<%bYsCvg)e9{ho zJ^I)8ESA#k9No4V z@^>~o{jun^s_BW3!Qod{imgzYuJhiNbN=R<4a`|yD>NmJewrS7l>Mhr-CUQO+|P8c ziq1aOY^JTWFj@Y%q{YE$+GQP!mu`M+b&4f?T>$T^*Z%uhS6wW~y{c-l^6s7OtRXBJ z0+#CE)-F_aFv(*sclmYRJid&jBBn`KYUAb5_;W#1%CCu(Pl%KKeCVU>#Qps9g$`y2 z_^n>7Wz>+C6~$7zMM2E=@Gh~Z4^PJAhKL_H0>zMNS8Eyq@KOc2w|oc8MF^<58) zKJK58RPj^q#J9Xd7XIwJ9;lmI6ihZw6K9fg3j4BW);p#=9ya|~8_N179QRRw{_ye5 zR#U^?O%jLS>3Vo_-KRe#4!2}XXTCFF{WdQvyFor| zdeVv|$E})gU3u+WIMvGKB>T4e^%X0&UAxuReQawNL$7KShpy=oP(Z zb8gxh?vEGiH=T^$-FGeV_=k4Uz9s3m9-ejOd@2<`le5;4ZT;mfU24laB@Dv0uRH(o zVXxd2t+b05`n7E%G^Tc^?JL;M-dE>(=&2mbahx092p~Qjn5Zl4_M)lnSI6j0_BobPWu3 z4NXG~&8!SftW3%(LPgL{KzkN{kdp@YDD0mp^NAgBP+z2pd3n!lFr00<$KE^zia?}B#$Gzgqc zu5RRA02cy8e8731p2@oaTwu^$#RK1>ksR_|R?4WFV0mJQakO zL&w4ii+X>mTm!g8{6YaJK9zcu?dZU4Q`6d33$Q~0qe_xFWXsb+Q3WGaDcaAu%4$F3%i7B1QJyhIi@2=rg)tOcM^@JC7bIjg~xEuN>!w|Hrc}Y zjKzOmb}^i)>I%nU1Dhd`MME~l1<<<0$Zr&eQ=f4V9J@eu@F&Oh-h;pgDc^TN-j>Tf_-AUY z0Qe}r_Ypif@N&GhiSV=s;ud{TK77>!ORZ{vdtu^&`?QB$fcm?0%fl4-bA2Z#PgAh6 z(7xh)+ylQyzG(7F`zHW@r%p|q@D%{RBlTp)w$Sy37?>+K%08Npr{SCqXx;$PzUYBr gux9Z)Gn$$G03XsaU~lDI`~Uy|07*qoM6N<$f(H|F5&!@I delta 745 zcmcc5wt{Vf1ScZ{5d2!}bZMf#cs-N3r;B5V#p&2fd;5e91=v5_{LC5b^5(0fk$jEf16LLdWW4l{;w=O z=RA+$x)(~8=hi7DaZOH~TdMcqThob4&tAWuWh-Y`U+tCh;`;K&$r?3wF`AdQ{OqYW zpCP$Od$kT_uH~gKZ@z7jscSTG4swWGA zESz3*f76PWPn11rX4T(S(BQjFD6k|Zwb6G%PW@xUl#_K1$GBZ8JF|{;h3#d}ka1*S zuMJ&PmQuM!@_vl1^iJkA60*)yMgB8L=uMg|CNz~Pye-tMLFIg%*P=BQTpxsL-M^eu zIr_c9&B<=xf}BauWEV`5y<+mrDC>yzGQqNlaB~|@DeZ*(=#m5HuGc&cwB0mAROfNn zy)}DG*0|MYEmGg(`cA>XS#9Q8h6=q6Ju5UfxgA(Kk%_hW3hVM^*1TD-3gi0saXGBW zEr^@hZq2A#JJHK;=Jcr@i%q6YbiQF!VmKvLN65~5%0s5&Q#bUsGX?EjrZDe8+D8tf z201~GgVGFAj&pd@)-|&Ucy`5ct+7tXe6c3`mApv!+r;{M2{U^`1otyqUPBMEY_hkCr4RadQcVzzFaOiBV{J!M8v-XP{ z=UchFGPePyCy^4@h!V%rl8pQ!2FH}5%)~qe$K0gUqV&4_@TiI5$~g?GAQdTzC8<`) zMX5lF!N|bSNY}tn*U&V?(9Fuv#LC1>+rZGuz~IVU*>6B25gKyyQ!>*kacfw5V5t`< OQG2@jxvXYPH~+Co?j38H z;1b@yCObKdNZKa{QXzP3;Miuwa-&t$oSp_gJgZwOtOD)2t?-d8j4Q;$={ zjF}&~Io;8->t<)&ea>NVd~B-`;|8P5o8kXL^cuGpTzWY_pl?@0pm>8X=MVKiOiYU# zoi@ha?gNIqNQrAiiDPL=Mt%{4V@gqGVxEFyZc=JddR=~a6i{9iB=4M`o12RdP`(kYX@0Ff`INFw`|P4KXycGBmL=G1E3Mv@$TbGFSE+iiX_$ al+3hB+!~f1Sn37Tz~JfX=d#Wzp$PzMYULCF diff --git a/companion/src/images/library/10100.png b/companion/src/images/library/10100.png deleted file mode 100644 index 14001a79a50f76f8fec4fbc0bf3f828ecf72da1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 806 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq&N#aB8wRqxP?KOkzv*x2?hox zQ%@Ji5R22XmpA5JaS&j8U@7_3>P}o^M5nld5Njt(WAS3w zMI52$9(Dz|>}+adO7v#zW7~7^Mb7=V@6P||xXzcSQ@g1=?cYYue@2@o2wgeEx+Q4A zq!gJYDFJgGoGmY@EK*n|yOh<7-CeU)#AVB}EloFDm(B>&P>|9%dwkvEMagekU+ix5 zViZ?cZupJGsci=LSHr*Te_Cpe2_$(uu5fKQzhKwmg_C)%vnuU!v~BBTJM7z7!P%#= zCec|TmZ_YH&Eg;{dwI~C#oW%)s1hnKSmRqTAre9NLxCZOz@@|2yHjAB18 zvnfT-Wxm!YZBeyn$AdR_%a~s+(5Srm>aMCqjsCNkw326uaS11!pUe3qs_(hAit#0v zb?e#K;uQ@>maAIx|C%mY7ZAmtZ+MCAv$~v}^3TT;yzTFZs~9i;^l(L^i*H(hy?W<+ z=QLy0^IdO*bow^MXNj!qw^fOrX?5e5gWctmA*Twr-Jh~G@CTdG$v;v(bL5;x092p~Qjn5Zl4_M)lnSI6j0_BobPWu3 z4NXG~&8!SftW3Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyS<7a=#{ zU`h)B000?jR9JLFZ*6U5Zgcc8E1kAg@jxR>u+$GR4K_NKkgYG{#3LoJ>7cU{eFeOJxNWi+u z8x~|d#_qOiMM#J-ERw@|aac-*0B}ABL_`3Sqa1TJL_#Rq<-eP;!ej%*Vkd$n0PAs6 z0QBKFV!>-AOrvKBNkfkD{NQx%Z;}vtgydSB7HSd#kO{!Td`$Q~fMaw4<3hC7W&c}G zbT!Gqe*}<0a1TKMz`QRu5k#bzvk680)IF|{A(S$3W;!LtZJ1Oyh2^P3EmScI~saI8HiGSH_XV&hH$P&O3%@!yre zGU$45#^w8u08oL!G#%-C{ZCF`%yHpk;qQyse6&J71<(dy{o7mGYnK9KvdC2=W!oe?A3am4a@!&WOZZ&he|amT6`c zKo#Nu3F|cv&r(#W5gP~0;zu6gcmd#McySz6WG#PGG+}ddI|FQFwpQ5kEdZ73qy#uW zYODajJbX+y(N%z>uNKep$o7M^;vi-;-)_x_e!fH~ z@HPYKsG|9<8!Ewx&8glaGDgGK8OSq%I~s7N1TE_j+v{A13($T+TwZ^@^j(v&pcKsj O0000Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyS<7a=l{ z3ciE@000?jR9JLFZ*6U5Zgc5B3<) zet8!c(h#RG5FX;8I#}{nLfL{F4F3RX zzkjNHPz*E$3lapnN2hM(A!Cd?2&J%|b)b^U>`X^ijrp9JuS+r6X{W-B2OVn`gpq{u zx!=5lo7ZKZBj{Oc#jur|;LSkJI`y>dnI}(sntcAyH;W+|QVyWhQfA$U9D5(q;{JSx z@I9GxVEtXpk z48*viK*<@CCv2fPGGX+tb{rIDfd~i)O1ZWdfm;`0CKFVNx8q!3U?`8qI}awXk|;S_`WJj*>CfKd8rk6ttfw-pyR?TBvtPm!R4z@65)Qeuvx|3)gP zAaDUNfx!1H&^-^`AXSYxE)wo}q%ab+BLC3Ah0<)x9}P|TxKUh0fJ2$3NM|JPEvh;n zp8ynJYGek060Tr-9AxksZZiI40G>KJ1$qwynk=}t`5(I>l5G>B#twog4}~o+0Lfg6 zXgI1*8OIcV<~s=5s$5v*)DcMCV4qKelJ%!!x!p@$e7_LG|1;n>eo$8&tPPr9k7k6= zm!(&V9}$qgB;`QF|Am0>I9#LQX9QH6TCM?mLNKxpYiFHfa{z>kFV_D7-(h!}ll7;R P00000NkvXXu0mjfG~Jwa diff --git a/companion/src/images/library/10103.png b/companion/src/images/library/10103.png deleted file mode 100644 index 8fd5c289773e56db67ba2f9cbb392ec821b33b77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 737 zcmV<70v`Q|P)Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyS<7a;{H zw;PK9000?jR9JLFZ*6U5Zgcc1n46`!)|1YZ#1Rop=+oYin+39pPI7@s;mI)|(KZl5j0NWe@Me@_RGXop50E&C? zhAgD$PU`~HHv})OZqOB8D#4~gq$aEoNQ}xNy%u#R1KgH{WNaK^0ac0^5MkeWiG~

O z@)>D7#`u@V9e``Rk4*+gY(1#jI`j`vJ46sHxVaHUX(V`#juhtWEL~=~xfAwx#JJyI z@}U9YsQTp4JKk6VHhWX(A|!;OE7^LDG25qNJD6-bnjDkxm39illZr;mLQ+p#_@*+& z05Qfsjdtdz63_^$RH*J=1L6D^9%`sX>un6mcdF(AUT{7~JuK6+A5+YpS zDE`L_iht}t;hz!C>0jX}0#U_@q?+PgPC?VGLPo@zaG{s6TUuv|RQ&>k)wBW{_CD)C zwqZunhUz^z#8iv4gJQkH+mYWP zze4{9?b=O);b$~$YByNZf~;h$&x5)(%9{muas!JA#R7I_*5wkk%GSto7!>n)4Lldg zLFZp~0KbwAP7l6IC8+hz$LLqPifCHcJ%7AvIHO@jy@p?bqT%kvV|$u|NU0ZSUOIrM zs6RKZ)^=qq@4|&5q;U<+G<**Rzy;6zSk7D1q2lHk(iJJ`W_k%58ntfz}(NX4zUGjI1DGT?DB zUj6UC{&~AKVNOT=j(KW?_{?Xxc*{~Qeo|9TeC^*YX$))$*igXk4`JUwa&jH$oxWd_ zwcz&C?QLI;57xW?Xgj+8w#_%Iqqkk^x|xc?D_$O|tT$yaW!q!%Y!8z|Y{QWs z+juLmVIJS#_=qbEP7TT&B7dhbEU@_TWaIMmQ+3L3|L=Qe0t~IV(GiJOgmW*c+ALKkqrk-;PZvkdHu*ZG@X2s9P{ z3PKXBGkHkL4s#w!heg zdjZ4dl)hth_QTF2I093agiAEQcroPja0-B|zqjHN!iaw-4O($mRjLF%$lG%?x2Y{A zGf906z_T31UnD#pwLm;4r59l6$v!S&U_?}=-)Q}P5rPe)wNE|!O+XKJY&!IPxnh7g zgWjggND2xWpfNLBLyeR~{V~~e3LvNpT;+jWL=1==p{k>Njab9k9|OM?lCw!Nn}(JY z30UTZ-$s8gmK6{n!rWCyDMd(fvj})ldJpk5nDJC)Q=5Y015WsaNg@%vDvAx(ebpM&b|73 zUXC4$Ds};3WHX{X=Q$3cJQ<4T6xTFj4{smK^A;0ag59Js|P%6ZL@P%>U7l5*DMk1)&ZM3SeW9e}J0Lwjd;ykIoMh z0l*Fao8QGIL~J~I%N@Rj1K3qejNq^!Y1(932fAyWfD(~?I}yE10|(9^&R5^grVoTM^DLQS%vkW;|f2a&s!|AMGB=ie*5YVi+m>VVD{MAH>Hy?{c5ihy0rm*$Mu@{JvXO1zMlXk-%Ws)?|we8Ofm5_ zV4dQ{ldq{T$+X{hd#-FSc-|X60v-W>FW?23-CvpQu~g^)3jhEBNkvXXu0mjf9P_>M delta 687 zcmV;g0#NV7z1z0x?pXbzZy8H@{9AE*xcqru#(!m!t{&u;4 z2}IS^fQ3(og9GrF0mxD4`pC{cbNJa#>N$k~D!2V_G=N*6xv3B#k&72w{uhR8;}Z;g z5n-(aP7`1X_tC)hXQE~})8fs~T6wZ*GciQdA14w(*fF3e z+H9jRa}MYD&B4~s0y??FRsYfOp*>Uvh25p2=D+%_Q~o~(H>-XLcXBtj4Dd|@NRk;o zjW#f|0F@P8XWE41IDo7Zv|K@lH`sMFyDh~l*mMa-^Ca4R1`N~$&{~6OA!6x&r5gn; z+C8<>@JE4vO7`kGd<=x5bzcemPsiBAj|x>y>2g`b)o&#E8h^?oBe|1 zG>50JApU+ou!;Yg0bxDqy9A5_oZiHb=u5vz|9cEfR1002ovPDHLkV1kt8I3oZ6 diff --git a/companion/src/images/library/20002.png b/companion/src/images/library/20002.png index 3f3d2186631fdcf065921163f7b188eed07054e7..ededfb8acacda3d639dcba302ec7db42e170be63 100644 GIT binary patch delta 546 zcmV+-0^R+w2jK*eB#|*Gf8GKZ3MwkH%6rEE00HtzL_t(&-tAb+j>9krWGepumuC;# zv^K_$Z9=MDwYR8A<^dQ8DEIy#A|)nxC-Up}M%6pf38AHOivuV{n;7U_;yWpjPM{KR zuJQ@g;yw6O0tU~8PfS7wo`RM_4uOvMo(XynJiC%L8NG(52n+*Fe}^}g6Nw?PF@}@% zLKGH&ng~yxJwRUOfc4(3`7#Jca5M{k(2!Yrr3u~-=79F@7y)o3-a^w0j)vgbwpU}c z!;V#f1dd`@cyt7hJ2bCJJe&jj=^D#{2A<35y6phGc7qWEKVA0-faQZIt>Ca2+kbU4 z`sno=PZ0+3S$E)=e{JZ#+nafY>7iTjb-Tkr2hNgn$$=t?ajZF`EWku*=)QVZ4X#y! zsmj!?y7NN4gT6qZhNm5@>g#FrX#y60m^~}-zXXV9UBMS+{H8Zs%3LFI2oNtlAn|Ud zkh9ZmeK^@FLv*JNws&C-eKH4JRbJYy!w2Vq>L9}2lo6STf28UMb}-|dACc`CuZ`D% z!elZAr($u%3s39xn(qVMk$mAS(hKFIUc+-8fL*fSM=ckt5$KJI`pU<3Fc k9QYFW68IAM7}ErP0BpL;jX^)6ssI2007*qoM6N<$g7%;Q#{d8T delta 882 zcmV-&1C9LQ1hEH@Bnkm@Qb$4nuFf3kks&O9+yM_4A`J{dzPW+aMN3aQ(ReF?&ffs8Du zMNmc`r^EK+jHYiM$She@L)E6KYNI^RW;3bFYt#13bSj>Z(Ow%vKiQr9Sqj-40y1~? zG?uSJYa9PDXn4By!((w5--g#(rE*%pENHaa4Mz;@aNU})K~=d>nnJ^5>m7$Z z|McrrCs(xtueYkLY$IGa43D@4Uq=TAdT=~8y0A9_FYXkx)Bt^UsklZUtJ27*4$^ZZa zfqW$f=I!+@GEB6&*JhqeXW>kN1W8vGNPrUYOOj5p5*emf-}AlYA<^lNz_Y*#;Q$2z z#}S|)gt-D)N!5`|E@VOgNCfbWN4yx3@D7JrvbP(UB>K#s2`J%!AQ3@-)6MP* z7;7q)+))?-@K6?Wl>vexM>UAWYZJ2qc=zfk5-%j3n4;1FX>z@I^T=Ktimq(T>$$F0 zkn$~2&}b7@osIUh4hG?hqIWqIp_B(tE0oCA#~qK$^;$C$AaMW)0U!>A7ziMQG@XjZ zy2{%Ns-O`Eanva;D|v5S5Xc?qdg#NHkOs5S2h$eK{e+R{1MHU?C_#lOg zQFY)HbCG3M@usMar6F8f%XiPdjTot-<%TuLb{dPOXa-6@Ce{O0yLHrWfF2NL)CWJk_>PJz_tfEaNA~r zLAwEzRgi{`v<>y9e=`E(HYGR#MiAgxhI-xa96%KEd8SHR z%VB_-FIAj6**}xlLcQmKV-#$T3@7P-G50om(vEx&+>3$@0ohVEFQ>9uFm(~~VuEJ! zX)RUIaYc~{JyI{7iJ62{brGEq3;szj7YCi>O1fllh8kX|z+IIQIubU7Ma(itcRTV- zM>KST!fkwo^)I(%SDW1M;K_A|`|yx;-PKEgUeLe=y*BzR)~fm-0d(`gCFc=;+KQwa zX1H6Ez1x`6=XO=q#xK=T9eTl*LV#8P|=0MZ&z4HPzoa4 zjUg3#stUD5lil?I+ntljelh!v#x!uj??*cJUo3r-B&ZfqFP7;5z(64?;DZUVHGlJd z+~xyM&H(v|Gy=*5O;{tr@}yaRSE-dEd~{$yfFkiPxdDVkT2DBRmoHm36KqQT{WKY5 zg0<_8&Wh1tqLH(7b^#1r?GYaaM67aX76a5q0k$<{02DDnkO&hw0R+WbMCfpK4MfA- zl1fhPl#qC=F&iaEwAg=+C(3%-u)xdd!M2t*Ek2GlC)?!gckYO4_SJnw^9PR};RoOc;0NH3pZ~2QInmJ_y~F?j002ovPDHLkV1iepc|QOE diff --git a/companion/src/images/library/20004.png b/companion/src/images/library/20004.png index df09efa350ea2b71f341b1c4bd86b9af7c56304a..277f9071432192f8185944ca54ec237a09a6b6da 100644 GIT binary patch delta 649 zcmV;40(SlG2FL}FB#|*Gf8GKZ3OFbvFlsme00LP_L_t(&-p!dwazh~uMAa_e|H_>O zGhbjae25p>#05`{h6aOj_wzZq8E_W>*A=)7fa^IxUIhUEK^5EtKqCph0}Igo*_(u* z^#DOoL|{fJX#MV-Rv_+cmw^z-&+i%)a7%@)%_<;-9pvY964Gl5e-S_k3{*aLC=fLu zC=d>%LK(*_K!H%_m@)GyO8{;;f?k0Z0y@XI2H*(<3<98~DXawGTsNVB@KwobJ@=n{ zU!T4j!ze(kED(&*vKKvl8`EVN21q>(sT3g0+x0X2O1&k3v`&;DNUxrHbwoA71VE7o z-PCvaK&_gW017eNe@XA6$EI1(EOj=@UXOmk4~$KDnxmU^MC^~CR?)9_LfS$fSoynC zdFpOxBS6e5n7!C;1-vipnU-hw*;$5A>y9~?n@?u1$6aNYW`rL)L_WBaAT)HFnCc=#X- zj?L@CH^;H)o`gu@cTZuq48y$31ISwxqWBOB+UGE<01eWFTtx3iJqchT@OC^3p(A|O zj-Wr13AkJUgpDqa7v73%5p;vT8=x{_C@V5uS-25EF=$#%#^$Uh<0b_(6N<7iO5PrK z1L!6g^>py@+EXaKT{Be`bx+a$IhI7~XM41u14^TV{fVE-=0Lu9w z6#@?ZYKC$?B(HSpxjr2}viB;SQ{eHw6%ybiKu(bC($QZ|kv(r6PQprr`f2ev0+$`p jLOt+xM>O=g{@d{%m*Y20HW7U)00000NkvXXu0mjfV7DN+ delta 815 zcmV+~1JL})1?~orBnkm@Qb$4nuFf3kks&O9+yM_4As}M2&&&V-01|0bSad^gZEa<4 zbN~PV002lsF*!Cl$uK4$0008iNkl#O0Xh*fClQeu2nK>fDt)d3Rv2Ugqar0IO=zit#GZo0bcX>9 zrvi*q_$uh0QI#-m^ZGv%{el53_h?6=d-NQD5QEo~{a4J>c0(ZmxvnD7wZk>1 z5%yw_+*~JAFaOfYbWB`Gof@k`tQ9%U@%QZpQeMEdNGzp2t zx<;b<(F8zQNDjzu$5!~^ZU72`MGn!9??&PJblif`y2}y;w#1&_AiiLL0c!4Cgm;bl zbP5zeQ0(}q@GT=6uJ2z+1adB5en-a(vtmtxTV}Tbz&LLdifrzc8v&?)8P-gbwK$u} zxQPMFgrYBuNtVam0BjQs-5tP@gpB~4Yh>*XqagPI@C_8@Ee+P)@XZ-*tJ541ybquo z3xJxj0|5H|kQ4+QdTWNhKQym&YFyuf4>7O8IR=LL)|~(+0Z0VRE**Vy3NhX~oP>%5 tJz6{tfnPhKFZ96I9nqs2&(Gf-{{zJoiD}fLMqdB`002ovPDHLkV1lq>Urhi2 diff --git a/companion/src/images/library/30001.png b/companion/src/images/library/30001.png index a699fad9565cd54ddefe1b2f6cf9e9734ecd2ab4..936732b2e39af666f330a515317abb1350b098d8 100644 GIT binary patch delta 853 zcmV-b1FHPL7U2ev8Gi-<007d~e}4b~00eVFNmK|32nc)#WQYI&0~kp}K~#90?VQVU z!!QU%Q775u|Gzdf>Z%<#)dQi61QutNPGW?`EyBol$~k8WOp#Lh{X7#Mj-4;D^+1Jd z&`N*L*eTfx0T`kd>`@Vn{5}L=gkI3NK^?X8U|9`Rk*0Zsjep1ho7owBq7cAVb_D

Eh0JLM= zaXbjZYVe5w0$3Gz?)cUOv3q`c3<<#c$q?Z-QV>|1uhM+nx)ZoFJ6H>T4VD1BoJ@~Z z*}>C%H3i`5M1Mxn$`0P-#flI-Ah4igdCx^6Pgrx?5h zzL^06K3)RON(ckoNH-!gn68g6A5RhF;p@s_pNr*{@YsgLC5oB1KuDL!V zU|Ik~Ap%WOO7;an6e7?f=j^8sP!mDa2{L}>(~SUX6n`t*5Ji#VTv4=wkH$p}5a{84 z39yK#n@u7E98L(p5gNs92mp+?o<#`YaN;s>F|`cwd_L*@elPZBPyn;txL(s{_I4{o zx3J|SqUj{{add3%IIJZg=iFS|df!X!b8Tw-*Yai6nqLa`s86D|gpHh_WHNfk%zlrs zh4Nv=et*X37)=2n13H@_P&U0)=~sGLKq9beCy;Bbmbyn&EqN%zx__U%UN6ycvvgk@ zM};DAR7soyWyI!av54@G`@5Mmj#>h^BIMX*_W`VLvF>_7g;ltIZru!8QT(8fmyUxh z08>g$Kc-$4t8s$`vhcF_jK7zxP-0sv*z=@WW`A^EV=urV$SgQr1E7}-iM^Au38yI) zuZtf9d6~$y&pno7XND;Oa2(QZC7;g79zhBAW)OD}>CWJ6gN2hCJqt|h_V?mDf}}fh z=#*Bn*SZGw9N-qc;FsovTMHC3fV4TG@mu8a=;Cw*+T&K2fRzE2*hGyvlUlV4z>#C6 zwN3!*J%Px(Sgyy;u4_I2BsQ(E>RCwDdjjLRJ^Mr-;BZ0!hZ6!g95n&l^_u){EX@E> f0NNv#fW!F)dB(`*NdBM^00000NkvXXu0mjfz1oQN literal 2879 zcmV-F3&8Y=P)Px#0%A)?L;(MXkIcUS000SaNLh0L01FZT01FZU(%pXi00007bV*G`2iyS<7a=Nw zW+u`A000?jR9JLFZ*6U5ZgcuIskNY#0Zp(?#1JUl!y13ib4 zLi5!l!J|}G3$agiQJ+wsM+zEQKWRlx2RYch%FPwgw)%+5T2Pd1RtUwj{VV`szeuuV z-mj9JB#&yE%_bR>w9mONb@^!k*d|{sL`i;WYtg6e&%cf=`D|fo(q(`9MI!tx0A-QF z>plA1lu}b3!efwL?{PU4knrvD^Ei<9A>EUw7B#h-#>5e8(t3aKLkc-6#Mht50qWA@ zt%lrj&u#W76)q7WN!~xT=xvgIUJ9HP^5D40Vvy8BR=Zj1l13KUr&iXVmjVSzS>@u2 z!DX`Cbsgz0v1ccE8hsr4N$VOwLXNzsp0BNJV1`slVjbc@OZ zX_8c{CD|vNa;)iV^{gt%)m1fI!Zm~>*EoyLBttZ5D1<47xE99;(#RUJ4F%D64zPp5 zXV5A(8eO{T@(%QWVzWa78at%|c%c9Xj7~SYcOFovfG!GGLB*fX7Z`0v_;$OAF`Ug{ z10G}rICkd<3cBg|=W6Pl)j6Pp!%+ZeG#qR=uv4^XmPGFxwE@G}&5J<+nqZP-Kp|?0 z0$SAMtwN&@MMX{JtM$C&j62q`jvWIIS~HN87Ez&{!8+i;VFzdqZXk+Mx?Chp(xfzN zXUnUA&yC(ex@!KHnzDlf#a~l|J4m;vkU~_H0IPJ|I5su|y6pwHj{$(}81gS(XAKIA zGy^GwH-_QBo1t9yf84yd?bv_^DRhmL6%=(wykTIYasX{maM(AfK%+pXbP136A9Zq*+{=(Sb^JaLk7R)+xACF)*{?b|yfBM&RG~t&xK848dpkIte|hF6J@0GwHaDECGoi zsZC+O%A-e(P+msHG9g^HlJg(8!~-0r2deB@aO!M|_sxN#wIkM;0My>RkVJ6-+gX zKSEGeDTLs8#FlB%40)AF+U4>?UFzz@U@^-i?}U*Rgn|rdh$czO@|Yx3*jG2yW0bm7 zhK3~X!ek~?L8wU~Ttk?ZJq|q4XMK^}3Uvc^YNLUmn)!orD&ae9W6;i~R;|LW^>ofs zRLD|tHFy}KzvDZjvO|FaHwDd-76o07Njm=fFowP~9d@7$s~ZL=X@dcSH$xg!<0;DT zr$L#;A!%aOO_CPoFjEKg0zMdY8xW;ck}k?A!?YS8hnRnBmnps;S#MYNG~10$uM^q^Z&>`;LO(f3efdzsi*5w8Dp8IKuQm*AOH| zllIG5;z;2L5rc7(c}szA>`y0r_E_Wbv}Mv~1iXcdPD(3jVZbo3cax?h!3O@J7p_`C zav_({B+beQVS!m*3Mro=Alk{l={OOI~e?L;efjR63D&U6)1&O9KL)mbL z%~6W_NWq6*q^?OxRoXjRieeW@R}mz%Qa1Dg4WnB-2e704T>uJvHY!Jh-Nbl<0gX49 zrK3T8(m09VNcf=_H|e%#fLW#$p+)(S5LeZ*W>E$>W^@LWXGWg^=(d3~&H+_tzv*B! zqxFK&gu{l-2U3%3Wx`C4zN3tFd_}@|Fzeh;y~S&1PY^zoqb61{~!X7bFO`G43reMK|4#LLxDyW z6*e$8`hdg`%b{!SD93+b)b~aJ8tm{Hno=h$hQrx#&7jt-t285@+y1J|0WEd^ z|3_fQ3Jhm7aC(30Lv2_+n~32!RkLQzN=IG`j2uq~Vbsg_ham8s2aSEQq&`V~()e^p z*Uh8KYRMGVw~P8DkB^sczq0x6v(BlIbu4r25h6mE|vY`Hc2YMEg_8fwD^XSHd8D`{DL? zN8s_&Cs`UkKj%e-xQ4&P5c{Ixv(s1KUVmN+)Ti?R%RTkm2nZW7CXdqNl3Gft%XzZ% zjhENox!xze$#V#Qn$m4B*pwEfJ*wDC*PQ5!c7>l80X+2y$z!l26g*nA6bLG7U9{ai de8)xe{{c=w3LCSt&@uo3002ovPDHLkV1hP@M>GHc diff --git a/companion/src/images/library/300011.png b/companion/src/images/library/300011.png new file mode 100644 index 0000000000000000000000000000000000000000..dab44fe5f5476ad5f7b5d32372be65aff370caeb GIT binary patch literal 2821 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 diff --git a/companion/src/images/library/30003.png b/companion/src/images/library/30003.png deleted file mode 100644 index fe4548967cd1905da62af4e5de165466da0963e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4233 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 diff --git a/companion/src/images/library/30004.png b/companion/src/images/library/30004.png deleted file mode 100644 index 4db2f79bb9cb87fcf9e811738b3ca3f53f2c7170..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3049 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 diff --git a/companion/src/images/library/30005.png b/companion/src/images/library/30005.png index ceeb0b358f1fac044d80d38649490942d28ce0bf..8761d4fcb984cb975b78e7d3febab2bff3719b8b 100644 GIT binary patch delta 2346 zcmV+_3Dx${7~2w%B#|*Gf8GKZ3Mefen2hEC00`_!L_t(o!?l^&mK!;eM9qQN$Yf@9 z&CHqq|Gw_(R+Y$Du(;oOprlN-YE+_H0$+F{c;H6!%^WcFbCxHQ=RT+#LzwAU%B(t? zB-wPG+NemkOZrLnmGL7hsSbI#C6hSjX3vX_mP~&?+o)?=FS4J-e?T83JSIs}8GAol zHgAI`!x&p1B+uG^8UraLv#Cj4`qF6D$CCUkajlLfK0!d>G!AK zS4{Q#@-HsMr-)<7*V%ra3p8Axb-QS4LY_sU4~F$@*NcuZtISgTGzNyjFRCwQ4(q5% zJ83XrHZIziOq;dof9Ej}KAsLu#lj4g*(kHoPO&XI7EJ3?m`UHkK!g-7siXe-v`8xI z3c0RQo|Z!t(V^MgF&oHJi$z*w(vyrhh3dNzxtP;#02 zWHuHXbWGWNwSV95VHbFo)W&TbRVUTy-qPLkUggF4p7FwYn%j6F}uYK&^b7Ysb?f>eGTJm$hE8?jIJ zIi_ATWVhkU)KiEX>h)&9<;9|B-DK9k^y#DP=%eXL2KYZHA0KzobCT$WBA^jC8#V8;LItPO58nO90Kf&37HQV2ec8H% zMfZlv6zU^l+LCZ8l^}rQi`^a!!ej9qmS~qAQfA)ks5+5^u|CO|-``%=cLW9dU5{$k4qV<5Qw(gstR zM?2;&?pxS;78dk#wIumq5!*$#%U{}mun=MS7mcQtwYFib$f{7`<*+)ZX+CleOAE25 zMY{B%fBaYg>Ks*C$H7m_ZCkd?ENhqO3zYCSK^|hGoZ7(3u+RFjE>NU8VLr$$d0IB5 zI?1zf|H#yHouo2*mfHA(V<3{GIwisq7@iG_L}iu_{nUoGoiSmazqPkKD0O4=i^VU= z3j>z_&W0T}EpGXEYPt9GJL#%5e|ub2;Goi-f6e2yRvun)fYkx+ZKv`qP!oy6y}#^Z zhyp}1)Lexg_ulkvO9TgO1Z;0#G~fvL8yj$Q2%;vdr*$Gx*C<>XO`M;p!;jUF2AHVEt86z2~QMKz;M~=+Z@;x^lS#?4N1DsLmf> zQAF<{AUa*T1mLyL3_*x+M}H`ij1Sofz90DKm9Ni|;FwsWM|1W!4Bw#h6$ZQm-kVHz=-PwD27Lxj1mX*(SeUJE>CT!G$^(mo!tN?vS zo^EtFuzTJ+PU8q5{Qs#i_h3{Fr@vx2DDhUF|49rK&>(l{OA(5(LeFjJLK-@BaKP#Q zC$r86Pj{3wg8h4El1`dG*_D5=*`dMi1fvoN?W_blw7k)9vpXb_B78q%OvGZdDuBOLAXQ5 zm0W_UadXgC0a^u(+JLh9V{@G25J!8F79`VfUe&eFJRuu&*y(q4>)a?EjfgULMHRU~ zJyju=4+3M~9}!v~f4emr*XfsC2-7H(7`2+v{50S0!`z)>(Imn-f5jgN-FJ{$`%p`w z_eWx&!rJd&T#F_oScHUz#q(6Q0*HbmG_;&Lo7fs6K&WNWA=vS9&;18hH0Zrj!L!h8 zQbAxF+SMmL&cK zH>zWiFlp$<&^#wk$~_X+#v|u9lbdI?a`~>CgFYX*Wz{@ke|@y6aN72h+F+5Y2E}q&}&$HCUmkX2hZ_IL;Cr?Jgl>{hap>>+u}` zaz-@R4HUA_`3f7&9bXXw?uW>yod{rM$7$?u?Kk3hs1kl8U^omRtRY5qsFWZes5GOW z8#&JFkG`?Mf83HR?XxgsNNxIZUP*OWCv)EY@GBEjN?SBdhB2-&wzQ!4e{w=XS-1~Y zKbV1<^L94U@m$`&$kYbxPjY0l#Xk&IKNdin4xQimVy)PVWnysK{_KpXmnZ%9KR@Bx zD$z&j_WX3SsT@lj=lg}~=KwrueR{ol`H^cotGC5eAZLz6w~OlZ<)PXC0XtA(h?7Mt QL;wH)07*qoM6N<$g7dJ1kpKVy delta 3107 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 WVEP`H9_`Nn0000#%MB From 575ea504aa7aa14798f48098836eab852031b018 Mon Sep 17 00:00:00 2001 From: Kjell Kernen Date: Mon, 24 Feb 2014 14:28:19 +0100 Subject: [PATCH 27/33] Updated QT resource file with new image names --- companion/src/companion.qrc | 156 ++++++++++-------------------------- 1 file changed, 41 insertions(+), 115 deletions(-) diff --git a/companion/src/companion.qrc b/companion/src/companion.qrc index 1c4550d1a..c6246f314 100644 --- a/companion/src/companion.qrc +++ b/companion/src/companion.qrc @@ -168,131 +168,57 @@ images/library/00009.png images/library/00010.png images/library/00011.png - images/library/00012.png images/library/00013.png images/library/00014.png images/library/00015.png images/library/00016.png - images/library/01001.png - images/library/01002.png - images/library/01003.png - images/library/01004.png - images/library/01005.png - images/library/01006.png - images/library/01007.png - images/library/01008.png + images/library/00017.png + images/library/00018.png + images/library/00019.png + images/library/00020.png + images/library/00021.png + images/library/00022.png + images/library/00023.png + images/library/00024.png + images/library/00051.png + images/library/00100.png + images/library/00101.png + images/library/00102.png + images/library/00103.png + images/library/00104.png + images/library/00105.png + images/library/00106.png + images/library/00201.png + images/library/00202.png + images/library/00203.png + images/library/00204.png + images/library/00301.png + images/library/00302.png + images/library/00303.png + images/library/00304.png + images/library/00401.png + images/library/00402.png + images/library/00403.png + images/library/00404.png + images/library/00501.png images/library/10001.png images/library/10002.png images/library/10003.png - images/library/10004.png - images/library/10005.png - images/library/10006.png - images/library/10007.png - images/library/10008.png - images/library/10009.png - images/library/10010.png - images/library/10011.png - images/library/10012.png - images/library/10013.png - images/library/10014.png - images/library/10015.png - images/library/10016.png - images/library/10017.png - images/library/10018.png - images/library/10019.png - images/library/10020.png - images/library/10021.png - images/library/10022.png - images/library/10023.png - images/library/10024.png - images/library/10033.png - images/library/10034.png - images/library/10035.png - images/library/10036.png - images/library/10049.png - images/library/10050.png - images/library/10051.png - images/library/10052.png - images/library/10037.png - images/library/10038.png - images/library/10039.png - images/library/10040.png - images/library/10053.png - images/library/10054.png - images/library/10055.png - images/library/10056.png - images/library/10025.png - images/library/10026.png - images/library/10027.png - images/library/10028.png - images/library/10029.png - images/library/10030.png - images/library/10031.png - images/library/10032.png - images/library/10041.png - images/library/10042.png - images/library/10043.png - images/library/10044.png - images/library/10057.png - images/library/10058.png - images/library/10059.png - images/library/10060.png - images/library/10045.png - images/library/10046.png - images/library/10047.png - images/library/10048.png - images/library/10061.png - images/library/10062.png - images/library/10063.png - images/library/10064.png - images/library/10065.png - images/library/10066.png - images/library/10067.png - images/library/10068.png - images/library/10081.png - images/library/10082.png - images/library/10083.png - images/library/10084.png - images/library/10069.png - images/library/10070.png - images/library/10071.png - images/library/10072.png - images/library/10085.png - images/library/10086.png - images/library/10087.png - images/library/10088.png - images/library/10073.png - images/library/10074.png - images/library/10075.png - images/library/10076.png - images/library/10089.png - images/library/10090.png - images/library/10091.png - images/library/10092.png - images/library/10077.png - images/library/10078.png - images/library/10079.png - images/library/10080.png - images/library/10093.png - images/library/10094.png - images/library/10095.png - images/library/10096.png - images/library/10097.png - images/library/10098.png - images/library/10099.png - images/library/10100.png images/library/10101.png images/library/10102.png images/library/10103.png - images/library/10104.png - images/library/20001.png - images/library/20002.png - images/library/20003.png - images/library/20004.png - images/library/30001.png - images/library/30002.png - images/library/30003.png - images/library/30004.png + images/library/10501.png + images/library/10502.png + images/library/10503.png + images/library/10504.png + images/library/10505.png + images/library/10506.png + images/library/10508.png + images/library/10601.png + images/library/10701.png + images/library/10702.png + images/library/10801.png + images/library/10802.png themes/monochrome/16/paintbrush.png themes/monochrome/16/open.png themes/monochrome/16/edit.png From 91f8157f033c6df10ece8fc16bafdca29d97d2c1 Mon Sep 17 00:00:00 2001 From: Kjell Kernen Date: Mon, 24 Feb 2014 14:41:05 +0100 Subject: [PATCH 28/33] Renaming files to change order --- companion/src/images/library/00001.png | Bin 353 -> 2331 bytes companion/src/images/library/00002.png | Bin 2331 -> 4365 bytes companion/src/images/library/00003.png | Bin 764 -> 2971 bytes companion/src/images/library/00004.png | Bin 0 -> 7521 bytes companion/src/images/library/00005.png | Bin 451 -> 209 bytes companion/src/images/library/00006.png | Bin 3469 -> 209 bytes companion/src/images/library/00007.png | Bin 3760 -> 209 bytes companion/src/images/library/00008.png | Bin 3485 -> 209 bytes companion/src/images/library/00009.png | Bin 4665 -> 209 bytes companion/src/images/library/00010.png | Bin 3727 -> 353 bytes companion/src/images/library/00012.png | Bin 3151 -> 3469 bytes companion/src/images/library/00018.png | Bin 0 -> 3760 bytes companion/src/images/library/00019.png | Bin 0 -> 451 bytes companion/src/images/library/00020.png | Bin 0 -> 764 bytes companion/src/images/library/00021.png | Bin 0 -> 3151 bytes companion/src/images/library/00022.png | Bin 0 -> 3485 bytes companion/src/images/library/00023.png | Bin 0 -> 4665 bytes companion/src/images/library/00024.png | Bin 0 -> 3727 bytes companion/src/images/library/00031.png | Bin 0 -> 1040 bytes .../images/library/{10104.png => 00051.png} | Bin companion/src/images/library/00100.png | Bin 0 -> 2294 bytes .../images/library/{20004.png => 00101.png} | Bin .../images/library/{20001.png => 00102.png} | Bin .../images/library/{20002.png => 00103.png} | Bin .../images/library/{20003.png => 00104.png} | Bin .../images/library/{10030.png => 00105.png} | Bin .../images/library/{10031.png => 00106.png} | Bin companion/src/images/library/00201.png | Bin 0 -> 1654 bytes .../images/library/{10011.png => 00202.png} | Bin .../images/library/{10007.png => 00203.png} | Bin .../images/library/{10015.png => 00204.png} | Bin .../images/library/{10094.png => 00301.png} | Bin .../images/library/{10096.png => 00302.png} | Bin .../images/library/{10070.png => 00303.png} | Bin .../images/library/{30001.png => 00304.png} | Bin companion/src/images/library/00401.png | Bin 0 -> 1627 bytes .../images/library/{10036.png => 00402.png} | Bin .../images/library/{10038.png => 00403.png} | Bin .../images/library/{10039.png => 00404.png} | Bin companion/src/images/library/00501.png | Bin 682 -> 863 bytes .../images/library/{00601.png => 10001.png} | Bin .../images/library/{00602.png => 10002.png} | Bin .../images/library/{00603.png => 10003.png} | Bin companion/src/images/library/10058.png | Bin 337 -> 0 bytes companion/src/images/library/10098.png | Bin 863 -> 0 bytes .../images/library/{10085.png => 10101.png} | Bin .../images/library/{10088.png => 10102.png} | Bin .../images/library/{10090.png => 10103.png} | Bin companion/src/images/library/10501.png | Bin 0 -> 682 bytes .../images/library/{00502.png => 10502.png} | Bin .../images/library/{00503.png => 10503.png} | Bin .../images/library/{00504.png => 10504.png} | Bin .../images/library/{00505.png => 10505.png} | Bin .../images/library/{00506.png => 10506.png} | Bin .../images/library/{00508.png => 10508.png} | Bin .../images/library/{10083.png => 10601.png} | Bin .../images/library/{10092.png => 10701.png} | Bin .../images/library/{10093.png => 10702.png} | Bin .../images/library/{10026.png => 10801.png} | Bin .../images/library/{10027.png => 10802.png} | Bin companion/src/images/library/300011.png | Bin 2821 -> 0 bytes companion/src/images/library/30002.png | Bin 3381 -> 0 bytes companion/src/images/library/30005.png | Bin 2395 -> 0 bytes 63 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 companion/src/images/library/00004.png create mode 100644 companion/src/images/library/00018.png create mode 100644 companion/src/images/library/00019.png create mode 100644 companion/src/images/library/00020.png create mode 100644 companion/src/images/library/00021.png create mode 100644 companion/src/images/library/00022.png create mode 100644 companion/src/images/library/00023.png create mode 100644 companion/src/images/library/00024.png create mode 100644 companion/src/images/library/00031.png rename companion/src/images/library/{10104.png => 00051.png} (100%) create mode 100644 companion/src/images/library/00100.png rename companion/src/images/library/{20004.png => 00101.png} (100%) rename companion/src/images/library/{20001.png => 00102.png} (100%) rename companion/src/images/library/{20002.png => 00103.png} (100%) rename companion/src/images/library/{20003.png => 00104.png} (100%) rename companion/src/images/library/{10030.png => 00105.png} (100%) rename companion/src/images/library/{10031.png => 00106.png} (100%) create mode 100644 companion/src/images/library/00201.png rename companion/src/images/library/{10011.png => 00202.png} (100%) rename companion/src/images/library/{10007.png => 00203.png} (100%) rename companion/src/images/library/{10015.png => 00204.png} (100%) rename companion/src/images/library/{10094.png => 00301.png} (100%) rename companion/src/images/library/{10096.png => 00302.png} (100%) rename companion/src/images/library/{10070.png => 00303.png} (100%) rename companion/src/images/library/{30001.png => 00304.png} (100%) create mode 100644 companion/src/images/library/00401.png rename companion/src/images/library/{10036.png => 00402.png} (100%) rename companion/src/images/library/{10038.png => 00403.png} (100%) rename companion/src/images/library/{10039.png => 00404.png} (100%) rename companion/src/images/library/{00601.png => 10001.png} (100%) rename companion/src/images/library/{00602.png => 10002.png} (100%) rename companion/src/images/library/{00603.png => 10003.png} (100%) delete mode 100644 companion/src/images/library/10058.png delete mode 100644 companion/src/images/library/10098.png rename companion/src/images/library/{10085.png => 10101.png} (100%) rename companion/src/images/library/{10088.png => 10102.png} (100%) rename companion/src/images/library/{10090.png => 10103.png} (100%) create mode 100644 companion/src/images/library/10501.png rename companion/src/images/library/{00502.png => 10502.png} (100%) rename companion/src/images/library/{00503.png => 10503.png} (100%) rename companion/src/images/library/{00504.png => 10504.png} (100%) rename companion/src/images/library/{00505.png => 10505.png} (100%) rename companion/src/images/library/{00506.png => 10506.png} (100%) rename companion/src/images/library/{00508.png => 10508.png} (100%) rename companion/src/images/library/{10083.png => 10601.png} (100%) rename companion/src/images/library/{10092.png => 10701.png} (100%) rename companion/src/images/library/{10093.png => 10702.png} (100%) rename companion/src/images/library/{10026.png => 10801.png} (100%) rename companion/src/images/library/{10027.png => 10802.png} (100%) delete mode 100644 companion/src/images/library/300011.png delete mode 100644 companion/src/images/library/30002.png delete mode 100644 companion/src/images/library/30005.png diff --git a/companion/src/images/library/00001.png b/companion/src/images/library/00001.png index 0218d0570a6be5207e3bba6c272d9f3c45af1b6d..43cd387dc7b790ab437796d6464fd402a305adfa 100644 GIT binary patch literal 2331 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 literal 353 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 delta 2294 zcmZvedpOhm8^=deB1Ds#sXYuM=TuH9eul|ua{4AEkyA*qw9<-75jo_zP&{p!GqoIZ z%BE*BQPZ&GxHOw(W=TDMd!DP`f4@KP&vjq-=lZwQH>t|Y?w($GAp-)*63`BI-ic$pM{eOe+;-76 zRL?$rkq3F9W;gNUrjy&%9S-RBFMYl9z!q%q_>i{XU@RW zG;`h{9334WbFJb7Y5o1OlF|VKro~ZysG#t1wH-dYckMcAR&)z4JMe08Wq;?#7Nt^7 z^x;$>00WT+t8Uw@(GdmYYaA(HYtok|#9(Qufq?-?^riWM-Sl;KbDS2HN=;iGVY35Q z z?8!KYH4HH;a)56~-XjpnSVyzs z4S}{tp=6pMz2q97b}dvA!C8=TGw2T7=AJ6ugxpE!76r#PhCe$4)Jsbt-?o59| zCd)PWZzCLvJ;zjs!CwDb7atZ~(^i8-&3lkWC?}C9Oku67Ud>-F+7T1($V5}2_=hMe zJ|V%hE|%3OQ&UsZd|^tuX;AXmxF0JKv%<9(hDhf9B4@;TaW}c`A*(P{H4QMb+m1Ie zG4b@AH;%MQIN+z*`{e@yWw5iCix`29KXe-^kLAN$oE?| zyVboZ)P}J?SE~=)7dO#3p@+_Koq=iP@qK%GoBc{T8XYrv=WsYE$-SgUATVLp8N=@Q z2IE9uRZDHIOrwp@zU9pkI^DF3@UCX;CtllLIU|Ch#;qkThja*D2L9H6|G zThC3$5YG1tCJy!M2+h&h(YkKfE#LBPr%PQ}G z+C87RC0%7y6-yHPohPIdkZHk@3Y%`;;3W>cX=*vJ(0rR62muKeS^L}Z*Vcwd_ISRL z=__6>dJUP^bcsx`9uAty^i?vsxb<2wk(G9JpxWag!H^p?Vy=+w9D)*Whc2#r4ix6( zq^VTbDy913h0k45uV>-{5|lKoZuuL`vnJ~ejLJ-(0ZrNrq5R*T78^>b2By3DW06i6 zh~IQqUrfDUV22yw;8b6_+Q<4cDZGOk8X6xv@kfAXeMcG_@TPe(3?W4g@z!9>Me?Ed zTQ)wlhtD zIrO~a-_7IG^r)FJO^vXL0W;!A1cU0P>rv_;ksKi|EKFC(NM2v%^>$np_s<2mB2)n8 z=WIkJK3wJOi`MJ(gpo#8HJ4uzU~X>iU;4|$(()dkAG5N$YQ}wZ1iy!tsi9?8q)6fvS)VkB1g(4gd zSD(Q3Re8ud50$$;G&BT4=g2jBIR+V`RiJn%bi3Sb8|(Gf+sYn>GRCBSYisLw@87>} z|9g(EW|JrYfdn%&rFbmXjLRGytss$Tml)5E1MEHvk#m0N$Zx4J-3>?QG4FHcof)gKZ8Fj%Kc#&YBo6%|iV7!u{@{KzAF?;`7K zpITS%j=WztPb-Acx|hUlP(LGEsmrF=!4i{ZoG9{LQldwh?F*a3l*-DjlIcx9KPB2^ za!2b5L@)KyA3I?F6gC&&?TiWn>R0E*>wzBj&Dzf-fFSqCxgl0E7`@xPzm^ew5{Jal=AvsgMZ>*7sj<0E(D!= zshE_Ml)t4d>+xNmV}5>WSl(DDz>(Zf@i2m_tMB`2#sAoFrgs@sh##I4j=l4(`oPm_ zcLF57zM((6{IA#lHuwK|y(9qq&I7*#z(0B5cTaiN253C?#81wR%ScI-0ijXu4z>0{ G$^Qkmv~u?V diff --git a/companion/src/images/library/00003.png b/companion/src/images/library/00003.png index 9f3c5d78e040bf7ea81c74d87f2edabced38ae62..a179deadfdc73cbebacd24e1dc58b38a9ba9eb25 100644 GIT binary patch literal 2971 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 RR#E@}002ovPDHLkV1mg7tjqua literal 764 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 YrWpxnLoMrrGgAmoK~4URtXbgy0Hqy2mjD0& literal 0 HcmV?d00001 diff --git a/companion/src/images/library/00005.png b/companion/src/images/library/00005.png index 6d5a1d93d4cad3c168a2a5f0f46cd67c9786d9f5..802e9885a8d41bc2573134d0c875e5e07a120834 100644 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^SAf`o14uBqJF!g!Qk(@Ik;M!Q+`=Ht$S`Y;1W=H@ z#M9T6{T`D94;$Owbqp3jA<+`oh!W@g+}zZ>5{8h(qQtz+Vg=9K#Pn2YAJaCV0)I~z z$B>MBZ_hLGGB9v3FUbCXZhLz(o6qO-ZeFAVE%r(G8SAxEHyZ+tX7F_Nb6Mw<&;$V7 C>o;ov literal 451 zcmV;!0X+VRP)M?s9>M``&~-il000McNliru-2?~@A}>_EeGLEr0Z>Uq zK~y-)t&%ZL!$1&4*K*+oVdxRLM%*M6T!A`g2u)-O;oN{43B@hq3N+i&;1eK+3m_*V zB$ga6e>~1=$4-O9uSQQVKeM}5>Yp+&O^UyO<$a)sr33WHm*C-Yn(bl-q>EUB@q3(= zkpNR2N#N_~QGg&T-vme`NEZN~Vvi2cqeMq5ah48nPy2$T4AwOFjc24a3Yw31JSlY& z7=3FyE|fa;&0H9vXS}s*gsS$WF|U0#u8>I;8hsZOH1nna%VFqj%D_1bKyfx;;~Jrk zof?1BYz+W5&JpUURI;Mk8nrUA!+1t^0I+d`O!y}onyrCSY2a_AVfQ!~SX~!;$ zU_-Mta6xR$5bD4cZfUlLz4b!}fas|4P;Ahn!l>|+Gn)I~$9`|}oWV9n`bN{y8pk_& t#uw6pADSCO^XD2g#%m|abkcOV`33v%2Zo%LoI?Nr002ovPDHLkV1j1%y88eC diff --git a/companion/src/images/library/00006.png b/companion/src/images/library/00006.png index 64eca2f6622431d42cc2fe98cc671ec54334e97b..802e9885a8d41bc2573134d0c875e5e07a120834 100644 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^SAf`o14uBqJF!g!Qk(@Ik;M!Q+`=Ht$S`Y;1W=H@ z#M9T6{T`D94;$Owbqp3jA<+`oh!W@g+}zZ>5{8h(qQtz+Vg=9K#Pn2YAJaCV0)I~z z$B>MBZ_hLGGB9v3FUbCXZhLz(o6qO-ZeFAVE%r(G8SAxEHyZ+tX7F_Nb6Mw<&;$V7 C>o;ov literal 3469 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qf*Zs5hX#1CLR`=Ysy8gRJ$k9D1HV7KUGkyqwI>m8@}dqp{&Z|7^4S@O9&ev2rN zV)n(_9m*RMoxkzO3bRHW*jns2Z|xkA1@fA+rNF$_uczjRP5ndetVU-MOv$` z`UFM>=J%*p$~V}1On zC3`zAn+hwS0lBFqi3%0DIeEoa6}C!XbFF}Ekg&dz0$52&wyjcxZ-9bxeo?A|iJpm` zfv#&sW|@(a9hZVlQA(Oskc%7C2q4c^DWjyMz)D}gyu4hm+*mKaC|%#s($Z4jz)0W7 zNEfI=x41H|B(Xv_uUHvm1jG!N)Z*l#%z~24{5%DanTbjHr6smXNP z3=ITeaOi_%^bPe4^pTa9WTxRz4w6AA2Whqn$gD`siEzoxP0cF?I>A=S(8vO87(zA@ zN!H8+ED18m$}=}HJvBTtr6dEW3r*M~H8VW}=nbHHeNbrWLxT$#`ugzT2ZaIc!Kfu9 zh4E-`jRqGTqK16Ns32P*U$(!%{4%=Ohe9m%cXFEE{NwI@_$E&K--4*9s zRxL1MGoKmfqi1$?Y2>xpA4?y}MsAH;duUfw?+2OOgI@XuEuD{wxmO?#~Z5CC-UzwmK!ps??>sbwl>aEW4!)Yp2?VUc7Yc z6NkL{Evwr8dgW(R|2eJR$PqdBb2#6+m@bxulNyY2?xwC#(%o|Jwm64a{_mIEl||e3 zNKaW9ohhdx7@F@Kw_HR0msCNOapkWzZKsPlr-azIyQugw-<+hhYVAyK8IOky>~?D( zF0DS_`a56i(BIz8Uf&d+exG>Q!aLf)@sCEq{fEL^-f;ImPCD>};ndkMUJjw0bI%#G z!khY1U5bi1_8Ri#wU*y_dQ?bYiTl!`&GC)iQ(p?P+ed0dZ8c_$i@s-+D(sl=vVXsW z3df(|fcV*Lu2(k*xm;$JV`bVmakNrEbpqyAOD_jerbdfXXdH0f8LW> zk1vcnzQ_56vfc4&X2w@x-XZ*QjsH$bCCuFV(Es*-e(_HqQ*J-W-r&AW;a29KbXk=K hmJ7(q&+O(u20lU0^PNAp%mk)u22WQ%mvv4FO#qlUGS2`2 diff --git a/companion/src/images/library/00007.png b/companion/src/images/library/00007.png index fa384d1e69d6717e7dc37c1f73537364befb0c16..802e9885a8d41bc2573134d0c875e5e07a120834 100644 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^SAf`o14uBqJF!g!Qk(@Ik;M!Q+`=Ht$S`Y;1W=H@ z#M9T6{T`D94;$Owbqp3jA<+`oh!W@g+}zZ>5{8h(qQtz+Vg=9K#Pn2YAJaCV0)I~z z$B>MBZ_hLGGB9v3FUbCXZhLz(o6qO-ZeFAVE%r(G8SAxEHyZ+tX7F_Nb6Mw<&;$V7 C>o;ov literal 3760 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qf*Zs5hX#1CLR`=Ysy8gRJ$k9D1HV7KUGkyqwI>m8@}dqp{&Z|7^4S@O9&ev2rN zV)n(_9m*RMoxkzO3bRHW*jns2Z|xkA1@fA+rNF$_uczjRP5ndetVU-MOv$` z`UFM>=J%*p$~V}1On zC3`zAn+hwS0lBFqi3%0DIeEoa6}C!XbFF}Ekg&dz0$52&wyjcxZ-9bxeo?A|iJpm` zfv#&sW|@(a9hZVlQA(Oskc%7C2q4c^DWjyMz)D}gyu4hm+*mKaC|%#s($Z4jz)0W7 zNEfI=x41H|B(Xv_uUHvm1jG!N)Z*l#%z~24{5%DanTbjHr6smXNP z3=ITeaOi_%^bPe4^pTa9WTxRz4w6AA2Whqn$gD`siEzoxP0cF?I>A=S(8vO87(zA@ zN!H8+ED18m$}=}HJvBTtr6dEW3r*M~H8VW}=nbHHeNbrWLxT$#`ugzT2ZaIc!Kfu9 zh4E-`jRqGTqK16Ns32P*U$utUq8EKqtpj-^DjP|2ULIUp84hv*;z?pGpR!aK%+GE5bcqtFKbOWH&3+i!rr9 z=1kb-Lhf~%^Zi1)FPvt&Vsq$iLuCDqju%VLaP_kK%s)E6Bc`|HhxmDpBYbVzHEFu1 z^y?<*)*pN+r*Q7Y;*;CT1rJo?A4_lKu6*?T@Ypf6_cUv!Y)5 zKy9Sj8~4uH=fW=b@s+V{U2wl6{0}qBh4}?53jg+Rwbjhgp7i@S*Mh{P*jveUIbi_~ zkFMyx{3A9wC(!Ei+f&-DE59}c$-hsXXl3)(!DVN}?)~8z0lOn_u6M}QzEYp%xc%n6 z-N(;g2tVt>6m4^C=Tpt9Ccmw0A1}zPDg3=y+mKJ-y?w~?BR20p7zGwMo(y8>Vp5MN z4>tc}6so*oM+&R2oYaMYG|fp(H9vV(Sw8NN{IA5*UU5wC>g{*EMSoR8ooDuk%~$^u z^L*d&+Xo)b`dK3U%u;Es@STP3lfK8jdNYGZ`3u9w?N5!~YGnmy+?zTp{Xu;n_?o?bCe^KC4Rt~2zzdPHPd!IInRmZjVF9j(>&t2{8#g5O}{jvoalY+~cv zmD^_cv48(+J^fz6k@p7myx-?{EohTc^O|vR`DM)mNk67{%0}=Ch5k^|G#B~vE9|#v zG1tr5?(cKz($c*>chCJ+fBMIZfW5zG<>n|d2(R6~Y8H$3L9y@5-}sCF_Wj>2FHkF1 zSp93a;ic=xohn_c4o->BRGlVoAM>T9?s`bLUD&ZbhEwjTNCa^)6|Cf$v#I`H+RtCz zuQP*^v>VpEUU^tPGilq2S(nP*`EHmvX^HgqzWFnhCY`+Q`A+`eFLA$}S5E}7iU+cZ zXq9~bWv=V$lOJmvIBQP8UXDlV{2Lftf9%K&uiMbOFOoa!UgZ17cl2<5{8h(qQtz+Vg=9K#Pn2YAJaCV0)I~z z$B>MBZ_hLGGB9v3FUbCXZhLz(o6qO-ZeFAVE%r(G8SAxEHyZ+tX7F_Nb6Mw<&;$V7 C>o;ov literal 3485 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qf*Zs5hX#1CLR`=Ysy8gRJ$k9D1HV7KUGkyqwI>m8@}dqp{&Z|7^4S@O9&ev2rN zV)n(_9m*RMoxkzO3bRHW*jns2Z|xkA1@fA+rNF$_uczjRP5ndetVU-MOv$` z`UFM>=J%*p$~V}1On zC3`zAn+hwS0lBFqi3%0DIeEoa6}C!XbFF}Ekg&dz0$52&wyjcxZ-9bxeo?A|iJpm` zfv#&sW|@(a9hZVlQA(Oskc%7C2q4c^DWjyMz)D}gyu4hm+*mKaC|%#s($Z4jz)0W7 zNEfI=x41H|B(Xv_uUHvm1jG!N)Z*l#%z~24{5%DanTbjHr6smXNP z3=ITeaOi_%^bPe4^pTa9WTxRz4w6AA2Whqn$gD`siEzoxP0cF?I>A=S(8vO87(zA@ zN!H8+ED18m$}=}HJvBTtr6dEW3r*M~H8VW}=nbHHeNbrWLxT$#`ugzT2ZaIc!Kfu9 zh4E-`jRqGTqK16Ns32P*U$qaB~dlF31b%G-9GvJKIn z!zg;uzNpg9nS*o7nnPQ}9_Pz16c^flp3RcY=2D~7ui_W4@~f&&B;Q=#l&OAal9YXPdxjBi%9pNsypr{Bs4eophB~6Hs|+iif?Dcu3(Q4O?hJ=%wVxI z>ql|R)1wm`CHP;ox_b&r@Mzw9!~DT7rtaSeqf86=qcmYSP?t}%C`))jc z*s!ijn7zj~;rQBDX_uJ*w7P@Qzjq1aifd~gc7M+`U&|1%b@q=%@@;bj z&aL~W!()=|T-a;k|5sGCuYFso+<}5~0&Vlw&RcYCyUhCwDLkR>=@MLNH_Vld{eQST zUcKwqPJ`I!`}G@YBp4$9X3E`|Sf@SZ<(!APGZ`2AU+GYlu85aSYwG*Vvd1iXo?Y<7 zgC~@01sS+Q8gBRa8f05e{mo%|^DVQfr&1E)@<(j{1wIz8VXKIKH&NAjKPB89w=GfzV(fr=l#k{znt?=g8DF?u6{1- HoD!M5{8h(qQtz+Vg=9K#Pn2YAJaCV0)I~z z$B>MBZ_hLGGB9v3FUbCXZhLz(o6qO-ZeFAVE%r(G8SAxEHyZ+tX7F_Nb6Mw<&;$V7 C>o;ov literal 4665 zcmeI0Sx^(%9>yD#EwYK=5QinkK@chI`c+0?=%wT=Uq=XE~xN^#7L|=(-{{IqtU4ZQZNW(M$kYQ$RZH{ zfHiR{%?ol5C2acfwAmGuLE(M6HK{To7+ zMdkMixOX-&?0>G#wQ{vnJ-)HP=auw!4Qbc5DYO6ipoHNM%XHPsN48ELPSjMT2*tQ_ zXE$3<#u$wsh4ytso&W%mmn2?A?sm2qe<~S)!&Ci01dB}Ll?niQhAbM+KL}*P{J;Pb zMIZk9W(OQb!t2A`wCqrJG!u|WvW%pIE|KllS`XeZ*|8Kxk^pH8AN zNmL4KCllvK4Q1-X;XEDoIedryU+EOaX9zqT$Q=c#jzA&*ZfBAR|HZzee6jB=#yFB# zV6eL>i40O0yb|=`>KZzq!oH{;e^a$JKZ!d*7%MU^0CXeanMB^I|CqJ}NdZLOXYl;U z9a_lGxOnuDf8pO@@V`I4z2vJHf5Y_+*H;nvD)YD9^$pio5%?R;-JnwkV|f4q_-6iD~Z zh%8^0)xp{+gmnqd{#cwnma(d1K-a%M)OI3DPvI9%yN|bt_eaBXf4slTR7~&DO$4A@ zmw;{PcdPqa6)6UypmNVuM(A;hDv|Vaulu20Gwck-Sy74p07N)58&Dpog^t`kC znpd1VHwE(7dgXLky&;PYg?wX~+}PSclC(%OYg+YCI_4g?1hWBWlMunCV0#hjnXOj z?viS!Q^AP0^xZe@4;RPBjmwIB-P#iJW@k*T3Pq`&%8fI>O)bRBNS^e4puyHcJq31O z{wc7NsDLOIHmXrMf7VU6oBdXw(gbVL@_) zn5u1X*J)Cj2EUSsa1PgjUGq_m3mE-eTRXCH(Bu2?ighJPovgjm{*mnmg`{6gvHP5& zA3hO5%dM$w9>iX>^$@)@A8UT<2(!hNhQ@d*HBN(+FF%B$EC|5!b6byjCIk z&`zn~Ys)>p*p{{OTQLPu?#{8|`ZcxvR*6HWXGYKUJ=>M!0C9&2T$3_sIS)Dw6bHas zCt-kq!O^$QNUR}ywhlcHyyqh_!uste3j820XQroaxsLY~DBKRcyQS^er9^Bj*%Qj) z-n;z_J2E?J7D4Eda~Mu+7)Vo5-?)fUb%||>oiWTyE^mE8mvU>BL~ydDw1gmcK>ONi zjYsS3Aw14LZYs=$PhcqTl-~a7j$=edW=K>U)u5>1PC>&Sn@qU z{j*1?EGO%g8qypm_xdvb+$~vQGf!2=(DU-s{iiPDtst}Bwl%lFfgcw>mzEh4E zIcoBgbO+rmDyBiN)6g4l;>DGZ%g#`vt{%!-8gSK{xKw(p!Nk2BN{9aLDm|v1EZ`=1 z&#P3lCD2vd>S#Z#$KPnt#3`2Hs|>;1AmUFYyIt))>hF~lhx{$Eca9I$4jc$fY;m8S z2uC|S7Rp@aZ&9ke>p|3I+kfQt_qB3}6~Sj86jfFy9WK146x%HXKr87s-A|oIz0Qqz zWZVY`mZV9CpeC}FZ=Tp(^uXjLk3(z_pKX_bzx>8|Sn^IBA zm$2=qs@^Z3YZ4M%^l(gDCZH1B^r-`g7PJ(DVehPT&2sU*TGsuDMx5+S#ZT$Zfi!?N z74(3AOHdZvosy`==@_U=QbS2L;v4x&C+aqSmDqN5nj(!K-DEVRpp}mxJ{&k>tKLoa zllj$WFzKB{Rx{ou=pLFVZraYQowU-MmD5!NV!m-nPKigt~xtI(lR3t+y@aRth=#u&b= XwlJGfv{%5+{}n4Ud(#?Y-?)DPb8?TN diff --git a/companion/src/images/library/00010.png b/companion/src/images/library/00010.png index 2b2081c886fb7876f9221ab4d9f8fcc9cf3ca492..0218d0570a6be5207e3bba6c272d9f3c45af1b6d 100644 GIT binary patch delta 338 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/library/00020.png b/companion/src/images/library/00020.png new file mode 100644 index 0000000000000000000000000000000000000000..9f3c5d78e040bf7ea81c74d87f2edabced38ae62 GIT binary patch literal 764 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 XwlJGfv{%5+{}n4Ud(#?Y-?)DPb8?TN literal 0 HcmV?d00001 diff --git a/companion/src/images/library/00024.png b/companion/src/images/library/00024.png new file mode 100644 index 0000000000000000000000000000000000000000..2b2081c886fb7876f9221ab4d9f8fcc9cf3ca492 GIT binary patch literal 3727 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 KMNUMnLSTYNUeP%K literal 0 HcmV?d00001 diff --git a/companion/src/images/library/10104.png b/companion/src/images/library/00051.png similarity index 100% rename from companion/src/images/library/10104.png rename to companion/src/images/library/00051.png diff --git a/companion/src/images/library/00100.png b/companion/src/images/library/00100.png new file mode 100644 index 0000000000000000000000000000000000000000..12fd5b70f79fceadc97360ddc52f0243e143b280 GIT binary patch literal 2294 zcmVb3q;Ln&up^;Ph#0N)DmtpMK&@T~w}*p$8dOIM?)>pe*_2spH zeMJQL;yNI?HOOCY0qD(FgupKh1QW6(nWZcBLGdLmKL=>dR|LUVEx?WBRx7!a;?L@L z#7}x_V={r(NuyV)ourpnf=MY!OP#wbF2A<5 zH_6!87_C)uKwEb3-XQB7Q79xQZw>zDovb#cuJ{~Wg{wgl2Iwyxs_G2q%y=OUXTWpHy%vU0i#N1FUgYmA_B{@)_WU+;u)PK z)CL<55=vWZrP_}+M#-#@Vg!I;`9&t&VU-VeGnO=b){5^^#r8Y%42GR{q!bvPP+wt@UX2!3XC%ol8`hGzv$B&Ni0S$NttHtV01@ z*S&p|8$9nw*61Uc7-chh*~*O{-NwIFMy0|!#-??QajK(`Iq>4BP&oxZoFQ}PJEz#~ zm91J~P)5mKu>fnwz}^C7yznebf!cfDhhnJhvYqG(gJShMV7`O$T{xd znb-f>{g+qMexGQE&l;|YmjAgF%#PY+nv*UTc94`Z`e2gtE@me)j!Id%h}%{rp)$ww zs(5PRg_i$;1$f%^$x#<(bd6bwVnOgBG~XNVC94lfR;otc{DAe!y0vASBdx0igFDWgCOa zXfW9XzbCzy&Fnr113Cu>tEI_DrM1zZiB>O6DwA5T)Ho^~{l!*iZ|l3DzF8S8-Vl&> zZt;8Xb@pz&(?r*l!5pt#fFfG($pY18S#K4fw{lPz)n>`se!*>4cG_TxA|z6l-1tBD zX0pAqX%_-do#SNk$|qox)qmWEFH+FD`M4a-9>rwY{t~OKKH% z{wJ{H?C8n`?HLw${T$Z^V8A5l+&Sp<+Gp6F{XYc(#gF1Hq9B=fPu|loH zjnaT4P8tKU6KbQRd9iNzAUk}Bc;orC!%F4RjXGk^a~uEQi1niS>Sv+XW3b3dQaO6- zC#?O`jY=}B%*sU*=1>Jg*soVIL+N)cND4#qq|om?JmZb(S;<;QZydt*-q?k5cw&W& z+Cgm$37r*Tsh)~)482hsuPBW!IvcD*yG>zdKh9TH0h(u+J=5wFI*{z#{GuGSV{}6q z_;U?!c+t_=pwgJ!|He_)9|dhWn)w`>G+K3o==n}g=BQ=Xf%h@sJ(M%(wb4*C>82R zB+tp^z1cB>y!28S@I;5h#mA=IA2w~Nc3jSynAMBv8dYu#{^j1vR%>t6EoV`KS{q5! z3l!k;-|L(W*7U)jJ-2rDXcG}?=be?Tc2XGq;HT)LS`N=Ly0gd1;d&TwouIml@cd(* zRz>8R^tN`f*V_nfj+#g%eil=WV1tF>rs14mcm3UHU5Xa<>6% zhlucpkk#iOddy3z@h2I9q|}?N9IwD8mZ()EN=4A(pq3qiIns4m;IaZd`MPOI4z8W~ zWHcTk#{DH|SFgQ%%aK_7LebZ}=!oAU>{lOwcKLzaf3EiX-`|tlFQx=9u|QLZmGKjQ z;P6>8!I$lTF^*6UuQP0QKP5=M^ literal 0 HcmV?d00001 diff --git a/companion/src/images/library/20004.png b/companion/src/images/library/00101.png similarity index 100% rename from companion/src/images/library/20004.png rename to companion/src/images/library/00101.png diff --git a/companion/src/images/library/20001.png b/companion/src/images/library/00102.png similarity index 100% rename from companion/src/images/library/20001.png rename to companion/src/images/library/00102.png diff --git a/companion/src/images/library/20002.png b/companion/src/images/library/00103.png similarity index 100% rename from companion/src/images/library/20002.png rename to companion/src/images/library/00103.png diff --git a/companion/src/images/library/20003.png b/companion/src/images/library/00104.png similarity index 100% rename from companion/src/images/library/20003.png rename to companion/src/images/library/00104.png diff --git a/companion/src/images/library/10030.png b/companion/src/images/library/00105.png similarity index 100% rename from companion/src/images/library/10030.png rename to companion/src/images/library/00105.png diff --git a/companion/src/images/library/10031.png b/companion/src/images/library/00106.png similarity index 100% rename from companion/src/images/library/10031.png rename to companion/src/images/library/00106.png diff --git a/companion/src/images/library/00201.png b/companion/src/images/library/00201.png new file mode 100644 index 0000000000000000000000000000000000000000..a5e6349a3f0c74a46f1690328ff64fcec0518064 GIT binary patch literal 1654 zcmV-+28sEJP)MtqrG5o(cC!|IYz1k$Ag( zdlXR)`@gj7xBT+#A&3=1caW)hip|~8`OF?LvP;K+h(+cpDc!Z%Kcn_}Ma*oVYA#eB zRGr7TyXe^f5Gg}|s#lF_V)k<5tB5~S2*@#IWtU@%WXSYbqhtR%n<vOz5_8vA$B^yvnMdtKk@4~oqObS<=U&7s|% zqvK)#5RE$;035!so)E`j*85pb-1GHS*i=ko{l1^i$pI=>*a-FRyPE~-VQ_$GUL3Z} zb-tcC?q!Oz(yRbus+f2SmHjylvpOoRB*zhrb84D39krhx+^Kq zOROjFsnbl9B%s0L&tHav9=p{U5?Z5mw^>9;C~Sx~DFMPPxDwO?71#k4v%XpIoiO{J<` z6-PHFYHo>_^T7BD9DQZw{>}F7me*Sh154Dj!VQ4{bCm39Y50T?5b9o3PR)zHg~L?_ zfWxorjn2>@y2i(|&{IOd7gp(jJ~?`JRJ==>?uMpa+QEdjg}|b`6CxNie><8h$)bYEuS;yw5*y7I3f8 z$>rr5*0oengNkbxhQ)_AUiSwPXb%_J_g3td&SifL0D7I+!~1P_$jJt6Jg(V;bv|5> z-v&V6It+dHE{P)@1A1EL)$5D0e_(GLp}@vh$mS(w-IIioR^^PVdmRTB7W&1lK0D0N z6S^Ils}#w*wt*|MW3Z3Z@r3|H3yZQ|9(^oFeKm?T~Gk+3nZjCSW~)1O@ag|sGER;SCbm-U%IINo1R9{!Qd*Y z-Ks1Pia=JBxO5nKoCS~E>(4^ z>eT6(kdlA&id-FVb->jDR|i}jaCN}d0apk7n5!1Fk9=SLh(?#@9Nk5F@_&Db6;PT$ zk$?a2DG;m$(MFIYqa;b6W&U@DfS}Q<4IrH;UA_ZwQz-S)S?a~JtXn%Nm#TMWZtN|B zXb~);LzLGq?-X2Fcp)%rzukx(0+yLj0vKhhq|ST3t?nbGzTU5fC24IX&U= z+K9zU!tj~2<)|V-2U81%j8}d_j8(8TP}2f)o`dlfqsSq%))7Bo6q}2&KRMtWzosN(s^W z8N0wU3_~q~!7A5}(X%{Ap9eYHBtBH3kJ)ms01P6srCH&z(| zNzw^A{F$NJ>ji_9Tjj^4kf0Wh+1x4Awvyi^lPK9gIAViYAxV#RnX@{eaxYogN%{}! zz>Nl@R)ZIqRDxiAyrrNLY(znA&=@6KlLBj^@rFnxo6pqh$R|2#7)!JPOH5 z$VD#YD5spu(Hk3$d!14zSWt=PoXy)zoEEiT1)Uv&-vrx_820;r%40&MCur7L5OAP3 z2U+XTo*KPIM~*qGoUxVhL4;zi6thB~N0~)q(&!|??4|oB8N?EnYluf&sN$?IcCM7${F|es54`qZaX)3PDn;jMi!t8Tug` zyJ#e{9*yz=h!0icYh;u32m;E}=l)uk;~KFht3M$}y!6&jwnF}v!g8G5Z97uk%1#=T1K4oxh}$ zG@_l2Sz*>1^)@Ea$`;S}!14)-;70GiR&KJoGaD@mi&10LTG?5=%3$AkZLKj$cJ39& z3gUZ3Ku}uDN^jlfT0qJ!=u`^9XcRSBu1cal&j`-EKX_(Qw2+J{!Op+jWxcQs#}d*`l>r1hb^g z15^EM7&ybez+Vj+t@G2GYhxaFJ8c#%XXS<2-&ys5>PUeP{*C$XgGfS9^l*USFBHI^gPns{{Vg Z>;Jp4bt4A>%Rm4C002ovPDHLkV1k!Q|9AiZ literal 0 HcmV?d00001 diff --git a/companion/src/images/library/10036.png b/companion/src/images/library/00402.png similarity index 100% rename from companion/src/images/library/10036.png rename to companion/src/images/library/00402.png diff --git a/companion/src/images/library/10038.png b/companion/src/images/library/00403.png similarity index 100% rename from companion/src/images/library/10038.png rename to companion/src/images/library/00403.png diff --git a/companion/src/images/library/10039.png b/companion/src/images/library/00404.png similarity index 100% rename from companion/src/images/library/10039.png rename to companion/src/images/library/00404.png diff --git a/companion/src/images/library/00501.png b/companion/src/images/library/00501.png index 51e85006a8615d554c0b7be062363b33b088ddc2..44bb7ad5a8361da7f343a8d0aecb47e151b015a2 100644 GIT binary patch delta 821 zcmV-51IqlW1>Xjc7(WOA0002@y&$6i0007FOGiWi|A&vvzW@LL32;bRa{vGf6951U z69E94oEQKA00(qQO+^RZ0vHMdF?{JQz>^ySBYy(VNklZsc767Xn0lz?G3nS?a!UZV+1on`EK$u^F#~Isk0P?sFAA^({#`jGji!}?XtP0%#$$A+= zjP$!?n~DQu1jn|01MI=isd;}=Gu+Qz?*Y_XLnUT%;VNPPHF@jhxz^qa0=#M>^2Ht= z#&o&`;CN^F&~40QAdwn86@-^V$HEDVdVi{11Gq)}LIEf~m3oxz=)i1K)7n-GutNc( zN|HHb%hN(p1tV1{+RwSn?hp|-(lLOn%)>*G!(ePshf8OAZop!i*e!G!ER1CbJFU)= z2cHnYHOr68eAwww-DG!(FAK+=Ll6@q^bbL>7i1Jb+Zfoiq--((W{f-ljg^-T27fTA z?13}{0HEp$r`)6?d9Ey3t{tfnYN5#$Pk^9mosXPxG9n%^P+orlg0gKurmK)lmd1{7C0vhyM$^45>*vBrXxqDc%24! z5{;%Mo9iou$8gU|RiwB!*~0mZ#eZIQF`Tb1K`Qs14Hd&X`_D@bD6`qegNR|$6R7qn zp7e9!OXh@7@~J*RQ)?;aPWw!-ZJXcf3ddmsn<0=zLpH?)(7MFPZxn`8pK%ZzyFhjD zC&%^PgTMzV-*-XYmdic(XKJhf_$a>j5j;8Ya=f*P@U#cw7JX4ZeANR>t!jXKVd8@O zw1-`Q`nz+>!xZ>)eJ3YRQ?RnozT$k`1HVVUX!1(?Cjft^PEDKe6#%~@^<>7j(Dj8F zm@7ESKAMlG;hYX=-T=|Q=z(FdX7M{Snwk9oAJQ^lZ{=M400000NkvXXu0mjfs}Xbi delta 638 zcmcc5wu*IvL_H$|5d2!}bO}gt7I;J!Gca%incNJFPt4cuXJBC5>FMGaVsSe5vUT1a z0|B-Ni4qPkZ{#ILgnMKjV62!bb1=1w;nJbj^+#RxobD%hiJ7Q>=GV*&*AiRpFY^4L z;K}JWF)B856?O}&M9C#CtzeobfAD%i)3fi^wJv8*me%h+FXv$R_Vh`GCxY9B&N7@= z&NEvf9`1JM$)_a-m+uRf&+TGg@;q){-hGCN&GOY<77kx+1!MI&72aKIX3=3X&vL zWaypvW!c+&Sqb;e^=f}Z9pnRBEozgQeHq_&m2dEHbT&WnYr;wX9~T(7X0Gv_%s6ZI ziMJO#nAiN4`_CY(kQcz%@}0+yaot?Ty&UBZv&0`UNqjhF&lka?$979W^WuZlcB^cb zXZGwYXBGK1xO_L4%zql*zJj&F^PgD*a!9z~x$xiJyY6}vt zZTDaNBD-g=*@|m!mJA0A_pmRi6JTHPzKFkS#zVm)r#avJ;&=1iF7W?keLXNnMM_*F zN*qf|GV+TU98-!i6Y~@tbCcLpi_+`z!=omKE9Wq%f|R5rmZVxG7o`Fz1|tJQBV7YS zT|?6lLo+Kw6Dt!lZ39Cq1A{AbWxoN|gM2TZ*Nk)DVgJVijW@4U#V{TGvQF>i|coa}x6eRDQpPQSSSAwdbKhxs? zP=P8)K}upts#S7PDv)9@GB7mKH89jQGz~E{vobWXGBMLOFtjo-xH4Dv8;XY9{FKbJ XO57Tj9$4xH)WG2B>gTe~DWM4fs_bf# diff --git a/companion/src/images/library/10098.png b/companion/src/images/library/10098.png deleted file mode 100644 index 44bb7ad5a8361da7f343a8d0aecb47e151b015a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 863 zcmV-l1EBngP)*cxD-UmK)lmd1{7C0vhyM$^45>*vBrXxqDc%24!5{;%Mo9iou z$8gU|RiwB!*~0mZ#a?zXoUblHD)*fY6~jCG&r1#{v)RXkh+)zbsP-wI^mE}$=7do4 zsXjncYboYV`%JKHo8RgR$6*7TA&^BwHpKJn4002ovPDHLkV1k75e2)MC diff --git a/companion/src/images/library/10085.png b/companion/src/images/library/10101.png similarity index 100% rename from companion/src/images/library/10085.png rename to companion/src/images/library/10101.png diff --git a/companion/src/images/library/10088.png b/companion/src/images/library/10102.png similarity index 100% rename from companion/src/images/library/10088.png rename to companion/src/images/library/10102.png diff --git a/companion/src/images/library/10090.png b/companion/src/images/library/10103.png similarity index 100% rename from companion/src/images/library/10090.png rename to companion/src/images/library/10103.png diff --git a/companion/src/images/library/10501.png b/companion/src/images/library/10501.png new file mode 100644 index 0000000000000000000000000000000000000000..51e85006a8615d554c0b7be062363b33b088ddc2 GIT binary patch literal 682 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 LNkvXXu0mjfm0HGb diff --git a/companion/src/images/library/30005.png b/companion/src/images/library/30005.png deleted file mode 100644 index 8761d4fcb984cb975b78e7d3febab2bff3719b8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2395 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 N002ovPDHLkV1jr;h?4*S From ca4c7b4dc13cef7d8c64e273df2cfa368ddb6e56 Mon Sep 17 00:00:00 2001 From: Kjell Kernen Date: Mon, 24 Feb 2014 16:36:45 +0100 Subject: [PATCH 29/33] Corrected index error in general edit --- companion/src/generaledit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/companion/src/generaledit.cpp b/companion/src/generaledit.cpp index 6c5b6dfc9..8cccc654c 100644 --- a/companion/src/generaledit.cpp +++ b/companion/src/generaledit.cpp @@ -74,7 +74,7 @@ GeneralEdit::GeneralEdit(RadioData &radioData, QWidget *parent) : if (!name.isEmpty()) { ui->profile_CB->addItem(name, i); if (i==g.id()) { - ui->profile_CB->setCurrentIndex(ui->profile_CB->count()); + ui->profile_CB->setCurrentIndex(ui->profile_CB->count()-1); } } } From 0f3e6581bd86ac4e5edfa0900a14c4878b3ecc4c Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 24 Feb 2014 18:20:29 +0100 Subject: [PATCH 30/33] Update DONATIONS.txt --- DONATIONS.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index f3bf27e41..45b1c981b 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -325,3 +325,5 @@ Reginald H Millsom Emanuel Stassar Pierluigi Sommaruga Rafael Eric Suarez Nordlow +A Harris + From 9992c1f79ce63550bb1e7d8188df3d3b2d3bf4d3 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 24 Feb 2014 20:58:59 +0100 Subject: [PATCH 31/33] Update DONATIONS.txt --- DONATIONS.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DONATIONS.txt b/DONATIONS.txt index 45b1c981b..c85c6de97 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -326,4 +326,4 @@ Emanuel Stassar Pierluigi Sommaruga Rafael Eric Suarez Nordlow A Harris - +Stefan Grunenberg From 06115fdaed78193aba05f0a37f0df19c16dcf6bb Mon Sep 17 00:00:00 2001 From: Jacek Drewniak Date: Mon, 24 Feb 2014 21:44:11 +0100 Subject: [PATCH 32/33] PL translation fixes --- companion/src/translations/companion_pl.ts | 457 ++++++++++++--------- 1 file changed, 254 insertions(+), 203 deletions(-) diff --git a/companion/src/translations/companion_pl.ts b/companion/src/translations/companion_pl.ts index bd3013a8a..ab649090f 100644 --- a/companion/src/translations/companion_pl.ts +++ b/companion/src/translations/companion_pl.ts @@ -57,22 +57,22 @@ CurveGroup - + Diff Róźnicowość - + Expo Expo - + Func Funkcja - + Curve Krzywa @@ -4105,70 +4105,70 @@ p, li { white-space: pre-wrap; } QObject - + Rud SK - + Ele SW - + Thr Gaz - + Ail Lotki - - + + P1 Potencjometr 1 - - + + P2 Potencjometr 2 - - + + P3 Potencjometr 3 - + S1 Potencjometr 1 - + S2 Potencjometr 2 - + LS Lewy suwak - + RS Prawy suwak @@ -4687,26 +4687,26 @@ p, li { white-space: pre-wrap; } - + ---- - + THR THR - + ON Włącz - + OFF Wyłącz @@ -5153,7 +5153,7 @@ p, li { white-space: pre-wrap; } - + Warning Ostrzeżenie @@ -5163,94 +5163,94 @@ p, li { white-space: pre-wrap; } EEPROM zapisany z tymi ostrzeżeniami: - - + + FM%1 FP%1 FM%1 - + Input%1 Wejście %1 - + English Angielski - + French Francuski - + Italian Włoski - + German Niemiecki - + Czech Czeski - + Slovak Słowacki - + Spanish Hiszpański - + Portuguese Portugalski - + Polish Polski - + Finnish Fiński - + No Nie - + RotEnc A Pokrętło :A - + Rot Enc B Pokrętło :B - + Rot Enc C Pokrętło :C - + Rot Enc D Pokrętło :D - + Rot Enc E Pokrętło :E @@ -5572,133 +5572,133 @@ p, li { white-space: pre-wrap; } Pokrętło - + !Flight mode %1 !Faza lotu %1 - + Flight mode %1 Faza lotu %1 - + Yellow Żółty - + Orange Pomarańczowy - + Red Czerwony - + Winged Shadow How High - + Winged Shadow How High (not supported) Winged Shadow How High (nie obsługiwane) - + FrSky Sensor Hub Hub sensora FrSky - - + + None Żaden - + Imperial Imperialne - + Metric Metryczne - + Extra Fine Bardzo dokładne - + Fine Dokładne - + Medium Średni - + Coarse Gruby - + Exponential Eksponencjalny - + Count Up Licz - + Count Down Odliczaj - + %1:%2, - + : %1 Channels, %2usec Delay :Kanały %1, opóźnienie %2usX - + Flight modes(%1) Fazy lotu(%1) - + Flight mode(%1) Faza lotu (%1) - + Rudder SK - + Elevator SW - + Throttle Gaz - + Aileron Lotki @@ -5709,43 +5709,43 @@ p, li { white-space: pre-wrap; } - - + + --- - + Rud Trim Trymer SK - + Ele Trim Trymer SW - + Thr Trim Trymer gazu - + Ail Trim Trymer lotek - + Rot Enc Pokrętło - + Swedish Szwedzki - + CH%1 Kan %1 @@ -5848,46 +5848,46 @@ p, li { white-space: pre-wrap; } Zwiększanie - + Own value Własny Wartość - + Flight mode %1 value Flight phase %1 value Wartość Fazy lotu FL%1 - + Keys Przyciski - + Sticks Drążki - + Keys + Sticks Przyciski i Drążki - + -GV%1 -ZG%1 - + GV%1 ZG%1 - + Simulator for this firmware is not yet available Nie jest dostępny symulator dla tego firmware @@ -5965,17 +5965,17 @@ Zespół OpenTX/Companion. Użyj trymerów dla Fazy Lotu %1 + Własne trymery jako offset - + FW: %1 FW:%1 - + Pict: %1 Obrazek:%1 - + Profile image Obrazek Profilu @@ -7135,11 +7135,21 @@ To ustawienie jest używane przez szablony, określa jakie wyjście przypisane j SD Structure path Struktura karty SD + + + Firmware Variant + Wariant Firmware + Select Image Wybierz obrazek + + + Firmware File + Plik Firmware + Offer to write FW to Tx after download @@ -7166,9 +7176,8 @@ To ustawienie jest używane przez szablony, określa jakie wyjście przypisane j Wyczyść obrazek - Firmware - Firmware + Firmware @@ -7246,53 +7255,53 @@ To ustawienie jest używane przez szablony, określa jakie wyjście przypisane j Uaktywnij automatyczny backup przed zapisem firmware - + Select your snapshot folder Katalog zrzutów - - + + No joysticks found Brak oysticka - + Select your library folder Wybierz katalog bibliteki - + Select your Models and Settings backup folder Wybierz folder do backupowania Modeli i Ustawień - + Select Google Earth executable Wybierz wykonywalny plik Google Earth - + Select the folder replicating your SD structure Wybierz folder do zreplikowania struktury Twojej karty SD - + Not possible to remove profile Usunięcie profilu jest niemożliwe - + The default profile can not be removed. Podstawowy profil nie moze być usunięty. - + Open Image to load Otwórz obrazek do załadowania - + Images (%1) Obrazki (%1) @@ -7676,250 +7685,292 @@ m2560 dla platformy V4 Własne logo - - + Write to TX Zapisz do radia - + <html><head/><body><p>Modify calibration parameters using settings from current profile</p></body></html> <html><head/><body><p>Zmiana parametrów kalibracji przy użyciu aktualnego profilu</p></body></html> - + Patch calibration setting from profile Zamień ustawienia kalibracji wartościami z profilu - + <html><head/><body><p>Modify HW parameters using settings from current profile</p></body></html> <html><head/><body><p>Zmień ustawiania parametrów HW przy pomocy wartości z aktualnego profilu</p></body></html> - + Patch HW setting from profile Zmień ustawiania parametrów HW wartościami z profilu - + Date & Time Data i Czas - + + Use firmware start screen + Użyj ekranu startowego z firmware + + + + Use another start screen + Użyj innego ekranu startowego + + + + Use profile start screen + Użyj ekranu startowego z profilu + + + + Use library start screen + Użyj ekranu startowego z biblioteki + + + SVN - + Variant Wariant - Invert Color - Odwróć kolory + Odwróć kolory - Load Image - Otwórz logo + Otwórz logo - Open Splash Library - Otwórz bibliotekę obrazków + Otwórz bibliotekę obrazków - - ... - - - - Substitute image in firmware - Zmień logo w firmware + Zmień logo w firmware - - + + Browse for file Przeglądaj pliki - + Allows Companion to write to older version of the firmware Pozwól Companion na zapis do starszej wersji firmware - + Backup and restore Models and Settings Zbakupuj i odtwórz Modele i Ustawienia - Use image in settings - Użyj Logo w ustawieniach + Użyj Logo w ustawieniach - + Check Firmware compatibility Sprawdź kompatybilność firmware - + Current Profile Aktualny profil - + Cancel Przerwij - + Write firmware to TX Zapisz firmware do radia - + Current profile Aktualny profil - - - - - - + + + + + + Warning Ostrzeżenie - %1 is not a known firmware - %1 nie jest znanym firmware + %1 nie jest znanym firmware - Burn anyway ! - Wypiecz mimo wszystko ! + Wypiecz mimo wszystko ! - - - - - + + + + + + + - - - - + + + + + Error Błąd - + Unable to find file %1! Nie mogę odnaleźć pliku %1! - - - + + + Error opening file %1: %2. Błąd otwarcia pliku %1: %2. - + Write Models and Settings to TX Zapisz Modele i Ustawienia do radia - + Write Models and Settings in %1 to TX Zapisz Modele i Ustawienia w %1 do radia - + Open Firmware File Otwórz plik Firmware - + Choose file to load Models and Settings from Wybierz plik Modeli i Ustawien do wczytania - - - + + %1 may not be a valid firmware file + %1 moze nie być prawidłowym plikiem firmware + + + + + Invalid binary Models and Settings File %1, Proceed anyway ? Nieprawidłowy plik Modeli i Ustawień : %1. Kontynuować ? - + Error reading file %1: %2. Błąd odczytu pliku %1: %2. - - Open Image to load - Otwórz plik z logo + + The firmware file is not valid. + Plik firmware jest błedny. - + + There is no start screen image in the firmware file. + Brak obrazka ekranu startowego w firmware. + + + + The profile image %1 does not contain an image. + Obraz profilu %1 nie zawiera obrazka. + + + + Open image file to use as Tx start screen + Otwórz plik obrazka by użyć go jako ekran startowy radia + + + + Image could not be loaded from %1 + Obrazek nie moze być załadowany z %1 + + + + The library image could not be loaded + Obrazek z biblioteki nie może być załadowany + + + Open Image to load + Otwórz plik z logo + + + Images (%1) Obrazki (%1) - - Cannot load %1. - Nie mogę załadować %1. + Nie mogę załadować %1. - + Cannot save customized firmware Nie mogę zapisać przystosowanego firmware - + Custom image not found Własny obrazek nie odnaleziony - + No firmware selected Brak wyboru firmware - + Wrong radio calibration data in profile, Settings not patched Błędna kalibracja radia w profilu, Ustawienia nie spatchowane - + Wrong radio setting data in profile, Settings not patched Błędne ustawienia radia w profilu, Ustawienia nie spatchowane - - + + Cannot write file %1: %2. Nie mogę zapisać pliku %1: %2. - + Error writing file %1: %2. Błąd zapisu pliku %1: @@ -8537,75 +8588,75 @@ m2560 dla platformy V4 - - + + + - Error Błąd - + Cannot load the image file %1. Nie mogę załadować pliku obrazka %1. - + Cannot load the profile image %1. Nie mogę załadować obrazu Profilu %1. - + Cannot load the library image %1. Nie mogę załadować obrazu biblioteki %1. - + File Saved Plik Zapisany - + The image was saved to the file %1 Obraz został zapisany do pliku %1 - + Image Refresh Error Błąd odświeżenia obrazka - + Failed to refresh image from file %1 Nieudane odswieżenie obrazka z pliku %1 - + File Save Error Błąd zapisu pliku - + Failed to write image to %1 Nieudany zapis obrazka do %1 - + Open Image to load Otwórz obrazek do załadowania - + Open Firmware File Otwórz plik Firmware - + Can not load embedded image from firmware file %1. Nie mogę załądować wbudowanego obrazka z pliku Firmware %1. - + Images (%1) Obrazki (%1) @@ -10614,32 +10665,32 @@ Mode 4: splashLibrary - + ... - + Splash Library - page %1 of %2 Biblioteka obrazków - strona %1 z %2 - + Warning Ostrzeżenie - + Invalid image in library %1 Nieprawidłowy obrazek w bibliotece %1 - + Information Informacja - + No valid image found in library, check your settings Nie znaleziono prawodłowego obrazka w biblitece, sprawdź ustawienia From 2e14e5d9c84439ff84a48f6d508cfc47e44fb814 Mon Sep 17 00:00:00 2001 From: Kjell Kernen Date: Mon, 24 Feb 2014 22:50:03 +0100 Subject: [PATCH 33/33] Swedish Companion translation --- companion/src/translations/companion_sv.ts | 2031 ++++++++++++-------- 1 file changed, 1176 insertions(+), 855 deletions(-) diff --git a/companion/src/translations/companion_sv.ts b/companion/src/translations/companion_sv.ts index 9b2636f07..091cd0560 100644 --- a/companion/src/translations/companion_sv.ts +++ b/companion/src/translations/companion_sv.ts @@ -57,7 +57,7 @@ CurveGroup - + Diff Diff @@ -143,7 +143,7 @@ CustomFunctionsPanel - + Switch Brytare @@ -163,17 +163,17 @@ Effekt - + CF%1 - + - + ON På - + Error Fel @@ -183,7 +183,7 @@ Kan inte hitta ljudfilen %1! - + &Delete &Ta bort @@ -601,7 +601,7 @@ Om fältet lämnas tomt så är filtret aktivt hela tiden. Allmänna inställningar - + General settings used throught the transmitter. These will be relevant for all models in the same EEPROM. Allmänna inställningar för sändaren @@ -1541,7 +1541,7 @@ Mode 4: Spänning - + Warning Varning @@ -1557,12 +1557,12 @@ Mode 4: Felaktig information i profilen, hårdvaruinställningar lästes inte in - + Do you want to store calibration in %1 profile<br>overwriting existing calibration? Vill du skriva över existerande kalibreringsdata<br>i profilen %1 med de nuvarande? - + Calibration and HW parameters saved. Kalibrering ojch hårdvaruinställningar sparades. @@ -1677,7 +1677,7 @@ Mode 4: PPMSim - + If you enable FAI, you loose the vario, the play functions, the telemetry screen. This function cannot be disabled by the radio. Are you sure ? @@ -1844,25 +1844,25 @@ FAI-funktionen kan inte slås av i sändaren. InputsPanel - + Move Up Flytta uppåt - - + + Ctrl+Up Ctrl+Up - - + + Move Down Flytta nedåt - - + + Ctrl+Down Ctrl+Down @@ -1887,12 +1887,12 @@ FAI-funktionen kan inte slås av i sändaren. Brytare(%1) - + Clear All Settings Radera alla inställningar - + Not enough available inputs! För få filter är tillgängliga! @@ -2064,39 +2064,39 @@ FAI-funktionen kan inte slås av i sändaren. MainWindow - - - - + + + + File loaded Filen har laddats - + - - + + Save As Spara Som - - + + No updates available at this time. Inga updateringar finns tillgängliga. - - - - + + + + Unable to check for updates. Det gick inte att söka efter uppdateringar. - + Executable (*.exe) Program (*.exe) @@ -2106,110 +2106,96 @@ FAI-funktionen kan inte slås av i sändaren. Vill du starta installationsprogrammet? - + Do you want to write the firmware to the transmitter now ? Vill du skriva firmware till sändaren nu? - + A new version of %1 firmware is available (current %2 - newer %3). Do you want to download it now ? En ny version finns tillgänglig av %1 fimware (Din version %2 - Ny version %3). Vill du ladda ned den nya versionen nu ? - Open - Öppna + Öppna - + File saved Filen sparades - + Copyright Copyright - New - Ny + Ny - Open... - Öppna... + Öppna... - Save... - Spara... + Spara... - Save As... - Spara Som... + Spara Som... - + Exit Avsluta - Cut - Klipp Ut + Klipp Ut - Cut current selection to the clipboard - Klipp ut markeringens innehåll till klippbordet + Klipp ut markeringens innehåll till klippbordet - Copy... - Kopiera... + Kopiera... - Copy current selection to the clipboard - Kopiera markeringens innehåll till klippbordet + Kopiera markeringens innehåll till klippbordet - Paste... - Klistra In... + Klistra In... - Paste clipboard into current selection - Klistra in klippbokens innehåll i det valda avsnittet + Klistra in klippbokens innehåll i det valda avsnittet - + Classical Klassiskt - The classical Companion icon theme - Det klassiska Companion-temat + Det klassiska Companion-temat - The new Companion 2 icon theme - Det nya Companion2-temat + Det nya Companion2-temat - Companion2 - Companion2 + Companion2 - + Monochrome Monokromt @@ -2234,137 +2220,119 @@ Vill du ladda ned den nya versionen nu ? Använd systemspråket i menyerna - About - Om + Om - Print - Skriv ut + Skriv ut - + Print current model Skriv ut modell - Simulate - Simulera + Simulera - Simulate selected model - Simulera modell + Simulera modell loadBackup... Ladda backup från fil... - Logs - Loggar + Loggar - Setting... - Inställningar... + Inställningar... - Downloads... - Nedladdningar... + Nedladdningar... - Check for updates... - Sök efter uppdateringar... + Sök efter uppdateringar... - + Edit Tx Splash Image... Startbildsredigerare... - edit the splash screen of your TX - Editera startbilder för din sändare + Editera startbilder för din sändare - List programmers - Programmerare + Programmerare - + Fuses... Säkringar... - Configure connection software... - Inställningar för kommunikation... + Inställningar för kommunikation... - + Save Tx Models and Settings to file Spara sändarens Modeller och Inställningar till fil - Contributors - Bidragande + Bidragande - + A tribute to those who have contributed to OpenTX and Companion Ett tack till alla de som bidragit till OpenTX och Companion - + Settings Inställningar - + Read/Write Läs/Skriv - - &%1 %2 - &%1 %2 + &%1 %2 &New &Ny - Create a new file - Skapa ny fil + Skapa ny fil &Open... &Öppna... - Open an existing file - Öppna en existerande fil + Öppna en existerande fil &Save &Spara - - Save the document to disk - Spara dokumentet till fil + Spara dokumentet till fil Save &As... @@ -2379,12 +2347,12 @@ Vill du ladda ned den nya versionen nu ? &Sök efter uppdateringar... - + Display previous message again at startup ? Skall föregående varning visas igen vid uppstart ? - + Firmware does not longer fit in the Tx, due to selected firmware options Firmware får inte rum i minnet på grund av att för många funktioner aktiverats @@ -2394,12 +2362,12 @@ Vill du ladda ned den nya versionen nu ? Tillfälligt fel i byggservern. Försök igen senare - + Firmware does not fit in the Tx, due to selected firmware options Firmware får inte rum i minnet på grund av att för många funktioner aktiverats - + Firmware %1 does not seem to have ever been downloaded. Version %2 is available. Do you want to download it now ? @@ -2408,12 +2376,12 @@ Version %2 finns tillgänglig. Vill du ladda ned den nu ? - + Write Models and settings from %1 to the Tx? Skriv Modeller och Inställningar från %1 till sändaren? - + Conversion failed Konverteringen misslyckades @@ -2428,7 +2396,7 @@ Vill du ladda ned den nu ? Säkerhetskopieringen misslyckades - + OpenTX Companion - FW: %1 - Profile: %2 OpenTX Companion - FW: %1 - Profil: %2 @@ -2437,7 +2405,7 @@ Vill du ladda ned den nu ? &Inställningar... - + Edit Settings Redigera Inställningar @@ -2459,7 +2427,7 @@ Vill du ladda ned den nu ? &Avsluta - + Exit the application Avsluta programmet @@ -2496,16 +2464,15 @@ Vill du ladda ned den nu ? Ctrl+Alt+R - Configure software for reading from and writing to the transmitter - Inställningar för mjukvaran som kommunicerar med sändaren + Inställningar för mjukvaran som kommunicerar med sändaren &List programmers &Programmerare - + List available programmers Lista upp tillgängliga prorammerare @@ -2552,10 +2519,8 @@ Vill du ladda ned den nu ? Visa information om programmet - - Recent Files - Senaste Filer + Senaste Filer &File @@ -2570,22 +2535,22 @@ Vill du ladda ned den nu ? Companion - Editor för Modeller och Inställningar - %1 - + Checking for updates Letar efter uppdateringar - + A new release of Companion is available please check the OpenTX website! En ny version av Companion finns tillgänglig. Var god kontrollera OpenTX webbsida! - + Ignore this version (r%1)? Ladda inte ned versionen (r%1)? - + OpenTX Home Page: <a href='%1'>%1</a> OpenTX Hemsida: <a href='%1'>%1</a> @@ -2621,16 +2586,15 @@ Vill du ladda ned den nu ? Redigera programmets inställningar - Show Companion changelog - Visa en lista med förändringar av Companion + Visa en lista med förändringar av Companion &Write Models and Settings To Tx &Skriv Modeller och Inställningar till sändaren - + Write Models and Settings to transmitter Skriv Modeller och Inställningar till sändaren @@ -2648,8 +2612,84 @@ Vill du ladda ned den nu ? Write Firmware Skriv Firmware + + + New Models+Settings + Ny Modeller+Inställningar + + Create a new Models and Settings file + Skapa en ny Modeller och Inställningar-fil + + + + Open Models+Settings... + Öppna MOdeller+Inställningar... + + + + Save Models+Settings... + Spara Modeller+Inställningar... + + + + + Save Models and Settings file + Spara Modeller och Inställningar-fil + + + + Save Models+Settings as... + Spara Modeller+Inställningar som... + + + + Cut Model + Klipp ut Modell + + + + Cut current model to the clipboard + Klipp ut vald modell till klippbordet + + + + Copy Model... + Kopera Modell... + + + + Copy current model to the clipboard + Kopiera vald modell till klippbordet + + + + Paste Model... + Klistra in Modell... + + + + Paste model from clipboard + Klistra in modell från klippbordet + + + + The classic companion9x icon theme + Det klassiska companion9x-temat + + + + Yerico + Yerico + + + + Yellow round honey sweet icon theme + Yellow round honey sweet icon theme + + + Write firmware to transmitter Skriv firmware till sändaren @@ -2697,24 +2737,40 @@ Vill du ladda ned den nu ? - + File Arkiv - + Edit Redigera - - + + Help Hjälp - + + + Radio Settings Profile + Radioprofil + + + + Show recent Models+Settings documents + Visa senaste Modeller+Inställningar-dokument + + + + Show a selection list of radio settings profiles + Visa en lista med radioprofiler + + + Ready Redo @@ -2723,17 +2779,17 @@ Vill du ladda ned den nu ? &Bidragsgivare... - + Display previous warning again at startup ? SKall föregående varning visas igen vid uppstart ? - + - + - - + + @@ -2745,21 +2801,21 @@ Vill du ladda ned den nu ? Fel - + Cannot write file %1: %2. Filen %1 kunde inte skrivas: %2. - + New release available En ny version finns tillgänglig - - - + + + Error opening file %1: @@ -2768,68 +2824,72 @@ Vill du ladda ned den nu ? %2. - + Compilation server termporary failure, try later Tillfälligt fel i byggservern. Försök igen senare - - + + Compilation server too busy, try later Byggservern är upptagen. Försök igen senare - - + + Unknown server failure, try later Okänt server-fel. Försök igen senare - Compare... - Jämför... + Jämför... - + Compare models Jämför modeller - - + + Backup is impossible Säkerhetskopiering kan inte utföras - - + + The backup dir set in preferences does not exist Foldern för säkerhetskopior existerar inte - + Warning Varning - Firmware Profiles - Profiler för Firmware + Profiler för Firmware &Read/Write &Läs/Skriv - + Write Skriv - + + %2 + %2 + + + + Unable to find file %1! Kan inte hitta filen %1 ! @@ -2845,7 +2905,7 @@ Vill du ladda ned den nu ? ladda&Backup... - + Load backup from file Ladda backup från fil @@ -2858,46 +2918,45 @@ Vill du ladda ned den nu ? Ctrl+G - Open log file - Öppna loggfil + Öppna loggfil - - + + - + Taranis radio not found Hittade inte någon Taranis-sändare - - + + Impossible to identify the radio on your system, please verify the eeprom disk is connected. Det går inte att identifiera sändaren. Verifiera att EEPOROM-skivan är ansluteten. - + Yes Ja - + A new version of Companion is available (version %1)<br>Would you like to download it? An ny version av Companion finns tillgänglig (version %1)<br>Vill du ladda ned den? - - + + Compilation server requires registration, please check OpenTX web site Byggservern kräver registrering. Var god kontrollera OpenTX webbsida - + No Nej @@ -2915,34 +2974,40 @@ Vill du ladda ned den nu ? Vill du ladda ned firmware %1 nu ? - + Release notes contain very important informations. Do you want to see them now ? Release notes innehåller väldigt viktig information. Vill du läsa dem nu? - + The selected language will be used the next time you start Companion. Språket som valts kommer att användas nästa gång Companion startas. - - + + OK OK - + The new theme will be loaded the next time you start Companion. De nya ikonerna kommer att användas nästa gång Companion startas. - + The icon size will be used the next time you start Companion. Ikonernas storlek kommer att justeras nästa gång Companion startas. - + + + Open Models and Settings file + Öppna Modeller och Inställningar-fil + + + Firmware updates Firmware-uppdatering @@ -2954,14 +3019,14 @@ Vill du ladda ned den nu ? - + Read Models and Settings From Tx Läs Modeller och Inställningar från sändaren - + The file %1 has not been recognized as a valid Models and Settings file Write anyway ? @@ -2974,13 +3039,13 @@ Starta skrivningen i alla fall ? - + Backup Models and Settings From Tx Säkerhetskopiera Modeller och Inställningar från sändaren - + Cannot check Models and Settings compatibility! Continue anyway? Det går inte att verifiera att Modeller och Inställningar är kompatibla. Fortsätt i alla fall? @@ -2996,12 +3061,12 @@ Starta skrivningen i alla fall ? - + Write Models and Settings To Tx Skriv Modeller och Inställningar till sändaren - + Write Firmware To Tx Skriv firmware till sändaren @@ -3037,7 +3102,7 @@ Starta skrivningen i alla fall ? Det gick inte att säkerhetskopiera sändarens Modeller och Inställningar. Skrikvningen av firmware avbröts - + Save transmitter Models and Settings to File Spara sändarens Modeller och Inställningar till en fil @@ -3047,12 +3112,12 @@ Starta skrivningen i alla fall ? Det går inte att identifiera sändaren. - + Read Tx Firmware to File Läs Sändarens Firmware till Fil - + About Companion Om Companion @@ -3065,28 +3130,24 @@ Starta skrivningen i alla fall ? Ladda ned firmware och röstfiler. Definera profildata. - Check for new version of Companion - Sök efter ny version av Companion + Sök efter ny version av Companion Show Companion contributors list Visa vilka som bidragit till Companion - ChangeLog... - Förändringar... + Förändringar... - Firmware ChangeLog... - Firmware-förändringar... + Firmware-förändringar... - Show firmware changelog - Visa firmware-förändringar + Visa firmware-förändringar Configure transmitter start screen... @@ -3097,12 +3158,11 @@ Starta skrivningen i alla fall ? Inställningar för &kommunikation... - New Profile - Ny Profil + Ny Profil - + Create a new Radio Setting Profile Lägg till en ny profil med radio-inställningar @@ -3115,7 +3175,7 @@ Starta skrivningen i alla fall ? Det flerfärgade klassiska Companion-temat - + A monochrome black icon theme Ett monokromt svart tema @@ -3207,6 +3267,16 @@ Starta skrivningen i alla fall ? Use English in menus Använd Engelska i menyerna + + + Finnish + Finska + + + + Use Finnish in menus + Använd Finska i menyerna + French @@ -3278,12 +3348,102 @@ Starta skrivningen i alla fall ? Använd Ryska i menyerna - + + About... + Om... + + + + Print... + Skriv Ut... + + + + Simulate... + Simulera... + + + + Simulate current model + Simulera vald modell + + + Load Backup... Ladda backup från fil... - + + View Log File... + Visa loggfil... + + + + Open and view log file + Öppna och visa loggfil + + + + Settings... + Inställningar... + + + + Download... + Nedladdning... + + + + Check for Updates... + Sök efter uppdateringar... + + + + Check OpenTX and Companion updates + Sök efter uppdateringar av Companion och OpenTX + + + + Companion Changes... + Förändringar i Companion... + + + + Show Companion change log + Visa en lista med förändringar av Companion + + + + Firmware Changes... + OpenTX-förändringar... + + + + Show firmware change log + Visa en lista med förändringar av OpenTX + + + + Compare Models... + Jämför modeller... + + + + Edit the splash image of your TX + Editera startbilden' för din sändare + + + + List programmers... + Visa programmerare... + + + + Add Radio Profile + Lägg till Radioprofil + + + Manuals and other Documents Manualer och andra Dokument @@ -3293,7 +3453,28 @@ Starta skrivningen i alla fall ? Öppna OpenTX dokumentsida i en webbläsare - + + Configure Communications... + Kommunikations-inställningar... + + + + Configure software for communicating with the transmitter + Ställ in mjukvara för kommunikation med sändaren + + + + Contributors... + Bidragande... + + + + + Recent Models+Settings + Senaste Modell+Inställnings-filer + + + Set Icon Theme Ställ in Ikontema @@ -3307,12 +3488,11 @@ Starta skrivningen i alla fall ? &Inställningar - Radio Settings Profiles - Profiler för Radioinställningar + Profiler för Radioinställningar - + Invalid Models and Settings File %1 Filen innehåller inte Modeller och Inställningar: %1 @@ -3326,7 +3506,7 @@ Starta skrivningen i alla fall ? MdiChild - + @@ -3334,14 +3514,15 @@ Starta skrivningen i alla fall ? - + - - + + + @@ -3349,36 +3530,36 @@ Starta skrivningen i alla fall ? Fel - + Editing model %1: Redigera modell %1: - + Unable to find file %1! Kan inte hitta filen %1 ! - - + + Error reading file %1: %2. Fel vid inläsning från filen %1: %2. - + - + Error opening file %1: %2. Fel vid öppning av filen %1: %2. - + @@ -3404,12 +3585,12 @@ Starta skrivningen i alla fall ? %2. - + free bytes bytes lediga - + Invalid EEPROM File %1 Ogiltig modelldatafil %1 @@ -3420,48 +3601,48 @@ Starta skrivningen i alla fall ? Ogiltig binär modelldatafil %1 - + %1 has been modified. Do you want to save your changes? %1 har förändrats. Vill du spara förändringarna? - + Cannot write temporary file! En temporär fil kunde inte skrivas! - + Backup is impossible Säkerhetskopierin kan ej utföras - + - + Companion Companion - + The backup dir set in preferences does not exist Den katalog som konfigurerats för säkerhetskopiering existerar inte - - - + + + Backup EEPROM From Tx Säkerhetskopiera modelldata från sändaren - + Cannot check eeprom compatibility! Continue anyway? Det går inte att veriifiera att modelldata är kompatibla. Fortsätt i alla fall? - + Warning Varning @@ -3477,9 +3658,13 @@ Vill du spara förändringarna? Firmware i flashminnet är föråldrat. Var god uppgradera! - + + Open backup Models and Settings file + Öppna Modeller och Inställningar-fil + + Open - Öppna + Öppna @@ -3487,16 +3672,16 @@ Vill du spara förändringarna? Den binära backupfilen är felaktig %1 - - - + + + Taranis radio not found Taranis-sändaren hittades ej - - - + + + Impossible to identify the radio on your system, please verify the eeprom disk is connected. Det går inte att identifiera sändaren. Verifiera att EEPOROM-skivan är ansluteten. @@ -3506,7 +3691,7 @@ Vill du spara förändringarna? Skriv EEPROM till sändaren - + Do you want to use model wizard? Vill du använda modell-guiden? @@ -4295,7 +4480,7 @@ p, li { white-space: pre-wrap; } ModulePanel - + Trainer Output TrainerUttag @@ -4313,7 +4498,7 @@ p, li { white-space: pre-wrap; } QObject - + P1 @@ -4359,17 +4544,15 @@ p, li { white-space: pre-wrap; } T2 - th9x - th9x + th9x - er9x - er9x + er9x - + Trainer Trainer @@ -4457,10 +4640,8 @@ p, li { white-space: pre-wrap; } Timer2 - - - - + + Warning Varning @@ -4470,19 +4651,16 @@ p, li { white-space: pre-wrap; } Modelldata sparades, men med dessa varningar: - ersky9x - ersky9x + ersky9x - - - + Simulator for this firmware is not yet available Det finns ännu ingen simulator för denna typ av firmware - + REa @@ -4738,7 +4916,7 @@ p, li { white-space: pre-wrap; } PPM%1 - + THR GAS @@ -4972,7 +5150,7 @@ p, li { white-space: pre-wrap; } Det går inte att använda Expo på en specialkurva i open9x - + Support for frsky telemetry mod Stöd för FrSky telemeri @@ -5088,12 +5266,12 @@ p, li { white-space: pre-wrap; } Stöd för FrSky PXX-protokoll - + OpenTX for FrSky Taranis Rev4a OpenTX för FrSky Taranis Rev4a - + @@ -5232,21 +5410,21 @@ p, li { white-space: pre-wrap; } X%1 - + + - GV%1 GV%1 - - + + --- ---- - + Rud Trim Rod.Trim @@ -5316,8 +5494,8 @@ p, li { white-space: pre-wrap; } Eget värde - - + + -GV%1 -GV%1 @@ -5334,18 +5512,18 @@ p, li { white-space: pre-wrap; } - + PPM values displayed in us PPM-värden visade i ms - + Bluetooth interface Blåtandsinterface - - + + S1 S1 @@ -5697,7 +5875,7 @@ p, li { white-space: pre-wrap; } Ökning - + Yellow Gul @@ -5933,7 +6111,7 @@ p, li { white-space: pre-wrap; } !Kurva(%1) - + FM%1 FM%1 @@ -5983,6 +6161,11 @@ p, li { white-space: pre-wrap; } Portuguese Portugisiska + + + Finnish + Finska + !Flight mode %1 @@ -5999,7 +6182,7 @@ p, li { white-space: pre-wrap; } Flygläge %1 värde - + openTx only accepts %1 points in all curves openTX accepterar bar %1 punkter i alla kurvor @@ -6023,14 +6206,14 @@ p, li { white-space: pre-wrap; } OpenTX accepterar inte detta antal kanaler - + Your radio probably uses a wrong firmware, eeprom size is 4096 but only the first 2048 are used Din sändare har antagligen laddats med felaktig programvara. eeprom-storleken är 4096, men enbart den första hälften används - + Support for MAVLINK devices Stöd för MAVLINK-enheter @@ -6063,12 +6246,12 @@ eeprom-storleken är 4096, men enbart den första hälften används - + Use alternative SQT5 font Använd SQT5-typsnittet - + @@ -6121,24 +6304,24 @@ eeprom-storleken är 4096, men enbart den första hälften används - + Disable HELI menu and cyclic mix support Slå av HELI-menyn och stöd för cykliska mixar - - + + Disable TEMPLATES menu Slå av menyn för Mallar - - + + Disable Global variables Slå av Globala Variabler - + Possibility to enable FAI MODE at field Möjlighet att slå på FAI-LÄGE före pflygning @@ -6181,7 +6364,7 @@ Gruppen bakom OpenTX/Companion. Använd trim från flygläge %1 + Eget trim som offset - + FW: %1 FW: %1 @@ -6342,6 +6525,296 @@ Gasen reverseras om alternativet väljs. Tomgång ligger då uppåt. Trim och ga Automatiska + + SimulatorDialog + + + + Warning + Varning + + + + Joystick enabled but not configured correctly + Joysticken påslagen, men ej rätt inställd + + + + Cannot open joystick, joystick disabled + Joysticken kan inte hittas. Joysticken stängs av + + + + Simulating Tx (%1) + Simulerar sändare (%1) + + + + Firmware %1 error: %2 + Firmware %1 fel: %2 + + + + SimulatorDialog9X + + + Companion Simulator + Companion Simulator + + + + + + + Right Double Click to Reset + Höger dubbelklick nollställer + + + + THR + GAS + + + + RUD + ROD + + + + ELE + HÖJ + + + + AIL + SKE + + + + + Hold X + Håll X + + + + + Fix X + Fixera X + + + + + Fix Y + Fixera Y + + + + + Hold Y + Håll Y + + + + + + + TextLabel + Textettikett + + + + TRN + TRN + + + + GEA + LAN + + + + ID0 + ID0 + + + + ID1 + ID1 + + + + ID2 + ID2 + + + + BEEP + Summer + + + + P1 + P1 + + + + + + 0 % + 0 % + + + + P2 + P2 + + + + P3 + P3 + + + + 9x Simulator + Simulator för 9x + + + + Outputs + Utgångar + + + + SimulatorDialogTaranis + + + Companion Simulator + Companion Simulator + + + + + Hold Y + Håll Y + + + + + Fix Y + Fixera Y + + + + + Fix X + Fixera X + + + + + Hold X + Håll X + + + + + SD + SD + + + + + SC + SC + + + + + + + Right Double Click to Reset + Höger dubbelklick nollställer + + + + + S2 + S2 + + + + + SG + SG + + + + + RS + RS + + + + + SH + SH + + + + + + + TextLabel + Textettikett + + + + + S1 + S1 + + + + + SB + SB + + + + + SA + SA + + + + + SE + SE + + + + + + SF + SF + + + + + LS + LS + + + + Taranis Simulator + Taranissimulator + + + + Outputs + Utgångar + + Telemetry @@ -6685,7 +7158,7 @@ Gasen reverseras om alternativet väljs. Tomgång ligger då uppåt. Trim och ga mAmpere (mA) - + Range Räckvidd @@ -6741,7 +7214,7 @@ Gasen reverseras om alternativet väljs. Tomgång ligger då uppåt. Trim och ga Telemetriskärm %1 - + Winged Shadow How High Winged Shadow How High @@ -6809,7 +7282,7 @@ Gasen reverseras om alternativet väljs. Tomgång ligger då uppåt. Trim och ga Programmets Inställningar - + Simulator capture folder Lagra simulatorbilder i @@ -6822,27 +7295,37 @@ Gasen reverseras om alternativet väljs. Tomgång ligger då uppåt. Trim och ga - + Open Folder Öppna katalog - + User Splash Screens Egna Startbilder - + Edit Settings Redigera Inställningar - + Application Settings Programmet - + + Only show user splash images + Enbart användarens bilder + + + + Show user and companion splash images + Både användarens bilder och Companion-bilder + + + Simulator Settings Simulatorn @@ -6872,12 +7355,11 @@ Gasen reverseras om alternativet väljs. Tomgång ligger då uppåt. Trim och ga Gul - Radio Settings - Radion + Radion - + Mode selection: Mode 1: @@ -7067,17 +7549,21 @@ Detta används av mallen för att koppla kanal till output-nummer. S G H R - + Default Stick Mode Spaktilldelning - - Settings Profile - Profil + + Firmware File + Firmware - + Settings Profile + Profil + + + Splash Screen Startbild @@ -7097,42 +7583,54 @@ Detta används av mallen för att koppla kanal till output-nummer. Sökväg till SD-struktur - + + Firmware Variant + Firmware-typ + + + Select Image Välj Bild - + Offer to write FW to Tx after download Skriv FW till Tx efter nedladdning - + + Radio Settings Profile + Radioprofile + + + + Profile Name + Profilnamn + + + Remove Profile Ta bort Profil - + Clear Image Ta bort Bild - Firmware - Firmware + Firmware - Include companion splashes - Användarens bilder och Companion-bilder + Användarens bilder och Companion-bilder - Only user defined splashes - Enbart användarens bilder + Enbart användarens bilder - + Splash Screen Library Bibliotek för startbilder @@ -7207,38 +7705,38 @@ Detta används av mallen för att koppla kanal till output-nummer. Säkerhetskopiera innan firmware-skrivning - + Select your snapshot folder Välj katalog för snapshots av Tx-simulatorn - - + + No joysticks found Ingen joystick hittades - + Select your library folder Välj bibliotekskatalog - + Select your Models and Settings backup folder Välj folder för automatisk säkerhetskopiering - + Select Google Earth executable Sökväg till Google Earth - + Select the folder replicating your SD structure Välj katalog med en kopia av din SD-struktur - + Not possible to remove profile Det går inte att ta bort profilen @@ -7256,7 +7754,7 @@ Detta används av mallen för att koppla kanal till output-nummer. Det går inte att ladda %1. - + Open Image to load Öppna bild för laddning @@ -7531,7 +8029,7 @@ OBS. Fyll enbart i detta fällt om du är säker på vad du gör. Ingen kontroll Sökväg till AVRDUDE - + Select Location @@ -7617,7 +8115,7 @@ m2560 för v4.1-kort Inställningar för Programmerare - + DFU-UTIL Configuration Inställningar för DFU-UTIL @@ -7632,7 +8130,7 @@ m2560 för v4.1-kort Inställningar för AVRDUDE - + Companion Companion @@ -7646,12 +8144,12 @@ m2560 för v4.1-kort Välj Sändarens Startbild - + Date & Time Dag & Tid - + SVN Subversion @@ -7661,102 +8159,95 @@ m2560 för v4.1-kort Tillåter Companon att skriva till äldre firmware-versioner - Load Image - Ladda Bild + Ladda Bild - Open Splash Library - Öppna bildbibliotek + Öppna bildbibliotek - ... - ... + ... - Substitute image in firmware - Byt ut bilden i firmware-filen + Byt ut bilden i firmware-filen - - + Write to TX Skriv till sändaren - Use image in settings - Använd bilden från inställningarna + Använd bilden från inställningarna - Invert Color - Invertera Bilden + Invertera Bilden - + Check Firmware compatibility Kontrollera att firmware-filen är kompatibel - + Cancel Avbryt - + Write firmware to TX Skriv firmware till sändaren - Open - Öppna + Öppna - - + + - - + + Warning Varning - Burn anyway ! - Starta bränningen! + Starta bränningen! - Open Image to load - Öppna bilden som skall laddas + Öppna bilden som skall laddas - + Images (%1) Bilder (%1) - + - - - + + + + + + Error Fel - + Write Models and Settings to TX Skriv Modeller och Inställningar till sändaren @@ -7766,25 +8257,23 @@ m2560 för v4.1-kort Skriv Modeller och Inställningar från %1 till sändaren - + Choose file to load Models and Settings from Välj fil att ladda Modeller och Inställningar från - + Invalid binary Models and Settings File %1, Proceed anyway ? Ogiltig binärfil med Modeller och Inställningar: %1. Fortsätt i alla fall ? - - Cannot load %1. - Det går inte att ladda %1. + Det går inte att ladda %1. - + Cannot save customized firmware Det gick inte att spara den modifierade firmware-filen @@ -7794,12 +8283,12 @@ m2560 för v4.1-kort Bildfilen hittades inte - + No firmware selected Ingen firmware har valts - + Wrong radio calibration data in profile, Settings not patched Felaktig information i profilen, sändarens-kalibrering kunde inte läsas in @@ -7809,12 +8298,11 @@ m2560 för v4.1-kort Felaktig information i profilen, sändarens inställningar kunde inte läsas in - %1 is not a known firmware - %1 är inte en fimware-fil + %1 är inte en fimware-fil - + <html><head/><body><p>Modify calibration parameters using settings from current profile</p></body></html> <html><head/><body><p>Uppdatera kalibrerings-parametrarna med data från nuvarande profil</p></body></html> @@ -7834,8 +8322,8 @@ m2560 för v4.1-kort Uppdatera med HW-inställningar från profilen - - + + Browse for file Välj fil @@ -7850,12 +8338,42 @@ m2560 för v4.1-kort Nuvarande Profil - + + Use firmware start screen + Använd firmware-startskärmen + + + + Use another start screen + Använd en annan startskärm + + + + Use profile start screen + Använd profilens startskärm + + + + Use library start screen + Använd biblioteks-startskärm + + + Current profile Nuvarande profil - + + Open Firmware File + Öppna firmware-fil + + + + %1 may not be a valid firmware file + %1 är kanske inte en giltig firmware-fil + + + Unable to find file %1! Kan inte hitta filen %1 ! @@ -7876,7 +8394,37 @@ m2560 för v4.1-kort %2. - + + The firmware file is not valid. + Firmware-filen är inte giltig. + + + + There is no start screen image in the firmware file. + Firmware-filen innehåller inte någon startbild. + + + + The profile image %1 does not contain an image. + Profil-bilden %1 innehåller inte någon startbild. + + + + Open image file to use as Tx start screen + Öppna bildfil för användning som radions startsskärm + + + + Image could not be loaded from %1 + Det gick inte att ladda en bild från %1 + + + + The library image could not be loaded + Bild-biblioteket kunde inte öppnas + + + Cannot write file %1: %2. @@ -7891,7 +8439,7 @@ m2560 för v4.1-kort %2. - + Variant Variant @@ -7899,12 +8447,16 @@ m2560 för v4.1-kort compareDialog - Dialog - Dialog + Dialog - + + Compare Models + Jämför Modeller + + + Drag first model here Dra hit första modellen @@ -7929,7 +8481,7 @@ m2560 för v4.1-kort Skriv till fil - + General Model Settings Generella modell-inställningar @@ -8418,7 +8970,7 @@ m2560 för v4.1-kort Dialog - + People who have contributed to this project De som har bidragit till detta projekt @@ -8428,12 +8980,12 @@ m2560 för v4.1-kort Programmerare - + Companion Release Notes Companion Release Notes - + Thank you all !!! Tack till er alla !!! @@ -8448,7 +9000,7 @@ m2560 för v4.1-kort Bidragande - + OpenTX Release Notes OpenTX Release Notes @@ -8461,58 +9013,66 @@ m2560 för v4.1-kort Startbildsredigerare - - + + Invert Invertera - - + + Load FW Ladda FW - - + + Load Pict Ladda Bild - - + + Load Profile Ladda Profil - - + + Save Spara - - + + Open Splash Library Öppna bildbibliotek - Open - Öppna + Öppna - + - + Error Fel - Cannot load embedded FW image from %1. - Det gick inte att ladda bild från FW-filen %1. + Det gick inte att ladda bild från FW-filen %1. + + + + Open Firmware File + Öppna firmware-fil + + + + Can not load embedded image from firmware file %1. + Det gick inte att ladda bild från firmware-filen %1. @@ -8525,7 +9085,7 @@ m2560 för v4.1-kort Det gick inte att ladda profilbilden %1. - + Cannot load the library image %1. Det gick inte att ladda biblioteks-bilden %1. @@ -8564,7 +9124,7 @@ m2560 för v4.1-kort Det finns ingen bild att byta i firmware-filen - + Open Image to load Öppna bild för laddning @@ -8586,9 +9146,10 @@ m2560 för v4.1-kort Det gick inte att spara bilden i filen %1 - - - + + + + ... ... @@ -8601,7 +9162,7 @@ m2560 för v4.1-kort Nedladdning: - + Unable to save the file %1: %2. Kan ej spara filen %1: %2. @@ -8624,7 +9185,7 @@ m2560 för v4.1-kort Säkringar - + Read Fuses Läs in säkringarna @@ -8760,7 +9321,12 @@ p, li { white-space: pre-wrap; } fwPreferencesDialog - + + Downloads + Nedladdningar + + + @@ -8907,16 +9473,15 @@ Används av mallarna för att koppla ihop kanaler med numrerade utgångar.Skriv FW till Tx efter nedladdning - Downloads and Profiles - Nedladdning och Profiler + Nedladdning och Profiler Save Profile Spara Profil - + Menu Language Menyspråk @@ -8967,7 +9532,7 @@ Används av mallarna för att koppla ihop kanaler med numrerade utgångar.Sök efter uppdateringar - + Last downloaded release: %1 Senast nedladdade release: %1 @@ -9009,7 +9574,7 @@ Används av mallarna för att koppla ihop kanaler med numrerade utgångar. joystickDialog - + Configure Joystick Ställ in Joystick @@ -9158,7 +9723,7 @@ Används av mallarna för att koppla ihop kanaler med numrerade utgångar.OK - + Move sticks and pots in every direction making full movement Press next when finished Rör spakar och pottentiometrar. Ge fulla utslag. @@ -9209,7 +9774,7 @@ Tryck på Avbryt för att avburyta kalibreringen Dubblerad koppling av spak - + @@ -9241,7 +9806,7 @@ Tryck på Avbryt för att avburyta kalibreringen Companion Logg-läsare - + Filename Filnamn @@ -9251,7 +9816,7 @@ Tryck på Avbryt för att avburyta kalibreringen Öppna Loggfil - + Zoom Zoom @@ -9266,7 +9831,7 @@ Tryck på Avbryt för att avburyta kalibreringen Y - + Telemetry logs Telemetriloggar @@ -9276,7 +9841,7 @@ Tryck på Avbryt för att avburyta kalibreringen Tid - + Error Fel @@ -9288,7 +9853,7 @@ Tryck på Avbryt för att avburyta kalibreringen %2. - + Select your log file Välj loggfil @@ -9311,7 +9876,7 @@ Tryck på Avbryt för att avburyta kalibreringen mdiChild - + Simulate Tx Simulera sändare @@ -9324,7 +9889,7 @@ Tryck på Avbryt för att avburyta kalibreringen Guide för modellkonfiguaration - + Engine Motor @@ -9738,7 +10303,7 @@ Tryck på Avbryt för att avburyta kalibreringen Dubbla Sidoroder (med 2 servon) - + Apply configuration ? Tillämpa inställningarna? @@ -10155,62 +10720,48 @@ Mode 4: Firmware-info - Last downloaded release: %1 - Senast nedladdade release: %1 + Senast nedladdade release: %1 - - No joysticks found - Ingen joystick hittades + Ingen joystick hittades - Select your Models and Settings backup folder - Välj folder för automatisk säkerhetskopiering + Välj folder för automatisk säkerhetskopiering - Select Google Earth executable - Sökväg till Google Earth + Sökväg till Google Earth - Open Image to load - Öppna bild för laddning + Öppna bild för laddning - Images (%1) - Bilder (%1) + Bilder (%1) - - Error - Fel + Fel - The selected firmware has never been downloaded by Companion. - Firmware-filen har aldrig laddats ned av Companion. + Firmware-filen har aldrig laddats ned av Companion. - The selected firmware cannot be downloaded by Companion. - Firmware-filen kan inte laddas ned av Companion. + Firmware-filen kan inte laddas ned av Companion. - - Cannot load %1. - %1 kunde inte laddas. + %1 kunde inte laddas. - Image stored in settings - Bilden lagras i inställningar + Bilden lagras i inställningar @@ -10261,12 +10812,11 @@ Mode 4: säkerhetskopiera innan skrivning - Select your library folder - Välj bibliotekskatalog + Välj bibliotekskatalog - + Export Profile Exportera Profil @@ -10293,19 +10843,16 @@ May be different from firmware language Får skilja från språket för mjukvaran - Export profile As - Exportera profil som + Exportera profil som - Profile slot is not empty, profile slot %1 will we overwritten.<br>Are you sure ? - Det finns redan en profil i position %1,. Den kommer att skrivas över.<br> Är du säker ? + Det finns redan en profil i position %1,. Den kommer att skrivas över.<br> Är du säker ? - Open Profile to import - Öppna profil för import + Öppna profil för import @@ -10331,14 +10878,12 @@ Får skilja från språket för mjukvaran Använd bara clipboard - Select your snapshot folder - Välj katalog för snapshots + Välj katalog för snapshots - Profile name is empty, profile slot %1 will be deleted.<br>Are you sure ? - Profilnamn saknas, profilplats %1 kommer att raderas.<br> Är du säker? + Profilnamn saknas, profilplats %1 kommer att raderas.<br> Är du säker? @@ -10361,9 +10906,8 @@ Får skilja från språket för mjukvaran Sökväg till SD-struktur - Select the folder replicating your SD structure - Välj katalog som härmar din SD-struktur + Välj katalog som härmar din SD-struktur @@ -10374,7 +10918,7 @@ Får skilja från språket för mjukvaran Dialog - + Close Stäng @@ -10389,7 +10933,7 @@ Får skilja från språket för mjukvaran Skriv till fil - + Setup for: Inställningar för: @@ -10816,434 +11360,327 @@ Får skilja från språket för mjukvaran simulatorDialog - P1 - P1 + P1 - P2 - P2 + P2 - P3 - P3 + P3 - THR - GAS + GAS - RUD - ROD + ROD - ELE - HÖJ + HÖJ - AIL - SKE + SKE - - Hold X - Håll X + Håll X - - Fix X - Fixera X + Fixera X - - Fix Y - Fixera Y + Fixera Y - - Hold Y - Håll Y + Håll Y - - - - TextLabel - Textettikett + Textettikett - TRN - TRN + TRN - GEA - LAN + LAN - ID0 - ID0 + ID0 - ID1 - ID1 + ID1 - ID2 - ID2 + ID2 - BEEP - Summer + Summer - - - - Right Double Click to Reset - Höger dubbelklick nollställer + Höger dubbelklick nollställer - Companion Simulator - Companion Simulator + Companion Simulator - 9x Simulator - Simulator för 9x + Simulator för 9x - Outputs - Utgångar + Utgångar - LS1 - LB1 + LB1 - LS2 - LB2 + LB2 - LS3 - LB3 + LB3 - LS4 - LB4 + LB4 - LS5 - LB5 + LB5 - LS6 - LB6 + LB6 - LS7 - LB7 + LB7 - LS8 - LB8 + LB8 - LS9 - LB9 + LB9 - LSA - LBA + LBA - LSB - LBB + LBB - LSC - LBC + LBC - LSD - LBD + LBD - LSE - LBE + LBE - LSF - LBF + LBF - LSG - LBG + LBG - LSH - LBH + LBH - LSI - LBI + LBI - LSJ - LBJ + LBJ - LSK - LBK + LBK - LSL - LBL + LBL - LSM - LBM + LBM - LSN - LBN + LBN - LSO - LBO + LBO - LSP - LBP + LBP - LSQ - LBQ + LBQ - LSR - LBR + LBR - LSS - LBS + LBS - LST - LBT + LBT - LSU - LBU + LBU - LSV - LBV + LBV - LSW - LBW + LBW - CH1 - KN1 + KN1 - CH9 - KN9 + KN9 - CH2 - KN2 + KN2 - CH10 - KN10 + KN10 - CH3 - KN3 + KN3 - CH11 - KN11 + KN11 - CH4 - KN4 + KN4 - CH12 - KN12 + KN12 - CH5 - KN5 + KN5 - CH13 - KN13 + KN13 - CH6 - KN6 + KN6 - CH14 - KN14 + KN14 - CH7 - KN7 + KN7 - CH15 - KN15 + KN15 - CH8 - KN8 + KN8 - CH16 - KN16 + KN16 - - - - - - - - - - - - - - - - -100.1 - -100.1 + -100.1 - - Warning - Varning + Varning - Joystick enabled but not configured correctly - Joysticken påslagen, men ej rätt inställd + Joysticken påslagen, men ej rätt inställd - Cannot open joystick, joystick disabled - Joysticken kan inte hittas. Joysticken stängs av + Joysticken kan inte hittas. Joysticken stängs av - Firmware %1 error: %2 - Firmware %1 fel: %2 + Firmware %1 fel: %2 - Simulating Tx (%1) - Simulerar sändare (%1) + Simulerar sändare (%1) - Simulating - Simulerar + Simulerar - - - 0 % - 0 % + 0 % - - Flight mode: %1(%2) - - Fligmod: %1(%2) + - Fligmod: %1(%2) splashLibrary - - + + ... ... @@ -11253,7 +11690,7 @@ Får skilja från språket för mjukvaran Bildbibliotek - Sida %1 av %2 - + Warning Varning @@ -11276,428 +11713,312 @@ Får skilja från språket för mjukvaran xsimulatorDialog - - SE - SE + SE - - SA - SA + SA - - SB - SB + SB - - - - Right Double Click to Reset - Höger dubbelklick nollställer + Höger dubbelklick nollställer - - - - TextLabel - Textettikett + Textettikett - - Hold X - Håll X + Håll X - - Fix X - Fixera X + Fixera X - - Fix Y - Fixera Y + Fixera Y - - Hold Y - Håll Y + Håll Y - - SH - SH + SH - - SG - SG + SG - Companion Simulator - Companion Simulator + Companion Simulator - - SD - SD + SD - - SC - SC + SC - Outputs - Utgångar + Utgångar - CH1 - KN1 + KN1 - - - - - - - - - - - - - - - - -100.1 - -100.1 + -100.1 - CH9 - KN9 + KN9 - CH2 - KN2 + KN2 - CH10 - KN10 + KN10 - CH3 - KN3 + KN3 - CH11 - KN11 + KN11 - CH4 - KN4 + KN4 - CH12 - KN12 + KN12 - CH5 - KN5 + KN5 - CH13 - KN13 + KN13 - CH6 - KN6 + KN6 - CH14 - KN14 + KN14 - CH7 - KN7 + KN7 - CH15 - KN15 + KN15 - CH8 - KN8 + KN8 - CH16 - KN16 + KN16 - LSK - LBK + LBK - LSC - LBC + LBC - LSD - LBD + LBD - LS7 - LB7 + LB7 - LSL - LBL + LBL - LSB - LBB + LBB - LS1 - LB1 + LB1 - LSH - LBH + LBH - LSG - LBG + LBG - LSE - LBE + LBE - LSF - LBF + LBF - LS8 - LB8 + LB8 - LS9 - LB9 + LB9 - LSA - LBA + LBA - LSM - LBM + LBM - LSJ - LBJ + LBJ - LSI - LBI + LBI - LS4 - LB4 + LB4 - LS5 - LB5 + LB5 - LS2 - LB2 + LB2 - LS3 - LB3 + LB3 - LS6 - LB6 + LB6 - LSN - LBN + LBN - LSO - LBO + LBO - LSP - LBP + LBP - LSQ - LBQ + LBQ - LSR - LBR + LBR - LSS - LBS + LBS - LST - LBT + LBT - LSU - LBU + LBU - LSV - LBV + LBV - LSW - LBW + LBW - - Warning - Varning + Varning - Joystick enabled but not configured correctly - Joysticken påslagen, men ej rätt inställd + Joysticken påslagen, men ej rätt inställd - Cannot open joystick, joystick disabled - Joysticken kan inte hittas. Joysticken stängs av + Joysticken kan inte hittas. Joysticken stängs av - Firmware %1 error: %2 - Firmware %1 fel: %2 + Firmware %1 fel: %2 - Simulating Tx (%1) - Simulerar sändare (%1) + Simulerar sändare (%1) - Simulating - Simulerar + Simulerar - - - SF - SF + SF - - S2 - S2 + S2 - - RS - RS + RS - - S1 - S1 + S1 - - LS - LS + LS - Taranis Simulator - Taranissimulator + Taranissimulator - - Flight mode: %1(%2) - - Fligmod: %1(%2) + - Fligmod: %1(%2)