Author Topic: Removal of ID_ProjectManager, any other way to hook into an event w/o ID?  (Read 9677 times)

Offline secks

  • Multiple posting newcomer
  • *
  • Posts: 20
The ID_ProjectManager has been removed from the projectmanager.h file .. I had a plugin that was using this ID to register for EVT_TREE_ITEM_EXPANDING .. The plugin does 2 things .. One, (which is should really be fixed in c::b) fixes a linux bug where some files (including *.h) files are a dark color in the projectmanager tree even tho my gnome/gtk theme is dark (dark text on dark background = no bueno!) .. the plugin then forces the text color to white .. also, we have our own proprietary source control/filesystem at my company, and i was leveraging that event to update icons/text/properties when the tree was expanded .. I can definitely work around these issues with timers, hooking onto other events, etc, but it would still be kinda neat to be able to hook into the projectmanager's tree's events ..

Is there another method I can use to hook into a controls event without having it's ID handy?

Offline oBFusCATed

  • Developer
  • Lives here!
  • *****
  • Posts: 13413
    • Travis build status
Re: Removal of ID_ProjectManager, any other way to hook into an event w/o ID?
« Reply #1 on: September 05, 2013, 10:54:17 pm »
1. The color can be changed in the Settings -> Env -> Colours -> Project Tree : Non-compiled files
2. Do you need anything else than a expand/collapse events and an API to change icons?
3. You can probably use GetUI().GetTree()->GetID() to get to the ID of the window.
(most of the time I ignore long posts)
[strangers don't send me private messages, I'll ignore them; post a topic in the forum, but first read the rules!]

Offline secks

  • Multiple posting newcomer
  • *
  • Posts: 20
Re: Removal of ID_ProjectManager, any other way to hook into an event w/o ID?
« Reply #2 on: September 05, 2013, 11:22:31 pm »
1) Thanks, had no idea that even existed lol ..
2) I already have the method needed to change icons/text/colors of the tree items, i just dont have the expand event that i leveraged anymore .. The reason I used the expand event is because the filesystem/sourcecontrol check I have to execute to get the states (which icons, text, etc) is very expensive, so I was able to only process the update on items contained within a node (instead of all projects/files) ..
3) That was good enough to solve my issue, thanks!

My event registration changed from:
Code
EVT_TREE_ITEM_EXPANDING(ID_ProjectManager, YBCBPlugin::OnPrjMgrTreeItemExpanding)
to this:
Code
EVT_TREE_ITEM_EXPANDING(Manager::Get()->GetProjectManager()->GetUI().GetTree()->GetId(), YBCBPlugin::OnPrjMgrTreeItemExpanding)
The only concern I have is there is no protection from this not returning null (due to the event-reg code fires when the sharedobject/plugin is loaded into mem:
Code
Manager::Get()->GetProjectManager();

Offline oBFusCATed

  • Developer
  • Lives here!
  • *****
  • Posts: 13413
    • Travis build status
Re: Removal of ID_ProjectManager, any other way to hook into an event w/o ID?
« Reply #3 on: September 06, 2013, 12:52:42 am »
I think you're safe with this.
(most of the time I ignore long posts)
[strangers don't send me private messages, I'll ignore them; post a topic in the forum, but first read the rules!]

Offline secks

  • Multiple posting newcomer
  • *
  • Posts: 20
Re: Removal of ID_ProjectManager, any other way to hook into an event w/o ID?
« Reply #4 on: September 06, 2013, 12:53:56 am »
I think you're safe with this.
I think you're right .. I tested it and seems right .. no crashes, and I'm still getting the events .. thanks for your help!


paul