// utils.cxx // // utility functions for the Glaum project // #include "prototype.h" #include "defines.h" #include #include #include #include #include "glaum.xpm" void fileConvert(Global *global, std::string src, std::string dest) { std::stringstream s; s << "mpg123 --cdr - \"" << src << "\" 2>&1 > \"" << dest << "\""; getShellOutput(global, s.str()); } void syncPreferences(Global *global) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(global->getSudoCheckbox()), global->useSudo() ? TRUE : FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(global->getDialogLockCheckbox()), global->dialogIsLocked() ? TRUE : FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(global->getCdrecordVerboseCheckbox()), global->useVerboseCdrecordOutput() ? TRUE : FALSE); std::stringstream s; s << global->getCdrecordSpeed(); global->setCdrecordSpeedEntry(s.str()); global->setCdrecordDeviceEntry(global->getCdrecordDevice()); } void getShellOutput(Global *global, std::string cmd) { FILE *read_fp; char buffer[PIPE_BUFFER_SIZE + 1]; int chars_read = 0; memset(buffer, '\0', sizeof(buffer)); read_fp = popen(cmd.c_str(), "r"); if(read_fp != NULL) { chars_read = fread(buffer, sizeof(char), PIPE_BUFFER_SIZE, read_fp); while(chars_read > 0) { buffer[chars_read - 1] = '\0'; global->appendTextWidget(buffer); chars_read = fread(buffer, sizeof(char), PIPE_BUFFER_SIZE, read_fp); } pclose(read_fp); } else { global->message("Error opening pipe"); } } void makePreferencesDialogBox(Global *global) { GtkWidget *vbox; GtkWidget *hbox; GtkWidget *label; GtkWidget *button; GtkWidget **dbox; dbox = global->getpPreferencesDialogWidget(); *dbox = gtk_window_new(GTK_WINDOW_DIALOG); gtk_window_set_title(GTK_WINDOW(*dbox), "Glaum Preferences"); gtk_container_border_width(GTK_CONTAINER(*dbox), WINDOW_SPACING); X(*dbox, "delete_event", gtk_widget_destroy, (gpointer)global); vbox = gtk_vbox_new(FALSE, VBOX_DEF_SPACING); gtk_container_add(GTK_CONTAINER(*dbox), vbox); gtk_widget_show(vbox); gtk_box_pack_start(GTK_BOX(vbox), global->getSudoCheckbox(), TRUE, TRUE, CHECKBOX_SPACING); gtk_widget_show(global->getSudoCheckbox()); gtk_box_pack_start(GTK_BOX(vbox), global->getDialogLockCheckbox(), TRUE, TRUE, CHECKBOX_SPACING); gtk_widget_show(global->getDialogLockCheckbox()); gtk_box_pack_start(GTK_BOX(vbox), global->getCdrecordVerboseCheckbox(), TRUE, TRUE, CHECKBOX_SPACING); gtk_widget_show(global->getCdrecordVerboseCheckbox()); hbox = gtk_hbox_new(FALSE, HBOX_DEF_SPACING); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, HBOX_SPACING); gtk_widget_show(hbox); label = gtk_label_new("Recording Speed"); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, LABEL_SPACING); gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(hbox), global->getCdrecordSpeedEntryWidget(), FALSE, FALSE, ENTRY_SPACING); gtk_widget_show(global->getCdrecordSpeedEntryWidget()); hbox = gtk_hbox_new(FALSE, HBOX_DEF_SPACING); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, HBOX_SPACING); gtk_widget_show(hbox); label = gtk_label_new("CD-R SCSI ID"); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, LABEL_SPACING); gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(hbox), global->getCdrecordDeviceEntryWidget(), FALSE, FALSE, ENTRY_SPACING); gtk_widget_show(global->getCdrecordDeviceEntryWidget()); hbox = gtk_hbox_new(FALSE, HBOX_DEF_SPACING); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, HBOX_SPACING); gtk_widget_show(hbox); button = gtk_button_new_with_label("OK"); gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, BUTTON_SPACING); X(button, "clicked", apply_settings, (gpointer)global); gtk_widget_show(button); button = gtk_button_new_with_label("Cancel"); gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, BUTTON_SPACING); X(button, "clicked", cancel_settings, (gpointer)global); gtk_widget_show(button); } void makeAboutDialogBox(Global *global) { GtkWidget **dbox; GtkWidget *vbox; GtkWidget *hbox; GtkWidget *label; GtkWidget *button; GtkWidget *pixmapwid; GtkWidget *separator; GdkPixmap *pixmap; GdkBitmap *mask; GtkStyle *style; dbox = global->getpAboutDialogWidget(); *dbox = gtk_window_new(GTK_WINDOW_DIALOG); gtk_window_set_title(GTK_WINDOW(*dbox), "About Glaum"); gtk_container_set_border_width(GTK_CONTAINER(*dbox), WINDOW_SPACING); X(*dbox, "delete_event", gtk_widget_destroy, (gpointer)global); vbox = gtk_vbox_new(FALSE, VBOX_DEF_SPACING); gtk_container_add(GTK_CONTAINER(*dbox), vbox); gtk_widget_show(vbox); style = gtk_widget_get_style(*dbox); pixmap = gdk_pixmap_create_from_xpm_d((*dbox)->window, &mask, &style->bg[GTK_STATE_NORMAL], (gchar **)glaum_xpm); pixmapwid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmapwid); hbox = gtk_hbox_new(FALSE, HBOX_DEF_SPACING); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, HBOX_SPACING); gtk_widget_show(hbox); gtk_container_add(GTK_CONTAINER(hbox), pixmapwid); label = gtk_label_new(APPLICATION_TITLE); gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, LABEL_SPACING); gtk_widget_show(label); separator = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(vbox), separator, TRUE, TRUE, SEPARATOR_SPACING); gtk_widget_show(separator); label = gtk_label_new("It's a classic case of glomming. Americans seized on"); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, LABEL_SPACING); gtk_widget_show(label); label = gtk_label_new("\"glaum\" (a term from Scots dialect that basically means \"grab\")"); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, LABEL_SPACING); gtk_widget_show(label); label = gtk_label_new("and appropriated it as our own, changing it to \"glom\" in the"); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, LABEL_SPACING); gtk_widget_show(label); label = gtk_label_new("the process. \"Glom\" first meant \"steal\" (as in the purse-snatching,"); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, LABEL_SPACING); gtk_widget_show(label); label = gtk_label_new("robber kind of stealing), but over time that meaning got"); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, LABEL_SPACING); gtk_widget_show(label); label = gtk_label_new("stretched. Today, \"glom\" often figuratively extends that original"); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, LABEL_SPACING); gtk_widget_show(label); label = gtk_label_new("\"steal\" sense. A busy professional might glom a weekend getaway,"); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, LABEL_SPACING); gtk_widget_show(label); label = gtk_label_new("for example. \"Glom\" also appears frequently in the phrase \"glom"); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, LABEL_SPACING); gtk_widget_show(label); label = gtk_label_new("on to,\" which can mean \"to appropriate for one's own use\" (\"glom"); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, LABEL_SPACING); gtk_widget_show(label); label = gtk_label_new("on to another's idea\"); \"to grab hold of\" (\"glom on to the last"); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, LABEL_SPACING); gtk_widget_show(label); label = gtk_label_new("cookie\"); or \"to latch on to\" (\"glom on to an opinion\" or \"glom"); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, LABEL_SPACING); gtk_widget_show(label); label = gtk_label_new("on to an influential friend\")."); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, LABEL_SPACING); gtk_widget_show(label); label = gtk_label_new("From Merriam-Webster, Inc (www.Merriam-Webster.com)"); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, LABEL_SPACING); gtk_widget_show(label); label = gtk_label_new("By A. Jacob Cord"); gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, LABEL_SPACING); gtk_widget_show(label); button = gtk_button_new_with_label("Close"); gtk_box_pack_start(GTK_BOX(vbox), button, TRUE, TRUE, BUTTON_SPACING); X(button, "clicked", about_close, (gpointer)global); gtk_widget_show(button); }