Re: [Inkscape-devel] Displayig a Tool in the Menu

Hi all, I have been successful in making a menu-item in the *Object* Menu of the name *Recolor Artwork*. Just as an exercise I have copied the Fill and Stroke .cpp and .h files and translated the entire dialog to under the name *RecolorArtwork* rather than *FillAndStroke*. Logically this should mean that the entire dialog box shall now be replicated under the pseudonym of * RecolorArtwork*.
To add a menu-item I edited the *menu-skeleton.h* file's variable * menus_skeleton[]. *
I added " <verb verb-id="DialogRecolorArtwork" />\n " under " <verb verb-id="DialogFillStroke" />\n " This handles the display part of the task. Now what remains is linking the action and verb. I added a enum value: *SP_VERB_DIALOG_RECOLOR_ARTWORK* in *verbs.h* and in *verbs.cpp * I added:
*new DialogVerb(SP_VERB_DIALOG_RECOLOR_ARTWORK, "DialogRecolorArtwork", N_("_Recolor Artwork..."),* * N_("Description of Recolor Artwork..."), INKSCAPE_ICON("dialog-fill-and-stroke")),
* This links the verb *SP_VERB_DIALOG_RECOLOR_ARTWORK *and * DialogRecolorArtwork. *
In the same file *verbs.cpp*, I added:
*case SP_VERB_DIALOG_RECOLOR_ARTWORK:* * dt->_dlg_mgr->showDialog("RecolorArtwork");* * break;*
in the function: * * *void DialogVerb::perform(SPAction *action, void *data) * * * which launches the appropriate dialog or rather it should. Sadly this is not the case ?
Can someone please help me point out the what am I missing out ? -demicoder
On Sun, Apr 14, 2013 at 2:10 PM, Arshdeep Singh <moduli16@...400...> wrote:
Thankyou for the information. :)
I managed to find the 'display' part of the menu-items in " menus-skeleton.h " .
SYNTAX in MENU-SKELETON.H -
" <submenu name="" N_("_Object") "">\n" " <verb verb-id="DialogFillStroke" />\n"
verb-id attaches the action to launch the menu-item. I am unable to figure out where establish this verb-id and requisite action.
It shall be really helpful if you could point me in the right direction !
On Sun, Apr 14, 2013 at 12:57 AM, Jon Cruz <jon@...18...> wrote:
On Apr 12, 2013, at 11:20 AM, Arshdeep Singh wrote:
Hi all, I have made a small widget that is populated in a page in a notebook in
a panel. Right now, for experimental purposes it contains only a GTKButton. How can I make it appear in a menu like Fill and Stroke ?
Fill and Stroke is created under Object->Fill and Stroke
(Shift+Ctrl+F).
We're trying to focus on a more logical approach, rather than physical. In that direction we set up verbs and actions then just get those placed into the menus.
Actions are a GTK+ concept https://developer.gnome.org/gtk2/stable/GtkAction.html https://developer.gnome.org/gtkmm/unstable/classGtk_1_1Action.html
Then we have a higher-level concept of a 'verb'. Verbs, aside from predating GtkAction's addition to Gtk, are not tied to a specific Gtk window but apply per document. We also have helpers that can get a gkt action from an inkscape verb.
-- Arshdeep Singh Third Year, Computer Engineering Delhi Technological University Ph: +91-9654115614 https://sites.google.com/site/adsingh1729/home

