Ejemplo n.º 1
0
static gchar*
resolve_bookmark (MuConfig *opts, GError **err)
{
	MuBookmarks *bm;
	char* val;
	const gchar *bmfile;

	bmfile = mu_runtime_path (MU_RUNTIME_PATH_BOOKMARKS);
	bm = mu_bookmarks_new (bmfile);
	if (!bm) {
		g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_FILE_CANNOT_OPEN,
			     "failed to open bookmarks file '%s'", bmfile);
		return FALSE;
	}

	val = (gchar*)mu_bookmarks_lookup (bm, opts->bookmark);
	if (!val)
		g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_NO_MATCHES,
			     "bookmark '%s' not found", opts->bookmark);
	else
		val = g_strdup (val);

	mu_bookmarks_destroy (bm);
	return val;
}
Ejemplo n.º 2
0
static MuError
cmd_contacts (ServerContext *ctx, GSList *args, GError **err)
{
	MuContacts *contacts;
	char *sexp;
	gboolean personal;
	time_t after;
	const char *str;

	personal = get_bool_from_args (args, "personal", TRUE, NULL);
	str = get_string_from_args (args, "after", TRUE, NULL);
	after = str ? (time_t)atoi(str) : 0;

	contacts = mu_contacts_new
		(mu_runtime_path (MU_RUNTIME_PATH_CONTACTS));
	if (!contacts) {
		print_error (MU_ERROR_INTERNAL,
			     "failed to open contacts cache");
		return MU_OK;
	}

	/* dump the contacts cache as a giant sexp */
	sexp = contacts_to_sexp (contacts, personal, after);
	print_expr ("%s\n", sexp);
	g_free (sexp);

	mu_contacts_destroy (contacts);
	return MU_OK;
}
Ejemplo n.º 3
0
static gboolean
mu_guile_init_instance (const char *muhome)
{
	MuStore *store;
	MuQuery *query;
	GError *err;

	setlocale (LC_ALL, "");

	if (!mu_runtime_init (muhome, "guile"))
		return FALSE;

	store = mu_store_new_read_only (mu_runtime_path(MU_RUNTIME_PATH_XAPIANDB),
					&err);
	if (!store) {
		mu_guile_g_error (__FUNCTION__, err);
		g_clear_error (&err);
		return FALSE;
	}

	query = mu_query_new (store, &err);
	mu_store_unref (store);
	if (!query) {
		mu_guile_g_error (__FUNCTION__, err);
		g_clear_error (&err);
		return FALSE;
	}

	_singleton        = g_new0 (MuGuile, 1);
	_singleton->query = query;

	return TRUE;
}
Ejemplo n.º 4
0
static MuError
run_cmd_cfind (const char* pattern, MuConfigFormat format,
	       gboolean color, GError **err)
{
	gboolean rv;
	MuContacts *contacts;
	size_t num;
	ECData ecdata;

	ecdata.format = format;
	ecdata.color  = color;

	contacts = mu_contacts_new (mu_runtime_path(MU_RUNTIME_PATH_CONTACTS));
	if (!contacts) {
		g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_CONTACTS_CANNOT_RETRIEVE,
				     "could not retrieve contacts");
		return MU_ERROR_CONTACTS_CANNOT_RETRIEVE;
	}

	print_header (format);
	rv = mu_contacts_foreach (contacts,
				  (MuContactsForeachFunc)each_contact,
				  &ecdata, pattern, &num);
	mu_contacts_destroy (contacts);

	if (num == 0) {
		g_warning ("no matching contacts found");
		return MU_ERROR_NO_MATCHES;
	}

	return rv ? MU_OK : MU_ERROR_CONTACTS;
}
Ejemplo n.º 5
0
Archivo: mug.c Proyecto: Chris00/mu
static GtkWidget *
mug_shortcuts_bar (MugData * data)
{
	data->shortcuts = mug_shortcuts_new
		(mu_runtime_path(MU_RUNTIME_PATH_BOOKMARKS));

	g_signal_connect (G_OBJECT (data->shortcuts), "clicked",
			  G_CALLBACK (on_shortcut_clicked), data);

	return data->shortcuts;
}
Ejemplo n.º 6
0
Archivo: mu-cmd.c Proyecto: antono/mu
MuError
with_store (store_func func, MuConfig *opts, gboolean read_only,
	    GError **err)
{
	MuStore *store;

	if (read_only)
		store = mu_store_new_read_only
			(mu_runtime_path(MU_RUNTIME_PATH_XAPIANDB),
			 err);
	else
		store = mu_store_new_writable
			(mu_runtime_path(MU_RUNTIME_PATH_XAPIANDB),
			 mu_runtime_path(MU_RUNTIME_PATH_CONTACTS),
			 opts->rebuild, err);
	if (!store)
		return MU_G_ERROR_CODE(err);
	else {
		MuError merr;
		merr = func (store, opts, err);
		mu_store_unref (store);
		return merr;
	}
}
Ejemplo n.º 7
0
static GtkWidget *
mug_query_area (MugData * mugdata)
{
	GtkWidget *queryarea, *paned, *scrolled;

#ifdef HAVE_GTK3
	queryarea = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
	paned = gtk_paned_new (GTK_ORIENTATION_VERTICAL);
#else
	queryarea = gtk_vbox_new (FALSE, 2);
	paned = gtk_vpaned_new ();
#endif /*!HAVE_GTK3*/


	mugdata->mlist = mug_msg_list_view_new
		(mu_runtime_path(MU_RUNTIME_PATH_XAPIANDB));
	scrolled = gtk_scrolled_window_new (NULL, NULL);
	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled),
					GTK_POLICY_AUTOMATIC,
					GTK_POLICY_AUTOMATIC);

	gtk_container_add (GTK_CONTAINER (scrolled), mugdata->mlist);
	gtk_paned_add1 (GTK_PANED (paned), scrolled);

	mugdata->msgview = mug_msg_view_new ();
	mug_msg_view_set_note (MUG_MSG_VIEW(mugdata->msgview),
			       "<h1>Welcome to <i>mug</i>!</h1><hr>"
			       "<tt>mug</tt> is an experimental UI for <tt>mu</tt>, which will "
			       "slowly evolve into something useful.<br><br>Enjoy the ride.");
	g_signal_connect (G_OBJECT (mugdata->mlist), "msg-selected",
			  G_CALLBACK (on_msg_selected), mugdata);
	g_signal_connect (G_OBJECT (mugdata->mlist), "error-occured",
			  G_CALLBACK (on_list_view_error), mugdata);
	gtk_paned_add2 (GTK_PANED (paned), mugdata->msgview);

	mugdata->querybar = mug_querybar ();
	g_signal_connect (G_OBJECT (mugdata->querybar), "query-changed",
			  G_CALLBACK (on_query_changed), mugdata);

	gtk_box_pack_start (GTK_BOX (queryarea),
			    mugdata->querybar, FALSE, FALSE, 2);
	gtk_box_pack_start (GTK_BOX (queryarea), paned, TRUE, TRUE, 2);

	gtk_widget_show_all (queryarea);
	return queryarea;
}
Ejemplo n.º 8
0
static GtkWidget *
mug_query_area (MugData * mugdata)
{
	GtkWidget *queryarea;
	GtkWidget *paned;
	GtkWidget *scrolled;

#ifdef HAVE_GTK3
	queryarea = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
	paned = gtk_paned_new (GTK_ORIENTATION_VERTICAL);
#else
	queryarea = gtk_vbox_new (FALSE, 2);
	paned = gtk_vpaned_new ();
#endif /*!HAVE_GTK3 */


	mugdata->mlist = mug_msg_list_view_new
		(mu_runtime_path(MU_RUNTIME_PATH_XAPIANDB));
	scrolled = gtk_scrolled_window_new (NULL, NULL);
	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled),
					GTK_POLICY_AUTOMATIC,
					GTK_POLICY_AUTOMATIC);

	gtk_container_add (GTK_CONTAINER (scrolled), mugdata->mlist);
	gtk_paned_add1 (GTK_PANED (paned), scrolled);

	mugdata->msgview = mug_msg_view_new ();

	mug_msg_view_set_msg (MUG_MSG_VIEW (mugdata->msgview), NULL);
	g_signal_connect (G_OBJECT (mugdata->mlist), "msg-selected",
			  G_CALLBACK (on_msg_selected), mugdata);
	g_signal_connect (G_OBJECT (mugdata->mlist), "error-occured",
			  G_CALLBACK (on_list_view_error), mugdata);
	gtk_paned_add2 (GTK_PANED (paned), mugdata->msgview);

	mugdata->querybar = mug_querybar ();
	g_signal_connect (G_OBJECT (mugdata->querybar), "query-changed",
			  G_CALLBACK (on_query_changed), mugdata);

	gtk_box_pack_start (GTK_BOX (queryarea),
			    mugdata->querybar, FALSE, FALSE, 2);
	gtk_box_pack_start (GTK_BOX (queryarea), paned, TRUE, TRUE, 2);

	gtk_widget_show_all (queryarea);
	return queryarea;
}
Ejemplo n.º 9
0
static gboolean
query_params_valid (MuConfig *opts, GError **err)
{
	const gchar *xpath;

	if (!opts->params[1]) {
		mu_util_g_set_error (err, MU_ERROR_IN_PARAMETERS,
				     "missing query");
		return FALSE;
	}

	xpath = mu_runtime_path (MU_RUNTIME_PATH_XAPIANDB);
	if (mu_util_check_dir (xpath, TRUE, FALSE))
		return TRUE;

	mu_util_g_set_error (err, MU_ERROR_FILE_CANNOT_READ,
			     "'%s' is not a readable Xapian directory",
			     xpath);
	return FALSE;
}