⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 support.c

📁 Screentest is a CRT/LCD screen testing utility.
💻 C
字号:
/* $Id: support.c,v 1.1.1.1 2001/08/20 18:10:55 kas Exp $ *//* *  Screentest - CRT monitor testing utility. *  http://www.fi.muni.cz/~kas/screentest/ *  Copyright (C) 2001 Jan "Yenya" Kasprzak <kas@fi.muni.cz> * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License version 2 as *  published by the Free Software Foundation. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA *//* * DO NOT EDIT THIS FILE - it is generated by Glade. */#ifdef HAVE_CONFIG_H#  include <config.h>#endif#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#include <string.h>#include <gtk/gtk.h>#include "support.h"/* This is an internally used function to check if a pixmap file exists. */static gchar *check_file_exists(const gchar * directory,				const gchar * filename);/* This is an internally used function to create pixmaps. */static GtkWidget *create_dummy_pixmap(GtkWidget * widget);GtkWidget *lookup_widget(GtkWidget * widget, const gchar * widget_name){	GtkWidget *parent, *found_widget;	for (;;) {		if (GTK_IS_MENU(widget))			parent =			    gtk_menu_get_attach_widget(GTK_MENU(widget));		else			parent = widget->parent;		if (parent == NULL)			break;		widget = parent;	}	found_widget =	    (GtkWidget *) gtk_object_get_data(GTK_OBJECT(widget),					      widget_name);	if (!found_widget)		g_warning("Widget not found: %s", widget_name);	return found_widget;}/* This is a dummy pixmap we use when a pixmap can't be found. */static char *dummy_pixmap_xpm[] = {/* columns rows colors chars-per-pixel */	"1 1 1 1",	"  c None",/* pixels */	" "};/* This is an internally used function to create pixmaps. */static GtkWidget *create_dummy_pixmap(GtkWidget * widget){	GdkColormap *colormap;	GdkPixmap *gdkpixmap;	GdkBitmap *mask;	GtkWidget *pixmap;	colormap = gtk_widget_get_colormap(widget);	gdkpixmap =	    gdk_pixmap_colormap_create_from_xpm_d(NULL, colormap, &mask,						  NULL, dummy_pixmap_xpm);	if (gdkpixmap == NULL)		g_error("Couldn't create replacement pixmap.");	pixmap = gtk_pixmap_new(gdkpixmap, mask);	gdk_pixmap_unref(gdkpixmap);	gdk_bitmap_unref(mask);	return pixmap;}static GList *pixmaps_directories = NULL;/* Use this function to set the directory containing installed pixmaps. */void add_pixmap_directory(const gchar * directory){	pixmaps_directories = g_list_prepend(pixmaps_directories,					     g_strdup(directory));}/* This is an internally used function to create pixmaps. */GtkWidget *create_pixmap(GtkWidget * widget, const gchar * filename){	gchar *found_filename = NULL;	GdkColormap *colormap;	GdkPixmap *gdkpixmap;	GdkBitmap *mask;	GtkWidget *pixmap;	GList *elem;	if (!filename || !filename[0])		return create_dummy_pixmap(widget);	/* We first try any pixmaps directories set by the application. */	elem = pixmaps_directories;	while (elem) {		found_filename =		    check_file_exists((gchar *) elem->data, filename);		if (found_filename)			break;		elem = elem->next;	}	/* If we haven't found the pixmap, try the source directory. */	if (!found_filename) {		found_filename = check_file_exists("../pixmaps", filename);	}	if (!found_filename) {		g_warning("Couldn't find pixmap file: %s", filename);		return create_dummy_pixmap(widget);	}	colormap = gtk_widget_get_colormap(widget);	gdkpixmap =	    gdk_pixmap_colormap_create_from_xpm(NULL, colormap, &mask,						NULL, found_filename);	if (gdkpixmap == NULL) {		g_warning("Error loading pixmap file: %s", found_filename);		g_free(found_filename);		return create_dummy_pixmap(widget);	}	g_free(found_filename);	pixmap = gtk_pixmap_new(gdkpixmap, mask);	gdk_pixmap_unref(gdkpixmap);	gdk_bitmap_unref(mask);	return pixmap;}/* This is an internally used function to check if a pixmap file exists. */gchar *check_file_exists(const gchar * directory, const gchar * filename){	gchar *full_filename;	struct stat s;	gint status;	full_filename = (gchar *) g_malloc(strlen(directory) + 1					   + strlen(filename) + 1);	strcpy(full_filename, directory);	strcat(full_filename, G_DIR_SEPARATOR_S);	strcat(full_filename, filename);	status = stat(full_filename, &s);	if (status == 0 && S_ISREG(s.st_mode))		return full_filename;	g_free(full_filename);	return NULL;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -