// -*- C++ -*- /* * GChemPaint arrows plugin * plugin.cc * * Copyright (C) 2004 Jean Bréfort * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 * USA */ #include "gchempaint-config.h" #include "plugin.h" #include "lib/application.h" #include "arrowtool.h" #include "retrosynthesis.h" #include "retrosynthesisarrow.h" #include "retrosynthesisstep.h" #include "gcp-stock-pixbufs.h" #include #include gcpArrowsPlugin plugin; static Object* CreateRetrosynthesis () { return new gcpRetrosynthesis (); } static Object* CreateRetrosynthesisArrow () { return new gcpRetrosynthesisArrow (NULL); } static Object* CreateRetrosynthesisStep () { return new gcpRetrosynthesisStep (); } gcpArrowsPlugin::gcpArrowsPlugin (): gcpPlugin () { RetrosynthesisType = Object::AddType ("retrosynthesis", CreateRetrosynthesis); Object::SetCreationLabel (RetrosynthesisType, _("Create a new retrosynthesis pathway")); RetrosynthesisArrowType = Object::AddType ("retrosynthesis-arrow", CreateRetrosynthesisArrow); RetrosynthesisStepType = Object::AddType ("retrosynthesis-step", CreateRetrosynthesisStep); } gcpArrowsPlugin::~gcpArrowsPlugin () { } static gcpIconDesc icon_descs[] = { {"gcp_SimpleArrow", gcp_arrow1_24}, {"gcp_ReversibleArrow", gcp_arrow2_24}, {"gcp_RetrosynthesisArrow", gcp_retrosynth_24}, {"gcp_MesomeryArrow", gcp_mesomery_24}, {NULL, NULL}, }; static GtkRadioActionEntry entries[] = { { "SimpleArrow", "gcp_SimpleArrow", N_("Simple arrow"), NULL, N_("Add an arrow for an irreversible reaction"), 0 }, { "ReversibleArrow", "gcp_ReversibleArrow", N_("Double arrow"), NULL, N_("Add a pair of arrows for a reversible reaction"), 0 }, { "RetrosynthesisArrow", "gcp_RetrosynthesisArrow", N_("Retrosynthesis arrow"), NULL, N_("Add an arrow for a retrosynthesis step"), 0 }, { "DoubleHeadedArrow", "gcp_MesomeryArrow", N_("Mesomery arrow"), NULL, N_("Add a double headed arrow to represent mesomery"), 0 }, }; static const char *ui_description = "" " " " " " " " " " " " " ""; void gcpArrowsPlugin::Populate (gcpApplication* App) { GError *error = NULL; GConfClient *conf_client = gconf_client_get_default (); gconf_client_add_dir (conf_client, "/apps/gchempaint/plugins/arrows", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); bool FullHeads = gconf_client_get_bool (conf_client, "/apps/gchempaint/plugins/arrows/full-arrows-heads", &error); if (error) { FullHeads = false; g_message("GConf failed: %s", error->message); g_error_free (error); } gconf_client_remove_dir (conf_client, "/apps/gchempaint/plugins/arrows", NULL); g_object_unref (conf_client); App->AddActions (entries, G_N_ELEMENTS (entries), ui_description, icon_descs); App->RegisterToolbar ("ArrowsToolbar", 4); new gcpArrowTool (App); new gcpArrowTool (App, FullHeads? gcpFullReversibleArrow: gcpReversibleArrow); new gcpArrowTool (App, gcpDoubleHeadedArrow); new gcpArrowTool (App, gcpDoubleQueuedArrow); Object::AddRule ("retrosynthesis", RuleMustContain, "retrosynthesis-step"); Object::AddRule ("retrosynthesis", RuleMustContain, "retrosynthesis-arrow"); Object::AddRule ("retrosynthesis-step", RuleMustContain, "molecule"); Object::AddRule ("molecule", RuleMayBeIn, "retrosynthesis-step"); Object::AddRule ("retrosynthesis-arrow", RuleMustBeIn, "retrosynthesis"); Object::AddRule ("retrosynthesis-step", RuleMustBeIn, "retrosynthesis"); }