ExecFileDialog::ExecFileDialog(FmFileInfo* file, QWidget* parent, Qt::WindowFlags f): QDialog (parent, f), fileInfo_(fm_file_info_ref(file)), result_(FM_FILE_LAUNCHER_EXEC_CANCEL), ui(new Ui::ExecFileDialog()) { ui->setupUi(this); // show file icon FmIcon* icon = fm_file_info_get_icon(fileInfo_); ui->icon->setPixmap(IconTheme::icon(icon).pixmap(QSize(48, 48))); QString msg; if(fm_file_info_is_text(file)) { msg = tr("This text file '%1' seems to be an executable script.\nWhat do you want to do with it?") .arg(QString::fromUtf8(fm_file_info_get_disp_name(file))); ui->execTerm->setDefault(true); } else { msg= tr("This file '%1' is executable. Do you want to execute it?") .arg(QString::fromUtf8(fm_file_info_get_disp_name(file))); ui->exec->setDefault(true); ui->open->hide(); } ui->msg->setText(msg); }
static gint on_ask_rename(FmFileOpsJob* job, FmFileInfo* src, FmFileInfo* dest, char** new_name, FmProgressDisplay* data) { int res; GtkBuilder* builder; GtkDialog *dlg; GtkImage *src_icon, *dest_icon; GtkLabel *src_fi, *dest_fi; GtkEntry *filename; GtkToggleButton *apply_all; char* tmp; const char* disp_size; FmPath* path; FmIcon* icon; /* return default operation if the user has set it */ if(data->default_opt) return data->default_opt; builder = gtk_builder_new(); path = fm_file_info_get_path(dest); icon = fm_file_info_get_icon(src); if(data->timer) g_timer_stop(data->timer); gtk_builder_set_translation_domain(builder, GETTEXT_PACKAGE); ensure_dlg(data); gtk_builder_add_from_file(builder, PACKAGE_UI_DIR "/ask-rename.ui", NULL); dlg = GTK_DIALOG(gtk_builder_get_object(builder, "dlg")); src_icon = GTK_IMAGE(gtk_builder_get_object(builder, "src_icon")); src_fi = GTK_LABEL(gtk_builder_get_object(builder, "src_fi")); dest_icon = GTK_IMAGE(gtk_builder_get_object(builder, "dest_icon")); dest_fi = GTK_LABEL(gtk_builder_get_object(builder, "dest_fi")); filename = GTK_ENTRY(gtk_builder_get_object(builder, "filename")); apply_all = GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "apply_all")); gtk_window_set_transient_for(GTK_WINDOW(dlg), GTK_WINDOW(data->dlg)); gtk_image_set_from_gicon(src_icon, icon->gicon, GTK_ICON_SIZE_DIALOG); disp_size = fm_file_info_get_disp_size(src); if(disp_size) { tmp = g_strdup_printf(_("Type: %s\nSize: %s\nModified: %s"), fm_file_info_get_desc(src), disp_size, fm_file_info_get_disp_mtime(src)); } else { tmp = g_strdup_printf(_("Type: %s\nModified: %s"), fm_file_info_get_desc(src), fm_file_info_get_disp_mtime(src)); } gtk_label_set_text(src_fi, tmp); g_free(tmp); gtk_image_set_from_gicon(dest_icon, icon->gicon, GTK_ICON_SIZE_DIALOG); disp_size = fm_file_info_get_disp_size(dest); if(disp_size) { tmp = g_strdup_printf(_("Type: %s\nSize: %s\nModified: %s"), fm_file_info_get_desc(dest), fm_file_info_get_disp_size(dest), fm_file_info_get_disp_mtime(dest)); } else { tmp = g_strdup_printf(_("Type: %s\nModified: %s"), fm_file_info_get_desc(dest), fm_file_info_get_disp_mtime(dest)); } gtk_label_set_text(dest_fi, tmp); g_free(tmp); tmp = g_filename_display_name(fm_path_get_basename(path)); gtk_entry_set_text(filename, tmp); g_free(tmp); tmp = (char*)fm_file_info_get_disp_name(dest); /* FIXME: cast const to char */ g_object_set_data(G_OBJECT(filename), "old_name", tmp); g_signal_connect(filename, "changed", G_CALLBACK(on_filename_changed), gtk_builder_get_object(builder, "rename")); g_object_unref(builder); res = gtk_dialog_run(dlg); switch(res) { case RESPONSE_RENAME: *new_name = g_strdup(gtk_entry_get_text(filename)); res = FM_FILE_OP_RENAME; break; case RESPONSE_OVERWRITE: res = FM_FILE_OP_OVERWRITE; break; case RESPONSE_SKIP: res = FM_FILE_OP_SKIP; break; default: res = FM_FILE_OP_CANCEL; } if(gtk_toggle_button_get_active(apply_all)) { if(res == RESPONSE_OVERWRITE || res == FM_FILE_OP_SKIP) data->default_opt = res; } gtk_widget_destroy(GTK_WIDGET(dlg)); if(data->timer) g_timer_continue(data->timer); return res; }
static GObject* read_simple_icon(FmFileInfo * fi, guint size) { return (GObject*) fm_pixbuf_from_icon(fm_file_info_get_icon(fi), size); }
RenameDialog::RenameDialog(FmFileInfo* src, FmFileInfo* dest, QWidget* parent, Qt::WindowFlags f): QDialog(parent, f), action_(ActionIgnore), applyToAll_(false) { ui = new Ui::RenameDialog(); ui->setupUi(this); FmPath* path = fm_file_info_get_path(dest); FmIcon* srcIcon = fm_file_info_get_icon(src); FmIcon* destIcon = fm_file_info_get_icon(dest); // show info for the source file QIcon icon = IconTheme::icon(srcIcon); QSize iconSize(fm_config->big_icon_size, fm_config->big_icon_size); QPixmap pixmap = icon.pixmap(iconSize); ui->srcIcon->setPixmap(pixmap); QString infoStr; const char* disp_size = fm_file_info_get_disp_size(src); if(disp_size) { infoStr = QString(tr("Type: %1\nSize: %2\nModified: %3")) .arg(QString::fromUtf8(fm_file_info_get_desc(src))) .arg(QString::fromUtf8(disp_size)) .arg(QString::fromUtf8(fm_file_info_get_disp_mtime(src))); } else { infoStr = QString(tr("Type: %1\nModified: %2")) .arg(QString::fromUtf8(fm_file_info_get_desc(src))) .arg(QString::fromUtf8(fm_file_info_get_disp_mtime(src))); } ui->srcInfo->setText(infoStr); // show info for the dest file icon = IconTheme::icon(destIcon); pixmap = icon.pixmap(iconSize); ui->destIcon->setPixmap(pixmap); disp_size = fm_file_info_get_disp_size(dest); if(disp_size) { infoStr = QString(tr("Type: %1\nSize: %2\nModified: %3")) .arg(QString::fromUtf8(fm_file_info_get_desc(dest))) .arg(QString::fromUtf8(disp_size)) .arg(QString::fromUtf8(fm_file_info_get_disp_mtime(dest))); } else { infoStr = QString(tr("Type: %1\nModified: %3")) .arg(QString::fromUtf8(fm_file_info_get_desc(src))) .arg(QString::fromUtf8(fm_file_info_get_disp_mtime(src))); } ui->destInfo->setText(infoStr); char* basename = fm_path_display_basename(path); ui->fileName->setText(QString::fromUtf8(basename)); oldName_ = basename; g_free(basename); connect(ui->fileName, &QLineEdit::textChanged, this, &RenameDialog::onFileNameChanged); // add "Rename" button QAbstractButton* button = ui->buttonBox->button(QDialogButtonBox::Ok); button->setText(tr("&Overwrite")); // FIXME: there seems to be no way to place the Rename button next to the overwrite one. renameButton_ = ui->buttonBox->addButton(tr("&Rename"), QDialogButtonBox::ActionRole); connect(renameButton_, &QPushButton::clicked, this, &RenameDialog::onRenameClicked); renameButton_->setEnabled(false); // disabled by default button = ui->buttonBox->button(QDialogButtonBox::Ignore); connect(button, &QPushButton::clicked, this, &RenameDialog::onIgnoreClicked); }
void FilePropsDialog::initGeneralPage() { // update UI if(singleType) { // all files are of the same mime-type FmIcon* icon = NULL; // FIXME: handle custom icons for some files // FIXME: display special property pages for special files or // some specified mime-types. if(singleFile) { // only one file is selected. icon = fm_file_info_get_icon(fileInfo); } if(mimeType) { if(!icon) // get an icon from mime type if needed icon = fm_mime_type_get_icon(mimeType); ui->fileType->setText(QString::fromUtf8(fm_mime_type_get_desc(mimeType))); ui->mimeType->setText(QString::fromUtf8(fm_mime_type_get_type(mimeType))); } if(icon) { ui->iconButton->setIcon(IconTheme::icon(icon)); } if(singleFile && fm_file_info_is_symlink(fileInfo)) { ui->target->setText(QString::fromUtf8(fm_file_info_get_target(fileInfo))); } else { ui->target->hide(); ui->targetLabel->hide(); } } // end if(singleType) else { // not singleType, multiple files are selected at the same time ui->fileType->setText(tr("Files of different types")); ui->target->hide(); ui->targetLabel->hide(); } // FIXME: check if all files has the same parent dir, mtime, or atime if(singleFile) { // only one file is selected FmPath* parent_path = fm_path_get_parent(fm_file_info_get_path(fileInfo)); char* parent_str = parent_path ? fm_path_display_name(parent_path, true) : NULL; ui->fileName->setText(QString::fromUtf8(fm_file_info_get_disp_name(fileInfo))); if(parent_str) { ui->location->setText(QString::fromUtf8(parent_str)); g_free(parent_str); } else ui->location->clear(); ui->lastModified->setText(QString::fromUtf8(fm_file_info_get_disp_mtime(fileInfo))); // FIXME: need to encapsulate this in an libfm API. time_t atime; struct tm tm; atime = fm_file_info_get_atime(fileInfo); localtime_r(&atime, &tm); char buf[128]; strftime(buf, sizeof(buf), "%x %R", &tm); ui->lastAccessed->setText(QString::fromUtf8(buf)); } else { ui->fileName->setText(tr("Multiple Files")); ui->fileName->setEnabled(false); } initApplications(); // init applications combo box // calculate total file sizes fileSizeTimer = new QTimer(this); connect(fileSizeTimer, &QTimer::timeout, this, &FilePropsDialog::onFileSizeTimerTimeout); fileSizeTimer->start(600); g_signal_connect(deepCountJob, "finished", G_CALLBACK(onDeepCountJobFinished), this); gboolean ret = fm_job_run_async(FM_JOB(deepCountJob)); }