mirror of
https://gitlab.gnome.org/GNOME/nautilus
synced 2024-09-19 07:41:26 +00:00
New file documenting the directory layout of components/services.
* components/services/docs/directories: New file documenting the directory layout of components/services. * components/services/inventory/.cvsignore, components/services/inventory/Makefile.am, components/services/inventory/command-line/README, components/services/inventory/lib/.cvsignore, components/services/inventory/lib/Makefile.am, components/services/inventory/lib/eazel-inventory-shared.c, components/services/inventory/lib/eazel-inventory-shared.h, components/services/inventory/nautilus-view/.cvsignore, components/services/inventory/nautilus-view/Makefile.am, components/services/inventory/nautilus-view/main.c, components/services/inventory/nautilus-view/nautilus-inventory-view.c, components/services/inventory/nautilus-view/nautilus-inventory-view.h, components/services/inventory/nautilus-view/nautilus-inventory-view.oafinfo: Remove old dead inventory code. * components/services/login/command-line/README: Remove last file in otherwise-empty directory. * components/services/summary/command-line/README: Ditto. * cut-n-paste-code/widgets/gtkclist/.cvsignore: Ditto.
This commit is contained in:
parent
a609003378
commit
8711a09966
25
ChangeLog
25
ChangeLog
|
@ -1,3 +1,28 @@
|
||||||
|
2000-12-13 Maciej Stachowiak <mjs@eazel.com>
|
||||||
|
|
||||||
|
* components/services/docs/directories: New file documenting the
|
||||||
|
directory layout of components/services.
|
||||||
|
|
||||||
|
* components/services/inventory/.cvsignore,
|
||||||
|
components/services/inventory/Makefile.am,
|
||||||
|
components/services/inventory/command-line/README,
|
||||||
|
components/services/inventory/lib/.cvsignore,
|
||||||
|
components/services/inventory/lib/Makefile.am,
|
||||||
|
components/services/inventory/lib/eazel-inventory-shared.c,
|
||||||
|
components/services/inventory/lib/eazel-inventory-shared.h,
|
||||||
|
components/services/inventory/nautilus-view/.cvsignore,
|
||||||
|
components/services/inventory/nautilus-view/Makefile.am,
|
||||||
|
components/services/inventory/nautilus-view/main.c,
|
||||||
|
components/services/inventory/nautilus-view/nautilus-inventory-view.c,
|
||||||
|
components/services/inventory/nautilus-view/nautilus-inventory-view.h,
|
||||||
|
components/services/inventory/nautilus-view/nautilus-inventory-view.oafinfo:
|
||||||
|
Remove old dead inventory code.
|
||||||
|
|
||||||
|
* components/services/login/command-line/README: Remove last file
|
||||||
|
in otherwise-empty directory.
|
||||||
|
* components/services/summary/command-line/README: Ditto.
|
||||||
|
* cut-n-paste-code/widgets/gtkclist/.cvsignore: Ditto.
|
||||||
|
|
||||||
2000-12-13 Andy Hertzfeld <andy@eazel.com>
|
2000-12-13 Andy Hertzfeld <andy@eazel.com>
|
||||||
|
|
||||||
* icons/Makefile.am:
|
* icons/Makefile.am:
|
||||||
|
|
44
components/services/docs/directories
Normal file
44
components/services/docs/directories
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
docs/ - documentation
|
||||||
|
|
||||||
|
install/ - install service
|
||||||
|
install/command-line/ - command-line installer
|
||||||
|
install/idl/ - Install service IDL
|
||||||
|
install/lib/ - install service libraries
|
||||||
|
install/nautilus-view/ - Nautilus install view
|
||||||
|
install/server/ - back-end implementation for install service
|
||||||
|
|
||||||
|
login/ - Login code
|
||||||
|
login/nautilus-view - change password view
|
||||||
|
|
||||||
|
nautilus-dependent-shared/ - shared code that depends on libnautilus-extensions
|
||||||
|
nautilus-dependent-shared/icons - icons related to various services
|
||||||
|
|
||||||
|
summary/ - summary view and related
|
||||||
|
summary/lib -
|
||||||
|
summary/nautilus-view - Actual summary view code
|
||||||
|
summary/nautilus-view/icons - images needed for the summary view
|
||||||
|
summary/nautilus-view/icons/gray_tab_pieces - the images for drawing the grey summary view tabs
|
||||||
|
summary/nautilus-view/tests - test data for the summary view
|
||||||
|
|
||||||
|
time/ - time service (status unknown)
|
||||||
|
time/command-line/ - command-line version of time service
|
||||||
|
time/idl/ - IDL for time service
|
||||||
|
time/nautilus-view/ - Nautilus View for time service
|
||||||
|
time/service/ - back-end implementation for time service
|
||||||
|
|
||||||
|
|
||||||
|
trilobite - general framework stuff for services
|
||||||
|
trilobite/doc - documentation
|
||||||
|
trilobite/helper - helper program for executing priveleged operations
|
||||||
|
trilobite/idl - IDL files for trilobite service framework
|
||||||
|
trilobite/libtrilobite - library of shared core code for service components
|
||||||
|
trilobite/sample - sample service
|
||||||
|
trilobite/sample/command-line - command-line version of sample service
|
||||||
|
trilobite/sample/idl - IDL files for sample service
|
||||||
|
trilobite/sample/lib - library for sample service
|
||||||
|
trilobite/sample/nautilus-view - Nautilus view for sample service
|
||||||
|
trilobite/sample/nautilus-view/icons - icons directory for sample service
|
||||||
|
trilobite/sample/service - back-end implementation for sample service
|
||||||
|
|
||||||
|
vault - code related to the vault (online storage) service
|
||||||
|
vault/command-line - command-line tool for accessing the vault
|
|
@ -1,2 +0,0 @@
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
|
@ -1 +0,0 @@
|
||||||
SUBDIRS = lib nautilus-view
|
|
|
@ -1 +0,0 @@
|
||||||
The command-line implementation of inventory will be part of eazel-service. It will be located in nautilus/components/services/startup/command-line.
|
|
|
@ -1,7 +0,0 @@
|
||||||
.deps
|
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
trilobite-eazel-inventory-common.c
|
|
||||||
trilobite-eazel-inventory-skels.c
|
|
||||||
trilobite-eazel-inventory-stubs.c
|
|
||||||
trilobite-eazel-inventory.h
|
|
|
@ -1,22 +0,0 @@
|
||||||
NULL =
|
|
||||||
|
|
||||||
INCLUDES = \
|
|
||||||
-DPREFIX=\"$(prefix)\" \
|
|
||||||
-DG_LOG_DOMAIN=\"trilobite-eazel-inventory\" \
|
|
||||||
-DSTANDALONE \
|
|
||||||
-I$(top_srcdir) \
|
|
||||||
-I$(top_builddir) \
|
|
||||||
-I$(top_srcdir)/components/services/trilobite \
|
|
||||||
-I/usr/include/rpm \
|
|
||||||
$(GNOME_CFLAGS) \
|
|
||||||
$(GCONF_CFLAGS) \
|
|
||||||
$(GHTTP_CFLAGS) \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
noinst_LIBRARIES = libinventory.a
|
|
||||||
|
|
||||||
libinventory_a_SOURCES = \
|
|
||||||
eazel-inventory-shared.h \
|
|
||||||
eazel-inventory-shared.c \
|
|
||||||
$(NULL)
|
|
||||||
|
|
|
@ -1,311 +0,0 @@
|
||||||
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
|
|
||||||
|
|
||||||
/* Nautilus
|
|
||||||
* Copyright (C) 2000 Eazel, Inc.
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* Author: Andy Hertzfeld <andy@eazel.com>
|
|
||||||
* J Shane Culpepper <pepper@eazel.com>
|
|
||||||
*
|
|
||||||
* The code responsible for the client inventory manipulation.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <config.h>
|
|
||||||
#include <gdk/gdk.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <rpm/rpmlib.h>
|
|
||||||
#include <gnome.h>
|
|
||||||
#include <gnome-xml/entities.h>
|
|
||||||
#include <gnome-xml/parser.h>
|
|
||||||
#include <gnome-xml/tree.h>
|
|
||||||
#include <libnautilus-extensions/nautilus-string.h>
|
|
||||||
#include "eazel-inventory-shared.h"
|
|
||||||
|
|
||||||
void add_package_info (xmlDocPtr configuration_metafile);
|
|
||||||
void add_hardware_info (xmlDocPtr configuration_metafile);
|
|
||||||
char *read_proc_info (const char *proc_filename);
|
|
||||||
void add_info (xmlNodePtr node_ptr,
|
|
||||||
char *data,
|
|
||||||
const char *tag,
|
|
||||||
const char *field_name);
|
|
||||||
void add_io_info (xmlNodePtr node_ptr,
|
|
||||||
char *io_data);
|
|
||||||
|
|
||||||
/* add package data from the package database to the passed in xml document */
|
|
||||||
|
|
||||||
void
|
|
||||||
add_package_info (xmlDocPtr configuration_metafile)
|
|
||||||
{
|
|
||||||
|
|
||||||
char package_count_str[32];
|
|
||||||
char *package_name;
|
|
||||||
char *package_version;
|
|
||||||
char *package_release;
|
|
||||||
char *version_str;
|
|
||||||
xmlNodePtr packages_node;
|
|
||||||
xmlNodePtr current_package_node;
|
|
||||||
rpmdb rpm_db;
|
|
||||||
int current_offset;
|
|
||||||
int rpm_result;
|
|
||||||
int package_count;
|
|
||||||
|
|
||||||
package_count = 0;
|
|
||||||
|
|
||||||
/* open the rpm database for package lookups */
|
|
||||||
|
|
||||||
rpmReadConfigFiles (NULL, NULL);
|
|
||||||
rpm_result = rpmdbOpen ("", &rpm_db, O_RDONLY, 0644);
|
|
||||||
if (rpm_result != 0) {
|
|
||||||
g_message ("couldn't open package database: %d", rpm_result);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* add the PACKAGES node */
|
|
||||||
packages_node = xmlNewChild (configuration_metafile->root, NULL, "PACKAGES", NULL);
|
|
||||||
|
|
||||||
/* iterate through all of the installed packages */
|
|
||||||
|
|
||||||
current_offset = rpmdbFirstRecNum (rpm_db);
|
|
||||||
while (current_offset)
|
|
||||||
{
|
|
||||||
Header current_package = rpmdbGetRecord (rpm_db, current_offset);
|
|
||||||
|
|
||||||
headerGetEntry (current_package, RPMTAG_NAME, NULL, (void **) &package_name, NULL);
|
|
||||||
headerGetEntry (current_package, RPMTAG_VERSION, NULL, (void **) &package_version, NULL);
|
|
||||||
headerGetEntry(current_package, RPMTAG_RELEASE, NULL, (void **) &package_release, NULL);
|
|
||||||
|
|
||||||
/* add a node for this package */
|
|
||||||
|
|
||||||
current_package_node = xmlNewChild (packages_node, NULL, "PACKAGE", NULL);
|
|
||||||
package_count += 1;
|
|
||||||
|
|
||||||
version_str = g_strdup_printf ("%s-%s", package_version, package_release);
|
|
||||||
xmlSetProp (current_package_node, "name", package_name);
|
|
||||||
xmlSetProp (current_package_node, "version", version_str);
|
|
||||||
g_free (version_str);
|
|
||||||
|
|
||||||
headerFree (current_package);
|
|
||||||
current_offset = rpmdbNextRecNum (rpm_db, current_offset);
|
|
||||||
|
|
||||||
/* donate some time to gtk to handle updates, etc */
|
|
||||||
while (gtk_events_pending()) {
|
|
||||||
gtk_main_iteration();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* update the count */
|
|
||||||
|
|
||||||
sprintf (package_count_str, "%d", package_count);
|
|
||||||
xmlSetProp (packages_node, "count", package_count_str);
|
|
||||||
|
|
||||||
/* close the package data base */
|
|
||||||
rpmdbClose (rpm_db);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* utility routine to read a proc file into a string */
|
|
||||||
|
|
||||||
char*
|
|
||||||
read_proc_info (const char *proc_filename)
|
|
||||||
{
|
|
||||||
|
|
||||||
FILE *thisFile;
|
|
||||||
char *result;
|
|
||||||
char buffer[256];
|
|
||||||
char *path_name;
|
|
||||||
GString *string_data;
|
|
||||||
|
|
||||||
path_name = g_strdup_printf ("/proc/%s", proc_filename);
|
|
||||||
string_data = g_string_new ("");
|
|
||||||
thisFile = fopen (path_name, "r");
|
|
||||||
|
|
||||||
while (fgets (buffer, 255, thisFile) != NULL) {
|
|
||||||
g_string_append (string_data, buffer);
|
|
||||||
}
|
|
||||||
fclose (thisFile);
|
|
||||||
|
|
||||||
result = g_strdup (string_data->str);
|
|
||||||
g_string_free (string_data, TRUE);
|
|
||||||
g_free (path_name);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* utility routine to extract information from a string and add it to an XML node */
|
|
||||||
|
|
||||||
void
|
|
||||||
add_info (xmlNodePtr node_ptr, char *data, const char *tag, const char *field_name)
|
|
||||||
{
|
|
||||||
|
|
||||||
int index;
|
|
||||||
char **info_array;
|
|
||||||
char *field_data;
|
|
||||||
|
|
||||||
field_data = NULL;
|
|
||||||
|
|
||||||
/* parse the data into a string array */
|
|
||||||
info_array = g_strsplit (data, "\n", 32);
|
|
||||||
/* iterate through the data isolating the field */
|
|
||||||
for (index = 0; index < 32; index++) {
|
|
||||||
if (info_array[index] == NULL)
|
|
||||||
break;
|
|
||||||
if (nautilus_str_has_prefix (info_array[index], field_name)) {
|
|
||||||
field_data = info_array[index] + strlen(field_name);
|
|
||||||
field_data = strchr (field_data, ':') + 1;
|
|
||||||
field_data = g_strchug (field_data);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* add the requested node if the field was found */
|
|
||||||
if (field_data) {
|
|
||||||
xmlNodePtr new_node;
|
|
||||||
new_node = xmlNewChild (node_ptr, NULL, tag, NULL);
|
|
||||||
xmlNodeSetContent (new_node, field_data);
|
|
||||||
}
|
|
||||||
g_strfreev (info_array);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* utility routine to process io info */
|
|
||||||
|
|
||||||
void
|
|
||||||
add_io_info (xmlNodePtr node_ptr, char *io_data)
|
|
||||||
{
|
|
||||||
|
|
||||||
int index;
|
|
||||||
char *temp_str;
|
|
||||||
xmlNodePtr new_node;
|
|
||||||
char **info_array;
|
|
||||||
|
|
||||||
/* parse the data into a string array */
|
|
||||||
info_array = g_strsplit (io_data, "\n", 64);
|
|
||||||
/* iterate through the data creating a record for each line */
|
|
||||||
for (index = 0; index < 64; index++) {
|
|
||||||
if (info_array[index] == NULL)
|
|
||||||
break;
|
|
||||||
new_node = xmlNewChild (node_ptr, NULL, "IORANGE", NULL);
|
|
||||||
temp_str = strchr (info_array[index], ':');
|
|
||||||
if (temp_str) {
|
|
||||||
*temp_str = '\0';
|
|
||||||
xmlSetProp (new_node, "RANGE", g_strstrip (info_array[index]));
|
|
||||||
xmlSetProp (new_node, "TYPE", g_strstrip (temp_str + 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
g_strfreev (info_array);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* add hardware info from the /proc directory to the passed in xml document */
|
|
||||||
|
|
||||||
void
|
|
||||||
add_hardware_info (xmlDocPtr configuration_metafile)
|
|
||||||
{
|
|
||||||
|
|
||||||
xmlNodePtr cpu_node;
|
|
||||||
xmlNodePtr this_node;
|
|
||||||
xmlNodePtr hardware_node;
|
|
||||||
char *temp_string;
|
|
||||||
|
|
||||||
/* add the HARDWARE node */
|
|
||||||
hardware_node = xmlNewChild (configuration_metafile->root, NULL, "HARDWARE", NULL);
|
|
||||||
|
|
||||||
/* capture various information from the /proc filesystem */
|
|
||||||
/* first, capture memory info */
|
|
||||||
|
|
||||||
temp_string = read_proc_info ("meminfo");
|
|
||||||
add_info (hardware_node, temp_string, "MEMORYSIZE", "MemTotal");
|
|
||||||
add_info (hardware_node, temp_string, "SWAPSIZE", "SwapTotal");
|
|
||||||
g_free (temp_string);
|
|
||||||
|
|
||||||
/* now handle CPU info */
|
|
||||||
cpu_node = xmlNewChild (hardware_node, NULL, "CPU", NULL);
|
|
||||||
temp_string = read_proc_info ("cpuinfo");
|
|
||||||
add_info (cpu_node, temp_string, "TYPE", "processor");
|
|
||||||
add_info (cpu_node, temp_string, "VENDOR", "vendor_id");
|
|
||||||
add_info (cpu_node, temp_string, "FAMILY", "cpu family");
|
|
||||||
add_info (cpu_node, temp_string, "MODEL", "model");
|
|
||||||
add_info (cpu_node, temp_string, "MODELNAME", "model name");
|
|
||||||
add_info (cpu_node, temp_string, "STEPPING", "stepping");
|
|
||||||
add_info (cpu_node, temp_string, "SPEED", "cpu MHz");
|
|
||||||
add_info (cpu_node, temp_string, "CACHE", "cache size");
|
|
||||||
g_free (temp_string);
|
|
||||||
|
|
||||||
/* now handle IO port info */
|
|
||||||
this_node = xmlNewChild (hardware_node, NULL, "IOPORTS", NULL);
|
|
||||||
temp_string = read_proc_info ("ioports");
|
|
||||||
add_io_info (this_node, temp_string);
|
|
||||||
g_free (temp_string);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* synchronize an existing metafile with the rpm database */
|
|
||||||
xmlDocPtr
|
|
||||||
synchronize_configuration_metafile ()
|
|
||||||
{
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/* update_package_metafile is called during initialization time to create or
|
|
||||||
synchronize the packages metafile */
|
|
||||||
|
|
||||||
xmlDocPtr
|
|
||||||
update_configuration_metafile ()
|
|
||||||
{
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/* create the configuration metafile and add package and hardware configuration info to it */
|
|
||||||
xmlDocPtr
|
|
||||||
create_configuration_metafile (void)
|
|
||||||
{
|
|
||||||
|
|
||||||
/* create a new xml document */
|
|
||||||
time_t current_time;
|
|
||||||
xmlNodePtr container_node;
|
|
||||||
char *time_string;
|
|
||||||
char host_name[512];
|
|
||||||
xmlDocPtr configuration_metafile;
|
|
||||||
|
|
||||||
configuration_metafile = xmlNewDoc ("1.0");
|
|
||||||
|
|
||||||
gethostname (&host_name[0], 511);
|
|
||||||
container_node = xmlNewDocNode (configuration_metafile, NULL, "CONFIGURATION", NULL);
|
|
||||||
|
|
||||||
configuration_metafile->root = container_node;
|
|
||||||
time (¤t_time);
|
|
||||||
time_string = g_strdup (ctime (¤t_time));
|
|
||||||
time_string[strlen(time_string) - 1] = '\0';
|
|
||||||
xmlSetProp (container_node, "computer", host_name);
|
|
||||||
xmlSetProp (container_node, "date", time_string);
|
|
||||||
g_free (time_string);
|
|
||||||
|
|
||||||
/* FIXME bugzilla.eazel.com 732: need to set up nautilus version here */
|
|
||||||
|
|
||||||
/* add the package info */
|
|
||||||
add_package_info (configuration_metafile);
|
|
||||||
|
|
||||||
/* add the hardware info */
|
|
||||||
add_hardware_info (configuration_metafile);
|
|
||||||
|
|
||||||
return configuration_metafile;
|
|
||||||
}
|
|
|
@ -1,38 +0,0 @@
|
||||||
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
|
|
||||||
|
|
||||||
/* Nautilus
|
|
||||||
* Copyright (C) 2000 Eazel, Inc.
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* Authors: Andy Hertzfeld <andy@eazel.com>
|
|
||||||
* J Shane Culpepper <pepper@eazel.com>
|
|
||||||
*
|
|
||||||
* This is the header file for the service inventory stuff
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef EAZEL_INVENTORY_SHARED_H
|
|
||||||
#define EAZEL_INVENTORY_SHARED_H
|
|
||||||
|
|
||||||
#include <gnome-xml/entities.h>
|
|
||||||
#include <gnome-xml/parser.h>
|
|
||||||
#include <gnome-xml/tree.h>
|
|
||||||
|
|
||||||
xmlDocPtr create_configuration_metafile (void);
|
|
||||||
xmlDocPtr synchronize_configuration_metafile (void);
|
|
||||||
xmlDocPtr update_configuration_metafile (void);
|
|
||||||
|
|
||||||
#endif /* EAZEL_INVENTORY_SHARED_H */
|
|
|
@ -1,5 +0,0 @@
|
||||||
.deps
|
|
||||||
.libs
|
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
nautilus-inventory-view
|
|
|
@ -1,45 +0,0 @@
|
||||||
NULL =
|
|
||||||
|
|
||||||
INCLUDES = \
|
|
||||||
-DPREFIX=\"$(prefix)\" \
|
|
||||||
-DG_LOG_DOMAIN=\"trilobite-eazel-inventory\" \
|
|
||||||
-I$(top_srcdir) \
|
|
||||||
-I$(top_srcdir)/components/services/trilobite/libtrilobite \
|
|
||||||
-I$(top_srcdir)/components/services/inventory/lib \
|
|
||||||
-I$(top_builddir) \
|
|
||||||
$(GNOMEUI_CFLAGS) \
|
|
||||||
$(GCONF_CFLAGS) \
|
|
||||||
-DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
|
|
||||||
$(VFS_CFLAGS) \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
oafdir = $(datadir)/oaf
|
|
||||||
|
|
||||||
oaf_DATA = \
|
|
||||||
nautilus-inventory-view.oafinfo
|
|
||||||
|
|
||||||
|
|
||||||
bin_PROGRAMS = \
|
|
||||||
nautilus-inventory-view
|
|
||||||
|
|
||||||
nautilus_inventory_view_SOURCES = \
|
|
||||||
nautilus-inventory-view.h \
|
|
||||||
nautilus-inventory-view.c \
|
|
||||||
main.c \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
nautilus_inventory_view_LDADD = \
|
|
||||||
$(top_builddir)/components/services/trilobite/libtrilobite/libtrilobite.la \
|
|
||||||
$(top_builddir)/libnautilus/libnautilus.la \
|
|
||||||
$(top_builddir)/libnautilus-extensions/libnautilus-extensions.la \
|
|
||||||
$(BONOBO_LIBS) \
|
|
||||||
$(GNOMEUI_LIBS) \
|
|
||||||
$(GCONF_LIBS) \
|
|
||||||
$(VFS_LIBS) \
|
|
||||||
$(GHTTP_LIBS) \
|
|
||||||
$(OAF_LIBS) \
|
|
||||||
$(top_builddir)/components/services/inventory/lib/libinventory.a \
|
|
||||||
$(RPM_LIBS) \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
EXTRA_DIST = $(oaf_DATA)
|
|
|
@ -1,104 +0,0 @@
|
||||||
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2000 Eazel, Inc
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 2 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* Author: Maciej Stachowiak <mjs@eazel.com>
|
|
||||||
* J Shane Culpepper <pepper@eazel.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* main.c - main function and object activation function for services
|
|
||||||
content view component. */
|
|
||||||
|
|
||||||
#include <config.h>
|
|
||||||
#include <gnome.h>
|
|
||||||
#include <liboaf/liboaf.h>
|
|
||||||
#include <bonobo.h>
|
|
||||||
#include "nautilus-inventory-view.h"
|
|
||||||
|
|
||||||
static int object_count =0;
|
|
||||||
|
|
||||||
static void
|
|
||||||
inventory_object_destroyed (GtkObject *obj)
|
|
||||||
{
|
|
||||||
object_count--;
|
|
||||||
if (object_count <= 0) {
|
|
||||||
gtk_main_quit ();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static BonoboObject*
|
|
||||||
inventory_make_object (BonoboGenericFactory *factory,
|
|
||||||
const char *iid,
|
|
||||||
void *closure)
|
|
||||||
{
|
|
||||||
|
|
||||||
NautilusInventoryView* view;
|
|
||||||
NautilusView* nautilus_view;
|
|
||||||
|
|
||||||
if (strcmp (iid, "OAFIID:nautilus_inventory_view:f1032dfd-8075-4105-a9cd-c638b74511f5")) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
view = NAUTILUS_INVENTORY_VIEW (gtk_object_new (NAUTILUS_TYPE_INVENTORY_VIEW, NULL));
|
|
||||||
|
|
||||||
object_count++;
|
|
||||||
|
|
||||||
nautilus_view = nautilus_inventory_view_get_nautilus_view (view);
|
|
||||||
|
|
||||||
gtk_signal_connect (GTK_OBJECT (nautilus_view), "destroy", inventory_object_destroyed, NULL);
|
|
||||||
|
|
||||||
printf ("Returning new object %p\n", nautilus_view);
|
|
||||||
|
|
||||||
return BONOBO_OBJECT (nautilus_view);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main (int argc, char *argv[])
|
|
||||||
{
|
|
||||||
|
|
||||||
BonoboGenericFactory *factory;
|
|
||||||
CORBA_ORB orb;
|
|
||||||
char *registration_id;
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef ENABLE_NLS /* sadly we need this ifdef because otherwise the following get empty statement warnings */
|
|
||||||
bindtextdomain (PACKAGE, GNOMELOCALEDIR);
|
|
||||||
textdomain (PACKAGE);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
gnome_init_with_popt_table ("nautilus-inventory-view", VERSION,
|
|
||||||
argc, argv,
|
|
||||||
oaf_popt_options, 0, NULL);
|
|
||||||
|
|
||||||
orb = oaf_init (argc, argv);
|
|
||||||
|
|
||||||
bonobo_init (orb, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL);
|
|
||||||
|
|
||||||
registration_id = oaf_make_registration_id ("OAFIID:nautilus_inventory_view_factory:400ef0a5-352a-4e98-bf96-83e728c462cf", getenv ("DISPLAY"));
|
|
||||||
factory = bonobo_generic_factory_new_multi (registration_id,
|
|
||||||
inventory_make_object,
|
|
||||||
NULL);
|
|
||||||
g_free (registration_id);
|
|
||||||
|
|
||||||
|
|
||||||
do {
|
|
||||||
bonobo_main ();
|
|
||||||
} while (object_count > 0);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,473 +0,0 @@
|
||||||
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2000 Eazel, Inc
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 2 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* Author: J Shane Culpepper <pepper@eazel.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <config.h>
|
|
||||||
|
|
||||||
#include <ghttp.h>
|
|
||||||
#include <gnome-xml/tree.h>
|
|
||||||
#include <libgnomevfs/gnome-vfs-utils.h>
|
|
||||||
#include <libnautilus-extensions/nautilus-background.h>
|
|
||||||
#include <libnautilus-extensions/nautilus-gtk-extensions.h>
|
|
||||||
#include <libnautilus-extensions/nautilus-gtk-macros.h>
|
|
||||||
#include <libnautilus-extensions/nautilus-glib-extensions.h>
|
|
||||||
#include <libnautilus-extensions/nautilus-global-preferences.h>
|
|
||||||
#include <libnautilus-extensions/nautilus-file-utilities.h>
|
|
||||||
#include <libnautilus-extensions/nautilus-string.h>
|
|
||||||
#include <libnautilus-extensions/nautilus-font-factory.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include "nautilus-inventory-view.h"
|
|
||||||
#include "eazel-inventory-shared.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* A NautilusContentView's private information. */
|
|
||||||
struct _NautilusInventoryViewDetails {
|
|
||||||
char *uri;
|
|
||||||
char *auth_token;
|
|
||||||
NautilusView *nautilus_view;
|
|
||||||
GtkWidget *form;
|
|
||||||
GtkWidget *form_title;
|
|
||||||
GtkWidget *feedback_text;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define SERVICE_VIEW_DEFAULT_BACKGROUND_COLOR "rgb:BBBB/DDDD/FFFF"
|
|
||||||
#define SERVICE_DOMAIN_NAME "eazel24.eazel.com"
|
|
||||||
|
|
||||||
static void nautilus_inventory_view_initialize_class (NautilusInventoryViewClass *klass);
|
|
||||||
static void nautilus_inventory_view_initialize (NautilusInventoryView *view);
|
|
||||||
static void nautilus_inventory_view_destroy (GtkObject *object);
|
|
||||||
static void inventory_load_location_callback (NautilusView *nautilus_view,
|
|
||||||
const char *location,
|
|
||||||
NautilusInventoryView *view);
|
|
||||||
static void show_feedback (NautilusInventoryView *view,
|
|
||||||
char *error_message);
|
|
||||||
static void generate_inventory_form (NautilusInventoryView *view);
|
|
||||||
static void gather_config_button_cb (GtkWidget *button,
|
|
||||||
NautilusInventoryView *view);
|
|
||||||
static void register_later_cb (GtkWidget *button,
|
|
||||||
NautilusInventoryView *view);
|
|
||||||
static char *get_home_uri (void);
|
|
||||||
static void update_now (void);
|
|
||||||
static ghttp_request *make_http_post_request (char *uri,
|
|
||||||
char *post_body,
|
|
||||||
char *auth_token);
|
|
||||||
static void generate_form_title (NautilusInventoryView *view,
|
|
||||||
const char *title_text);
|
|
||||||
|
|
||||||
NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusInventoryView, nautilus_inventory_view, GTK_TYPE_EVENT_BOX)
|
|
||||||
|
|
||||||
static void
|
|
||||||
generate_inventory_form (NautilusInventoryView *view)
|
|
||||||
{
|
|
||||||
|
|
||||||
char *message;
|
|
||||||
char *file_name;
|
|
||||||
GtkWidget *temp_widget;
|
|
||||||
GtkWidget *temp_box;
|
|
||||||
GtkWidget *config_button;
|
|
||||||
GtkWidget *config_label;
|
|
||||||
|
|
||||||
/* allocate a vbox as a container */
|
|
||||||
view->details->form = gtk_vbox_new (FALSE, 0);
|
|
||||||
gtk_container_add (GTK_CONTAINER (view), view->details->form);
|
|
||||||
gtk_widget_show (view->details->form);
|
|
||||||
|
|
||||||
/* setup the title */
|
|
||||||
generate_form_title (view, "Eazel Services Inventory");
|
|
||||||
|
|
||||||
/* if we came from signup, add a congrats message */
|
|
||||||
|
|
||||||
if (nautilus_str_has_suffix (view->details->uri, "signup")) {
|
|
||||||
message = "Congratulations, you have successfully signed up with the Eazel service!";
|
|
||||||
temp_widget = gtk_label_new (message);
|
|
||||||
|
|
||||||
gtk_box_pack_start (GTK_BOX (view->details->form), temp_widget, 0, 0, 12);
|
|
||||||
gtk_widget_show (temp_widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* make label containing text about uploading the configuration data */
|
|
||||||
|
|
||||||
temp_box = gtk_hbox_new (FALSE, 4);
|
|
||||||
gtk_box_pack_start (GTK_BOX (view->details->form), temp_box, 0, 0, 12);
|
|
||||||
gtk_widget_show (temp_box);
|
|
||||||
|
|
||||||
file_name = nautilus_pixmap_file ("config-gather.png");
|
|
||||||
temp_widget = GTK_WIDGET (gnome_pixmap_new_from_file (file_name));
|
|
||||||
gtk_box_pack_start (GTK_BOX (temp_box), temp_widget, 0, 0, 8);
|
|
||||||
gtk_widget_show (temp_widget);
|
|
||||||
g_free (file_name);
|
|
||||||
|
|
||||||
message = "With your permission, the Eazel service will gather data about the hardware and software configuration of your system so it can provide you with a customized software catalog with one-click installation. Your configuration data will be kept strictly confidential and will not be used for any other purpose. Click the button below to begin gathering the data.";
|
|
||||||
temp_widget = gtk_label_new (message);
|
|
||||||
gtk_label_set_line_wrap (GTK_LABEL(temp_widget), TRUE);
|
|
||||||
gtk_box_pack_start (GTK_BOX (temp_box), temp_widget, 0, 0, 12);
|
|
||||||
gtk_widget_show (temp_widget);
|
|
||||||
|
|
||||||
/* add buttons for accepting and declining */
|
|
||||||
|
|
||||||
config_button = gtk_button_new ();
|
|
||||||
config_label = gtk_label_new (" Gather Configuration Data ");
|
|
||||||
gtk_widget_show (config_label);
|
|
||||||
gtk_container_add (GTK_CONTAINER (config_button), config_label);
|
|
||||||
temp_box = gtk_hbox_new (FALSE, 0);
|
|
||||||
gtk_box_pack_start (GTK_BOX (temp_box), config_button, FALSE, FALSE, 16);
|
|
||||||
|
|
||||||
gtk_signal_connect (GTK_OBJECT (config_button), "clicked",
|
|
||||||
GTK_SIGNAL_FUNC (gather_config_button_cb), view);
|
|
||||||
gtk_widget_show (config_button);
|
|
||||||
|
|
||||||
/* now allocate the decline button */
|
|
||||||
|
|
||||||
config_button = gtk_button_new ();
|
|
||||||
config_label = gtk_label_new (" No, Don't Gather Configuration Data ");
|
|
||||||
gtk_widget_show (config_label);
|
|
||||||
gtk_container_add (GTK_CONTAINER (config_button), config_label);
|
|
||||||
gtk_box_pack_start (GTK_BOX (temp_box), config_button, FALSE, FALSE, 16);
|
|
||||||
gtk_signal_connect (GTK_OBJECT (config_button), "clicked",
|
|
||||||
GTK_SIGNAL_FUNC (register_later_cb), view);
|
|
||||||
gtk_widget_show (config_button);
|
|
||||||
|
|
||||||
/* show the buttons */
|
|
||||||
gtk_widget_show (temp_box);
|
|
||||||
gtk_box_pack_start (GTK_BOX (view->details->form), temp_box, FALSE, FALSE, 16);
|
|
||||||
|
|
||||||
/* add a label for feedback, but don't show it until there's an error */
|
|
||||||
view->details->feedback_text = gtk_label_new ("");
|
|
||||||
gtk_box_pack_start (GTK_BOX (view->details->form), view->details->feedback_text, 0, 0, 8);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/* callback to handle the configuration button. First, make the configuration xml file,
|
|
||||||
* then feed it to the service over HTTP. Display an error message, or move on to the summary
|
|
||||||
* screen if successful
|
|
||||||
*/
|
|
||||||
|
|
||||||
static void
|
|
||||||
gather_config_button_cb (GtkWidget *button, NautilusInventoryView *view)
|
|
||||||
{
|
|
||||||
|
|
||||||
FILE *config_file;
|
|
||||||
char buffer[256];
|
|
||||||
char host_name[512];
|
|
||||||
char *config_file_name;
|
|
||||||
char *config_string;
|
|
||||||
char *uri;
|
|
||||||
char *response_str;
|
|
||||||
char *cookie_str;
|
|
||||||
char *encoded_token;
|
|
||||||
char *encoded_host_name;
|
|
||||||
GString *config_data;
|
|
||||||
xmlDocPtr config_doc;
|
|
||||||
ghttp_request *request;
|
|
||||||
|
|
||||||
show_feedback (view, "gathering configuration data...");
|
|
||||||
update_now ();
|
|
||||||
|
|
||||||
config_doc = create_configuration_metafile ();
|
|
||||||
if (config_doc == NULL) {
|
|
||||||
show_feedback (view, "Sorry, there was an error during the gathering");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* save the configuration file */
|
|
||||||
|
|
||||||
config_file_name = g_strdup_printf ("%s/.nautilus/configuration.xml", g_get_home_dir ());
|
|
||||||
xmlSaveFile (config_file_name, config_doc);
|
|
||||||
xmlFreeDoc (config_doc);
|
|
||||||
|
|
||||||
/* load the config file text into memory */
|
|
||||||
|
|
||||||
config_data = g_string_new ("");
|
|
||||||
config_file = fopen (config_file_name, "r");
|
|
||||||
|
|
||||||
while (fgets (buffer, 255, config_file) != NULL) {
|
|
||||||
g_string_append (config_data, buffer);
|
|
||||||
}
|
|
||||||
fclose (config_file);
|
|
||||||
config_string = g_strdup (config_data->str);
|
|
||||||
g_string_free(config_data, TRUE);
|
|
||||||
g_free (config_file_name);
|
|
||||||
|
|
||||||
/* move into transmission phase by changing the feedback message */
|
|
||||||
|
|
||||||
show_feedback (view, "transmitting configuration data...");
|
|
||||||
update_now ();
|
|
||||||
|
|
||||||
/* send the config file to the server via HTTP */
|
|
||||||
uri = g_strdup_printf ("http://%s/profile/set.pl", SERVICE_DOMAIN_NAME);
|
|
||||||
|
|
||||||
gethostname (&host_name[0], 511);
|
|
||||||
|
|
||||||
encoded_token = gnome_vfs_escape_string (view->details->auth_token);
|
|
||||||
encoded_host_name = gnome_vfs_escape_string (host_name);
|
|
||||||
|
|
||||||
cookie_str = g_strdup_printf ("token=%s; computer=%s", encoded_token, encoded_host_name);
|
|
||||||
request = make_http_post_request (uri, config_string, cookie_str);
|
|
||||||
|
|
||||||
g_free (encoded_token);
|
|
||||||
g_free (encoded_host_name);
|
|
||||||
g_free (cookie_str);
|
|
||||||
|
|
||||||
response_str = ghttp_get_body (request);
|
|
||||||
g_message ("config response was %s", response_str);
|
|
||||||
|
|
||||||
g_free (uri);
|
|
||||||
ghttp_request_destroy (request);
|
|
||||||
|
|
||||||
/* handle the error response */
|
|
||||||
if (strstr (response_str, "<ERROR field=") == response_str) {
|
|
||||||
show_feedback (view, "Sorry, but there was an error. Please try again some other time.");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
|
|
||||||
/* give error feedback or go to the summary form if successful */
|
|
||||||
nautilus_view_open_location (view, "eazel:overview?config");
|
|
||||||
}
|
|
||||||
|
|
||||||
g_free (config_string);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/* callback to handle the register later button */
|
|
||||||
static void
|
|
||||||
register_later_cb (GtkWidget *button, NautilusInventoryView *view)
|
|
||||||
{
|
|
||||||
|
|
||||||
char *home_path;
|
|
||||||
|
|
||||||
home_path = get_home_uri ();
|
|
||||||
nautilus_view_open_location (view, home_path);
|
|
||||||
g_free (home_path);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/* utility routine to show an error message */
|
|
||||||
static void
|
|
||||||
show_feedback (NautilusInventoryView *view, char *error_message)
|
|
||||||
{
|
|
||||||
|
|
||||||
gtk_label_set_text (GTK_LABEL (view->details->feedback_text), error_message);
|
|
||||||
gtk_widget_show (view->details->feedback_text);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* utility routine to make an HTTP request. For now, it works synchronously but soon
|
|
||||||
* it will optionally work asynchronously. Return NULL if we get an error */
|
|
||||||
|
|
||||||
static ghttp_request*
|
|
||||||
make_http_post_request (char *uri, char *post_body, char *auth_token)
|
|
||||||
{
|
|
||||||
|
|
||||||
ghttp_request* request;
|
|
||||||
char* proxy;
|
|
||||||
|
|
||||||
request = NULL;
|
|
||||||
proxy = g_getenv ("http_proxy");
|
|
||||||
|
|
||||||
request = ghttp_request_new();
|
|
||||||
|
|
||||||
if (!request) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (proxy && (ghttp_set_proxy (request, proxy) != 0)) {
|
|
||||||
ghttp_request_destroy (request);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ghttp_set_uri (request, uri) != 0) {
|
|
||||||
ghttp_request_destroy (request);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
ghttp_set_type (request, ghttp_type_post);
|
|
||||||
ghttp_set_header (request, http_hdr_Accept, "text/xml");
|
|
||||||
ghttp_set_header (request, http_hdr_Content_Type, "text/xml");
|
|
||||||
ghttp_set_header (request, http_hdr_Host, SERVICE_DOMAIN_NAME);
|
|
||||||
ghttp_set_header (request, http_hdr_User_Agent, "Nautilus/0.1 (Linux)");
|
|
||||||
|
|
||||||
if (auth_token) {
|
|
||||||
ghttp_set_header (request, "Cookie", auth_token);
|
|
||||||
}
|
|
||||||
|
|
||||||
ghttp_set_header (request, http_hdr_Connection, "close");
|
|
||||||
|
|
||||||
ghttp_set_body (request, post_body, strlen (post_body));
|
|
||||||
|
|
||||||
if (ghttp_prepare (request) != 0) {
|
|
||||||
ghttp_request_destroy (request);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* here's where it spends all the time doing the actual request */
|
|
||||||
if (ghttp_process (request) != ghttp_done) {
|
|
||||||
ghttp_request_destroy (request);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return request;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
static char*
|
|
||||||
get_home_uri ()
|
|
||||||
{
|
|
||||||
|
|
||||||
return g_strdup_printf ("file://%s", g_get_home_dir ());
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/* utility to force updating to happen */
|
|
||||||
static void
|
|
||||||
update_now ()
|
|
||||||
{
|
|
||||||
|
|
||||||
while (gtk_events_pending ()) {
|
|
||||||
gtk_main_iteration ();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/* generate the standard eazel services header */
|
|
||||||
static void
|
|
||||||
generate_form_title (NautilusInventoryView *view,
|
|
||||||
const char *title_text)
|
|
||||||
{
|
|
||||||
|
|
||||||
GtkWidget *temp_widget;
|
|
||||||
char *file_name;
|
|
||||||
GtkWidget *temp_container;
|
|
||||||
GdkFont *font;
|
|
||||||
|
|
||||||
temp_container = gtk_hbox_new (FALSE, 0);
|
|
||||||
|
|
||||||
gtk_box_pack_start (GTK_BOX (view->details->form), temp_container, 0, 0, 4);
|
|
||||||
gtk_widget_show (temp_container);
|
|
||||||
|
|
||||||
file_name = nautilus_pixmap_file ("eazel-logo.gif");
|
|
||||||
temp_widget = GTK_WIDGET (gnome_pixmap_new_from_file (file_name));
|
|
||||||
gtk_box_pack_start (GTK_BOX(temp_container), temp_widget, 0, 0, 8);
|
|
||||||
gtk_widget_show (temp_widget);
|
|
||||||
g_free (file_name);
|
|
||||||
|
|
||||||
view->details->form_title = gtk_label_new (title_text);
|
|
||||||
|
|
||||||
font = nautilus_font_factory_get_font_from_preferences (18);
|
|
||||||
nautilus_gtk_widget_set_font (view->details->form_title, font);
|
|
||||||
gdk_font_unref (font);
|
|
||||||
|
|
||||||
gtk_box_pack_start (GTK_BOX (temp_container), view->details->form_title, 0, 0, 8);
|
|
||||||
gtk_widget_show (view->details->form_title);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
nautilus_inventory_view_initialize_class (NautilusInventoryViewClass *klass)
|
|
||||||
{
|
|
||||||
|
|
||||||
GtkObjectClass *object_class;
|
|
||||||
GtkWidgetClass *widget_class;
|
|
||||||
|
|
||||||
object_class = GTK_OBJECT_CLASS (klass);
|
|
||||||
widget_class = GTK_WIDGET_CLASS (klass);
|
|
||||||
parent_class = gtk_type_class (gtk_event_box_get_type ());
|
|
||||||
object_class->destroy = nautilus_inventory_view_destroy;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
nautilus_inventory_view_initialize (NautilusInventoryView *view)
|
|
||||||
{
|
|
||||||
|
|
||||||
NautilusBackground *background;
|
|
||||||
|
|
||||||
view->details = g_new0 (NautilusInventoryViewDetails, 1);
|
|
||||||
view->details->nautilus_view = nautilus_view_new (GTK_WIDGET (view));
|
|
||||||
gtk_signal_connect (GTK_OBJECT (view->details->nautilus_view),
|
|
||||||
"load_location",
|
|
||||||
GTK_SIGNAL_FUNC (inventory_load_location_callback),
|
|
||||||
view);
|
|
||||||
|
|
||||||
background = nautilus_get_widget_background (GTK_WIDGET (view));
|
|
||||||
nautilus_background_set_color (background, SERVICE_VIEW_DEFAULT_BACKGROUND_COLOR);
|
|
||||||
|
|
||||||
gtk_widget_show (GTK_WIDGET (view));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
nautilus_inventory_view_destroy (GtkObject *object)
|
|
||||||
{
|
|
||||||
|
|
||||||
NautilusInventoryView *view;
|
|
||||||
|
|
||||||
view = NAUTILUS_INVENTORY_VIEW (object);
|
|
||||||
|
|
||||||
if (view->details->uri) {
|
|
||||||
g_free (view->details->uri);
|
|
||||||
}
|
|
||||||
g_free (view->details);
|
|
||||||
|
|
||||||
NAUTILUS_CALL_PARENT_CLASS (GTK_OBJECT_CLASS, destroy, (object));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
NautilusView *
|
|
||||||
nautilus_inventory_view_get_nautilus_view (NautilusInventoryView *view)
|
|
||||||
{
|
|
||||||
|
|
||||||
return view->details->nautilus_view;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
nautilus_inventory_view_load_uri (NautilusInventoryView *view,
|
|
||||||
const char *uri)
|
|
||||||
{
|
|
||||||
|
|
||||||
/* dispose of any old uri and copy in the new one */
|
|
||||||
g_free (view->details->uri);
|
|
||||||
view->details->uri = g_strdup (uri);
|
|
||||||
|
|
||||||
/* dispose of any old form that was installed */
|
|
||||||
if (view->details->form != NULL) {
|
|
||||||
gtk_widget_destroy (view->details->form);
|
|
||||||
view->details->form = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
generate_inventory_form (view);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
inventory_load_location_callback (NautilusView *nautilus_view,
|
|
||||||
const char *location,
|
|
||||||
NautilusInventoryView *view)
|
|
||||||
{
|
|
||||||
|
|
||||||
g_assert (nautilus_view == view->details->nautilus_view);
|
|
||||||
|
|
||||||
nautilus_view_report_load_underway (nautilus_view);
|
|
||||||
|
|
||||||
nautilus_inventory_view_load_uri (view, location);
|
|
||||||
|
|
||||||
nautilus_view_report_load_complete (nautilus_view);
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,60 +0,0 @@
|
||||||
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2000 Eazel, Inc
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 2 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* Authors: J Shane Culpepper
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef NAUTILUS_INVENTORY_VIEW_H
|
|
||||||
#define NAUTILUS_INVENTORY_VIEW_H
|
|
||||||
|
|
||||||
#include <libnautilus/nautilus-view.h>
|
|
||||||
#include <gtk/gtk.h>
|
|
||||||
|
|
||||||
typedef struct _NautilusInventoryView NautilusInventoryView;
|
|
||||||
typedef struct _NautilusInventoryViewClass NautilusInventoryViewClass;
|
|
||||||
|
|
||||||
#define NAUTILUS_TYPE_INVENTORY_VIEW (nautilus_inventory_view_get_type ())
|
|
||||||
#define NAUTILUS_INVENTORY_VIEW(obj) (GTK_CHECK_CAST ((obj), NAUTILUS_TYPE_INVENTORY_VIEW, NautilusInventoryView))
|
|
||||||
#define NAUTILUS_INVENTORY_VIEW_CLASS (klass) (GTK_CHECK_CLASS_CAST ((klass), NAUTILUS_TYPE_INVENTORY_VIEW, NautilusInventoryViewClass))
|
|
||||||
#define NAUTILUS_IS_INVENTORY_VIEW(obj) (GTK_CHECK_TYPE ((obj), NAUTILUS_TYPE_INVENTORY_VIEW))
|
|
||||||
#define NAUTILUS_IS_INVENTORY_VIEW_CLASS (klass) (GTK_CHECK_CLASS_TYPE ((klass), NAUTILUS_TYPE_INVENTORY_VIEW))
|
|
||||||
|
|
||||||
typedef struct _NautilusInventoryViewDetails NautilusInventoryViewDetails;
|
|
||||||
|
|
||||||
struct _NautilusInventoryView {
|
|
||||||
GtkEventBox parent;
|
|
||||||
NautilusInventoryViewDetails *details;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _NautilusInventoryViewClass {
|
|
||||||
GtkVBoxClass parent_class;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* GtkObject support */
|
|
||||||
GtkType nautilus_inventory_view_get_type (void);
|
|
||||||
|
|
||||||
/* Component embedding support */
|
|
||||||
NautilusView *nautilus_inventory_view_get_nautilus_view (NautilusInventoryView *view);
|
|
||||||
|
|
||||||
/* URI handling */
|
|
||||||
void nautilus_inventory_view_load_uri (NautilusInventoryView *view,
|
|
||||||
const char *uri);
|
|
||||||
|
|
||||||
#endif /* NAUTILUS_INVENTORY_VIEW_H */
|
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
<oaf_info>
|
|
||||||
|
|
||||||
<oaf_server iid="OAFIID:nautilus_inventory_view_factory:400ef0a5-352a-4e98-bf96-83e728c462cf" type="exe" location="nautilus-inventory-view">
|
|
||||||
<oaf_attribute name="repo_ids" type="stringv">
|
|
||||||
<item value="IDL:GNOME/ObjectFactory:1.0"/>
|
|
||||||
</oaf_attribute>
|
|
||||||
<oaf_attribute name="name" type="string" value="Nautilus Service Inventory View Factory"/>
|
|
||||||
<oaf_attribute name="description" type="string" value="Service Inventory View Component's Factory"/>
|
|
||||||
</oaf_server>
|
|
||||||
|
|
||||||
<oaf_server iid="OAFIID:nautilus_inventory_view:f1032dfd-8075-4105-a9cd-c638b74511f5" type="factory" location="OAFIID:nautilus_inventory_view_factory:400ef0a5-352a-4e98-bf96-83e728c462cf">
|
|
||||||
<oaf_attribute name="repo_ids" type="stringv">
|
|
||||||
<item value="IDL:Bonobo/Unknown:1.0"/>
|
|
||||||
<item value="IDL:Bonobo/Control:1.0"/>
|
|
||||||
<item value="IDL:Nautilus/View:1.0"/>
|
|
||||||
</oaf_attribute>
|
|
||||||
<oaf_attribute name="name" type="string" value="Nautilus Inventory View"/>
|
|
||||||
<oaf_attribute name="description" type="string" value="Service Inventory view component"/>
|
|
||||||
<oaf_attribute name="bonobo:supported_uri_schemes" type="stringv">
|
|
||||||
<item value="eazel-inventory"/>
|
|
||||||
</oaf_attribute>
|
|
||||||
<oaf_attribute name="nautilus:view_as_name" type="string" value="Inventory"/>
|
|
||||||
</oaf_server>
|
|
||||||
|
|
||||||
</oaf_info>
|
|
|
@ -1 +0,0 @@
|
||||||
The command-line implementation of login will be part of eazel-service. It will be located in nautilus/components/services/startup/command-line.
|
|
|
@ -1 +0,0 @@
|
||||||
The command-line implementation of summary will be part of eazel-service. It will be located in nautilus/components/services/startup/command-line.
|
|
|
@ -1,6 +0,0 @@
|
||||||
Makefile.in
|
|
||||||
Makefile
|
|
||||||
.deps
|
|
||||||
gtkclist.lo
|
|
||||||
libgtkclist.la
|
|
||||||
.libs
|
|
Loading…
Reference in a new issue