bool ClassPreferencesDialog::run(Builder &builder, ClassNodeDrawOptions &options) { Dialog dlg(GTK_DIALOG(gtk_dialog_new())); dlg.addButton(GUI_CANCEL, GTK_RESPONSE_CANCEL); dlg.addButton(GUI_OK, GTK_RESPONSE_OK); // Steal the options, then put them back. GtkWidget *optionsBox = builder.getWidget("ClassesOptionsBox"); Gui::reparentWidget(optionsBox, GTK_CONTAINER(dlg.getContentArea())); for(auto const &opt : PrefOptions) { bool active = *(reinterpret_cast<unsigned char *>(&options) + (opt.offset)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( Builder::getBuilder()->getWidget(opt.widgetName)), active); } bool ok = dlg.run(); if(ok) { for(auto const &opt : PrefOptions) { bool active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( Builder::getBuilder()->getWidget(opt.widgetName))); *(reinterpret_cast<unsigned char *>(&options) + (opt.offset)) = active; } } Gui::reparentWidget(optionsBox, GTK_CONTAINER(builder.getWidget("OptionsNotebook"))); dlg.destroy(); return ok; }
void EditFiles::init(Builder &builder) { mBuilder = &builder; mHeaderBook = GTK_NOTEBOOK(builder.getWidget("EditNotebook1")); mSourceBook = GTK_NOTEBOOK(builder.getWidget("EditNotebook2")); updateDebugMenu(); }
void ClassDiagramView::displayDrawContextMenu(guint button, guint32 acttime, gpointer data) { GdkEventButton *event = static_cast<GdkEventButton*>(data); ClassNode *node = getNode(static_cast<int>(event->x), static_cast<int>(event->y)); OovStringRef const nodeMenus[] = { "GotoClassMenuitem", "ClassPreferencesMenuitem", "AddSelectedMenuitem", "AddStandardMenuitem", "AddAllMenuitem", "AddSuperclassesMenuitem", "AddSubclassesMenuitem", "AddMembersUsingMenuitem", "AddMemberUsersMenuitem", "AddTemplateMenuItem", "AddFuncParamsUsingMenuitem", "AddFuncParamUsersMenuitem", "AddFuncBodyVarUsingMenuitem", "AddFuncBodyVarUsersMenuitem", "RemoveClassMenuitem", "ViewSourceMenuitem" }; Builder *builder = Builder::getBuilder(); for(size_t i=0; i<sizeof(nodeMenus)/sizeof(nodeMenus[i]); i++) { gtk_widget_set_sensitive(builder->getWidget( nodeMenus[i]), node != nullptr); } GtkMenu *menu = builder->getMenu("DrawClassPopupMenu"); gtk_menu_popup(menu, nullptr, nullptr, nullptr, nullptr, button, acttime); gStartPosInfo.set(static_cast<int>(event->x), static_cast<int>(event->y)); }
static void displayContextMenu(guint button, guint32 acttime, gpointer data) { GdkEventButton *event = static_cast<GdkEventButton*>(data); const OperationClass *node = gOperationDiagramView->getDiagram().getNode( static_cast<int>(event->x), static_cast<int>(event->y)); const OperationCall *opcall = gOperationDiagramView->getDiagram().getOperation( gStartPosInfo.x, gStartPosInfo.y); OovStringRef const nodeitems[] = { "OperGotoClassMenuitem", "RemoveOperClassMenuitem", }; Builder *builder = Builder::getBuilder(); for(size_t i=0; i<sizeof(nodeitems)/sizeof(nodeitems[i]); i++) { gtk_widget_set_sensitive(builder->getWidget(nodeitems[i]), node != nullptr); } OovStringRef const operitems[] = { "OperGotoOperationMenuitem", "AddCallsMenuitem", "AddCallersMenuitem", "RemoveCallsMenuitem" }; for(size_t i=0; i<sizeof(operitems)/sizeof(operitems[i]); i++) { gtk_widget_set_sensitive(builder->getWidget(operitems[i]), opcall != nullptr); } gtk_widget_set_sensitive(builder->getWidget("ViewOperSourceMenuitem"), opcall != nullptr || node != nullptr); GtkMenu *menu = builder->getMenu("DrawOperationPopupMenu"); gtk_menu_popup(menu, nullptr, nullptr, nullptr, nullptr, button, acttime); gStartPosInfo.set(static_cast<int>(event->x), static_cast<int>(event->y)); }