📄 preferences.c
字号:
#include <unistd.h>#include <stdlib.h>#include <stdio.h>#include <string.h>#include <getopt.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/ioctl.h>#include <sys/mman.h>#include <fcntl.h>#include <pthread.h>#include <linux/types.h> #include <gtk/gtk.h>#include <glib.h>#include <linux/videodev.h>#include <png.h>#include "gqcam.h"#include "frontend.h"#include "preferences.h"#include "save.h"#include "color.h"#include "greyscale.h"#include "timer.h"void pref_dialog(GtkWidget *widget, struct Camera *camera){ /* GtkWidget *prefdialog; GtkWidget *prefnotebook; GtkWidget *generalpage; GtkWidget *generaltab; GtkWidget *autobright; GtkWidget *filterspage; GtkWidget *filterstab; GtkWidget *rgbswap; GtkWidget *button; GtkWidget *label; */ camera->pref_dialog.prefdialog = gtk_dialog_new(); camera->pref_dialog.prefnotebook = gtk_notebook_new(); gtk_box_pack_start (GTK_BOX (GTK_DIALOG(camera->pref_dialog.prefdialog)->vbox), camera->pref_dialog.prefnotebook, TRUE, TRUE, 0); gtk_widget_show(camera->pref_dialog.prefnotebook); camera->pref_dialog.generalpage = gtk_hbox_new(TRUE, 0); gtk_widget_show(camera->pref_dialog.generalpage); camera->pref_dialog.generaltab = gtk_label_new("General"); gtk_widget_show(camera->pref_dialog.generaltab); camera->pref_dialog.autobright = gtk_check_button_new_with_label ("Autoscale brightness"); gtk_box_pack_start(GTK_BOX(camera->pref_dialog.generalpage), camera->pref_dialog.autobright, TRUE, TRUE, 0); if(camera->autobright) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(camera->pref_dialog.autobright), 1); gtk_widget_show(camera->pref_dialog.autobright); gtk_notebook_append_page(GTK_NOTEBOOK(camera->pref_dialog.prefnotebook), camera->pref_dialog.generalpage, camera->pref_dialog.generaltab); camera->pref_dialog.filterspage = gtk_hbox_new(TRUE, 0); gtk_widget_show(camera->pref_dialog.filterspage); camera->pref_dialog.filterstab = gtk_label_new("Filters"); gtk_widget_show(camera->pref_dialog.filterstab); camera->pref_dialog.rgbswap = gtk_check_button_new_with_label ("RGB -> BGR Conversion"); gtk_box_pack_start(GTK_BOX(camera->pref_dialog.filterspage), camera->pref_dialog.rgbswap, TRUE, TRUE, 0); if(camera->swapcolors) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(camera->pref_dialog.rgbswap), 1); gtk_widget_show(camera->pref_dialog.rgbswap); gtk_notebook_append_page(GTK_NOTEBOOK(camera->pref_dialog.prefnotebook), camera->pref_dialog.filterspage, camera->pref_dialog.filterstab); camera->pref_dialog.button = gtk_button_new_with_label("Ok"); gtk_box_pack_start (GTK_BOX (GTK_DIALOG(camera->pref_dialog.prefdialog)->action_area), camera->pref_dialog.button, TRUE, TRUE, 0); gtk_signal_connect (GTK_OBJECT(camera->pref_dialog.button), "clicked", (GtkSignalFunc) ok_prefs, camera); gtk_widget_show (camera->pref_dialog.button); camera->pref_dialog.button = gtk_button_new_with_label("Apply"); gtk_box_pack_start (GTK_BOX (GTK_DIALOG(camera->pref_dialog.prefdialog)->action_area), camera->pref_dialog.button, TRUE, TRUE, 0); gtk_signal_connect (GTK_OBJECT(camera->pref_dialog.button), "clicked", (GtkSignalFunc) apply_prefs, camera); gtk_widget_show (camera->pref_dialog.button); camera->pref_dialog.button = gtk_button_new_with_label("Close"); gtk_box_pack_start (GTK_BOX (GTK_DIALOG(camera->pref_dialog.prefdialog)->action_area), camera->pref_dialog.button, TRUE, TRUE, 0); gtk_signal_connect (GTK_OBJECT(camera->pref_dialog.button), "clicked", (GtkSignalFunc) closedialog, camera->pref_dialog.prefdialog); gtk_widget_show (camera->pref_dialog.button); gtk_widget_show(camera->pref_dialog.prefdialog); return;}void read_pref_file(FILE *input, struct Camera *camera){ char buff[1024], command[1024]; int val=0; while(fgets(buff, sizeof(buff), input) != NULL){ if((buff[0] != '#') && (buff[0] != '\n')) { sscanf(buff, " %s %d", command, &val); //printf("%s: %d\n", command, val); if(!strcmp(command, "autobrightness")) camera->autobright = val; else if(!strcmp(command, "swaprgb")){ camera->swapcolors = val; } else printf("Unknown preference: %s\n", command); } }}void save_pref_file(FILE *output, struct Camera *camera){ fprintf(output, "autobrightness %d\n", camera->autobright); fprintf(output, "swaprgb %d\n", camera->swapcolors);}void ok_prefs(GtkWidget *widget, struct Camera *camera){ apply_prefs(widget, camera); closedialog(widget, camera->pref_dialog.prefdialog);}void apply_prefs(GtkWidget *widget, struct Camera *camera){ if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(camera->pref_dialog.rgbswap))) camera->swapcolors=1; else camera->swapcolors=0; if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(camera->pref_dialog.autobright))) camera->autobright = 1; else camera->autobright = 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -