void DialogSettings::saveSettings() { QSettings settings(ORGANIZATION_NAME, APPLICATION_NAME); settings.setValue(SETTINGS_AUTORUN, ui->checkAutoRun->isChecked()); settings.setValue(KEY_SEQUENCE_PIXEL, ui->keySequenceEdit->keySequence().toString()); settings.setValue(SETTINGS_FOLLOW_CURSOR, ui->checkFollowCursor->isChecked()); settings.setValue(SETTINGS_COPY_BUFF, ui->checkCopyBuffer->isChecked()); settings.setValue(SETTINGS_TYPE_BUFF, ui->cBoxBufferType->currentIndex()); settings.sync(); #ifdef Q_OS_WIN32 //Добавляем в автозагрузку пользователя QSettings autorun("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat); if(ui->checkAutoRun->isChecked()) { autorun.setValue(APPLICATION_NAME, QDir::toNativeSeparators(QCoreApplication::applicationFilePath())); autorun.sync(); } else { autorun.remove(APPLICATION_NAME); } #endif emit reloadKeySequence(); }
static void present_autorun_for_software_dialog (GMount *mount) { GIcon *icon; int icon_size; g_autoptr (NautilusIconInfo) icon_info = NULL; g_autoptr (GdkPixbuf) pixbuf = NULL; g_autofree char *mount_name = NULL; GtkWidget *dialog; AutorunSoftwareDialogData *data; mount_name = g_mount_get_name (mount); dialog = gtk_message_dialog_new (NULL, /* TODO: parent window? */ 0, GTK_MESSAGE_OTHER, GTK_BUTTONS_CANCEL, _("“%s” contains software intended to be automatically started. Would you like to run it?"), mount_name); gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), "%s", _("If you don’t trust this location or aren’t sure, press Cancel.")); /* This is required because we don't show dialogs in the * window picker and if the window pops under another window * there is no way to get it back. */ gtk_window_set_keep_above (GTK_WINDOW (dialog), TRUE); /* TODO: in a star trek future add support for verifying * software on media (e.g. if it has a certificate, check it * etc.) */ icon = g_mount_get_icon (mount); icon_size = nautilus_get_icon_size_for_stock_size (GTK_ICON_SIZE_DIALOG); icon_info = nautilus_icon_info_lookup (icon, icon_size, gtk_widget_get_scale_factor (GTK_WIDGET (dialog))); pixbuf = nautilus_icon_info_get_pixbuf_at_size (icon_info, icon_size); gtk_window_set_icon (GTK_WINDOW (dialog), pixbuf); data = g_new0 (AutorunSoftwareDialogData, 1); data->dialog = dialog; data->mount = g_object_ref (mount); g_signal_connect (G_OBJECT (mount), "unmounted", G_CALLBACK (autorun_software_dialog_mount_unmounted), data); gtk_dialog_add_button (GTK_DIALOG (dialog), _("_Run"), GTK_RESPONSE_OK); gtk_widget_show_all (dialog); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) { gtk_widget_destroy (dialog); autorun (mount); } }
wxString Path::Normalise(const wxString &path){ #ifdef __WXMSW__ //We only need to set this up once, and do it the first time if(DriveLabels.empty()){ TCHAR drives[256]; if(GetLogicalDriveStrings(256, drives)){ LPTSTR drive = drives; int offset = _tcslen(drive) + 1; while(*drive){ wxString volumename = wxEmptyString; TCHAR label[256]; if(GetVolumeInformation(drive, label, sizeof(label), NULL, 0, NULL, NULL, 0)){ volumename.Printf(wxT("%s"),label); if(volumename != wxEmptyString){ DriveLabels[volumename] = wxString(drive).Left(2); } } drive += offset; } } } #endif if(path.find("@") == wxNOT_FOUND){ return path; } wxString token; wxString normalised = wxEmptyString; wxDateTime now = wxDateTime::Now(); wxStringTokenizer tkz(path, wxT("@"), wxTOKEN_RET_EMPTY_ALL); bool previousmatched = true; wxFileConfig config("", "", Locations::GetSettingsPath() + "variables.ini"); while(tkz.HasMoreTokens()){ token = tkz.GetNextToken(); wxString strValue, read; if(token == "date"){ token = now.FormatISODate(); normalised += token; previousmatched = true; } else if(token == "time"){ token = now.Format("%H") + "-" + now.Format("%M"); normalised += token; previousmatched = true; } else if(token == "YYYY" || token == "year"){ token = now.Format("%Y"); normalised += token; previousmatched = true; } else if(token == "MM" || token == "month"){ token = now.Format("%m"); normalised += token; previousmatched = true; } else if(token == "monthname"){ token = wxDateTime::GetMonthName(wxDateTime::Now().GetMonth()); normalised += token; previousmatched = true; } else if(token == "monthshortname"){ token = wxDateTime::GetMonthName(wxDateTime::Now().GetMonth(), wxDateTime::Name_Abbr); normalised += token; previousmatched = true; } else if(token == "DD" || token == "day"){ token = now.Format("%d"); normalised += token; previousmatched = true; } else if(token == "dayname"){ token = wxDateTime::GetWeekDayName(wxDateTime::Now().GetWeekDay()); normalised += token; previousmatched = true; } else if(token == "dayshortname"){ token = wxDateTime::GetWeekDayName(wxDateTime::Now().GetWeekDay(), wxDateTime::Name_Abbr); normalised += token; previousmatched = true; } else if(token == "hh" || token == "hour"){ token = now.Format(wxT("%H")); normalised += token; previousmatched = true; } else if(token == "mm" || token == "minute"){ token = now.Format("%M"); normalised += token; previousmatched = true; } else if(token == "dayofweek"){ int num = wxDateTime::Now().GetWeekDay(); if(num == 0) num = 7; token = wxString::Format("%d", num); normalised += token; previousmatched = true; } else if(token == "weekofyear"){ int num = wxDateTime::Now().GetWeekOfYear(); token = wxString::Format("%d", num); normalised += token; previousmatched = true; } else if(token == wxT("drive")){ normalised += wxPathOnly(wxStandardPaths::Get().GetExecutablePath()).Left(2); previousmatched = true; } else if(token == wxT("docs")){ normalised += wxStandardPaths::Get().GetDocumentsDir(); previousmatched = true; } else if(token == "username"){ normalised += wxGetUserId(); previousmatched = true; } else if(token == wxT("volume")){ #ifdef __WXMSW__ wxString name = wxEmptyString; WCHAR volumeLabel[256]; GetVolumeInformation(wxPathOnly(wxStandardPaths::Get().GetExecutablePath()).Left(3), volumeLabel, sizeof(volumeLabel), NULL, 0, NULL, NULL, 0); name.Printf(wxT("%s"),volumeLabel); normalised += name; #endif previousmatched = true; } else if(token == wxT("label")){ wxFileConfig autorun("", "", wxPathOnly(wxStandardPaths::Get().GetExecutablePath()).Left(3) + wxFILE_SEP_PATH + wxT("autorun.inf")); wxString label = autorun.Read(wxT("Autorun/Label")); normalised += label; previousmatched = true; } else if(DriveLabels[token] != wxEmptyString){ normalised += DriveLabels[token]; previousmatched = true; } else if(wxGetEnv(token , &strValue)){ normalised += strValue; previousmatched = true; } else if(config.HasGroup(token) && config.Read(token + wxT("/") + wxGetFullHostName(), &read)){ normalised += read; previousmatched = true; } else if(config.HasGroup(token) && config.Read(token + wxT("/") + _("Other"), &read)){ normalised += read; previousmatched = true; } else{ if(previousmatched){ normalised += token; } else{ normalised = normalised + wxT("@") + token; } //This time we did not match previousmatched = false; } } if(normalised.Length() == 2 && normalised.Right(1) == wxT(":")){ normalised += wxFILE_SEP_PATH; } wxFileName flReturn(normalised); if(flReturn.IsOk()){ //If we havent made any changes in this run then return, else scan again //as new variables may have been added return normalised == path ? path : Normalise(normalised); } return wxEmptyString; }
static void present_autorun_for_software_dialog (GMount *mount) { GIcon *icon; int icon_size; CajaIconInfo *icon_info; GdkPixbuf *pixbuf; GtkWidget *image; char *mount_name; GtkWidget *dialog; AutorunSoftwareDialogData *data; mount_name = g_mount_get_name (mount); dialog = gtk_message_dialog_new_with_markup (NULL, /* TODO: parent window? */ 0, GTK_MESSAGE_OTHER, GTK_BUTTONS_CANCEL, _("<big><b>This medium contains software intended to be automatically started. Would you like to run it?</b></big>")); gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), _("The software will run directly from the medium \"%s\". " "You should never run software that you don't trust.\n" "\n" "If in doubt, press Cancel."), mount_name); /* TODO: in a star trek future add support for verifying * software on media (e.g. if it has a certificate, check it * etc.) */ icon = g_mount_get_icon (mount); icon_size = caja_get_icon_size_for_stock_size (GTK_ICON_SIZE_DIALOG); icon_info = caja_icon_info_lookup (icon, icon_size); pixbuf = caja_icon_info_get_pixbuf_at_size (icon_info, icon_size); image = gtk_image_new_from_pixbuf (pixbuf); gtk_widget_set_halign (image, GTK_ALIGN_CENTER); gtk_widget_set_valign (image, GTK_ALIGN_START); gtk_message_dialog_set_image (GTK_MESSAGE_DIALOG (dialog), image); gtk_window_set_title (GTK_WINDOW (dialog), mount_name); gtk_window_set_icon (GTK_WINDOW (dialog), pixbuf); data = g_new0 (AutorunSoftwareDialogData, 1); data->dialog = dialog; data->mount = g_object_ref (mount); g_signal_connect (G_OBJECT (mount), "unmounted", G_CALLBACK (autorun_software_dialog_mount_unmounted), data); gtk_dialog_add_button (GTK_DIALOG (dialog), _("_Run"), GTK_RESPONSE_OK); gtk_widget_show_all (dialog); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) { gtk_widget_destroy (dialog); autorun (mount); } g_object_unref (icon_info); g_object_unref (pixbuf); g_free (mount_name); }