Exemplo n.º 1
0
void ami_move_node(struct treeview_window *twin,int move)
{
	struct Node *lbnode = NULL;
	struct node *treenode,*moveto;
	bool before;

	GetAttr(LISTBROWSER_SelectedNode,twin->gadgets[GID_TREEBROWSER],(ULONG *)&lbnode);

	if(!lbnode) return;

	GetListBrowserNodeAttrs(lbnode,
			LBNA_UserData,(ULONG *)&treenode,
// for multiselects?				LBNA_Selected,(BOOL *)&sel,
			TAG_DONE);

	selectednode2 = treenode;

	tree_set_node_selected(twin->tree,twin->tree->root,false);
	tree_set_node_selected(twin->tree,treenode,true);

	switch(move)
	{
		case AMI_MOVE_UP:
			moveto = treenode->previous;
			before = true;
		break;

		case AMI_MOVE_DOWN:
			moveto = treenode->next;
			before = false;
		break;

		case AMI_MOVE_OUT:
			moveto = treenode->parent->previous;
			before = false;
		break;
	}

	if(!moveto) return;

	tree_delink_node(treenode);
	//tree_move_selected_nodes(twin->tree,moveto,before);
	tree_link_node(moveto,treenode,before);
	ami_recreate_listbrowser(twin);
	selectednode2 = NULL;
}
Exemplo n.º 2
0
void ami_new_bookmark(struct treeview_window *twin)
{
	const struct url_data *data;
	struct Node *lbnode;
	struct node *treenode;
	char *url,*title;

	GetAttr(LISTBROWSER_SelectedNode,twin->gadgets[GID_TREEBROWSER],(ULONG *)&lbnode);
	if(lbnode)
	{
		GetListBrowserNodeAttrs(lbnode,
			LBNA_UserData,(ULONG *)&treenode,
			TAG_DONE);
	}
	else
	{
		treenode = twin->tree->root;
	}

	url = (char *)strdup("http://www.netsurf-browser.org");

	data = urldb_get_url_data(url);
	if (!data)
	{
		urldb_add_url(url);
		urldb_set_url_persistence(url,true);
		data = urldb_get_url_data(url);
	}

	if (data)
	{
		title = data->title;
		tree_create_URL_node(treenode,url,data,title);
		ami_recreate_listbrowser(twin);
	}
}
Exemplo n.º 3
0
static uint32 myStringClass_GM_HandleInput( Class *cl, Object *obj, struct gpInput *msg )
{
	struct myStringClassData *data;
	struct Gadget *gad;
	uint32 retval;

	data = INST_DATA( cl, obj );

	gad = (struct Gadget *)obj;

	//IDoMethod( data->ListviewObject, (APTR)msg );

	if (( gad->Flags & GFLG_SELECTED ) == 0 )
	{
		return( GMR_NOREUSE );
	}

	switch( msg->gpi_IEvent->ie_Class )
	{
		case IECLASS_RAWKEY:
		{
			switch( msg->gpi_IEvent->ie_Code )
			{
				case 0x48:  // Page Up (DownKey)
				case 0x4c:  // Up Arrow (DownKey)
				{
					myStringArrowUp( cl, obj );
				
					retval = GMR_MEACTIVE;

					break;
				}

				case 0x49:  // Page Down (DownKey)
				case 0x4d:  // Down Arrow (DownKey)
				{
					myStringArrowDown( cl, obj );

					retval = GMR_MEACTIVE;

					break;
				}

//				  case 70:	  // Del
//				  case 65:	  // Backspace
//			      {
//					  myStringCloseListview( cl, obj );
//					  
//					  retval = IDoSuperMethodA( cl, obj, (APTR)msg );
//				      break;
//			      }

				case 68:	// Return
				{
					// If listview open, and an item is selected, copy selected node's text to the string gadget
					if( data->Window != NULL && data->ListviewCount > 0 )
					{
						struct Node *selected = NULL;
						STRPTR pText;
						GetAttr( LISTBROWSER_SelectedNode, data->ListviewObject, (uint32 *) ( &selected ) );
						if( selected != NULL )
						{
							GetListBrowserNodeAttrs( selected, LBNA_Column, 0, LBNCA_Text, &pText, TAG_END );
							SetGadgetAttrs( (struct Gadget *)obj, data->Window, NULL, STRINGA_TextVal, pText, TAG_DONE );
						}
					}

					retval = IDoSuperMethodA( cl, obj, (APTR)msg );
					break;
				}

				default:
				{
					uint32 oldpos;
					uint32 newpos;

					GetAttr( STRINGA_BufferPos, obj, &oldpos );

					retval = IDoSuperMethodA( cl, obj, (APTR)msg );

					GetAttr( STRINGA_BufferPos, obj, &newpos );

					if ( oldpos != newpos )
					{
						if ( myStringSearch( cl, obj ))
						{
							// Atleast one entry found, open window if not open
							if ( data->Window == NULL )
							{
								myStringOpenListview( cl, obj, msg );
							}
						}
						else
						{
							// No matches, migth aswell close the window
							myStringCloseListview( cl, obj );
						}
					}
					break;
				}
			}

			myStringHandleListview( cl, obj );
	        break;
	    }

		case IECLASS_MOUSEWHEEL:
		{
			struct InputEvent *ie = msg->gpi_IEvent;

			if ( ie->ie_Y < 0 )
			{
				myStringArrowUp( cl, obj );
			}
			else if ( ie->ie_Y > 0 )
			{
				myStringArrowDown( cl, obj );
			}

			myStringHandleListview( cl, obj );

			retval = GMR_MEACTIVE;
			break;
		}

	    default:
	    {
			retval = IDoSuperMethodA( cl, obj, (APTR)msg );
		    break;
	    }
    }

	return( retval );
}
Exemplo n.º 4
0
BOOL ami_tree_event(struct treeview_window *twin)
{
	/* return TRUE if window destroyed */
	ULONG class,result,relevent = 0;
	ULONG column;
	uint16 code;
	struct MenuItem *item;
	struct node *treenode;
	struct Node *lbnode;
	struct node_element *element;
	char *text;
//	ULONG editcols[] = {TREE_ELEMENT_TITLE,TREE_ELEMENT_URL};
	static WORD gen=0;

	while((result = RA_HandleInput(twin->objects[OID_MAIN],&code)) != WMHI_LASTMSG)
	{
       	switch(result & WMHI_CLASSMASK) // class
   		{
			case WMHI_GADGETUP:
				switch(result & WMHI_GADGETMASK)
				{
					case GID_TREEBROWSER:
						GetAttrs(twin->gadgets[GID_TREEBROWSER],
							LISTBROWSER_RelEvent,&relevent,
							TAG_DONE);

							switch(relevent)
						{
							case LBRE_DOUBLECLICK:
								GetAttr(LISTBROWSER_SelectedNode,twin->gadgets[GID_TREEBROWSER],(ULONG *)&lbnode);
								GetListBrowserNodeAttrs(lbnode,
									LBNA_UserData,(ULONG *)&treenode,
									TAG_DONE);
								ami_tree_launch_node(twin->tree,treenode);
							break;

							case LBRE_EDIT:
								GetAttrs(twin->gadgets[GID_TREEBROWSER],
									LISTBROWSER_SelectedNode,(ULONG *)&lbnode,
//									LISTBROWSER_RelColumn,(ULONG *)&column,
									TAG_DONE);

								GetListBrowserNodeAttrs(lbnode,
									LBNA_UserData,(ULONG *)&treenode,
									TAG_DONE);

								element = tree_find_element(treenode,TREE_ELEMENT_TITLE);
								GetListBrowserNodeAttrs(lbnode,
									LBNA_Column,column,
									LBNCA_Text,(ULONG *)&text,
									TAG_DONE);
								element->text = (char *)strdup(text);
								tree_handle_node_element_changed(twin->tree, element);
							break;

							case LBRE_HIDECHILDREN:
								GetAttr(LISTBROWSER_SelectedNode,twin->gadgets[GID_TREEBROWSER],(ULONG *)&lbnode);
								GetListBrowserNodeAttrs(lbnode,
									LBNA_UserData,(ULONG *)&treenode,
									TAG_DONE);
								tree_set_node_expanded(twin->tree, treenode, false);
							break;

							case LBRE_SHOWCHILDREN:
								GetAttr(LISTBROWSER_SelectedNode,twin->gadgets[GID_TREEBROWSER],(ULONG *)&lbnode);
								GetListBrowserNodeAttrs(lbnode,
									LBNA_UserData,(ULONG *)&treenode,
									TAG_DONE);
								tree_set_node_expanded(twin->tree, treenode, true);
							break;
						}
					break;

					case GID_OPEN:
						GetAttr(LISTBROWSER_SelectedNode,twin->gadgets[GID_TREEBROWSER],(ULONG *)&lbnode);
						GetListBrowserNodeAttrs(lbnode,
							LBNA_UserData,(ULONG *)&treenode,
							TAG_DONE);
						ami_tree_launch_node(twin->tree,treenode);
					break;

					case GID_NEWF:
						GetAttr(LISTBROWSER_SelectedNode,twin->gadgets[GID_TREEBROWSER],(ULONG *)&lbnode);
						if(lbnode)
						{
							GetListBrowserNodeAttrs(lbnode,
								LBNA_UserData,(ULONG *)&treenode,
								TAG_DONE);
						}
						else
						{
							treenode = twin->tree->root;
						}

						tree_create_folder_node(treenode,(char *)messages_get("TreeNewFolder"));

						ami_recreate_listbrowser(twin);
					break;

					case GID_NEWB:
						ami_new_bookmark(twin);
					break;

					case GID_UP:
						ami_move_node(twin,AMI_MOVE_UP);
					break;

					case GID_DOWN:
						ami_move_node(twin,AMI_MOVE_DOWN);
					break;

					case GID_LEFT:
						ami_move_node(twin,AMI_MOVE_OUT);
					break;

					case GID_DEL:
						GetAttr(LISTBROWSER_SelectedNode,twin->gadgets[GID_TREEBROWSER],(ULONG *)&lbnode);
						GetListBrowserNodeAttrs(lbnode,
							LBNA_UserData,(ULONG *)&treenode,
							TAG_DONE);
						tree_delete_node(twin->tree, treenode, false);
/* We are recreating the list from scratch as there is no obvious easy way
   to delete children from a listbrowser list */
						ami_recreate_listbrowser(twin);
					break;
				}
			break;

/* no menus yet, copied in as will probably need it later
			case WMHI_MENUPICK:
				item = ItemAddress(gwin->win->MenuStrip,code);
				while (code != MENUNULL)
				{
					ami_menupick(code,gwin);
					if(win_destroyed) break;
					code = item->NextSelect;
				}
			break;
*/

			case WMHI_CLOSEWINDOW:
				ami_tree_close(twin);
				return TRUE;
			break;
		}
	}
	return FALSE;
}