Ah yes you are right. Will look into a plugin collaboration interface using actions.
Regards, Jaap On Fri, Mar 31, 2017, 17:52 Will Foran <[email protected]> wrote: > This is great; thanks! > > Unfortunately, I don't see the journal plugin public methods in the > actiongroup list! Maybe I'm looking in the wrong object? [0] > > But your suggestion lead me to a working calendar plugin reference (albeit > a pretty gross kluge) > > calplug = [ > x[0] for x in self.window.ui.plugins._connected_signals.values() > if "CalendarPlugin" in str(type(x[0]())) > ] > if(len(calplug)<=0): raise Exception("enable Journal plugin") > calplug = calplug[0]() > path = calplug.path_from_date(offset_time) > > > > > [0] > for ag in [self.window, self.window.ui]: print( [ x.get_name() for x in > ag.actiongroup.list_actions() ] ) > > ['set_toolbar_text_only', 'set_toolbar_icons_tiny', > 'set_toolbar_icons_and_text', 'set_pathbar_none', 'toggle_statusbar', > 'toggle_fullscreen', 'set_toolbar_icons_only', 'set_pathbar_history', > 'toggle_panes', 'set_pathbar_recent_changed', 'set_pathbar_path', > 'set_toolbar_icons_large', 'set_pathbar_recent', 'set_toolbar_icons_small', > 'show_all_panes', 'toggle_toolbar', 'toggle_readonly'] > > ['insert_menu', 'show_search', 'edit_menu', 'show_help_faq', 'show_about', > 'new_page', 'toolbar_menu', 'open_page_parent', 'view_menu', 'attach_file', > 'show_server_gui', 'search_menu', 'save_page', 'open_page_previous', > 'delete_page', 'open_page_back_alt1', 'open_page_back', 'show_properties', > 'open_page_home', 'file_menu', 'show_templateeditor', 'help_menu', > 'tools_menu', 'show_preferences', 'open_attachments_folder', 'open_page', > 'open_notebook_folder', 'show_export', 'format_menu', 'edit_page_source', > 'go_menu', 'open_page_child', 'quit', 'open_new_window', > 'show_search_backlinks', 'copy_location', 'import_page', 'save_copy', > 'show_help_bugs', 'show_help', 'email_page', 'reload_page', > 'open_document_folder', 'rename_page', 'open_page_next', > 'manage_custom_tools', 'move_page', 'open_document_root', 'reload_index', > 'new_sub_page', 'open_page_forward', 'show_recent_changes', 'pathbar_menu', > 'show_help_keys', 'open_notebook', 'close', 'open_page_forward_alt1'] > > > > > On Fri, Mar 31, 2017 at 3:25 AM, Jaap Karssenberg < > [email protected]> wrote: > > Hi Will, > > For the first question, I think importing the other plugin's preferences > is not the right way to go. What you want is access to the "go_page_today" > action. Let the journal plugin figure out how to do that. This way you are > much more robust to changes in how the journal plugin works internally. > > Probably should have a formal interface to access actions defined by > another plugin, but this will work: > > go_page_today_action > = window.ui.actiongroup.get_action('go_page_today') > go_page_today_action.activate() > page = window.page > > Thus you only use the "public interface" of the plugin that shows in the > user interface and automate that. A secondary benefit is that you don;t > even have to know who provides this action. If someone develops an > alternative plugin that supports this action, your plugin will still > collaborate. > > If the journal plugin is not loaded, this will fail. Probably it is good > to catch that case and show an popup that tells the user to also enable the > other plugin. > > For debugging I myself just throw in a bunch of "print" statements. Of > course unittests help to reduce the amount of re-starting you need to do to > check functions :) > > Regards, > > Jaap > > > On Thu, Mar 30, 2017 at 10:02 PM Will Foran <[email protected]> > wrote: > > I'm trying extend the Now Button > <https://github.com/Osndok/zim-plugin-nowbutton/blob/master/nowbutton.py> > plugin to use the same path the journal plugin uses by calling > path_from_date. > > I haven't figured out how to respect/load the granularity setting from > preferences.conf. I am trying to explicitly set it using PluginManager or > ConfigManager. Neither with success > > # get cal plug object a la tests/calendar.py > calplugklass = PluginManager.get_plugin_class('calendar') > calplug = calplugklass() > > prefs=calplug.config.get_config_dict('<profile>/preferences.conf') > # ConfigManagerINIConfigFile w/ only with key as "CalendarPlugin", has > default plugin vals (e.g. path=:Journal) > > # OR # > > prefs=zim.config.ConfigManager().get_config_dict('<profile>/preferences.conf') > # ConfigManagerINIConfigFile has all sections of prefs.conf as keys, but > ConfigDict's are all empty > > > > # want to set the cal props like > calplug.preferences = prefs['CalendarPlugin'] > # so granularity respected by the calendar plugin is reflected here too > cur_date_page = calplug.path_from_date(...) > > In the first pluginmanger attempt, the default values are seen not the > values in my preferences.conf > in the second attempt with configmanger, I see all the sections in my > .conf (included a bogus [FooBar] section) but all the dictionaries are > empty. > > > I think I am missing something obvious. Any hints? > > > As an aside, what is the best way to debug zim plugins? Currently, I make > a change, sprinkling in raise Exception(prefs) and restart zim. > > > Thanks! > Will > > > _______________________________________________ > Mailing list: https://launchpad.net/~zim-wiki > Post to : [email protected] > Unsubscribe : https://launchpad.net/~zim-wiki > More help : https://help.launchpad.net/ListHelp > > >
_______________________________________________ Mailing list: https://launchpad.net/~zim-wiki Post to : [email protected] Unsubscribe : https://launchpad.net/~zim-wiki More help : https://help.launchpad.net/ListHelp

