Initial commit.
This commit is contained in:
commit
b1b1854abb
12
src/callback.c
Normal file
12
src/callback.c
Normal 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
3
src/callback.h
Normal 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
99
src/dialogues.c
Normal 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
14
src/dialogues.h
Normal 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
25
src/headers.h
Normal 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"
|
||||
|
101
src/main.c
Normal file
101
src/main.c
Normal 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
0
src/network.c
Normal file
0
src/network.h
Normal file
0
src/network.h
Normal file
0
src/support.c
Normal file
0
src/support.c
Normal file
0
src/support.h
Normal file
0
src/support.h
Normal file
0
src/system.c
Normal file
0
src/system.c
Normal file
0
src/system.h
Normal file
0
src/system.h
Normal file
0
src/xrdb.c
Normal file
0
src/xrdb.c
Normal file
0
src/xrdb.h
Normal file
0
src/xrdb.h
Normal file
Loading…
Reference in New Issue
Block a user