Exemplo n.º 1
0
void configure()
{
    ReadSettings();
    auto drives = GetOpticalDriveList();
    DialogBoxParam(s_hinstance, MAKEINTRESOURCE(IDD_CONFIG), GetActiveWindow(),
                   ConfigProc, reinterpret_cast<LPARAM>(&drives));
}
Exemplo n.º 2
0
void configure()
{
    ReadSettings();

    GtkDialogFlags flags = static_cast<GtkDialogFlags>(GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT);
    GtkWidget *dialog = gtk_dialog_new_with_buttons("Config", nullptr,
                                                    flags,
                                                    "Cancel", GTK_RESPONSE_REJECT,
                                                    "Ok", GTK_RESPONSE_ACCEPT,
                                                    nullptr);

    GtkWidget *label = gtk_label_new("Device:");
    GtkWidget *combobox = gtk_combo_box_text_new();

    auto drives = GetOpticalDriveList();
    std::string drive;
    g_settings.Get("drive", drive);
    for (size_t n = 0; n < drives.size(); ++n) {
        gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combobox), drives[n].c_str());
        if (drive == drives[n])
            gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), n);
    }

#if GTK_MAJOR_VERSION >= 3
    GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
#else
    GtkWidget *box = gtk_vbox_new(0, 10);
#endif
    gtk_box_pack_start(GTK_BOX(box), label, 0, 0, 0);
    gtk_box_pack_start(GTK_BOX(box), combobox, 0, 0, 10);

    GtkWidget *content_area = gtk_dialog_get_content_area(GTK_DIALOG(dialog));
    gtk_container_add(GTK_CONTAINER(content_area), box);

    Settings settings_copy = g_settings;
    g_signal_connect(combobox, "changed", G_CALLBACK(ComboboxCallback), &settings_copy);

    gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER_ALWAYS);
    gtk_widget_show_all(dialog);
    if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
        g_settings = settings_copy;
        WriteSettings();
    }
    gtk_widget_destroy(dialog);
}
Exemplo n.º 3
0
std::wstring GetValidDrive()
{
    std::wstring drive;
    g_settings.Get("drive", drive);
    if (drive.empty() || GetDriveType(drive.c_str()) != DRIVE_CDROM) {
        auto drives = GetOpticalDriveList();
        if (drives.empty())
            return {};
        drive = drives.front();
    }

    std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
    printf(" * CDVD: Opening drive '%s'...\n", converter.to_bytes(drive).c_str());

    // The drive string has the form "X:\", but to open the drive, the string
    // has to be in the form "\\.\X:"
    drive.pop_back();
    drive.insert(0, L"\\\\.\\");
    return drive;
}