Initial commit.

This commit is contained in:
Mid Favila 2022-12-03 22:52:36 -04:00
commit b1b1854abb
19 changed files with 254 additions and 0 deletions

0
CHANGES Normal file
View File

0
LICENSE Normal file
View File

0
README Normal file
View File

12
src/callback.c Normal file
View File

@ -0,0 +1,12 @@
#include "headers.h"
void cb_quit(Widget w, int client, XtPointer call)
{
exit(client);
}
void cb_errlog(Widget w, const char *client, XtPointer call)
{
fprintf(stderr, "%s\n", client);
}

3
src/callback.h Normal file
View File

@ -0,0 +1,3 @@
void cb_quit(Widget w, int client, XtPointer call);
void cb_errlog(Widget w, const char *client, XtPointer call);
void cb_filesel(Widget w, char *result, XtPointer call);

99
src/dialogues.c Normal file
View File

@ -0,0 +1,99 @@
#include "headers.h"
Widget XawMakeMenuEntry(Widget parent, const char *name, void *func, XtPointer data)
{
Widget w;
w = XtVaCreateManagedWidget(name, smeBSBObjectClass, parent, NULL);
XtAddCallback(w, XtNcallback, func, data);
return(w);
}
/* XawMakeMenu -- 0.1 */
/* Accepts a parent that contains the menu, a name for the menu, and the quantity of argument pairs supplied */
/* an "argument pair" consists of a name, used as the menu entry's label, and a callback, which is assigned to it. */
/* Returns NULL on failure, or a pointer to the menu on success. */
Widget XawMakeMenu(Widget parent, const char *name, int argtrips, ...)
{
va_list ap;
va_start(ap, argtrips);
int i;
Widget menu;
i = 0;
menu = 0;
if( (menu = XtVaCreatePopupShell(name, simpleMenuWidgetClass, parent, NULL)) == NULL)
{
return(NULL);
}
else
{
for(i = 0; i < argtrips; i++)
{
XawMakeMenuEntry(menu, va_arg(ap, void*), (XtCallbackProc *) va_arg(ap, void*), va_arg(ap, void*));
}
}
va_end(ap);
return(menu);
}
Widget XawVaCreateSimpleMenuBar(Widget parent, const char *name, int menutrip, ...)
{
va_list ap;
va_start(ap, menutrip);
char *bname, *mname;
int i;
Widget frame, gridbox, button;
i = 0;
frame = XtVaCreateManagedWidget(name, frameWidgetClass, parent,
XtNgridx, 0,
XtNgridy, 0,
XtNweightx, 1,
XtNshadowType, Raised,
XtNborderWidth, 1,
XtNshadowWidth, 1,
NULL);
gridbox = XtVaCreateManagedWidget("Menu Gridbox", gridboxWidgetClass, frame,
XtNgridx, 0,
XtNgridy, 0,
XtNweightx, 1,
NULL);
for(i = 0; i < menutrip; i++)
{
bname = va_arg(ap, void*);
mname = va_arg(ap, void*);
button = va_arg(ap, void*);
if(i+1 == menutrip)
{
XtVaCreateManagedWidget(NULL, labelWidgetClass, gridbox,
XtNgridy, 0,
XtNgridx, i++,
XtNweightx, 1,
XtNfill, FillNone,
XtNborderWidth, 0,
NULL);
}
*((Widget *) button) = XtVaCreateManagedWidget(bname, menuButtonWidgetClass, gridbox,
XtNgridy, 0,
XtNgridx, i,
XtNmenuName, mname,
NULL
);
}
return(frame);
}

14
src/dialogues.h Normal file
View File

@ -0,0 +1,14 @@
Widget XawMakeMenuEntry(Widget parent, const char *name, void *func, XtPointer data);
/* example: XawMakeMenu(tb_file, "File Menu", 2,
"Connect...", cb_connect, struct data_connect,
"Quit", cb_quit, EXIT_STATUS);
*/
Widget XawMakeMenu(Widget parent, const char *name, int argtrips, ...);
/* Return a menu bar containing MenuButtons bound to the associated Menus. */
/* Example call: XawVaCreateSimpleMenuBar(foo, "Menu Bar", 3,
"File", menu_file, &first_button,
"View", menu_view, &second_button,
"Edit", menu_edit, &third_button); */
Widget XawVaCreateSimpleMenuBar(Widget parent, const char *name, int menutrip, ...);

25
src/headers.h Normal file
View File

@ -0,0 +1,25 @@
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <X11/Intrinsic.h>
#include <X11/StringDefs.h>
#include <X11/XawPlus/Gridbox.h>
#include <X11/XawPlus/Paned.h>
#include <X11/XawPlus/Tabs.h>
#include <X11/XawPlus/Label.h>
#include <X11/XawPlus/Frame.h>
#include <X11/XawPlus/MenuButton.h>
#include <X11/XawPlus/AsciiText.h>
#include <X11/XawPlus/SimpleMenu.h>
#include <X11/XawPlus/List.h>
#include <X11/XawPlus/SmeBSB.h>
#include <X11/XawPlus/SmeLine.h>
#include "dialogues.h"
#include "callback.h"

0
src/irc.c Normal file
View File

0
src/irc.h Normal file
View File

101
src/main.c Normal file
View File

@ -0,0 +1,101 @@
#include "headers.h"
int main(int argc, char **argv)
{
Widget shell, toplevel, tab_frame;
Widget toolbar, tabs;
Widget tb_file, tb_view, tb_oper, tb_help;
Widget menu_file, menu_view, menu_oper, menu_help;
Widget tab_gbox, tab_vpane, tab_textout, tab_userlist, tab_textin;
shell = XtInitialize("XIrc", "xirc", NULL, 0, &argc, argv);
toplevel = XtVaCreateManagedWidget("Top Level", gridboxWidgetClass, shell,
NULL);
toolbar = XawVaCreateSimpleMenuBar(toplevel, "Tool Bar", 4,
"File", "File Menu", &tb_file,
"View", "View Menu", &tb_view,
"Operations", "Operations Menu", &tb_oper,
"Help", "Help Menu", &tb_help);
menu_file = XawMakeMenu(tb_file, "File Menu", 2,
"Connect...", cb_errlog, "Connecting to: irc.libera.chat",
"Quit", cb_quit, EXIT_SUCCESS);
menu_view = XawMakeMenu(tb_view, "View Menu", 1,
"Show Log", cb_errlog, "Showing log!");
menu_oper = XawMakeMenu(tb_oper, "Operations Menu", 4,
"Join Channel", cb_errlog, "JOIN: foobaz",
"Privmsg", cb_errlog, "PRIVMSG: foobar",
"Whois", cb_errlog, "WHOIS: foobar",
"Ping", cb_errlog, "PING: foobar");
menu_help = XawMakeMenu(tb_help, "Help Menu", 1,
"About", cb_errlog, "Mockup of an IRC client GUI. WIP!");
tabs = XtVaCreateManagedWidget("Main Window", tabsWidgetClass, toplevel,
XtNgridx, 0,
XtNgridy, -1,
XtNweighty, 1,
NULL);
tab_frame = XtVaCreateManagedWidget("##secret-project", frameWidgetClass, tabs,
XtNshadowType, Trough,
XtNshadowWidth, 1,
NULL);
tab_gbox = XtVaCreateManagedWidget("Tab Gridbox", gridboxWidgetClass, tab_frame,
XtNgridHeight, 10,
NULL);
tab_vpane = XtVaCreateManagedWidget("Chat/List Pane", panedWidgetClass, tab_gbox,
XtNorientation, XtorientHorizontal,
XtNgridy, 0,
XtNweighty, 8,
NULL);
tab_userlist = XtVaCreateManagedWidget("User List", listWidgetClass, tab_vpane,
XtNverticalList, True,
XtNdefaultColumns, 1,
XtNforceColumns, True,
NULL);
tab_textout = XtVaCreateManagedWidget("Text Output", asciiTextWidgetClass, tab_vpane,
XtNtype, XawAsciiFile,
XtNstring, "/tmp/irc.txt",
XtNscrollVertical, XawtextScrollAlways,
XtNwrap, XawtextWrapLine,
NULL);
tab_textin = XtVaCreateManagedWidget("Text Input", asciiTextWidgetClass, tab_gbox,
XtNeditType, XawtextEdit,
XtNwrap, XawtextWrapLine,
XtNscrollVertical, XawtextScrollWhenNeeded,
XtNscrollHorizontal, XawtextScrollNever,
XtNgridy, 1,
XtNweighty, 2,
XtNweightx, 1,
NULL);
char *users[10];
users[0] = "foo";
users[1] = "bar";
users[2] = "baz";
users[3] = "Hello,";
users[4] = "all";
users[5] = "you";
users[6] = "sinners";
users[7] = "out";
users[8] = "there!";
users[9] = NULL;
XawListChange(tab_userlist, (const char **) users, 0, 0, 0);
XtRealizeWidget(shell);
XtMainLoop();
}

0
src/network.c Normal file
View File

0
src/network.h Normal file
View File

0
src/support.c Normal file
View File

0
src/support.h Normal file
View File

0
src/system.c Normal file
View File

0
src/system.h Normal file
View File

0
src/xrdb.c Normal file
View File

0
src/xrdb.h Normal file
View File