Skip to content
Snippets Groups Projects
Commit d67fb05a authored by deuce's avatar deuce
Browse files

Navigation works.

Loading data on the personal page works.
This is now (effectively) a user browser.
parent 748391f8
No related branches found
No related tags found
No related merge requests found
......@@ -15,6 +15,7 @@
SRC_ROOT = ../..
include $(SRC_ROOT)/build/Common.gmake
include $(SRC_ROOT)/sbbs3/sbbsdefs.mk
ifeq ($(os),sunos)
LDFLAGS += -lnsl
......@@ -22,9 +23,10 @@ endif
vpath %.c ..
CFLAGS += -I.. $(SMBLIB_CFLAGS) $(XPDEV-MT_CFLAGS) `pkg-config libglade-2.0 --cflags`
LDFLAGS += $(SMBLIB_LDFLAGS) $(XPDEV-MT_LDFLAGS) $(MT_LDFLAGS) `pkg-config libglade-2.0 --libs`
CFLAGS += $(SBBSDEFS) -I.. $(SMBLIB_CFLAGS) $(XPDEV-MT_CFLAGS) `pkg-config libglade-2.0 --cflags`
# Hopefully, -Wl,-E exports all symbols dynamically everywhere.
LDFLAGS += -Wl,-E -L../$(LIBODIR) $(SMBLIB_LDFLAGS) $(XPDEV-MT_LDFLAGS) $(MT_LDFLAGS) `pkg-config libglade-2.0 --libs`
$(GTKUSEREDIT): $(OBJS)
@echo Linking $@
$(QUIET)$(CC) $(LDFLAGS) $(OBJS) -o $@ $(SMBLIB_LIBS) $(XPDEV-MT_LIBS)
$(QUIET)$(CC) $(LDFLAGS) $(OBJS) -o $@ -lsbbs $(SMBLIB_LIBS) $(XPDEV-MT_LIBS)
#include <gtk/gtk.h>
#include <glade/glade.h>
#include "sbbs.h"
#include "dirwrap.h"
#include "gtkuseredit.h"
/*
* This is one of the two big gruntwork functions
* (the other being save_user)
*/
void load_user(GtkWidget *wiggy, gpointer data)
{
GtkWidget *w;
char str[1024];
user.number=current_user;
if(user.number < 1 || user.number > totalusers) {
fprintf(stderr,"Attempted to load illegal user number %d.\n",user.number);
return;
}
if(getuserdat(&cfg, &user)) {
fprintf(stderr,"Error loading user %d.\n",current_user);
return;
}
/* Alias */
w=glade_xml_get_widget(xml, "eUserAlias");
if(w==NULL)
fprintf(stderr,"Cannot get the alias widget\n");
else
gtk_entry_set_text(GTK_ENTRY(w),user.alias);
/* Real Name */
w=glade_xml_get_widget(xml, "eRealName");
if(w==NULL)
fprintf(stderr,"Cannot get the real name widget\n");
else
gtk_entry_set_text(GTK_ENTRY(w),user.name);
/* Computer */
w=glade_xml_get_widget(xml, "eComputer");
if(w==NULL)
fprintf(stderr,"Cannot get the computer widget\n");
else
gtk_entry_set_text(GTK_ENTRY(w),user.comp);
/* NetMail */
w=glade_xml_get_widget(xml, "eNetMail");
if(w==NULL)
fprintf(stderr,"Cannot get the netmail widget\n");
else
gtk_entry_set_text(GTK_ENTRY(w),user.netmail);
/* Phone */
w=glade_xml_get_widget(xml, "ePhone");
if(w==NULL)
fprintf(stderr,"Cannot get the phone widget\n");
else
gtk_entry_set_text(GTK_ENTRY(w),user.phone);
/* Note */
w=glade_xml_get_widget(xml, "eNote");
if(w==NULL)
fprintf(stderr,"Cannot get the note widget\n");
else
gtk_entry_set_text(GTK_ENTRY(w),user.note);
/* Comment */
w=glade_xml_get_widget(xml, "eComment");
if(w==NULL)
fprintf(stderr,"Cannot get the comment widget\n");
else
gtk_entry_set_text(GTK_ENTRY(w),user.comment);
/* Gender */
w=glade_xml_get_widget(xml, "eGender");
if(w==NULL)
fprintf(stderr,"Cannot get the gender widget\n");
else {
str[0]=user.sex;
str[1]=0;
gtk_entry_set_text(GTK_ENTRY(w),str);
}
/* Connection */
w=glade_xml_get_widget(xml, "eConnection");
if(w==NULL)
fprintf(stderr,"Cannot get the connection widget\n");
else
gtk_entry_set_text(GTK_ENTRY(w),user.modem);
/* Chat Handle */
w=glade_xml_get_widget(xml, "eHandle");
if(w==NULL)
fprintf(stderr,"Cannot get the handle widget\n");
else
gtk_entry_set_text(GTK_ENTRY(w),user.handle);
/* Birthdate */
w=glade_xml_get_widget(xml, "eBirthdate");
if(w==NULL)
fprintf(stderr,"Cannot get the birthdate widget\n");
else
gtk_entry_set_text(GTK_ENTRY(w),user.birth);
/* Password */
w=glade_xml_get_widget(xml, "ePassword");
if(w==NULL)
fprintf(stderr,"Cannot get the password widget\n");
else
gtk_entry_set_text(GTK_ENTRY(w),user.pass);
/* Address */
w=glade_xml_get_widget(xml, "eAddress");
if(w==NULL)
fprintf(stderr,"Cannot get the address widget\n");
else
gtk_entry_set_text(GTK_ENTRY(w),user.address);
/* Location */
w=glade_xml_get_widget(xml, "eLocation");
if(w==NULL)
fprintf(stderr,"Cannot get the location widget\n");
else
gtk_entry_set_text(GTK_ENTRY(w),user.location);
/* Postal/ZIP code */
w=glade_xml_get_widget(xml, "eZip");
if(w==NULL)
fprintf(stderr,"Cannot get the postal/zip code widget\n");
else
gtk_entry_set_text(GTK_ENTRY(w),user.zipcode);
}
int update_current_user(int new_user)
{
char str[11];
GtkWidget *eCurrentUser;
if(new_user<1 || new_user>totalusers)
new_user=current_user;
sprintf(str,"%d",new_user);
eCurrentUser=glade_xml_get_widget(xml, "eCurrentUser");
if(eCurrentUser==NULL) {
fprintf(stderr,"Cannot get the current user widget\n");
return(-1);
}
if(strcmp(gtk_entry_get_text(GTK_ENTRY(eCurrentUser)),str))
gtk_entry_set_text(GTK_ENTRY(eCurrentUser), str);
if(new_user!=current_user) {
current_user=new_user;
load_user(eCurrentUser,NULL);
}
return(0);
}
void current_user_changed(GtkWidget *w, gpointer data)
{
int new_user;
new_user=atoi(gtk_entry_get_text(GTK_ENTRY(w)));
update_current_user(new_user);
}
void first_user(GtkWidget *w, gpointer data)
{
update_current_user(1);
}
void prev_user(GtkWidget *w, gpointer data)
{
update_current_user(current_user-1);
}
void next_user(GtkWidget *w, gpointer data)
{
update_current_user(current_user+1);
}
void last_user(GtkWidget *w, gpointer data)
{
update_current_user(totalusers);
}
int update_current_user(int new_user);
#include <gtk/gtk.h>
#include <glade/glade.h>
int main(int argc, char *argv[]) {
GladeXML *xml;
#include "sbbs.h"
#include "dirwrap.h"
#include "events.h"
#include "gtkuseredit.h"
scfg_t cfg;
user_t user;
GladeXML *xml;
int totalusers=0;
int current_user=0;
/* Refreshes global variables... ie: Number of users */
int refresh_globals(void)
{
gchar newlabel[14];
GtkWidget *lTotalUsers;
totalusers=lastuser(&cfg);
sprintf(newlabel,"of %d",totalusers);
lTotalUsers=glade_xml_get_widget(xml, "lTotalUsers");
if(lTotalUsers==NULL) {
fprintf(stderr,"Cannot get the total users widget\n");
return(-1);
}
gtk_label_set_text(GTK_LABEL(lTotalUsers), newlabel);
return(0);
}
/* Initializes global stuff, loads first user etc */
int read_config(void)
{
char ctrl_dir[MAX_PATH+1];
char str[1024];
char *p;
p=getenv("SBBSCTRL");
if(p==NULL) {
fprintf(stderr,"SBBSCTRL not set\n");
return(-1);
}
SAFECOPY(ctrl_dir, p);
prep_dir("",ctrl_dir,sizeof(ctrl_dir));
if(!isdir(ctrl_dir)) {
fprintf(stderr,"SBBSCTRL does not point to a directory\n");
return(-1);
}
/* Read .cfg files here */
memset(&cfg,0,sizeof(cfg));
cfg.size=sizeof(cfg);
SAFECOPY(cfg.ctrl_dir,ctrl_dir);
if(!load_cfg(&cfg, NULL, TRUE, str)) {
fprintf(stderr,"Cannot load configuration data\n");
return(-1);
}
if(refresh_globals())
return(-1);
if(totalusers > 0)
update_current_user(1);
return(0);
}
int main(int argc, char *argv[]) {
gtk_init(&argc, &argv);
glade_init();
/* load the interface */
xml = glade_xml_new("gtkuseredit.glade", NULL, NULL);
xml = glade_xml_new("gtkuseredit.glade", "MainWindow", NULL);
/* connect the signals in the interface */
glade_xml_signal_autoconnect(xml);
/* Set up the global config stuff. */
if(read_config())
return(1);
/* start the event loop */
gtk_main();
return 0;
......
This diff is collapsed.
#ifndef _GTKUSEREDIT_H_
#define _GTKUSEREDIT_H_
#include <gtk/gtk.h>
#include <glade/glade.h>
#include "sbbs.h"
extern scfg_t cfg;
extern user_t user;
extern GladeXML *xml;
extern int totalusers;
extern int current_user;
#endif
OBJS := \
$(MTOBJODIR)$(DIRSEP)events$(OFILE) \
$(MTOBJODIR)$(DIRSEP)gtkuseredit$(OFILE) \
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment