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…
x
Reference in New Issue
Block a user