static void proc_menu_line(char *line){ regex_t reg_exec, reg_exec_icon, reg_submenu, reg_submenu_icon, reg_include, reg_end; regmatch_t *match_exec = NULL; regmatch_t *match_exec_icon = NULL; regmatch_t *match_submenu = NULL; regmatch_t *match_submenu_icon = NULL; regmatch_t *match_include = NULL; char title[MAX_LINE_LENGTH]; char command[MAX_LINE_LENGTH]; char icon[MAX_LINE_LENGTH]; regcomp(®_exec ,"^(.*\\[exec\\]) (.*\\()(.+)(\\)) (.*\\{)(.+)(\\})",REG_EXTENDED); regcomp(®_exec_icon ,"^(.*\\[exec\\]) (.*\\()(.+)(\\)) (.*\\{)(.+)(\\}) (.*<)(.+)(>)",REG_EXTENDED); regcomp(®_submenu ,"^(.*\\[submenu\\]) (.*\\()(.+)(\\))",REG_EXTENDED); regcomp(®_submenu_icon,"^(.*\\[submenu\\]) (.*\\()(.+)(\\)) (.*<)(.+)(>)",REG_EXTENDED); regcomp(®_include ,"^(.*\\[include\\]) (.*\\()(.+)(\\))",REG_EXTENDED); regcomp(®_end ,"^.*\\[end",REG_EXTENDED); match_exec = (regmatch_t *) malloc((reg_exec.re_nsub+1)*sizeof(regmatch_t)); match_exec_icon = (regmatch_t *) malloc((reg_exec_icon.re_nsub+1)*sizeof(regmatch_t)); match_submenu = (regmatch_t *) malloc((reg_submenu.re_nsub+1)*sizeof(regmatch_t)); match_submenu_icon = (regmatch_t *) malloc((reg_submenu_icon.re_nsub+1)*sizeof(regmatch_t)); match_include = (regmatch_t *) malloc((reg_include.re_nsub+1)*sizeof(regmatch_t)); // exec with icon if(regexec(®_exec_icon,line,reg_exec_icon.re_nsub+1,match_exec_icon,0)==0){ substring(line,title ,match_exec_icon[3].rm_so,match_exec_icon[3].rm_eo); substring(line,command,match_exec_icon[6].rm_so,match_exec_icon[6].rm_eo); substring(line,icon ,match_exec_icon[9].rm_so,match_exec_icon[9].rm_eo); create_exec(title,command,icon); // regular exec }else if(regexec(®_exec,line,reg_exec.re_nsub+1,match_exec,0)==0){ substring(line,title ,match_exec[3].rm_so,match_exec[3].rm_eo); substring(line,command,match_exec[6].rm_so,match_exec[6].rm_eo); create_exec(title,command,NULL); // submenu with icon }else if(regexec(®_submenu_icon,line,reg_submenu_icon.re_nsub+1,match_submenu_icon,0)==0){ substring(line,title ,match_submenu_icon[3].rm_so,match_submenu_icon[3].rm_eo); substring(line,icon ,match_submenu_icon[6].rm_so,match_submenu_icon[6].rm_eo); create_submenu(title,icon); // regular submenu }else if(regexec(®_submenu,line,reg_submenu.re_nsub+1,match_submenu,0)==0){ substring(line,title ,match_submenu[3].rm_so,match_submenu[3].rm_eo); create_submenu(title,NULL); }else if(regexec(®_include,line,reg_include.re_nsub+1,match_include,0)==0){ substring(line,title ,match_include[3].rm_so,match_include[3].rm_eo); include_file(title); }else if(regexec(®_end,line,0,NULL,0)==0){ menu_depth--; } regfree(®_exec); regfree(®_exec_icon); regfree(®_submenu); regfree(®_submenu_icon); regfree(®_end); }
static void create_menuitem_from_alias (GtkWidget *menu, MateMenuTreeAlias *alias) { MateMenuTreeItem *aliased_item; aliased_item = matemenu_tree_alias_get_item (alias); switch (matemenu_tree_item_get_type (aliased_item)) { case MATEMENU_TREE_ITEM_DIRECTORY: create_submenu (menu, MATEMENU_TREE_DIRECTORY (aliased_item), matemenu_tree_alias_get_directory (alias)); break; case MATEMENU_TREE_ITEM_ENTRY: create_menuitem (menu, MATEMENU_TREE_ENTRY (aliased_item), matemenu_tree_alias_get_directory (alias)); break; default: break; } matemenu_tree_item_unref (aliased_item); }
static void create_menuitem_from_alias (GtkWidget *menu, GMenuTreeAlias *alias) { GMenuTreeDirectory *src = gmenu_tree_alias_get_directory (alias); switch (gmenu_tree_alias_get_aliased_item_type (alias)) { case GMENU_TREE_ITEM_DIRECTORY: { GMenuTreeDirectory *directory = gmenu_tree_alias_get_aliased_directory (alias); create_submenu (menu, directory, src); gmenu_tree_item_unref (directory); break; } case GMENU_TREE_ITEM_ENTRY: { GMenuTreeEntry *entry = gmenu_tree_alias_get_aliased_entry (alias); create_menuitem (menu, entry, src); gmenu_tree_item_unref (entry); break; } default: break; } gmenu_tree_item_unref (src); }
static GtkWidget * populate_menu_from_directory (GtkWidget *menu, MateMenuTreeDirectory *directory) { GList *children; GSList *l; GSList *items; gboolean add_separator; children = gtk_container_get_children (GTK_CONTAINER (menu)); add_separator = (children != NULL); g_list_free (children); items = matemenu_tree_directory_get_contents (directory); for (l = items; l; l = l->next) { MateMenuTreeItem *item = l->data; if (add_separator || matemenu_tree_item_get_type (item) == MATEMENU_TREE_ITEM_SEPARATOR) { add_menu_separator (menu); add_separator = FALSE; } switch (matemenu_tree_item_get_type (item)) { case MATEMENU_TREE_ITEM_DIRECTORY: create_submenu (menu, MATEMENU_TREE_DIRECTORY (item), NULL); break; case MATEMENU_TREE_ITEM_ENTRY: create_menuitem (menu, MATEMENU_TREE_ENTRY (item), NULL); break; case MATEMENU_TREE_ITEM_SEPARATOR : /* already added */ break; case MATEMENU_TREE_ITEM_ALIAS: create_menuitem_from_alias (menu, MATEMENU_TREE_ALIAS (item)); break; case MATEMENU_TREE_ITEM_HEADER: create_header (menu, MATEMENU_TREE_HEADER (item)); break; default: break; } matemenu_tree_item_unref (item); } g_slist_free (items); return menu; }
void set_menu(void* hwnd, wchar_t const* filename) { CFBundleRef mainBundle = CFBundleGetMainBundle(); CFURLRef pluginURL = CFBundleCopyBuiltInPlugInsURL(mainBundle); CFStringRef fn = CFStringCreateWithWString(kCFAllocatorDefault, filename, kCFStringEncodingUTF8); CFURLRef path = CFURLCreateCopyAppendingPathComponent(NULL, pluginURL, fn, FALSE); CFBundleRef bundle = CFBundleCreate(kCFAllocatorSystemDefault, path); CFRelease(path); CFRelease(fn); CFRelease(pluginURL); if (bundle==NULL) throw filename; FuncLoadMenu func = reinterpret_cast<FuncLoadMenu>(CFBundleGetFunctionPointerForName(bundle, CFSTR("load_menu"))); if (func==NULL) { CFRelease(bundle); throw filename; } #elif _MSC_VER void set_menu(HWND hwnd, wchar_t const* filename) { wstring path = wstring(L"dll\\")+filename; HMODULE handle = LoadLibrary(path.c_str()); FuncLoadMenu func = (FuncLoadMenu)GetProcAddress(handle, "load_menu"); if (func==0) throw path.c_str(); #endif unordered_map<int, wstring> menu; func(menu); #ifdef __APPLE__ HMENU hmenu = get_main_menu(); unsigned int main_menu_id = get_file_menu_pos(hmenu); int mii = NULL; #elif _MSC_VER HMENU hmenu = CreateMenu(); UINT main_menu_id = 0; MENUITEMINFO mii; #else #error Not implemented #endif //////////////////////////////////////////////////////////////////////////////// // FILE #ifdef __APPLE__ HMENU hmenu_file = get_file_menu(hmenu); ++main_menu_id; #else HMENU hmenu_file = create_submenu(mii, hmenu, main_menu_id, menu, IDM_FILE); #endif { #ifndef __APPLE__ unsigned int pos = 0; create_menuitem(mii, hmenu_file, pos, menu, IDM_FILE_CANCEL); create_separator(mii, hmenu_file, pos); create_menuitem(mii, hmenu_file, pos, menu, IDM_FILE_QUIT); #endif } //////////////////////////////////////////////////////////////////////////////// // EDIT HMENU hmenu_edit = create_submenu(mii, hmenu, main_menu_id, menu, IDM_EDIT); { unsigned int pos = 0; HMENU hmenu_edit_select_current = create_submenu(mii, hmenu_edit, pos, menu, IDM_EDIT_MARK_ON_CURRENT_LAYER); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_edit_select_current, pos, menu, IDM_EDIT_MARK_ALL_NODES_ON_CURRENT_LAYER); create_menuitem(mii, hmenu_edit_select_current, pos, menu, IDM_EDIT_MARK_ALL_EDGES_ON_CURRENT_LAYER); create_separator(mii, hmenu_edit_select_current, pos); create_menuitem(mii, hmenu_edit_select_current, pos, menu, IDM_EDIT_MARK_NODES_INSIDE_COMMUNITY_ON_CURRENT_LAYER); create_menuitem(mii, hmenu_edit_select_current, pos, menu, IDM_EDIT_MARK_EDGES_INSIDE_COMMUNITY_ON_CURRENT_LAYER); create_menuitem(mii, hmenu_edit_select_current, pos, menu, IDM_EDIT_MARK_ELEMENTS_INSIDE_COMMUNITY_ON_CURRENT_LAYER); create_separator(mii, hmenu_edit_select_current, pos); create_menuitem(mii, hmenu_edit_select_current, pos, menu, IDM_EDIT_MARK_NODES_OUTSIDE_COMMUNITY_ON_CURRENT_LAYER); create_menuitem(mii, hmenu_edit_select_current, pos, menu, IDM_EDIT_MARK_EDGES_OUTSIDE_COMMUNITY_ON_CURRENT_LAYER); create_menuitem(mii, hmenu_edit_select_current, pos, menu, IDM_EDIT_MARK_ELEMENTS_OUTSIDE_COMMUNITY_ON_CURRENT_LAYER); create_separator(mii, hmenu_edit_select_current, pos); create_menuitem(mii, hmenu_edit_select_current, pos, menu, IDM_EDIT_MARK_NODES_IN_SELECTED_COMMUNITY_CONTINUUMS_ON_CURRENT_LAYER); create_menuitem(mii, hmenu_edit_select_current, pos, menu, IDM_EDIT_MARK_EDGES_IN_SELECTED_COMMUNITY_CONTINUUMS_ON_CURRENT_LAYER); create_menuitem(mii, hmenu_edit_select_current, pos, menu, IDM_EDIT_MARK_ELEMENTS_IN_SELECTED_COMMUNITY_CONTINUUMS_ON_CURRENT_LAYER); create_separator(mii, hmenu_edit_select_current, pos); create_menuitem(mii, hmenu_edit_select_current, pos, menu, IDM_EDIT_MARK_ALL_ELEMENTS_ON_CURRENT_LAYER); create_menuitem(mii, hmenu_edit_select_current, pos, menu, IDM_EDIT_INVERT_MARK_ON_CURRENT_LAYER); } HMENU hmenu_edit_select_all = create_submenu(mii, hmenu_edit, pos, menu, IDM_EDIT_MARK_ON_EACH_LAYER); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_edit_select_all, pos, menu, IDM_EDIT_MARK_ALL_NODES_ON_EACH_LAYER); create_menuitem(mii, hmenu_edit_select_all, pos, menu, IDM_EDIT_MARK_ALL_EDGES_ON_EACH_LAYER); create_separator(mii, hmenu_edit_select_all, pos); create_menuitem(mii, hmenu_edit_select_all, pos, menu, IDM_EDIT_MARK_NODES_INSIDE_COMMUNITY_ON_EACH_LAYER); create_menuitem(mii, hmenu_edit_select_all, pos, menu, IDM_EDIT_MARK_EDGES_INSIDE_COMMUNITY_ON_EACH_LAYER); create_menuitem(mii, hmenu_edit_select_all, pos, menu, IDM_EDIT_MARK_ELEMENTS_INSIDE_COMMUNITY_ON_EACH_LAYER); create_separator(mii, hmenu_edit_select_all, pos); create_menuitem(mii, hmenu_edit_select_all, pos, menu, IDM_EDIT_MARK_NODES_OUTSIDE_COMMUNITY_ON_EACH_LAYER); create_menuitem(mii, hmenu_edit_select_all, pos, menu, IDM_EDIT_MARK_EDGES_OUTSIDE_COMMUNITY_ON_EACH_LAYER); create_menuitem(mii, hmenu_edit_select_all, pos, menu, IDM_EDIT_MARK_ELEMENTS_OUTSIDE_COMMUNITY_ON_EACH_LAYER); create_separator(mii, hmenu_edit_select_all, pos); create_menuitem(mii, hmenu_edit_select_all, pos, menu, IDM_EDIT_MARK_NODES_IN_SELECTED_COMMUNITY_CONTINUUMS_ON_EACH_LAYER); create_menuitem(mii, hmenu_edit_select_all, pos, menu, IDM_EDIT_MARK_EDGES_IN_SELECTED_COMMUNITY_CONTINUUMS_ON_EACH_LAYER); create_menuitem(mii, hmenu_edit_select_all, pos, menu, IDM_EDIT_MARK_ELEMENTS_IN_SELECTED_COMMUNITY_CONTINUUMS_ON_EACH_LAYER); create_separator(mii, hmenu_edit_select_all, pos); create_menuitem(mii, hmenu_edit_select_all, pos, menu, IDM_EDIT_MARK_ALL_ELEMENTS_ON_EACH_LAYER); create_menuitem(mii, hmenu_edit_select_all, pos, menu, IDM_EDIT_INVERT_MARK_ON_EACH_LAYER); } create_separator(mii, hmenu_edit, pos); HMENU hmenu_edit_hide = create_submenu(mii, hmenu_edit, pos, menu, IDM_EDIT_HIDE_MARKED_ELEMENTS); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_edit_hide, pos, menu, IDM_EDIT_HIDE_MARKED_NODES_ON_CURRENT_LAYER); create_menuitem(mii, hmenu_edit_hide, pos, menu, IDM_EDIT_HIDE_MARKED_EDGES_ON_CURRENT_LAYER); create_menuitem(mii, hmenu_edit_hide, pos, menu, IDM_EDIT_HIDE_MARKED_ELEMENTS_ON_CURRENT_LAYER); create_separator(mii, hmenu_edit_hide, pos); create_menuitem(mii, hmenu_edit_hide, pos, menu, IDM_EDIT_HIDE_MARKED_NODES_ON_EACH_LAYER); create_menuitem(mii, hmenu_edit_hide, pos, menu, IDM_EDIT_HIDE_MARKED_EDGES_ON_EACH_LAYER); create_menuitem(mii, hmenu_edit_hide, pos, menu, IDM_EDIT_HIDE_MARKED_ELEMENTS_ON_EACH_LAYER); } HMENU hmenu_edit_hide_all = create_submenu(mii, hmenu_edit, pos, menu, IDM_EDIT_HIDE_MARKED_ELEMENTS_ALL); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_edit_hide_all, pos, menu, IDM_EDIT_HIDE_MARKED_NODES_ON_CURRENT_LAYER_ALL); create_menuitem(mii, hmenu_edit_hide_all, pos, menu, IDM_EDIT_HIDE_MARKED_EDGES_ON_CURRENT_LAYER_ALL); create_menuitem(mii, hmenu_edit_hide_all, pos, menu, IDM_EDIT_HIDE_MARKED_ELEMENTS_ON_CURRENT_LAYER_ALL); create_separator(mii, hmenu_edit_hide_all, pos); create_menuitem(mii, hmenu_edit_hide_all, pos, menu, IDM_EDIT_HIDE_MARKED_NODES_ON_EACH_LAYER_ALL); create_menuitem(mii, hmenu_edit_hide_all, pos, menu, IDM_EDIT_HIDE_MARKED_EDGES_ON_EACH_LAYER_ALL); create_menuitem(mii, hmenu_edit_hide_all, pos, menu, IDM_EDIT_HIDE_MARKED_ELEMENTS_ON_EACH_LAYER_ALL); } HMENU hmenu_edit_show = create_submenu(mii, hmenu_edit, pos, menu, IDM_EDIT_SHOW_HIDDEN_ELEMENTS); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_edit_show, pos, menu, IDM_EDIT_SHOW_HIDDEN_NODES_ON_CURRENT_LAYER); create_menuitem(mii, hmenu_edit_show, pos, menu, IDM_EDIT_SHOW_HIDDEN_EDGES_ON_CURRENT_LAYER); create_menuitem(mii, hmenu_edit_show, pos, menu, IDM_EDIT_SHOW_HIDDEN_ELEMENTS_ON_CURRENT_LAYER); create_separator(mii, hmenu_edit_show, pos); create_menuitem(mii, hmenu_edit_show, pos, menu, IDM_EDIT_SHOW_HIDDEN_NODES_ON_EACH_LAYER); create_menuitem(mii, hmenu_edit_show, pos, menu, IDM_EDIT_SHOW_HIDDEN_EDGES_ON_EACH_LAYER); create_menuitem(mii, hmenu_edit_show, pos, menu, IDM_EDIT_SHOW_HIDDEN_ELEMENTS_ON_EACH_LAYER); } create_separator(mii, hmenu_edit, pos); HMENU hmenu_edit_remove = create_submenu(mii, hmenu_edit, pos, menu, IDM_EDIT_REMOVE_MARKED_ELEMENTS); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_edit_remove, pos, menu, IDM_EDIT_REMOVE_MARKED_NODES_ON_CURRENT_LAYER); create_menuitem(mii, hmenu_edit_remove, pos, menu, IDM_EDIT_REMOVE_MARKED_EDGES_ON_CURRENT_LAYER); create_menuitem(mii, hmenu_edit_remove, pos, menu, IDM_EDIT_REMOVE_MARKED_ELEMENTS_ON_CURRENT_LAYER); create_separator(mii, hmenu_edit_remove, pos); create_menuitem(mii, hmenu_edit_remove, pos, menu, IDM_EDIT_REMOVE_MARKED_NODES_ON_EACH_LAYER); create_menuitem(mii, hmenu_edit_remove, pos, menu, IDM_EDIT_REMOVE_MARKED_EDGES_ON_EACH_LAYER); create_menuitem(mii, hmenu_edit_remove, pos, menu, IDM_EDIT_REMOVE_MARKED_ELEMENTS_ON_EACH_LAYER); } HMENU hmenu_edit_remove_all = create_submenu(mii, hmenu_edit, pos, menu, IDM_EDIT_REMOVE_MARKED_ELEMENTS_ALL); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_edit_remove_all, pos, menu, IDM_EDIT_REMOVE_MARKED_NODES_ON_CURRENT_LAYER_ALL); create_menuitem(mii, hmenu_edit_remove_all, pos, menu, IDM_EDIT_REMOVE_MARKED_EDGES_ON_CURRENT_LAYER_ALL); create_menuitem(mii, hmenu_edit_remove_all, pos, menu, IDM_EDIT_REMOVE_MARKED_ELEMENTS_ON_CURRENT_LAYER_ALL); create_separator(mii, hmenu_edit_remove_all, pos); create_menuitem(mii, hmenu_edit_remove_all, pos, menu, IDM_EDIT_REMOVE_MARKED_NODES_ON_EACH_LAYER_ALL); create_menuitem(mii, hmenu_edit_remove_all, pos, menu, IDM_EDIT_REMOVE_MARKED_EDGES_ON_EACH_LAYER_ALL); create_menuitem(mii, hmenu_edit_remove_all, pos, menu, IDM_EDIT_REMOVE_MARKED_ELEMENTS_ON_EACH_LAYER_ALL); } } //////////////////////////////////////////////////////////////////////////////// // VIEW HMENU hmenu_view = create_submenu(mii, hmenu, main_menu_id, menu, IDM_VIEW); { unsigned int pos = 0; create_menuitem(mii, hmenu_view, pos, menu, IDM_VIEW_SHOW_NODE); create_menuitem(mii, hmenu_view, pos, menu, IDM_VIEW_SHOW_EDGE); create_menuitem(mii, hmenu_view, pos, menu, IDM_VIEW_SHOW_COMMUNITY); create_menuitem(mii, hmenu_view, pos, menu, IDM_VIEW_SHOW_COMMUNITY_EDGE); create_separator(mii, hmenu_view, pos); HMENU hmenu_view_node_size = create_submenu(mii, hmenu_view, pos, menu, IDM_VIEW_NODE_SIZE); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_view_node_size, pos, menu, IDM_VIEW_NODE_SIZE_UPDATE); create_menuitem(mii, hmenu_view_node_size, pos, menu, IDM_VIEW_NODE_SIZE_CANCEL); create_separator(mii, hmenu_view_node_size, pos); create_menuitem(mii, hmenu_view_node_size, pos, menu, IDM_VIEW_NODE_SIZE_UNIFORM); create_menuitem(mii, hmenu_view_node_size, pos, menu, IDM_VIEW_NODE_SIZE_WEIGHT); create_menuitem(mii, hmenu_view_node_size, pos, menu, IDM_VIEW_NODE_SIZE_DEGREE_CENTRALITY); create_menuitem(mii, hmenu_view_node_size, pos, menu, IDM_VIEW_NODE_SIZE_CLOSENESS_CENTRALITY); create_menuitem(mii, hmenu_view_node_size, pos, menu, IDM_VIEW_NODE_SIZE_BETWEENNESS_CENTRALITY); create_menuitem(mii, hmenu_view_node_size, pos, menu, IDM_VIEW_NODE_SIZE_PAGERANK); create_menuitem(mii, hmenu_view_node_size, pos, menu, IDM_VIEW_NODE_SIZE_POINT); } HMENU hmenu_view_edge_width = create_submenu(mii, hmenu_view, pos, menu, IDM_VIEW_EDGE_WIDTH); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_view_edge_width, pos, menu, IDM_VIEW_EDGE_WIDTH_UPDATE); create_menuitem(mii, hmenu_view_edge_width, pos, menu, IDM_VIEW_EDGE_WIDTH_CANCEL); create_separator(mii, hmenu_view_edge_width, pos); create_menuitem(mii, hmenu_view_edge_width, pos, menu, IDM_VIEW_EDGE_WIDTH_UNIFORM); create_menuitem(mii, hmenu_view_edge_width, pos, menu, IDM_VIEW_EDGE_WIDTH_WEIGHT); create_menuitem(mii, hmenu_view_edge_width, pos, menu, IDM_VIEW_EDGE_WIDTH_BETWEENNESS_CENTRALITY); } create_separator(mii, hmenu_view, pos); HMENU hmenu_view_node_style = create_submenu(mii, hmenu_view, pos, menu, IDM_VIEW_NODE_STYLE); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_view_node_style, pos, menu, IDM_VIEW_NODE_STYLE_POLYGON); create_menuitem(mii, hmenu_view_node_style, pos, menu, IDM_VIEW_NODE_STYLE_TEXTURE); } HMENU hmenu_view_edge_style = create_submenu(mii, hmenu_view, pos, menu, IDM_VIEW_EDGE_STYLE); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_view_edge_style, pos, menu, IDM_VIEW_EDGE_STYLE_LINE); create_menuitem(mii, hmenu_view_edge_style, pos, menu, IDM_VIEW_EDGE_STYLE_POLYGON); } HMENU hmenu_view_community_style = create_submenu(mii, hmenu_view, pos, menu, IDM_VIEW_COMMUNITY_STYLE); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_view_community_style, pos, menu, IDM_VIEW_COMMUNITY_STYLE_POLYGON_CIRCLE); create_menuitem(mii, hmenu_view_community_style, pos, menu, IDM_VIEW_COMMUNITY_STYLE_TEXTURE); } HMENU hmenu_view_community_edge_style = create_submenu(mii, hmenu_view, pos, menu, IDM_VIEW_COMMUNITY_EDGE_STYLE); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_view_community_edge_style, pos, menu, IDM_VIEW_COMMUNITY_EDGE_STYLE_LINE); create_menuitem(mii, hmenu_view_community_edge_style, pos, menu, IDM_VIEW_COMMUNITY_EDGE_STYLE_POLYGON); } } //////////////////////////////////////////////////////////////////////////////// // STRING HMENU hmenu_string = create_submenu(mii, hmenu, main_menu_id, menu, IDM_STRING); { unsigned int pos = 0; create_menuitem(mii, hmenu_string, pos, menu, IDM_STRING_SHOW_NODE_NAME); create_menuitem(mii, hmenu_string, pos, menu, IDM_STRING_SHOW_EDGE_NAME); create_menuitem(mii, hmenu_string, pos, menu, IDM_STRING_SHOW_COMMUNITY_NAME); create_menuitem(mii, hmenu_string, pos, menu, IDM_STRING_SHOW_COMMUNITY_EDGE_NAME); create_separator(mii, hmenu_string, pos); HMENU hmenu_string_node_name_size = create_submenu(mii, hmenu_string, pos, menu, IDM_STRING_NODE_NAME_SIZE); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_string_node_name_size, pos, menu, IDM_STRING_NODE_NAME_SIZE_VARIABLE); create_separator(mii, hmenu_string_node_name_size, pos); create_menuitem(mii, hmenu_string_node_name_size, pos, menu, IDM_STRING_NODE_NAME_SIZE_0); create_menuitem(mii, hmenu_string_node_name_size, pos, menu, IDM_STRING_NODE_NAME_SIZE_1); create_menuitem(mii, hmenu_string_node_name_size, pos, menu, IDM_STRING_NODE_NAME_SIZE_2); create_menuitem(mii, hmenu_string_node_name_size, pos, menu, IDM_STRING_NODE_NAME_SIZE_3); create_menuitem(mii, hmenu_string_node_name_size, pos, menu, IDM_STRING_NODE_NAME_SIZE_4); } HMENU hmenu_string_edge_name_size = create_submenu(mii, hmenu_string, pos, menu, IDM_STRING_EDGE_NAME_SIZE); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_string_edge_name_size, pos, menu, IDM_STRING_EDGE_NAME_SIZE_VARIABLE); create_separator(mii, hmenu_string_edge_name_size, pos); create_menuitem(mii, hmenu_string_edge_name_size, pos, menu, IDM_STRING_EDGE_NAME_SIZE_0); create_menuitem(mii, hmenu_string_edge_name_size, pos, menu, IDM_STRING_EDGE_NAME_SIZE_1); create_menuitem(mii, hmenu_string_edge_name_size, pos, menu, IDM_STRING_EDGE_NAME_SIZE_2); create_menuitem(mii, hmenu_string_edge_name_size, pos, menu, IDM_STRING_EDGE_NAME_SIZE_3); create_menuitem(mii, hmenu_string_edge_name_size, pos, menu, IDM_STRING_EDGE_NAME_SIZE_4); } HMENU hmenu_string_community_name_size = create_submenu(mii, hmenu_string, pos, menu, IDM_STRING_COMMUNITY_NAME_SIZE); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_string_community_name_size, pos, menu, IDM_STRING_COMMUNITY_NAME_SIZE_VARIABLE); create_separator(mii, hmenu_string_community_name_size, pos); create_menuitem(mii, hmenu_string_community_name_size, pos, menu, IDM_STRING_COMMUNITY_NAME_SIZE_0); create_menuitem(mii, hmenu_string_community_name_size, pos, menu, IDM_STRING_COMMUNITY_NAME_SIZE_1); create_menuitem(mii, hmenu_string_community_name_size, pos, menu, IDM_STRING_COMMUNITY_NAME_SIZE_2); create_menuitem(mii, hmenu_string_community_name_size, pos, menu, IDM_STRING_COMMUNITY_NAME_SIZE_3); create_menuitem(mii, hmenu_string_community_name_size, pos, menu, IDM_STRING_COMMUNITY_NAME_SIZE_4); } HMENU hmenu_string_community_edge_name_size = create_submenu(mii, hmenu_string, pos, menu, IDM_STRING_COMMUNITY_EDGE_NAME_SIZE); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_string_community_edge_name_size, pos, menu, IDM_STRING_COMMUNITY_EDGE_NAME_SIZE_VARIABLE); create_separator(mii, hmenu_string_community_edge_name_size, pos); create_menuitem(mii, hmenu_string_community_edge_name_size, pos, menu, IDM_STRING_COMMUNITY_EDGE_NAME_SIZE_0); create_menuitem(mii, hmenu_string_community_edge_name_size, pos, menu, IDM_STRING_COMMUNITY_EDGE_NAME_SIZE_1); create_menuitem(mii, hmenu_string_community_edge_name_size, pos, menu, IDM_STRING_COMMUNITY_EDGE_NAME_SIZE_2); create_menuitem(mii, hmenu_string_community_edge_name_size, pos, menu, IDM_STRING_COMMUNITY_EDGE_NAME_SIZE_3); create_menuitem(mii, hmenu_string_community_edge_name_size, pos, menu, IDM_STRING_COMMUNITY_EDGE_NAME_SIZE_4); } create_separator(mii, hmenu_string, pos); HMENU hmenu_string_type = create_submenu(mii, hmenu_string, pos, menu, IDM_STRING_FONT_TYPE); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_string_type, pos, menu, IDM_STRING_FONT_TYPE_POLYGON); create_menuitem(mii, hmenu_string_type, pos, menu, IDM_STRING_FONT_TYPE_TEXTURE); } create_separator(mii, hmenu_string, pos); create_menuitem(mii, hmenu_string, pos, menu, IDM_STRING_SHOW_LAYER_NAME); create_menuitem(mii, hmenu_string, pos, menu, IDM_STRING_SHOW_FPS); } //////////////////////////////////////////////////////////////////////////////// // LAYOUT HMENU hmenu_layout = create_submenu(mii, hmenu, main_menu_id, menu, IDM_LAYOUT); { unsigned int pos = 0; create_menuitem(mii, hmenu_layout, pos, menu, IDM_LAYOUT_UPDATE); create_menuitem(mii, hmenu_layout, pos, menu, IDM_LAYOUT_CANCEL); create_separator(mii, hmenu_layout, pos); create_menuitem(mii, hmenu_layout, pos, menu, IDM_LAYOUT_KAMADA_KAWAI_METHOD); HMENU hmenu_layout_hde = create_submenu(mii, hmenu_layout, pos, menu, IDM_LAYOUT_HIGH_DIMENSIONAL_EMBEDDING); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_layout_hde, pos, menu, IDM_LAYOUT_HIGH_DIMENSIONAL_EMBEDDING_1_2); create_menuitem(mii, hmenu_layout_hde, pos, menu, IDM_LAYOUT_HIGH_DIMENSIONAL_EMBEDDING_1_3); create_menuitem(mii, hmenu_layout_hde, pos, menu, IDM_LAYOUT_HIGH_DIMENSIONAL_EMBEDDING_2_3); } create_separator(mii, hmenu_layout, pos); create_menuitem(mii, hmenu_layout, pos, menu, IDM_LAYOUT_CIRCLE); create_menuitem(mii, hmenu_layout, pos, menu, IDM_LAYOUT_CIRCLE_IN_SIZE_ORDER); create_menuitem(mii, hmenu_layout, pos, menu, IDM_LAYOUT_LATTICE); create_menuitem(mii, hmenu_layout, pos, menu, IDM_LAYOUT_RANDOM); create_menuitem(mii, hmenu_layout, pos, menu, IDM_LAYOUT_CARTOGRAMS); create_separator(mii, hmenu_layout, pos); HMENU hmenu_layout_fde = create_submenu(mii, hmenu_layout, pos, menu, IDM_LAYOUT_FORCE_DIRECTION); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_layout_fde, pos, menu, IDM_LAYOUT_FORCE_DIRECTION_RUN); create_separator(mii, hmenu_layout_fde, pos); create_menuitem(mii, hmenu_layout_fde, pos, menu, IDM_LAYOUT_FORCE_DIRECTION_KAMADA_KAWAI_METHOD); create_menuitem(mii, hmenu_layout_fde, pos, menu, IDM_LAYOUT_FORCE_DIRECTION_KAMADA_KAWAI_METHOD_WITH_COMMUNITY_SEPARATION); create_menuitem(mii, hmenu_layout_fde, pos, menu, IDM_LAYOUT_FORCE_DIRECTION_COMMUNITY_ORIENTED); create_separator(mii, hmenu_layout_fde, pos); create_menuitem(mii, hmenu_layout_fde, pos, menu, IDM_LAYOUT_FORCE_DIRECTION_SPRING_AND_REPULSIVE_FORCE); create_menuitem(mii, hmenu_layout_fde, pos, menu, IDM_LAYOUT_FORCE_DIRECTION_LATTICE_GAS_METHOD); #if 0 create_menuitem(mii, hmenu_layout_fde, pos, menu, IDM_LAYOUT_FORCE_DIRECTION_DESIGNTIDE); #endif } create_separator(mii, hmenu_layout, pos); create_menuitem(mii, hmenu_layout, pos, menu, IDM_LAYOUT_SHOW_LAYOUT_FRAME); create_menuitem(mii, hmenu_layout, pos, menu, IDM_LAYOUT_INITIALIZE_LAYOUT_FRAME); create_separator(mii, hmenu_layout, pos); create_menuitem(mii, hmenu_layout, pos, menu, IDM_LAYOUT_SHOW_GRID); create_menuitem(mii, hmenu_layout, pos, menu, IDM_LAYOUT_SHOW_CENTER); create_separator(mii, hmenu_layout, pos); create_menuitem(mii, hmenu_layout, pos, menu, IDM_LAYOUT_INITIALIZE_EYEPOINT); create_menuitem(mii, hmenu_layout, pos, menu, IDM_LAYOUT_ZOOM_IN); create_menuitem(mii, hmenu_layout, pos, menu, IDM_LAYOUT_ZOOM_OUT); } //////////////////////////////////////////////////////////////////////////////// // COMMUNITY HMENU hmenu_community = create_submenu(mii, hmenu, main_menu_id, menu, IDM_COMMUNITY_DETECTION); { unsigned int pos = 0; create_menuitem(mii, hmenu_community, pos, menu, IDM_COMMUNITY_DETECTION_UPDATE); create_menuitem(mii, hmenu_community, pos, menu, IDM_COMMUNITY_DETECTION_CANCEL); create_separator(mii, hmenu_community, pos); HMENU hmenu_community_connected_components = create_submenu(mii, hmenu_community, pos, menu, IDM_COMMUNITY_DETECTION_CONNECTED_COMPONENTS); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_community_connected_components, pos, menu, IDM_COMMUNITY_DETECTION_WEAKLY_CONNECTED_COMPONENTS); create_menuitem(mii, hmenu_community_connected_components, pos, menu, IDM_COMMUNITY_DETECTION_STRONGLY_CONNECTED_COMPONENTS); } HMENU hmenu_community_modularity_maximization = create_submenu(mii, hmenu_community, pos, menu, IDM_COMMUNITY_DETECTION_MODULARITY_MAXIMIZATION); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_community_modularity_maximization, pos, menu, IDM_COMMUNITY_DETECTION_MODULARITY_MAXIMIZATION_USING_GREEDY_METHOD); create_menuitem(mii, hmenu_community_modularity_maximization, pos, menu, IDM_COMMUNITY_DETECTION_MODULARITY_MAXIMIZATION_USING_TEO_METHOD); create_separator(mii, hmenu_community_modularity_maximization, pos); create_menuitem(mii, hmenu_community_modularity_maximization, pos, menu, IDM_COMMUNITY_DETECTION_USE_WEIGHTED_MODULARITY); } HMENU hmenu_community_clique_percolaion = create_submenu(mii, hmenu_community, pos, menu, IDM_COMMUNITY_DETECTION_CLIQUE_PERCOLATION); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_community_clique_percolaion, pos, menu, IDM_COMMUNITY_DETECTION_CLIQUE_PERCOLATION_3); create_menuitem(mii, hmenu_community_clique_percolaion, pos, menu, IDM_COMMUNITY_DETECTION_CLIQUE_PERCOLATION_4); create_menuitem(mii, hmenu_community_clique_percolaion, pos, menu, IDM_COMMUNITY_DETECTION_CLIQUE_PERCOLATION_5); } HMENU hmenu_community_others = create_submenu(mii, hmenu_community, pos, menu, IDM_COMMUNITY_DETECTION_OTHERS); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_community_others, pos, menu, IDM_COMMUNITY_DETECTION_BETWEENNESS_CENTRALITY_SEPARATION); #if 0 create_menuitem(mii, hmenu_community_others, pos, menu, IDM_COMMUNITY_DETECTION_INFORMATION_FLOW_MAPPING); #endif } create_separator(mii, hmenu_community, pos); create_menuitem(mii, hmenu_community, pos, menu, IDM_COMMUNITY_TRANSITION_DIAGRAM); create_menuitem(mii, hmenu_community, pos, menu, IDM_COMMUNITY_TRANSITION_DIAGRAM_SCOPE_WIDER); create_menuitem(mii, hmenu_community, pos, menu, IDM_COMMUNITY_TRANSITION_DIAGRAM_SCOPE_NARROWER); create_separator(mii, hmenu_community, pos); create_menuitem(mii, hmenu_community, pos, menu, IDM_COMMUNITY_DETECTION_CLEAR); } //////////////////////////////////////////////////////////////////////////////// // TIMELINE HMENU hmenu_timeline = create_submenu(mii, hmenu, main_menu_id, menu, IDM_TIMELINE); { unsigned int pos = 0; create_menuitem(mii, hmenu_timeline, pos, menu, IDM_TIMELINE_NEXT); create_menuitem(mii, hmenu_timeline, pos, menu, IDM_TIMELINE_PREV); create_separator(mii, hmenu_timeline, pos); HMENU hmenu_timeline_auto = create_submenu(mii, hmenu_timeline, pos, menu, IDM_TIMELINE_AUTO_RUN); { #ifdef __APPLE__ unsigned int pos = 0; #endif create_menuitem(mii, hmenu_timeline_auto, pos, menu, IDM_TIMELINE_STOP); create_separator(mii, hmenu_timeline_auto, pos); create_menuitem(mii, hmenu_timeline_auto, pos, menu, IDM_TIMELINE_FORWARD_1); create_menuitem(mii, hmenu_timeline_auto, pos, menu, IDM_TIMELINE_FORWARD_2); create_menuitem(mii, hmenu_timeline_auto, pos, menu, IDM_TIMELINE_FORWARD_3); create_menuitem(mii, hmenu_timeline_auto, pos, menu, IDM_TIMELINE_FORWARD_4); create_separator(mii, hmenu_timeline_auto, pos); create_menuitem(mii, hmenu_timeline_auto, pos, menu, IDM_TIMELINE_BACKWARD_1); create_menuitem(mii, hmenu_timeline_auto, pos, menu, IDM_TIMELINE_BACKWARD_2); create_menuitem(mii, hmenu_timeline_auto, pos, menu, IDM_TIMELINE_BACKWARD_3); create_menuitem(mii, hmenu_timeline_auto, pos, menu, IDM_TIMELINE_BACKWARD_4); } create_separator(mii, hmenu_timeline, pos); create_menuitem(mii, hmenu_timeline, pos, menu, IDM_TIMELINE_SHOW_SLIDER); } #ifdef __APPLE__ CFRelease(bundle); #elif _MSC_VER SetMenu(hwnd, hmenu); FreeLibrary(handle); #else #error Not implemented #endif }
static GtkWidget * populate_menu_from_directory (GtkWidget *menu, GMenuTreeDirectory *directory) { GList *children; gboolean add_separator; GMenuTreeIter *iter; GMenuTreeItemType next_type; children = gtk_container_get_children (GTK_CONTAINER (menu)); add_separator = (children != NULL); g_list_free (children); iter = gmenu_tree_directory_iter (directory); while ((next_type = gmenu_tree_iter_next (iter)) != GMENU_TREE_ITEM_INVALID) { gpointer item = NULL; if (add_separator || next_type == GMENU_TREE_ITEM_SEPARATOR) { add_menu_separator (menu); add_separator = FALSE; } switch (next_type) { case GMENU_TREE_ITEM_DIRECTORY: item = gmenu_tree_iter_get_directory (iter); create_submenu (menu, item, NULL); break; case GMENU_TREE_ITEM_ENTRY: item = gmenu_tree_iter_get_entry (iter); create_menuitem (menu, item, NULL); break; case GMENU_TREE_ITEM_SEPARATOR : /* already added */ break; case GMENU_TREE_ITEM_ALIAS: item = gmenu_tree_iter_get_alias (iter); create_menuitem_from_alias (menu, item); break; case GMENU_TREE_ITEM_HEADER: item = gmenu_tree_iter_get_header (iter); create_header (menu, item); break; default: break; } if (item) gmenu_tree_item_unref (item); } gmenu_tree_iter_unref (iter); return menu; }