Here is a screenshot: [image: Inline image 1]
On Sun, Apr 14, 2013 at 4:53 PM, Arshdeep Singh <moduli16@...400...> wrote:
Hi all, I have been successful in making a menu-item in the *Object* Menu of the name *Recolor Artwork*. Just as an exercise I have copied the Fill and Stroke .cpp and .h files and translated the entire dialog to under the name *RecolorArtwork* rather than *FillAndStroke*. Logically this should mean that the entire dialog box shall now be replicated under the pseudonym of *RecolorArtwork*.
To add a menu-item I edited the *menu-skeleton.h* file's variable * menus_skeleton[]. *
I added " <verb verb-id="DialogRecolorArtwork" />\n " under " <verb verb-id="DialogFillStroke" />\n " This handles the display part of the task. Now what remains is linking the action and verb. I added a enum value: *SP_VERB_DIALOG_RECOLOR_ARTWORK* in *verbs.h* and in *verbs.cpp * I added:
*new DialogVerb(SP_VERB_DIALOG_RECOLOR_ARTWORK, "DialogRecolorArtwork", N_("_Recolor Artwork..."),*
N_("Description of Recolor Artwork..."),
INKSCAPE_ICON("dialog-fill-and-stroke")),
This links the verb *SP_VERB_DIALOG_RECOLOR_ARTWORK *and * DialogRecolorArtwork. *
In the same file *verbs.cpp*, I added:
*case SP_VERB_DIALOG_RECOLOR_ARTWORK:*
dt->_dlg_mgr->showDialog("RecolorArtwork");*
break;*
in the function:
*void DialogVerb::perform(SPAction *action, void *data) *
which launches the appropriate dialog or rather it should. Sadly this is not the case ?
Can someone please help me point out the what am I missing out ? -demicoder
On Sun, Apr 14, 2013 at 2:10 PM, Arshdeep Singh <moduli16@...400...>wrote:
Thankyou for the information. :)
I managed to find the 'display' part of the menu-items in " menus-skeleton.h " .
SYNTAX in MENU-SKELETON.H -
" <submenu name="" N_("_Object") "">\n" " <verb verb-id="DialogFillStroke" />\n"
verb-id attaches the action to launch the menu-item. I am unable to figure out where establish this verb-id and requisite action.
It shall be really helpful if you could point me in the right direction !
On Sun, Apr 14, 2013 at 12:57 AM, Jon Cruz <jon@...18...> wrote:
On Apr 12, 2013, at 11:20 AM, Arshdeep Singh wrote:
Hi all, I have made a small widget that is populated in a page in a notebook
in a panel. Right now, for experimental purposes it contains only a GTKButton. How can I make it appear in a menu like Fill and Stroke ?
Fill and Stroke is created under Object->Fill and Stroke
(Shift+Ctrl+F).
We're trying to focus on a more logical approach, rather than physical. In that direction we set up verbs and actions then just get those placed into the menus.
Actions are a GTK+ concept https://developer.gnome.org/gtk2/stable/GtkAction.html https://developer.gnome.org/gtkmm/unstable/classGtk_1_1Action.html
Then we have a higher-level concept of a 'verb'. Verbs, aside from predating GtkAction's addition to Gtk, are not tied to a specific Gtk window but apply per document. We also have helpers that can get a gkt action from an inkscape verb.
-- Arshdeep Singh Third Year, Computer Engineering Delhi Technological University Ph: +91-9654115614 https://sites.google.com/site/adsingh1729/home
-- Arshdeep Singh Third Year, Computer Engineering Delhi Technological University Ph: +91-9654115614 https://sites.google.com/site/adsingh1729/home

On Apr 14, 2013, at 4:23 AM, Arshdeep Singh wrote:
[SNIP]
in the function:
void DialogVerb::perform(SPAction *action, void *data)
which launches the appropriate dialog or rather it should. Sadly this is not the case ?
Can someone please help me point out the what am I missing out ?
Look in the file ui/dialog/dialog-manager.cpp starting at about line 99. That's what lets the dialog manager know what to do when you pass it the string "RecolorArtwork"
if (dialogs_type == FLOATING) { registerFactory("AlignAndDistribute", &create<AlignAndDistribute, FloatingBehavior>); registerFactory("DocumentMetadata", &create<DocumentMetadata, FloatingBehavior>); registerFactory("DocumentProperties", &create<DocumentProperties, FloatingBehavior>); registerFactory("ExtensionEditor", &create<ExtensionEditor, FloatingBehavior>); registerFactory("FillAndStroke", &create<FillAndStroke, FloatingBehavior>); registerFactory("FilterEffectsDialog", &create<FilterEffectsDialog, FloatingBehavior>); registerFactory("Find", &create<Find, FloatingBehavior>); registerFactory("Glyphs", &create<GlyphsPanel, FloatingBehavior>); registerFactory("IconPreviewPanel", &create<IconPreviewPanel, FloatingBehavior>);
BTW, one way to find such things would be to search for the string of an existing thing you're trying to be similar to. One such would be the fill-and-stroke dialog. This command can help:
find . -name '*.cpp' -exec grep -H '"FillAndStroke"'
(that has single quotes on the outside and double quotes on the inside so that it will search for that string with the double quotes)
participants (2)
-
Arshdeep Singh
-
Jon Cruz