Now depends on libDesktop
This commit is contained in:
parent
5c050dcc52
commit
a98d278a90
|
@ -18,7 +18,7 @@ all: $(TARGETS)
|
||||||
|
|
||||||
todo_OBJS = todo.o callbacks.o main.o
|
todo_OBJS = todo.o callbacks.o main.o
|
||||||
todo_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
|
todo_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
|
||||||
todo_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) -L $(PREFIX)/lib -Wl,-rpath,$(PREFIX)/lib -lSystem
|
todo_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) -L $(PREFIX)/lib -Wl,-rpath,$(PREFIX)/lib -lSystem -lDesktop
|
||||||
|
|
||||||
|
|
||||||
todo: $(todo_OBJS)
|
todo: $(todo_OBJS)
|
||||||
|
|
|
@ -20,3 +20,49 @@
|
||||||
|
|
||||||
|
|
||||||
/* callbacks */
|
/* callbacks */
|
||||||
|
/* on_closex */
|
||||||
|
gboolean on_closex(gpointer data)
|
||||||
|
{
|
||||||
|
Todo * todo = data;
|
||||||
|
|
||||||
|
gtk_main_quit();
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* file menu */
|
||||||
|
/* on_file_close */
|
||||||
|
void on_file_close(gpointer data)
|
||||||
|
{
|
||||||
|
Todo * todo = data;
|
||||||
|
|
||||||
|
on_closex(todo);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* edit menu */
|
||||||
|
/* on_edit_delete */
|
||||||
|
void on_edit_delete(gpointer data)
|
||||||
|
{
|
||||||
|
Todo * todo = data;
|
||||||
|
|
||||||
|
todo_delete_selection(todo);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* on_edit_select_all */
|
||||||
|
void on_edit_select_all(gpointer data)
|
||||||
|
{
|
||||||
|
Todo * todo = data;
|
||||||
|
|
||||||
|
todo_select_all(todo);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* help menu */
|
||||||
|
void on_help_about(gpointer data)
|
||||||
|
{
|
||||||
|
Todo * todo = data;
|
||||||
|
|
||||||
|
/* FIXME implement */
|
||||||
|
}
|
||||||
|
|
|
@ -18,7 +18,20 @@
|
||||||
#ifndef TODO_CALLBACKS_H
|
#ifndef TODO_CALLBACKS_H
|
||||||
# define TODO_CALLBACKS_H
|
# define TODO_CALLBACKS_H
|
||||||
|
|
||||||
|
# include <gtk/gtk.h>
|
||||||
|
|
||||||
|
|
||||||
/* callbacks */
|
/* callbacks */
|
||||||
|
gboolean on_closex(gpointer data);
|
||||||
|
|
||||||
|
/* file menu */
|
||||||
|
void on_file_close(gpointer data);
|
||||||
|
|
||||||
|
/* edit menu */
|
||||||
|
void on_edit_select_all(gpointer data);
|
||||||
|
void on_edit_delete(gpointer data);
|
||||||
|
|
||||||
|
/* help menu */
|
||||||
|
void on_help_about(gpointer data);
|
||||||
|
|
||||||
#endif /* !TODO_CALLBACKS_H */
|
#endif /* !TODO_CALLBACKS_H */
|
||||||
|
|
|
@ -7,7 +7,7 @@ dist=Makefile,todo.h,callbacks.h
|
||||||
|
|
||||||
[todo]
|
[todo]
|
||||||
type=binary
|
type=binary
|
||||||
ldflags=-L $(PREFIX)/lib -Wl,-rpath,$(PREFIX)/lib -lSystem
|
ldflags=-L $(PREFIX)/lib -Wl,-rpath,$(PREFIX)/lib -lSystem -lDesktop
|
||||||
sources=todo.c,callbacks.c,main.c
|
sources=todo.c,callbacks.c,main.c
|
||||||
install=$(BINDIR)
|
install=$(BINDIR)
|
||||||
|
|
||||||
|
|
104
src/todo.c
104
src/todo.c
|
@ -16,7 +16,13 @@
|
||||||
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <errno.h>
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
|
#include <gdk/gdkkeysyms.h>
|
||||||
|
#include <System.h>
|
||||||
|
#include <Desktop.h>
|
||||||
|
#include "callbacks.h"
|
||||||
#include "todo.h"
|
#include "todo.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -26,26 +32,124 @@
|
||||||
struct _Todo
|
struct _Todo
|
||||||
{
|
{
|
||||||
GtkWidget * window;
|
GtkWidget * window;
|
||||||
|
GtkWidget * scrolled;
|
||||||
|
GtkListStore * store;
|
||||||
|
GtkWidget * view;
|
||||||
|
GtkWidget * statusbar;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* constants */
|
||||||
|
enum { TD_COL_DONE, TD_COL_TITLE };
|
||||||
|
#define TD_COL_LAST TD_COL_TITLE
|
||||||
|
#define TD_NUM_COLS (TD_COL_LAST + 1)
|
||||||
|
|
||||||
|
|
||||||
|
/* variables */
|
||||||
|
static DesktopMenu _file_menu[] =
|
||||||
|
{
|
||||||
|
{ "_Close", G_CALLBACK(on_file_close), GTK_STOCK_CLOSE, GDK_W },
|
||||||
|
{ NULL, NULL, NULL, 0 }
|
||||||
|
};
|
||||||
|
static DesktopMenu _edit_menu[] =
|
||||||
|
{
|
||||||
|
{ "_Delete", G_CALLBACK(on_edit_delete), GTK_STOCK_DELETE, 0 },
|
||||||
|
{ "", NULL, NULL, 0 },
|
||||||
|
#if GTK_CHECK_VERSION(2, 10, 0)
|
||||||
|
{ "_Select all", G_CALLBACK(on_edit_select_all), GTK_STOCK_SELECT_ALL,
|
||||||
|
#else
|
||||||
|
{ "_Select all", G_CALLBACK(on_edit_select_all), "edit-select-all",
|
||||||
|
#endif
|
||||||
|
GDK_A },
|
||||||
|
{ NULL, NULL, NULL, 0 }
|
||||||
|
};
|
||||||
|
static DesktopMenu _help_menu[] =
|
||||||
|
{
|
||||||
|
#if GTK_CHECK_VERSION(2, 6, 0)
|
||||||
|
{ "_About", G_CALLBACK(on_help_about), GTK_STOCK_ABOUT, 0 },
|
||||||
|
#else
|
||||||
|
{ "_About", G_CALLBACK(on_help_about), NULL, 0 },
|
||||||
|
#endif
|
||||||
|
{ NULL, NULL, NULL, 0 }
|
||||||
|
};
|
||||||
|
static DesktopMenubar _menubar[] =
|
||||||
|
{
|
||||||
|
{ "_File", _file_menu },
|
||||||
|
{ "_Edit", _edit_menu },
|
||||||
|
{ "_Help", _help_menu },
|
||||||
|
{ NULL, NULL },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* public */
|
/* public */
|
||||||
/* functions */
|
/* functions */
|
||||||
/* todo_new */
|
/* todo_new */
|
||||||
|
static void _new_view(Todo * todo);
|
||||||
|
|
||||||
Todo * todo_new(void)
|
Todo * todo_new(void)
|
||||||
{
|
{
|
||||||
Todo * todo;
|
Todo * todo;
|
||||||
|
GtkWidget * vbox;
|
||||||
|
GtkWidget * widget;
|
||||||
|
|
||||||
if((todo = malloc(sizeof(*todo))) == NULL)
|
if((todo = malloc(sizeof(*todo))) == NULL)
|
||||||
|
{
|
||||||
|
error_set_code(1, "%s", strerror(errno));
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
|
/* main window */
|
||||||
todo->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
todo->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||||
|
gtk_window_set_default_size(GTK_WINDOW(todo->window), 300, 400);
|
||||||
|
gtk_window_set_icon_name(GTK_WINDOW(todo->window), "stock_todo");
|
||||||
|
gtk_window_set_title(GTK_WINDOW(todo->window), "Todo");
|
||||||
|
g_signal_connect_swapped(G_OBJECT(todo->window), "delete-event",
|
||||||
|
G_CALLBACK(on_closex), todo);
|
||||||
|
vbox = gtk_vbox_new(FALSE, 0);
|
||||||
|
/* menubar */
|
||||||
|
widget = desktop_menubar_create(_menubar, todo, NULL);
|
||||||
|
gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, TRUE, 0);
|
||||||
|
/* toolbar */
|
||||||
|
/* view */
|
||||||
|
todo->scrolled = gtk_scrolled_window_new(NULL, NULL);
|
||||||
|
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(todo->scrolled),
|
||||||
|
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
|
||||||
|
_new_view(todo);
|
||||||
|
gtk_box_pack_start(GTK_BOX(vbox), todo->scrolled, TRUE, TRUE, 0);
|
||||||
|
/* statusbar */
|
||||||
|
todo->statusbar = gtk_statusbar_new();
|
||||||
|
gtk_box_pack_start(GTK_BOX(vbox), todo->statusbar, FALSE, TRUE, 0);
|
||||||
|
gtk_container_add(GTK_CONTAINER(todo->window), vbox);
|
||||||
gtk_widget_show_all(todo->window);
|
gtk_widget_show_all(todo->window);
|
||||||
return todo;
|
return todo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void _new_view(Todo * todo)
|
||||||
|
{
|
||||||
|
todo->store = gtk_list_store_new(TD_NUM_COLS, G_TYPE_BOOLEAN,
|
||||||
|
G_TYPE_STRING);
|
||||||
|
todo->view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(
|
||||||
|
todo->store));
|
||||||
|
gtk_container_add(GTK_CONTAINER(todo->scrolled), todo->view);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* todo_delete */
|
/* todo_delete */
|
||||||
void todo_delete(Todo * todo)
|
void todo_delete(Todo * todo)
|
||||||
{
|
{
|
||||||
free(todo);
|
free(todo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* useful */
|
||||||
|
/* todo_delete_selection */
|
||||||
|
void todo_delete_selection(Todo * todo)
|
||||||
|
{
|
||||||
|
/* FIXME implement */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* todo_select_all */
|
||||||
|
void todo_select_all(Todo * todo)
|
||||||
|
{
|
||||||
|
/* FIXME implement */
|
||||||
|
}
|
||||||
|
|
|
@ -28,4 +28,8 @@ typedef struct _Todo Todo;
|
||||||
Todo * todo_new(void);
|
Todo * todo_new(void);
|
||||||
void todo_delete(Todo * todo);
|
void todo_delete(Todo * todo);
|
||||||
|
|
||||||
|
/* useful */
|
||||||
|
void todo_delete_selection(Todo * todo);
|
||||||
|
void todo_select_all(Todo * todo);
|
||||||
|
|
||||||
#endif /* !TODO_TODO_H */
|
#endif /* !TODO_TODO_H */
|
||||||
|
|
Loading…
Reference in New Issue
Block a user