bool Checked( int id ) const;
void Enable( int id, bool enable );
bool Enabled( int id ) const;
- inline bool IsEnabled(int Id) const { return Enabled(Id); };
- inline bool IsChecked(int Id) const { return Checked(Id); };
+ inline bool IsEnabled(int Id) const { return Enabled(Id); }
+ inline bool IsChecked(int Id) const { return Checked(Id); }
wxString GetLabel( int id ) const;
void SetLabel( int id, const wxString &label );
void *m_clientData;
GtkWidget *m_menu; // GtkMenu
+ GtkWidget *m_owner;
};
#endif // __GTKMENUH__
bool Checked( int id ) const;
void Enable( int id, bool enable );
bool Enabled( int id ) const;
- inline bool IsEnabled(int Id) const { return Enabled(Id); };
- inline bool IsChecked(int Id) const { return Checked(Id); };
+ inline bool IsEnabled(int Id) const { return Enabled(Id); }
+ inline bool IsChecked(int Id) const { return Checked(Id); }
wxString GetLabel( int id ) const;
void SetLabel( int id, const wxString &label );
void *m_clientData;
GtkWidget *m_menu; // GtkMenu
+ GtkWidget *m_owner;
};
#endif // __GTKMENUH__
toolBar->AddTool(wxID_HELP, *(toolBarBitmaps[7]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Help");
toolBar->Realize();
+
+ toolBar->EnableTool( wxID_HELP, FALSE );
// Can delete the bitmaps since they're reference counted
int i;
{
// VZ: as this function uses setjmp() the only fool proof error handling
// method is to use goto (setjmp is not really C++ dtors friendly...)
+
+ unsigned char **lines = (unsigned char **) NULL;
+ png_infop info_ptr = (png_infop) NULL;
+
image->Destroy();
- unsigned int i;
- unsigned char **lines = NULL;
- png_infop info_ptr = NULL;
-
png_structp png_ptr = png_create_read_struct( PNG_LIBPNG_VER_STRING,
(voidp) NULL,
(png_error_ptr) NULL,
if (lines == NULL)
goto error;
- for (i = 0; i < height; i++)
+ for (unsigned int i = 0; i < height; i++)
{
if ((lines[i] = (unsigned char *)malloc(width * (sizeof(unsigned char) * 4))) == NULL)
{
if (pos != -1) menu->m_title.Remove( pos, 1 );
} while (pos != -1);
- GtkWidget *root_menu;
- root_menu = gtk_menu_item_new_with_label( WXSTRINGCAST(menu->m_title) );
- gtk_widget_show( root_menu );
- gtk_menu_item_set_submenu( GTK_MENU_ITEM(root_menu), menu->m_menu );
+ menu->m_owner = gtk_menu_item_new_with_label( WXSTRINGCAST(menu->m_title) );
+ gtk_widget_show( menu->m_owner );
+ gtk_menu_item_set_submenu( GTK_MENU_ITEM(menu->m_owner), menu->m_menu );
- gtk_menu_bar_append( GTK_MENU_BAR(m_menubar), root_menu );
+ gtk_menu_bar_append( GTK_MENU_BAR(m_menubar), menu->m_owner );
}
static int FindMenuItemRecursive( const wxMenu *menu, const wxString &menuString, const wxString &itemString )
wxMenuItem *item = (wxMenuItem*)node->Data();
if (item->IsSubMenu())
return FindMenuItemRecursive(item->GetSubMenu(), menuString, itemString);
+
node = node->Next();
}
wxString wxMenuBar::GetLabel( int id ) const
{
wxMenuItem* item = FindMenuItemById( id );
+
if (item) return item->GetText();
+
return "";
}
void wxMenuBar::SetLabel( int id, const wxString &label )
{
wxMenuItem* item = FindMenuItemById( id );
+
if (item) return item->SetText( label );
}
-void wxMenuBar::EnableTop( int WXUNUSED(pos), bool WXUNUSED(flag) )
+void wxMenuBar::EnableTop( int pos, bool flag )
{
+ wxNode *node = m_menus.Nth( pos );
+
+ wxCHECK_RET( node, "menu not found" );
+
+ wxMenu* menu = (wxMenu*)node->Data();
+
+ if (menu->m_owner) gtk_widget_set_sensitive( menu->m_owner, flag );
}
-wxString wxMenuBar::GetLabelTop( int WXUNUSED(pos) ) const
+wxString wxMenuBar::GetLabelTop( int pos ) const
{
- return "menu";
+ wxNode *node = m_menus.Nth( pos );
+
+ wxCHECK_MSG( node, "invalid", "menu not found" );
+
+ wxMenu* menu = (wxMenu*)node->Data();
+
+ return menu->GetTitle();
}
-void wxMenuBar::SetLabelTop( int WXUNUSED(pos), const wxString& WXUNUSED(label) )
+void wxMenuBar::SetLabelTop( int pos, const wxString& label )
{
+ wxNode *node = m_menus.Nth( pos );
+
+ wxCHECK_RET( node, "menu not found" );
+
+ wxMenu* menu = (wxMenu*)node->Data();
+
+ menu->SetTitle( label );
}
//-----------------------------------------------------------------------------
Append(-2, m_title);
AppendSeparator();
}
+
+ m_owner = (GtkWidget*) NULL;
}
void wxMenu::SetTitle( const wxString& title )
wxCHECK_MSG( bitmap.Ok(), (wxToolBarTool *)NULL,
"invalid bitmap for wxToolBar icon" );
- wxToolBarTool *tool = new wxToolBarTool( this, toolIndex, bitmap, pushedBitmap,
- toggle, clientData,
- helpString1, helpString2 );
-
wxCHECK_MSG( bitmap.GetBitmap() == NULL, (wxToolBarTool *)NULL,
"wxToolBar doesn't support GdkBitmap" );
gtk_misc_set_alignment( GTK_MISC(tool_pixmap), 0.5, 0.5 );
+ wxToolBarTool *tool = new wxToolBarTool( this, toolIndex, bitmap, pushedBitmap,
+ toggle, clientData,
+ helpString1, helpString2,
+ tool_pixmap );
+
GtkToolbarChildType ctype = toggle ? GTK_TOOLBAR_CHILD_TOGGLEBUTTON
: GTK_TOOLBAR_CHILD_BUTTON;
{
wxToolBarTool *tool = (wxToolBarTool*)node->Data();
if (tool->m_index == toolIndex)
- {
+ {
tool->m_enabled = enable;
+
+ if (tool->m_item)
+ gtk_widget_set_sensitive( tool->m_item, enable );
+
return;
}
node = node->Next();
if (pos != -1) menu->m_title.Remove( pos, 1 );
} while (pos != -1);
- GtkWidget *root_menu;
- root_menu = gtk_menu_item_new_with_label( WXSTRINGCAST(menu->m_title) );
- gtk_widget_show( root_menu );
- gtk_menu_item_set_submenu( GTK_MENU_ITEM(root_menu), menu->m_menu );
+ menu->m_owner = gtk_menu_item_new_with_label( WXSTRINGCAST(menu->m_title) );
+ gtk_widget_show( menu->m_owner );
+ gtk_menu_item_set_submenu( GTK_MENU_ITEM(menu->m_owner), menu->m_menu );
- gtk_menu_bar_append( GTK_MENU_BAR(m_menubar), root_menu );
+ gtk_menu_bar_append( GTK_MENU_BAR(m_menubar), menu->m_owner );
}
static int FindMenuItemRecursive( const wxMenu *menu, const wxString &menuString, const wxString &itemString )
wxMenuItem *item = (wxMenuItem*)node->Data();
if (item->IsSubMenu())
return FindMenuItemRecursive(item->GetSubMenu(), menuString, itemString);
+
node = node->Next();
}
wxString wxMenuBar::GetLabel( int id ) const
{
wxMenuItem* item = FindMenuItemById( id );
+
if (item) return item->GetText();
+
return "";
}
void wxMenuBar::SetLabel( int id, const wxString &label )
{
wxMenuItem* item = FindMenuItemById( id );
+
if (item) return item->SetText( label );
}
-void wxMenuBar::EnableTop( int WXUNUSED(pos), bool WXUNUSED(flag) )
+void wxMenuBar::EnableTop( int pos, bool flag )
{
+ wxNode *node = m_menus.Nth( pos );
+
+ wxCHECK_RET( node, "menu not found" );
+
+ wxMenu* menu = (wxMenu*)node->Data();
+
+ if (menu->m_owner) gtk_widget_set_sensitive( menu->m_owner, flag );
}
-wxString wxMenuBar::GetLabelTop( int WXUNUSED(pos) ) const
+wxString wxMenuBar::GetLabelTop( int pos ) const
{
- return "menu";
+ wxNode *node = m_menus.Nth( pos );
+
+ wxCHECK_MSG( node, "invalid", "menu not found" );
+
+ wxMenu* menu = (wxMenu*)node->Data();
+
+ return menu->GetTitle();
}
-void wxMenuBar::SetLabelTop( int WXUNUSED(pos), const wxString& WXUNUSED(label) )
+void wxMenuBar::SetLabelTop( int pos, const wxString& label )
{
+ wxNode *node = m_menus.Nth( pos );
+
+ wxCHECK_RET( node, "menu not found" );
+
+ wxMenu* menu = (wxMenu*)node->Data();
+
+ menu->SetTitle( label );
}
//-----------------------------------------------------------------------------
Append(-2, m_title);
AppendSeparator();
}
+
+ m_owner = (GtkWidget*) NULL;
}
void wxMenu::SetTitle( const wxString& title )
wxCHECK_MSG( bitmap.Ok(), (wxToolBarTool *)NULL,
"invalid bitmap for wxToolBar icon" );
- wxToolBarTool *tool = new wxToolBarTool( this, toolIndex, bitmap, pushedBitmap,
- toggle, clientData,
- helpString1, helpString2 );
-
wxCHECK_MSG( bitmap.GetBitmap() == NULL, (wxToolBarTool *)NULL,
"wxToolBar doesn't support GdkBitmap" );
gtk_misc_set_alignment( GTK_MISC(tool_pixmap), 0.5, 0.5 );
+ wxToolBarTool *tool = new wxToolBarTool( this, toolIndex, bitmap, pushedBitmap,
+ toggle, clientData,
+ helpString1, helpString2,
+ tool_pixmap );
+
GtkToolbarChildType ctype = toggle ? GTK_TOOLBAR_CHILD_TOGGLEBUTTON
: GTK_TOOLBAR_CHILD_BUTTON;
{
wxToolBarTool *tool = (wxToolBarTool*)node->Data();
if (tool->m_index == toolIndex)
- {
+ {
tool->m_enabled = enable;
+
+ if (tool->m_item)
+ gtk_widget_set_sensitive( tool->m_item, enable );
+
return;
}
node = node->Next();